49 lines
1.5 KiB
Objective-C
49 lines
1.5 KiB
Objective-C
//
|
|
// 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
|