Ich schreibe und SMS http Endpunkt. Ich muss die SNS-Nachricht mit der Methode verifyMessageSignature von SignatureChecker überprüfen. Wie kann ich das publicKey-Attribut von Nachricht abrufen. Gibt es dafür auch eine util-Methode? Bitte helfen Sie.So extrahieren Sie das Attribut publicKey in der Methode verifyMessageSignature von SignatureChecker
Q
So extrahieren Sie das Attribut publicKey in der Methode verifyMessageSignature von SignatureChecker
0
A
Antwort
1
Die SNS-Nachricht von Amazon enthält ein Feld SigningCertURL
. Fetch die Bytes an dieser Stelle in einen String cert
, machen dann einen öffentlichen Schlüssel von ihm so:
/**
* 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;
}
}
Dann sind Sie signatureChecker.verifySignature
damit als zweites Argument nennen.
Der öffentliche Schlüssel wird in einem Zertifikat bereitgestellt, nicht von selbst. – EJP
Gibt es eine Bibliothek oder eine util-Methode, die all dies aus der Nutzlast macht? –