From 95d01405641fbae910f9ab652a0cfa6463afc7cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20Bresson?= Date: Thu, 9 Jan 2025 10:38:29 +0100 Subject: [PATCH 1/7] Update org.asynchttpclient:async-http-client to 2.12.4 --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 23dbe59..a6252d0 100644 --- a/build.gradle +++ b/build.gradle @@ -27,7 +27,7 @@ dependencies { implementation group: 'org.apache.httpcomponents', name: 'httpasyncclient', version: '4.1.5' // For making async HTTP requests - implementation group: 'org.asynchttpclient', name: 'async-http-client', version: '2.12.3' + implementation group: 'org.asynchttpclient', name: 'async-http-client', version: '2.12.4' // For cryptographic operations shadow group: 'org.bouncycastle', name: 'bcprov-jdk15on', version: '1.70' From 939eeb4756834d6d8524d8a8d4c88bf452c51d29 Mon Sep 17 00:00:00 2001 From: Martijn Dwars Date: Mon, 17 Feb 2025 09:36:01 +0100 Subject: [PATCH 2/7] Release 5.1.2 --- README.md | 4 ++-- build.gradle | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index b9e31cd..746878b 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ A Web Push library for Java 8. Supports payloads and VAPID. For Gradle, add the following dependency to `build.gradle`: ```groovy -compile group: 'nl.martijndwars', name: 'web-push', version: '5.1.1' +compile group: 'nl.martijndwars', name: 'web-push', version: '5.1.2' ``` For Maven, add the following dependency to `pom.xml`: @@ -19,7 +19,7 @@ For Maven, add the following dependency to `pom.xml`:     nl.martijndwars     web-push -    5.1.1 +    5.1.2 ``` diff --git a/build.gradle b/build.gradle index a6252d0..d369461 100644 --- a/build.gradle +++ b/build.gradle @@ -12,7 +12,7 @@ apply plugin: 'application' apply plugin: 'com.github.johnrengelman.shadow' group 'nl.martijndwars' -version '5.1.2-SNAPSHOT' +version '5.1.2' repositories { mavenLocal() From 9df0157d040838742d489bdd5267d5c756f3b8f6 Mon Sep 17 00:00:00 2001 From: Hadi Zahedian Date: Fri, 21 Feb 2025 20:24:46 +0330 Subject: [PATCH 3/7] Update org.bitbucket.b_c:jose4j to 0.9.4 --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index d369461..d92bdd4 100644 --- a/build.gradle +++ b/build.gradle @@ -33,7 +33,7 @@ dependencies { shadow group: 'org.bouncycastle', name: 'bcprov-jdk15on', version: '1.70' // For creating and signing JWT - implementation group: 'org.bitbucket.b_c', name: 'jose4j', version: '0.7.9' + implementation group: 'org.bitbucket.b_c', name: 'jose4j', version: '0.9.4' // For parsing JSON testImplementation group: 'com.google.code.gson', name: 'gson', version: '2.8.9' From 4a738bff3e8b90cd8118585bb868d600d5587fe0 Mon Sep 17 00:00:00 2001 From: Hadi Zahedian Date: Thu, 13 Mar 2025 16:55:36 +0330 Subject: [PATCH 4/7] Update org.bitbucket.b_c:jose4j to 0.9.6 --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index d92bdd4..37f311b 100644 --- a/build.gradle +++ b/build.gradle @@ -33,7 +33,7 @@ dependencies { shadow group: 'org.bouncycastle', name: 'bcprov-jdk15on', version: '1.70' // For creating and signing JWT - implementation group: 'org.bitbucket.b_c', name: 'jose4j', version: '0.9.4' + implementation group: 'org.bitbucket.b_c', name: 'jose4j', version: '0.9.6' // For parsing JSON testImplementation group: 'com.google.code.gson', name: 'gson', version: '2.8.9' From 290c0d61d0cfee738c1aafa2b44774cd5eeb6650 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 14 Apr 2025 19:07:57 +0000 Subject: [PATCH 5/7] Update dependency com.google.guava:guava to v33 --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index d369461..5afe902 100644 --- a/build.gradle +++ b/build.gradle @@ -54,7 +54,7 @@ dependencies { testImplementation group: 'org.bouncycastle', name: 'bcpkix-jdk15on', version: '1.70' // For verifying Base64Encoder results in unit tests - testImplementation group: 'com.google.guava', name: 'guava', version: '31.0.1-jre' + testImplementation group: 'com.google.guava', name: 'guava', version: '33.4.8-jre' } wrapper { From 93eaccad40c122cc022b3ac9dc6e5a27d1a989c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EB=AF=BC=EC=84=9D?= Date: Wed, 21 May 2025 16:02:50 +0000 Subject: [PATCH 6/7] crypto-key header to url-safe header for chrome browser --- .../java/nl/martijndwars/webpush/AbstractPushService.java | 6 +++--- .../webpush/cli/handlers/GenerateKeyHandler.java | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/nl/martijndwars/webpush/AbstractPushService.java b/src/main/java/nl/martijndwars/webpush/AbstractPushService.java index 22db83b..f3f25ed 100644 --- a/src/main/java/nl/martijndwars/webpush/AbstractPushService.java +++ b/src/main/java/nl/martijndwars/webpush/AbstractPushService.java @@ -166,7 +166,7 @@ protected final HttpRequest prepareRequest(Notification notification, Encoding e } else if (encoding == Encoding.AESGCM) { headers.put("Content-Encoding", "aesgcm"); headers.put("Encryption", "salt=" + Base64.getUrlEncoder().withoutPadding().encodeToString(salt)); - headers.put("Crypto-Key", "dh=" + Base64.getUrlEncoder().encodeToString(dh)); + headers.put("Crypto-Key", "dh=" + Base64.getUrlEncoder().withoutPadding().encodeToString(dh)); } body = encrypted.getCiphertext(); @@ -208,9 +208,9 @@ protected final HttpRequest prepareRequest(Notification notification, Encoding e } if (headers.containsKey("Crypto-Key")) { - headers.put("Crypto-Key", headers.get("Crypto-Key") + ";p256ecdsa=" + Base64.getUrlEncoder().encodeToString(pk)); + headers.put("Crypto-Key", headers.get("Crypto-Key") + ";p256ecdsa=" + Base64.getUrlEncoder().withoutPadding().encodeToString(pk)); } else { - headers.put("Crypto-Key", "p256ecdsa=" + Base64.getUrlEncoder().encodeToString(pk)); + headers.put("Crypto-Key", "p256ecdsa=" + Base64.getUrlEncoder().withoutPadding().encodeToString(pk)); } } else if (notification.isFcm() && getGcmApiKey() != null) { headers.put("Authorization", "key=" + getGcmApiKey()); diff --git a/src/main/java/nl/martijndwars/webpush/cli/handlers/GenerateKeyHandler.java b/src/main/java/nl/martijndwars/webpush/cli/handlers/GenerateKeyHandler.java index 6ddf519..1747adf 100644 --- a/src/main/java/nl/martijndwars/webpush/cli/handlers/GenerateKeyHandler.java +++ b/src/main/java/nl/martijndwars/webpush/cli/handlers/GenerateKeyHandler.java @@ -42,10 +42,10 @@ public void run() throws InvalidAlgorithmParameterException, NoSuchAlgorithmExce } System.out.println("PublicKey:"); - System.out.println(Base64.getUrlEncoder().encodeToString(encodedPublicKey)); + System.out.println(Base64.getUrlEncoder().withoutPadding().encodeToString(encodedPublicKey)); System.out.println("PrivateKey:"); - System.out.println(Base64.getUrlEncoder().encodeToString(encodedPrivateKey)); + System.out.println(Base64.getUrlEncoder().withoutPadding().encodeToString(encodedPrivateKey)); } /** From 6789cf237b3275d26a95661d6a87e5561d4cbf6a Mon Sep 17 00:00:00 2001 From: jihoseo Date: Fri, 4 Jul 2025 15:48:41 +0900 Subject: [PATCH 7/7] set default Encoding as AES128GCM --- src/main/java/nl/martijndwars/webpush/PushService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/nl/martijndwars/webpush/PushService.java b/src/main/java/nl/martijndwars/webpush/PushService.java index cd117dc..e15647b 100644 --- a/src/main/java/nl/martijndwars/webpush/PushService.java +++ b/src/main/java/nl/martijndwars/webpush/PushService.java @@ -65,7 +65,7 @@ public HttpResponse send(Notification notification, Encoding encoding) throws Ge } public HttpResponse send(Notification notification) throws GeneralSecurityException, IOException, JoseException, ExecutionException, InterruptedException { - return send(notification, Encoding.AESGCM); + return send(notification, Encoding.AES128GCM); } /**