Можем ли мы создать объект AwsCrypto только один раз и повторно использовать его для всего запроса?В основном я хочу создать KMSClient
с AwsCrypto
, который можно использовать для шифрования и дешифрования для нескольких CMKs
.
Ниже приведен пример кода:
public class KMSClient {
final private AwsCrypto awsCrypto;
final private Map<String, KmsMasterKeyProvider> kmsMasterKeyProviderMap;
public KMSClient(AwsCrypto awsCrypto){
this.awsCrypto = awsCrypto;
this.kmsMasterKeyProviderMap = new HashMap<>();
}
public byte[] encrypt(final byte[] data, final String customerManagedKeyId) {
return awsCrypto.encryptData(getKmsMasterKeyProvider(customerManagedKeyId), data).getResult();
}
public byte[] decrypt(final byte[] data, final String customerManagedKeyId) {
return awsCrypto.decryptData(getKmsMasterKeyProvider(customerManagedKeyId), data).getResult();
}
private KmsMasterKeyProvider getKmsMasterKeyProvider(final String customerManagedKeyId){
return kmsMasterKeyProviderMap.computeIfAbsent(customerManagedKeyId,
k -> KmsMasterKeyProvider.builder().withKeysForEncryption(k).build());
}