Example usage for com.amazonaws.services.kms.model EncryptResult getCiphertextBlob

List of usage examples for com.amazonaws.services.kms.model EncryptResult getCiphertextBlob

Introduction

In this page you can find the example usage for com.amazonaws.services.kms.model EncryptResult getCiphertextBlob.

Prototype


public java.nio.ByteBuffer getCiphertextBlob() 

Source Link

Document

The encrypted plaintext.

Usage

From source file:com.nike.cerberus.service.AuthenticationService.java

License:Apache License

/**
 * Encrypts the data provided using KMS based on the provided region and key id.
 *
 * @param regionName Region where key is located
 * @param keyId Key id/*w  w w. j a  v a  2  s.  c o  m*/
 * @param data Data to be encrypted
 * @return encrypted data
 */
private byte[] encrypt(final String regionName, final String keyId, final byte[] data) {
    Region region;
    try {
        region = Region.getRegion(Regions.fromName(regionName));
    } catch (IllegalArgumentException iae) {
        throw ApiException.newBuilder().withApiErrors(DefaultApiError.AUTH_IAM_ROLE_AWS_REGION_INVALID)
                .withExceptionCause(iae).build();
    }

    final AWSKMSClient kmsClient = kmsClientFactory.getClient(region);

    try {
        final EncryptResult encryptResult = kmsClient
                .encrypt(new EncryptRequest().withKeyId(keyId).withPlaintext(ByteBuffer.wrap(data)));

        return encryptResult.getCiphertextBlob().array();
    } catch (AmazonClientException ace) {
        throw ApiException.newBuilder().withApiErrors(DefaultApiError.INTERNAL_SERVER_ERROR)
                .withExceptionCause(ace)
                .withExceptionMessage(
                        String.format("Unexpected error communicating with AWS KMS for region %s.", regionName))
                .build();
    }
}