// // TokenGenerator.m // SellyCloudSDK_Example // // Created by Caleb on 20/11/25. // Copyright © 2025 Caleb. All rights reserved. // #import "TokenGenerator.h" #define KAppId @"demo-app" #define KSecret @"CHANGE_ME" @implementation TokenGenerator + (NSString *)generateTokenWithUserId:(NSString *)userId callId:(NSString *)callId { // 当前时间戳(秒) long signTime = (long)[[NSDate date] timeIntervalSince1970]; long exprTime = signTime + 600; // 10 分钟后过期 // payload 拼接 NSString *payload = [NSString stringWithFormat:@"%@%@%@%ld%ld", KAppId, userId, callId, signTime, exprTime]; // HMAC-SHA256 计算 const char *cKey = [KSecret cStringUsingEncoding:NSUTF8StringEncoding]; const char *cData = [payload cStringUsingEncoding:NSUTF8StringEncoding]; unsigned char cHMAC[CC_SHA256_DIGEST_LENGTH]; CCHmac(kCCHmacAlgSHA256, cKey, strlen(cKey), cData, strlen(cData), cHMAC); // 转 hex 字符串 NSMutableString *sign = [NSMutableString stringWithCapacity:CC_SHA256_DIGEST_LENGTH * 2]; for (int i = 0; i < CC_SHA256_DIGEST_LENGTH; i++) { [sign appendFormat:@"%02x", cHMAC[i]]; } // 拼接最终 Token NSString *token = [NSString stringWithFormat: @"appid=%@&userid=%@&callid=%@&signtime=%ld&exprtime=%ld&sign=%@", KAppId, userId, callId, signTime, exprTime, sign]; return token; } @end