我正在编写和 sns http 端点。我必须使用SignatureChecker的 verifyMessageSignature 方法验证 SNS 消息。如何从消息中获取 publicKey 属性。是否也有 util 方法。请帮忙。
问问题
141 次
1 回答
1
来自亚马逊的 SNS 消息包含一个字段SigningCertURL
。将该位置的字节提取到一个字符串cert
中,然后从中创建一个公钥:
/**
* Build a PublicKey object from a cert
*
* @param cert the cert body
* @return a public key
*/
private PublicKey makePublicKey(String cert) {
try {
CertificateFactory fact = CertificateFactory.getInstance("X.509");
InputStream stream = new ByteArrayInputStream(cert.getBytes(StandardCharsets.UTF_8));
X509Certificate cer = (X509Certificate) fact.generateCertificate(stream);
return cer.getPublicKey();
} catch (Exception e) {
LOGGER.error("Failed to make a public key from Amazon cert", e);
return null;
}
}
然后你可以signatureChecker.verifySignature
用它作为第二个参数调用。
于 2016-10-18T21:32:40.800 回答