11package com .uid2 .operator .service ;
22
3- import com .uid2 .operator .vertx .UIDOperatorVerticle ;
43import org .slf4j .Logger ;
54import org .slf4j .LoggerFactory ;
5+ import software .amazon .cryptools .AmazonCorrettoCryptoProvider ;
66
77import javax .crypto .KeyAgreement ;
88import java .security .NoSuchAlgorithmException ;
99import java .security .NoSuchProviderException ;
10+ import java .security .Security ;
1011
1112public class CryptoProviderService {
1213 private static final Logger LOGGER = LoggerFactory .getLogger (CryptoProviderService .class );
@@ -24,15 +25,19 @@ public class CryptoProviderService {
2425 private static String initEcdhProvider () {
2526 // Try ACCP (Amazon Corretto Crypto Provider) first
2627 try {
27- KeyAgreement ka = KeyAgreement .getInstance ("ECDH" , "AmazonCorrettoCryptoProvider" );
28- LOGGER .info ("ECDH using AmazonCorrettoCryptoProvider" );
29- return "AmazonCorrettoCryptoProvider" ;
30- } catch (NoSuchAlgorithmException | NoSuchProviderException e ) {
31- // ACCP not available, fall through
32- LOGGER .info ("AmazonCorrettoCryptoProvider is not available" );
28+ // Add ACCP at lowest priority so it doesn't become default for other algorithms
29+ Security .addProvider (AmazonCorrettoCryptoProvider .INSTANCE );
30+
31+ // Verify it works for ECDH
32+ KeyAgreement ka = KeyAgreement .getInstance ("ECDH" , AmazonCorrettoCryptoProvider .PROVIDER_NAME );
33+ LOGGER .info ("ECDH using AmazonCorrettoCryptoProvider (added at lowest priority)" );
34+ return AmazonCorrettoCryptoProvider .PROVIDER_NAME ;
35+ } catch (Throwable e ) {
36+ // ACCP not available
37+ LOGGER .info ("AmazonCorrettoCryptoProvider is not available: {}" , e .getMessage ());
3338 }
3439
35- // Fall back to default provider (SunEC on most JDKs)
40+ // Fall back to default provider
3641 LOGGER .info ("ECDH using default provider (SunEC)" );
3742 return null ;
3843 }
0 commit comments