@Override
    public byte[] wrapCek(byte[] plaintextCek, Key key) {
        if (this.secureRandom == null) {
            throw new NullPointerException("Error initializing AesGcmKeyWrapper for wrapping: 'secureRandom' cannot" +
                                               " be null");
        }

        Cipher cipher = this.cipherProvider.createCipher();
        byte[] iv = new byte[IV_LENGTH_IN_BYTES];
        secureRandom.nextBytes(iv);
        GCMParameterSpec gcmParameterSpec = new GCMParameterSpec(TAG_LENGTH_IN_BITS, iv);
        try {
            cipher.init(Cipher.ENCRYPT_MODE, key, gcmParameterSpec, this.secureRandom);
            cipher.updateAAD(this.cekAlgorithm.getBytes(StandardCharsets.UTF_8));

            // Prepend randomly generated IV to the cipherText
            return concat(cipher.getIV(), cipher.doFinal(plaintextCek));
        } catch (Exception e) {
            throw failure(e, "An exception was thrown when attempting to encrypt the Content Encryption Key");
        }
    }
The cipher algorithm name is the string used to correctly configure the cipher provider.
Do not confuse with {@link InternalKeyWrapAlgorithm#algorithmName()} which is an agreed-upon term
within Amazon Web Services.
aws-java-sdk-s3/src/main/java/com/amazonaws/services/s3/internal/crypto/keywrap/AesGcmKeyWrapper.java