public class S3EncryptionClient extends S3JerseyClient
$ keytool -genkeypair -keystore keystore.jks -alias masterkey -keyalg RSA \ -keysize 2048 -dname "CN=My Name, OU=My Division, O=My Company, L=My Location, ST=MA, C=US" Enter keystore password: changeit Re-enter new password: changeit Enter key password for <masterkey> (RETURN if same as keystore password):Inside your application, you can then construct and load a Keystore object,
KeyStore.load(InputStream, char[])
Once the keystore has been loaded, you then
construct a EncryptionConfig object with the keystore:
EncryptionConfig ec = new EncryptionConfig(keystore, keystorePassword.toCharArray(), "masterkey", provider, 128);The "provider" argument is used to specify the security provider to be used for cryptographic operations. You can set it to null to use the default provider(s) as specified in your jre/lib/security/java.security file. The final argument is the AES encryption key size. Note that most JDKs only support 128-bit AES encryption by default and required the "unlimited strength jurisdiction policy files" to be installed to achieve 256-bit support. See your JRE/JDK download page for details.
S3EncryptionClient
:
S3Client s3Client = new S3EncryptionClient(s3Config, ec);
client, loadBalancer, s3Config, signer
objectConfig
Constructor and Description |
---|
S3EncryptionClient(S3Config s3Config,
com.sun.jersey.api.client.ClientHandler clientHandler,
EncryptionConfig encryptionConfig) |
S3EncryptionClient(S3Config s3Config,
EncryptionConfig encryptionConfig) |
Modifier and Type | Method and Description |
---|---|
void |
abortMultipartUpload(AbortMultipartUploadRequest request) |
CompleteMultipartUploadResult |
completeMultipartUpload(CompleteMultipartUploadRequest request) |
CopyObjectResult |
copyObject(CopyObjectRequest request)
Remotely copies an object using the parameters specified in
request |
CopyPartResult |
copyPart(CopyPartRequest request) |
<T> GetObjectResult<T> |
getObject(GetObjectRequest request,
java.lang.Class<T> objectType)
Gets an object using the parameters specified in
request . |
java.net.URL |
getPresignedUrl(PresignedUrlRequest request)
Generates a pre-signed URL using the parameters specified in
request |
InitiateMultipartUploadResult |
initiateMultipartUpload(InitiateMultipartUploadRequest request) |
PutObjectResult |
putObject(PutObjectRequest request)
Encrypted version of
S3JerseyClient.putObject(PutObjectRequest) . |
boolean |
rekey(java.lang.String bucketName,
java.lang.String key)
"Rekeys" an object.
|
void |
setObjectMetadata(java.lang.String bucketName,
java.lang.String key,
S3ObjectMetadata objectMetadata)
Sets metadata on object
key in bucket bucketName |
MultipartPartETag |
uploadPart(UploadPartRequest request) |
appendObject, bucketExists, copyObject, copyRange, createBucket, createBucket, deleteBucket, deleteBucket, deleteBucketCors, deleteBucketLifecycle, deleteBucketPolicy, deleteObject, deleteObject, deleteObjects, deleteObjectTagging, deleteVersion, destroy, enableObjectLock, executeRequest, extendRetentionPeriod, finalize, getBucketAcl, getBucketCors, getBucketDeletionStatus, getBucketInfo, getBucketLifecycle, getBucketLocation, getBucketPolicy, getBucketVersioning, getLoadBalancer, getObject, getObjectAcl, getObjectAcl, getObjectLegalHold, getObjectLockConfiguration, getObjectMetadata, getObjectMetadata, getObjectRetention, getObjectTagging, getPresignedUrl, getS3Config, initiateMultipartUpload, listBucketMetadataSearchKeys, listBuckets, listBuckets, listDataNodes, listMoreObjects, listMoreVersions, listMultipartUploads, listMultipartUploads, listObjects, listObjects, listObjects, listParts, listParts, listSystemMetadataSearchKeys, listVersions, listVersions, pingNode, pingNode, putObject, putObject, putObjectTagging, queryMoreObjects, queryObjects, readObject, readObject, readObjectStream, setBucketAcl, setBucketAcl, setBucketAcl, setBucketCors, setBucketLifecycle, setBucketPolicy, setBucketStaleReadAllowed, setBucketVersioning, setObjectAcl, setObjectAcl, setObjectAcl, setObjectLegalHold, setObjectLockConfiguration, setObjectRetention, shutdown
buildRequest, executeAndClose, executeRequest, fillResponseEntity, getObjectConfig
public S3EncryptionClient(S3Config s3Config, EncryptionConfig encryptionConfig)
public S3EncryptionClient(S3Config s3Config, com.sun.jersey.api.client.ClientHandler clientHandler, EncryptionConfig encryptionConfig)
public boolean rekey(java.lang.String bucketName, java.lang.String key)
bucketName
- the name of the bucket that holds the object to rekey.key
- the name of the object to rekey.java.lang.IllegalArgumentException
- if the object is not encryptedpublic PutObjectResult putObject(PutObjectRequest request)
S3JerseyClient.putObject(PutObjectRequest)
.
Note: this method will write the encrypted object first, then update the metadata to finalize encryption properties (including original SHA1 and metadata signature). For version-enabled buckets, this will create 2 versions.
putObject
in interface S3Client
putObject
in class S3JerseyClient
public <T> GetObjectResult<T> getObject(GetObjectRequest request, java.lang.Class<T> objectType)
S3Client
request
. Object details as well as the translated
data (converted to objectType
) are contained in the GetObjectResult
instance.
Note: this method will return null
for 304 and 412 responses (failed preconditions).
This method will open a stream for the object data. Be sure to call getObject()
and,
if requesting an InputStream
, properly close the stream to release the connection.
getObject
in interface S3Client
getObject
in class S3JerseyClient
public CopyObjectResult copyObject(CopyObjectRequest request)
S3Client
request
copyObject
in interface S3Client
copyObject
in class S3JerseyClient
public java.net.URL getPresignedUrl(PresignedUrlRequest request)
S3Client
request
getPresignedUrl
in interface S3Client
getPresignedUrl
in class S3JerseyClient
public void setObjectMetadata(java.lang.String bucketName, java.lang.String key, S3ObjectMetadata objectMetadata)
S3Client
key
in bucket bucketName
setObjectMetadata
in interface S3Client
setObjectMetadata
in class S3JerseyClient
public InitiateMultipartUploadResult initiateMultipartUpload(InitiateMultipartUploadRequest request)
initiateMultipartUpload
in interface S3Client
initiateMultipartUpload
in class S3JerseyClient
public MultipartPartETag uploadPart(UploadPartRequest request)
uploadPart
in interface S3Client
uploadPart
in class S3JerseyClient
public CopyPartResult copyPart(CopyPartRequest request)
copyPart
in interface S3Client
copyPart
in class S3JerseyClient
public CompleteMultipartUploadResult completeMultipartUpload(CompleteMultipartUploadRequest request)
completeMultipartUpload
in interface S3Client
completeMultipartUpload
in class S3JerseyClient
public void abortMultipartUpload(AbortMultipartUploadRequest request)
abortMultipartUpload
in interface S3Client
abortMultipartUpload
in class S3JerseyClient