From 9ab1e8f757811441e47699ee36675c87c5d8d69a Mon Sep 17 00:00:00 2001 From: frmans <133016271+frmans@users.noreply.github.com> Date: Tue, 9 May 2023 15:11:02 +0200 Subject: [PATCH] Update HttpEce to use BC provider when calling KeyAgreement Since there already is a dependency to BouncyCastle in Utils.java it doesn't add any more restrictions doing this, also this solves the following issue https://github.com/web-push-libs/webpush-java/issues/5 --- src/main/java/nl/martijndwars/webpush/HttpEce.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/nl/martijndwars/webpush/HttpEce.java b/src/main/java/nl/martijndwars/webpush/HttpEce.java index b9e9436..baa1bb2 100644 --- a/src/main/java/nl/martijndwars/webpush/HttpEce.java +++ b/src/main/java/nl/martijndwars/webpush/HttpEce.java @@ -20,6 +20,7 @@ import static javax.crypto.Cipher.DECRYPT_MODE; import static javax.crypto.Cipher.ENCRYPT_MODE; import static nl.martijndwars.webpush.Utils.*; +import static org.bouncycastle.jce.provider.BouncyCastleProvider.PROVIDER_NAME; /** * An implementation of Encrypted Content-Encoding for HTTP. @@ -335,7 +336,7 @@ public byte[] webpushSecret(String keyId, ECPublicKey dh, byte[] authSecret, int log("sender pubkey", encode(senderPubKey)); log("receiver pubkey", encode(receiverPubKey)); - KeyAgreement keyAgreement = KeyAgreement.getInstance("ECDH"); + KeyAgreement keyAgreement = KeyAgreement.getInstance("ECDH", PROVIDER_NAME); keyAgreement.init(getPrivateKey(keyId)); keyAgreement.doPhase(remotePubKey, true); byte[] secret = keyAgreement.generateSecret(); @@ -357,7 +358,7 @@ public byte[] webpushSecret(String keyId, ECPublicKey dh, byte[] authSecret, int private byte[][] extractDH(String keyid, ECPublicKey publicKey) throws NoSuchAlgorithmException, InvalidKeyException { ECPublicKey senderPubKey = getPublicKey(keyid); - KeyAgreement keyAgreement = KeyAgreement.getInstance("ECDH"); + KeyAgreement keyAgreement = KeyAgreement.getInstance("ECDH", PROVIDER_NAME); keyAgreement.init(getPrivateKey(keyid)); keyAgreement.doPhase(publicKey, true);