Skip to content
This repository was archived by the owner on Aug 21, 2025. It is now read-only.

Commit 5d21d16

Browse files
committed
Fix parsing public key paypal
1 parent f9bc576 commit 5d21d16

File tree

1 file changed

+9
-5
lines changed
  • modules/payment/paypal/service/src/main/java/com/funixproductions/api/payment/paypal/service/webhooks/resources

1 file changed

+9
-5
lines changed

modules/payment/paypal/service/src/main/java/com/funixproductions/api/payment/paypal/service/webhooks/resources/PaypalWebhookResource.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,12 @@
1212
import org.springframework.web.bind.annotation.*;
1313
import org.springframework.web.client.RestTemplate;
1414

15+
import java.io.ByteArrayInputStream;
1516
import java.nio.charset.StandardCharsets;
16-
import java.security.KeyFactory;
1717
import java.security.PublicKey;
1818
import java.security.Signature;
19-
import java.security.spec.X509EncodedKeySpec;
19+
import java.security.cert.CertificateFactory;
20+
import java.security.cert.X509Certificate;
2021
import java.util.Base64;
2122
import java.util.List;
2223
import java.util.zip.CRC32;
@@ -106,9 +107,12 @@ private PublicKey getPublicKeyFromPem(String pem) throws Exception {
106107
.replaceAll("\\s", "");
107108

108109
byte[] decoded = Base64.getDecoder().decode(publicKeyPEM);
109-
X509EncodedKeySpec spec = new X509EncodedKeySpec(decoded);
110-
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
111-
return keyFactory.generatePublic(spec);
110+
CertificateFactory factory = CertificateFactory.getInstance("X.509");
111+
112+
try (final ByteArrayInputStream bais = new ByteArrayInputStream(decoded)) {
113+
X509Certificate certificate = (X509Certificate) factory.generateCertificate(bais);
114+
return certificate.getPublicKey();
115+
}
112116
} catch (Exception e) {
113117
log.error("Error parsing public keyPem: {}", pem, e);
114118
throw e;

0 commit comments

Comments
 (0)