fix:修复ios签名失败的问题
This commit is contained in:
parent
6c73250481
commit
e6b90d9651
@ -11,6 +11,31 @@ import 'package:star_lock/talk/starChart/exception/start_chart_message_exception
|
||||
|
||||
class DoSign {
|
||||
// 生成签名sing
|
||||
// Future<String> generateSign({
|
||||
// required int currentTimestamp,
|
||||
// required String privateKeyHex,
|
||||
// }) async {
|
||||
// String resultSign = '';
|
||||
// try {
|
||||
// // 1. 将 32 位时间戳以小端字节序编码为二进制数据
|
||||
// Uint8List signData = encodeTimestampToLittleEndianBytes(currentTimestamp);
|
||||
//
|
||||
// // 2.将十六进制字符串转换为字节数组
|
||||
// List<int> privateKeyBytes = hexToBytes(privateKeyHex);
|
||||
//
|
||||
// // 3.将私钥转换为 PEM 格式
|
||||
// final pemPrivateKey =
|
||||
// convertToPemPrivateKey(privateKeyBytes, isPKCS8: true);
|
||||
// // 4.签名
|
||||
// var result = await fastRsa.RSA
|
||||
// .signPKCS1v15Bytes(signData, fastRsa.Hash.SHA256, pemPrivateKey);
|
||||
// resultSign = hex.encode(result);
|
||||
// } catch (e) {
|
||||
// throw StartChartMessageException('❌--->上报信息生成签名时出现错误: $e');
|
||||
// }
|
||||
// return resultSign ?? '';
|
||||
// }
|
||||
|
||||
Future<String> generateSign({
|
||||
required int currentTimestamp,
|
||||
required String privateKeyHex,
|
||||
@ -20,20 +45,20 @@ class DoSign {
|
||||
// 1. 将 32 位时间戳以小端字节序编码为二进制数据
|
||||
Uint8List signData = encodeTimestampToLittleEndianBytes(currentTimestamp);
|
||||
|
||||
// 2.将十六进制字符串转换为字节数组
|
||||
List<int> privateKeyBytes = hexToBytes(privateKeyHex);
|
||||
// 2. 加载私钥
|
||||
final privateKey = loadPrivateKey(privateKeyHex);
|
||||
|
||||
// 3.将私钥转换为 PEM 格式
|
||||
final pemPrivateKey =
|
||||
convertToPemPrivateKey(privateKeyBytes, isPKCS8: true);
|
||||
// 4.签名
|
||||
var result = await fastRsa.RSA
|
||||
.signPKCS1v15Bytes(signData, fastRsa.Hash.SHA256, pemPrivateKey);
|
||||
resultSign = hex.encode(result);
|
||||
// 3. 创建 RSA 签名器
|
||||
final signer = pc.RSASigner(pc.SHA256Digest(), '0609608648016503040201');
|
||||
signer.init(true, pc.PrivateKeyParameter<pc.RSAPrivateKey>(privateKey));
|
||||
|
||||
// 4. 生成签名
|
||||
final signature = signer.generateSignature(signData);
|
||||
resultSign = hex.encode(signature.bytes);
|
||||
} catch (e) {
|
||||
throw StartChartMessageException('❌--->上报信息生成签名时出现错误: $e');
|
||||
}
|
||||
return resultSign ?? '';
|
||||
return resultSign;
|
||||
}
|
||||
|
||||
// 将 32 位时间戳以小端字节序编码为二进制数据
|
||||
|
||||
@ -187,7 +187,7 @@ dependencies:
|
||||
#加密解密
|
||||
encrypt: ^5.0.1
|
||||
crypto: ^3.0.3
|
||||
pointycastle: ^3.4.0
|
||||
pointycastle: ^3.7.3 # 使用最新版本
|
||||
date_format: ^2.0.7
|
||||
|
||||
# 下拉刷新
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user