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