我正在尝试将下面的Java转换成它的Python等价物。在
// certificate is contents of https://fps.sandbox.amazonaws.com/certs/090909/PKICert.pem
// signature is a string that I need to verify.
CertificateFactory factory = CertificateFactory.getInstance("X.509");
X509Certificate x509Certificate =
(X509Certificate) factory.generateCertificate(new ByteArrayInputStream(certificate.getBytes()));
Signature signatureInstance = Signature.getInstance(signatureAlgorithm);
signatureInstance.initVerify(x509Certificate.getPublicKey());
signatureInstance.update(stringToSign.getBytes(UTF_8_Encoding));
return signatureInstance.verify(Base64.decodeBase64(signature.getBytes()));
这是用于AWS FPS使用的PKI签名验证。http://docs.amazonwebservices.com/AmazonFPS/latest/FPSAccountManagementGuide/VerifyingSignature.html
谢谢你的帮助!在
说到底,我决定不使用本机库来验证签名(因为M2Crypto不容易移植到64位Windows)。我发现AmazonFPSAPI的更高版本包含一个REST/SOAP调用来验证签名,所以如果往返服务器的费用不太高,您可以直接调用VerifySignature。我在boto的下一个版本中添加了对这个的支持boto.fps.连接。验证_签名。在
我研究过使用pyCrypto和keychar来实现这一点,但问题是它们都没有解析X509证书的能力(keychar有keyczar.util.ParseX509但我猜这对现实世界来说是有限的。在
但我相信M2Crypto是有效的。请看下面的代码片段,它需要一个真正的签名和纯文本填充才能真正测试。在
我写了很多关于X509的Python代码。我总是回到通过subprocess模块调用openssl。Google的keychar库得到了一些关注,尽管我从未使用过它。在
相关问题 更多 >
编程相关推荐