Skip to content

Commit 0bb6890

Browse files
committed
Removed threadlocal caching and added CryptoProvider to tests
1 parent d210d41 commit 0bb6890

3 files changed

Lines changed: 10 additions & 15 deletions

File tree

src/main/java/com/uid2/operator/service/CryptoProviderService.java

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,6 @@ public class CryptoProviderService {
1414

1515
// ECDH provider selection: tries ACCP first, falls back to default (SunEC)
1616
private static final String ECDH_PROVIDER_NAME = initEcdhProvider();
17-
private static final ThreadLocal<KeyAgreement> THREAD_LOCAL_KEY_AGREEMENT = ThreadLocal.withInitial(() -> {
18-
try {
19-
return createKeyAgreement();
20-
} catch (NoSuchAlgorithmException | NoSuchProviderException e) {
21-
throw new RuntimeException("Failed to create KeyAgreement", e);
22-
}
23-
});
2417

2518
private static String initEcdhProvider() {
2619
// Try ACCP (Amazon Corretto Crypto Provider) first
@@ -42,14 +35,14 @@ private static String initEcdhProvider() {
4235
return null;
4336
}
4437

45-
private static KeyAgreement createKeyAgreement() throws NoSuchAlgorithmException, NoSuchProviderException {
38+
public static KeyAgreement createKeyAgreement() throws NoSuchAlgorithmException {
4639
if (ECDH_PROVIDER_NAME != null) {
47-
return KeyAgreement.getInstance("ECDH", ECDH_PROVIDER_NAME);
40+
try {
41+
return KeyAgreement.getInstance("ECDH", ECDH_PROVIDER_NAME);
42+
} catch (NoSuchProviderException e) {
43+
LOGGER.info("{} is not available: {}", ECDH_PROVIDER_NAME, e.getMessage());
44+
}
4845
}
4946
return KeyAgreement.getInstance("ECDH");
5047
}
51-
52-
public static KeyAgreement getKeyAgreement() {
53-
return THREAD_LOCAL_KEY_AGREEMENT.get();
54-
}
5548
}

src/main/java/com/uid2/operator/vertx/UIDOperatorVerticle.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -409,7 +409,7 @@ private void handleClientSideTokenGenerateImpl(RoutingContext rc) throws NoSuchA
409409
}
410410

411411
// Perform key agreement (uses cached provider: ACCP > SunEC)
412-
final KeyAgreement ka = CryptoProviderService.getKeyAgreement();
412+
final KeyAgreement ka = CryptoProviderService.createKeyAgreement();
413413
ka.init(clientSideKeypair.getPrivateKey());
414414
ka.doPhase(clientPublicKey, true);
415415

src/test/java/com/uid2/operator/ClientSideTokenGenerateTestUtil.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.uid2.operator;
22

3+
import com.uid2.operator.service.CryptoProviderService;
4+
35
import javax.crypto.*;
46
import javax.crypto.spec.GCMParameterSpec;
57
import javax.crypto.spec.SecretKeySpec;
@@ -37,7 +39,7 @@ public static PrivateKey stringToPrivateKey(String privateKeyString, KeyFactory
3739
}
3840

3941
public static SecretKey deriveKey(PublicKey serverPublicKey, PrivateKey clientPrivateKey) throws NoSuchAlgorithmException, InvalidKeyException {
40-
KeyAgreement keyAgreement = KeyAgreement.getInstance("ECDH");
42+
KeyAgreement keyAgreement = CryptoProviderService.createKeyAgreement();
4143
keyAgreement.init(clientPrivateKey);
4244
keyAgreement.doPhase(serverPublicKey, true);
4345

0 commit comments

Comments
 (0)