0

私は書いており、sns http エンドポイントです。SignatureCheckerの verifyMessageSignature メソッドを使用して SNS メッセージを検証する必要があります。メッセージから publicKey 属性を取得するにはどうすればよいですか。util メソッドもありますか。助けてください。

4

1 に答える 1

1

Amazon からの 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次に、それを 2 番目の引数として呼び出すことができます。

于 2016-10-18T21:32:40.800 に答える