Package org.teiid.translator.amazon.s3
Class AWS4SignerForChunkedUpload
- java.lang.Object
-
- org.teiid.translator.amazon.s3.AWS4SignerBase
-
- org.teiid.translator.amazon.s3.AWS4SignerForChunkedUpload
-
public class AWS4SignerForChunkedUpload extends AWS4SignerBase
Sample AWS4 signer demonstrating how to sign 'chunked' uploads This code was taken from Amazon Example. No copyright found.
-
-
Field Summary
Fields Modifier and Type Field Description static String
STREAMING_BODY_SHA256
SHA256 substitute marker used in place of x-amz-content-sha256 when employing chunked uploads-
Fields inherited from class org.teiid.translator.amazon.s3.AWS4SignerBase
ALGORITHM, dateStampFormat, DateStringFormat, dateTimeFormat, EMPTY_BODY_SHA256, endpointUrl, httpMethod, ISO8601BasicFormat, regionName, SCHEME, serviceName, TERMINATOR, UNSIGNED_PAYLOAD
-
-
Constructor Summary
Constructors Constructor Description AWS4SignerForChunkedUpload(URL endpointUrl, String httpMethod, String serviceName, String regionName)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static long
calculateChunkedContentLength(long originalLength, long chunkSize)
Calculates the expanded payload size of our data when it is chunkedString
computeSignature(Map<String,String> headers, Map<String,String> queryParameters, String bodyHash, String awsAccessKey, String awsSecretKey)
Computes an AWS4 signature for a request, ready for inclusion as an 'Authorization' header.byte[]
constructSignedChunk(int userDataLen, byte[] userData)
Returns a chunk for upload consisting of the signed 'header' or chunk prefix plus the user data.-
Methods inherited from class org.teiid.translator.amazon.s3.AWS4SignerBase
getCanonicalizedHeaderString, getCanonicalizedQueryString, getCanonicalizedResourcePath, getCanonicalizeHeaderNames, getCanonicalRequest, getStringToSign, hash, hash, sign, urlEncode
-
-
-
-
Field Detail
-
STREAMING_BODY_SHA256
public static final String STREAMING_BODY_SHA256
SHA256 substitute marker used in place of x-amz-content-sha256 when employing chunked uploads- See Also:
- Constant Field Values
-
-
Method Detail
-
computeSignature
public String computeSignature(Map<String,String> headers, Map<String,String> queryParameters, String bodyHash, String awsAccessKey, String awsSecretKey)
Computes an AWS4 signature for a request, ready for inclusion as an 'Authorization' header.- Parameters:
headers
- The request headers; 'Host' and 'X-Amz-Date' will be added to this set.queryParameters
- Any query parameters that will be added to the endpoint. The parameters should be specified in canonical format.bodyHash
- Precomputed SHA256 hash of the request body content; this value should also be set as the header 'X-Amz-Content-SHA256' for non-streaming uploads.awsAccessKey
- The user's AWS Access Key.awsSecretKey
- The user's AWS Secret Key.- Returns:
- The computed authorization string for the request. This value needs to be set as the header 'Authorization' on the subsequent HTTP request.
-
calculateChunkedContentLength
public static long calculateChunkedContentLength(long originalLength, long chunkSize)
Calculates the expanded payload size of our data when it is chunked- Parameters:
originalLength
- The true size of the data payload to be uploadedchunkSize
- The size of each chunk we intend to send; each chunk will be prefixed with signed header data, expanding the overall size by a determinable amount- Returns:
- The overall payload size to use as content-length on a chunked upload
-
constructSignedChunk
public byte[] constructSignedChunk(int userDataLen, byte[] userData)
Returns a chunk for upload consisting of the signed 'header' or chunk prefix plus the user data. The signature of the chunk incorporates the signature of the previous chunk (or, if the first chunk, the signature of the headers portion of the request).- Parameters:
userDataLen
- The length of the user data contained in userDatauserData
- Contains the user data to be sent in the upload chunk- Returns:
- A new buffer of data for upload containing the chunk header plus user data
-
-