2016-04-11 16 views
0

私は執筆中で、httpエンドポイントはsnsです。 SignatureCheckerのverifyMessageSignatureメソッドを使用してSNSメッセージを確認する必要があります。メッセージからpublicKey属性を取得するにはどうすればよいですか。そこにはutilメソッドもありますか?助けてください。SignatureCheckerのverifyMessageSignatureメソッドでpublicKey属性を抽出する方法

+0

公開鍵は、単独ではなく、証明書で提供されます。 – EJP

+0

これらのすべてをペイロードから実行するライブラリまたはutilメソッドはありますか? –

答えて

1

AmazonのSNSメッセージには、フィールドSigningCertURLが含まれています。文字列certにこの場所でバイトを取得し、その後、thuslyそれから公開鍵を作る:

/** 
* 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; 
    } 
} 

は、その後、あなたが2番目の引数としてそれをsignatureChecker.verifySignatureを呼び出すことができます。

関連する問題