【问题标题】:How to extract publicKey attribute in verifyMessageSignature method of SignatureChecker如何在 SignatureChecker 的 verifyMessageSignature 方法中提取 publicKey 属性
【发布时间】:2016-04-11 02:06:35
【问题描述】:

我正在编写和 sns http 端点。我必须使用SignatureChecker 的 verifyMessageSignature 方法来验证 SNS 消息。如何从消息中获取 publicKey 属性。是否也有 util 方法。请帮忙。

【问题讨论】:

  • 公钥在证书中提供,而不是单独提供。
  • 是否有库或实用程序方法可以从有效负载中完成所有这些操作?

标签: java aws-sdk aws-java-sdk


【解决方案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,将它作为第二个参数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-11
    • 2019-02-01
    • 1970-01-01
    • 2018-07-13
    • 1970-01-01
    • 1970-01-01
    • 2016-02-06
    • 1970-01-01
    相关资源
    最近更新 更多