Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -90,10 +90,7 @@ public SignatureInfo parseSignature() throws OS3Exception {
}
}
if (signatureInfo == null) {
signatureInfo = new SignatureInfo(
Version.NONE,
"", "", "", "", "", "", "", false
);
signatureInfo = new SignatureInfo.Builder(Version.NONE).build();
}
signatureInfo.setUnfilteredURI(
context.getUriInfo().getRequestUri().getPath());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,16 +66,9 @@ public SignatureInfo parseSignature() throws MalformedResourceException {
if (isBlank(accessKeyID) || isBlank(signature)) {
throw new MalformedResourceException(authHeader);
}
return new SignatureInfo(
Version.V2,
"",
"",
accessKeyID,
signature,
"",
"",
"",
false
);
return new SignatureInfo.Builder(Version.V2)
.setAwsAccessId(accessKeyID)
.setSignature(signature)
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -91,17 +91,16 @@ public SignatureInfo parseSignature() throws MalformedResourceException {
Credential credentialObj = parseCredentials(split[0]);
String signedHeaders = parseSignedHeaders(split[1]);
String signature = parseSignature(split[2]);
return new SignatureInfo(
Version.V4,
credentialObj.getDate(),
dateHeader,
credentialObj.getAccessKeyID(),
signature,
signedHeaders,
credentialObj.createScope(),
algorithm,
true
);
return new SignatureInfo.Builder(Version.V4)
.setDate(credentialObj.getDate())
.setDateTime(dateHeader)
.setAwsAccessId(credentialObj.getAccessKeyID())
.setSignature(signature)
.setSignedHeaders(signedHeaders)
.setCredentialScope(credentialObj.createScope())
.setAlgorithm(algorithm)
.setSignPayload(true)
.build();
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,17 +91,16 @@ public SignatureInfo parseSignature() throws MalformedResourceException {
validateSignedHeaders();
validateSignature();

return new SignatureInfo(
Version.V4,
credential.getDate(),
queryParameters.get("X-Amz-Date"),
credential.getAccessKeyID(),
queryParameters.get("X-Amz-Signature"),
queryParameters.get("X-Amz-SignedHeaders"),
credential.createScope(),
queryParameters.get("X-Amz-Algorithm"),
false
);
return new SignatureInfo.Builder(Version.V4)
.setDate(credential.getDate())
.setDateTime(queryParameters.get("X-Amz-Date"))
.setAwsAccessId(credential.getAccessKeyID())
.setSignature(queryParameters.get("X-Amz-Signature"))
.setSignedHeaders(queryParameters.get("X-Amz-SignedHeaders"))
.setCredentialScope(credential.createScope())
.setAlgorithm(queryParameters.get("X-Amz-Algorithm"))
.setSignPayload(false)
.build();
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,58 +58,36 @@ public class SignatureInfo {

public SignatureInfo() { }

@SuppressWarnings("checkstyle:ParameterNumber")
public SignatureInfo(
Version version,
String date,
String dateTime,
String awsAccessId,
String signature,
String signedHeaders,
String credentialScope,
String algorithm,
boolean signPayload
) {
initialize(version, date, dateTime, awsAccessId, signature, signedHeaders,
credentialScope, algorithm, signPayload, null, null);
}

public void initialize(
SignatureInfo signatureInfo
) {
initialize(signatureInfo.getVersion(), signatureInfo.getDate(),
signatureInfo.getDateTime(), signatureInfo.getAwsAccessId(),
signatureInfo.getSignature(), signatureInfo.getSignedHeaders(),
signatureInfo.getCredentialScope(), signatureInfo.getAlgorithm(),
signatureInfo.isSignPayload(), signatureInfo.getUnfilteredURI(),
signatureInfo.getStringToSign());
}

@SuppressWarnings({"checkstyle:ParameterNumber", "checkstyle:HiddenField"})
public void initialize(
Version version,
String date,
String dateTime,
String awsAccessId,
String signature,
String signedHeaders,
String credentialScope,
String algorithm,
boolean signPayload,
String uri,
String stringToSign
) {
this.version = version;
this.date = date;
this.dateTime = dateTime;
this.awsAccessId = awsAccessId;
this.signature = signature;
this.signedHeaders = signedHeaders;
this.credentialScope = credentialScope;
this.algorithm = algorithm;
this.signPayload = signPayload;
this.unfilteredURI = uri;
this.stringToSign = stringToSign;
private SignatureInfo(Builder b) {
initialize(b);
}

public void initialize(SignatureInfo signatureInfo) {
initialize(new Builder(signatureInfo.getVersion())
.setDate(signatureInfo.getDate())
.setDateTime(signatureInfo.getDateTime())
.setAwsAccessId(signatureInfo.getAwsAccessId())
.setSignature(signatureInfo.getSignature())
.setSignedHeaders(signatureInfo.getSignedHeaders())
.setCredentialScope(signatureInfo.getCredentialScope())
.setAlgorithm(signatureInfo.getAlgorithm())
.setSignPayload(signatureInfo.isSignPayload())
.setUnfilteredURI(signatureInfo.getUnfilteredURI())
.setStringToSign(signatureInfo.getStringToSign()));
}

private void initialize(Builder b) {
this.version = b.version;
this.date = b.date;
this.dateTime = b.dateTime;
this.awsAccessId = b.awsAccessId;
this.signature = b.signature;
this.signedHeaders = b.signedHeaders;
this.credentialScope = b.credentialScope;
this.algorithm = b.algorithm;
this.signPayload = b.signPayload;
this.unfilteredURI = b.unfilteredURI;
this.stringToSign = b.stringToSign;
}

public String getAwsAccessId() {
Expand Down Expand Up @@ -170,4 +148,79 @@ public void setStrToSign(String strToSign) {
public enum Version {
NONE, V4, V2;
}

/**
* Builder class for SignatureInfo.
*/
public static class Builder {
private Version version;
private String date = "";
private String dateTime = "";
private String awsAccessId = "";
private String signature = "";
private String signedHeaders = "";
private String credentialScope = "";
private String algorithm = "";
private boolean signPayload = true;
private String unfilteredURI = null;
private String stringToSign = null;

public Builder(Version version) {
this.version = version;
}

public Builder setDate(String date) {
this.date = date;
return this;
}

public Builder setDateTime(String dateTime) {
this.dateTime = dateTime;
return this;
}

public Builder setAwsAccessId(String awsAccessId) {
this.awsAccessId = awsAccessId;
return this;
}

public Builder setSignature(String signature) {
this.signature = signature;
return this;
}

public Builder setSignedHeaders(String signedHeaders) {
this.signedHeaders = signedHeaders;
return this;
}

public Builder setCredentialScope(String credentialScope) {
this.credentialScope = credentialScope;
return this;
}

public Builder setAlgorithm(String algorithm) {
this.algorithm = algorithm;
return this;
}

public Builder setSignPayload(boolean signPayload) {
this.signPayload = signPayload;
return this;
}

public Builder setUnfilteredURI(String uri) {
this.unfilteredURI = uri;
return this;
}

public Builder setStringToSign(String stringToSign) {
this.stringToSign = stringToSign;
return this;
}

public SignatureInfo build() {
return new SignatureInfo(this);
}
}
}
Loading