1 Star 0 Fork 0

vinsonswang/chat-demo-flutter

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
GenerateTestUserSig.dart 1.81 KB
一键复制 编辑 原始数据 按行查看 历史
TeacherWang 提交于 2024-12-19 10:18 +08:00 . Optimize config files
// ignore_for_file: file_names
import 'dart:convert';
import 'package:crypto/crypto.dart';
import 'package:archive/archive.dart';
import 'package:archive/archive_io.dart';
/// Generate userSig for Tencent Cloud instant messaging test
///
class GenerateTestUserSig {
GenerateTestUserSig({required this.sdkappid, required this.key});
int sdkappid;
String key;
/// Generate UserSig
///
String genSig({
required String identifier,
required int expire,
}) {
int currTime = _getCurrentTime();
String sig = '';
Map<String, dynamic> sigDoc = <String, dynamic>{};
sigDoc.addAll({
"TLS.ver": "2.0",
"TLS.identifier": identifier,
// ignore: unnecessary_this
"TLS.sdkappid": this.sdkappid,
"TLS.expire": expire,
"TLS.time": currTime,
});
sig = _hmacsha256(
identifier: identifier,
currTime: currTime,
expire: expire,
);
sigDoc['TLS.sig'] = sig;
String jsonStr = json.encode(sigDoc);
List<int>? compress = const ZLibEncoder().encode(utf8.encode(jsonStr));
return _escape(content: base64.encode(compress));
}
int _getCurrentTime() {
return (DateTime.now().millisecondsSinceEpoch / 1000).floor();
}
String _hmacsha256({
required String identifier,
required int currTime,
int expire = 30 * 24 * 60 * 60,
}) {
int sdkappid = this.sdkappid;
String contentToBeSigned =
"TLS.identifier:$identifier\nTLS.sdkappid:$sdkappid\nTLS.time:$currTime\nTLS.expire:$expire\n";
Hmac hmacSha256 = Hmac(sha256, utf8.encode(key));
Digest hmacSha256Digest = hmacSha256.convert(utf8.encode(contentToBeSigned));
return base64.encode(hmacSha256Digest.bytes);
}
String _escape({
required String content,
}) {
return content.replaceAll('+', '*').replaceAll('/', '-').replaceAll('=', '_');
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Dart
1
https://gitee.com/hitszwangsheng/chat-demo-flutter.git
git@gitee.com:hitszwangsheng/chat-demo-flutter.git
hitszwangsheng
chat-demo-flutter
chat-demo-flutter
main

搜索帮助