in src/main/java/com/google/cloud/solutions/bqremoteencryptionfn/fns/AesFn.java [130:149]
private Cipher makeCipher(int opMode) throws GeneralSecurityException {
var keyBytes =
switch (keyType) {
case UTF8_KEY -> keyString.getBytes(StandardCharsets.UTF_8);
case BASE64_KEY -> BaseEncoding.base64().decode(keyString);
};
var secretKey = new SecretKeySpec(keyBytes, "AES");
var cipher = Cipher.getInstance(cipherTransformType);
if (!cipherTransformType.toUpperCase().contains("ECB")) {
var ivBytes = Base64.getDecoder().decode(ivParameterBase64);
cipher.init(opMode, secretKey, new IvParameterSpec(ivBytes));
} else {
cipher.init(opMode, secretKey);
}
return cipher;
}