如何解决迅速验证文档签名问题 64 字节而不是 71
我有一项任务来验证元数据的签名合规性,但由于某种原因,我使用的所有方法都返回“false”。文档通过C#以如下方式签名:
//Cert format X509Certificate2
var ecdsa = cert.GetECDsaPrivateKey());
byte[] signature;
signature = ecdsa.SignData(bufferedFileStream,HashAlgorithmName.SHA512);
我们得到大小为 64 字节的签名
但是 swift native 方法生成大小为 71 字节的签名:
let signature = SecKeyCreateSignature(privateKey,.ecdsaSignatureMessageX962SHA256,fileData as CFData,&signError)
使用 ECDSA NIST p256 生成的证书 信号。算法 - ecdsa-with-SHA256
到目前为止,我尝试了 3 种检查方式:
//1
SecKeyVerifySignature(publicKey,signature as! CFData,&error)
//2
SecKeyRawVerify(publicKey,.PKCS1SHA512,hashedDataBytes,digestLength,signatureBytes,signatureData.count)
//3
let publicKeyP265 = try! P256.Signing.PublicKey(x963Representation: bytesArray)
let ecdsaSignature = try! P256.Signing.ECDSASignature(rawRepresentation: signature)
let result = publicKeyP265.isValidSignature(ecdsaSignature,for: fileData)
每种方法的结果都是否定的
到目前为止,我还没有能够成功并验证签名,也许有人遇到过类似的问题。
解决方法
我用下一个代码解决了我的问题:
public String ExtractQuestionTextInputID(){
String question_text_input_id = driver.findElement(By.xpath("//input[@value='New Question']")).getAttribute("id");
Pattern p = Pattern.compile("\\d+");
Matcher m = p.matcher(question_text_input_id);
String mid = new String();
while(m.find()) {
//System.out.println(m.group());
mid = m.group();
}
return mid;
}
我希望它对其他人有用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。