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, signerobjectConfig| 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, shutdownbuildRequest, executeAndClose, executeRequest, fillResponseEntity, getObjectConfigpublic 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 S3ClientputObject in class S3JerseyClientpublic <T> GetObjectResult<T> getObject(GetObjectRequest request, java.lang.Class<T> objectType)
S3Clientrequest. 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 S3ClientgetObject in class S3JerseyClientpublic CopyObjectResult copyObject(CopyObjectRequest request)
S3ClientrequestcopyObject in interface S3ClientcopyObject in class S3JerseyClientpublic java.net.URL getPresignedUrl(PresignedUrlRequest request)
S3ClientrequestgetPresignedUrl in interface S3ClientgetPresignedUrl in class S3JerseyClientpublic void setObjectMetadata(java.lang.String bucketName,
java.lang.String key,
S3ObjectMetadata objectMetadata)
S3Clientkey in bucket bucketNamesetObjectMetadata in interface S3ClientsetObjectMetadata in class S3JerseyClientpublic InitiateMultipartUploadResult initiateMultipartUpload(InitiateMultipartUploadRequest request)
initiateMultipartUpload in interface S3ClientinitiateMultipartUpload in class S3JerseyClientpublic MultipartPartETag uploadPart(UploadPartRequest request)
uploadPart in interface S3ClientuploadPart in class S3JerseyClientpublic CopyPartResult copyPart(CopyPartRequest request)
copyPart in interface S3ClientcopyPart in class S3JerseyClientpublic CompleteMultipartUploadResult completeMultipartUpload(CompleteMultipartUploadRequest request)
completeMultipartUpload in interface S3ClientcompleteMultipartUpload in class S3JerseyClientpublic void abortMultipartUpload(AbortMultipartUploadRequest request)
abortMultipartUpload in interface S3ClientabortMultipartUpload in class S3JerseyClient