Package org.tomitribe.auth.signatures
Class Signature
- java.lang.Object
-
- org.tomitribe.auth.signatures.Signature
-
public class Signature extends java.lang.Object
-
-
Field Summary
Fields Modifier and Type Field Description static longmaxTimeSkewInMillisecondsThe maximum time skew between the client and the server.
-
Constructor Summary
Constructors Constructor Description Signature(java.lang.String keyId, java.lang.String algorithm, java.lang.String signature, java.lang.String... headers)Deprecated.Signature(java.lang.String keyId, java.lang.String signingAlgorithm, java.lang.String algorithm, java.security.spec.AlgorithmParameterSpec parameterSpec, java.lang.String signature, java.util.List<java.lang.String> headers)Signature(java.lang.String keyId, java.lang.String signingAlgorithm, java.lang.String algorithm, java.security.spec.AlgorithmParameterSpec parameterSpec, java.util.List<java.lang.String> headers)Construct a signature configuration instance with the specified keyId, algorithm and HTTP headers.Signature(java.lang.String keyId, java.lang.String algorithm, java.lang.String signature, java.util.List<java.lang.String> headers)Deprecated.Signature(java.lang.String keyId, Algorithm algorithm, java.lang.String signature, java.lang.String... headers)Deprecated.Signature(java.lang.String keyId, Algorithm algorithm, java.lang.String signature, java.util.List<java.lang.String> headers)Deprecated.Signature(java.lang.String keyId, SigningAlgorithm signingAlgorithm, Algorithm algorithm, java.security.spec.AlgorithmParameterSpec parameterSpec, java.lang.String signature, java.util.List<java.lang.String> headers)Signature(java.lang.String keyId, SigningAlgorithm signingAlgorithm, Algorithm algorithm, java.security.spec.AlgorithmParameterSpec parameterSpec, java.lang.String signature, java.util.List<java.lang.String> headers, java.lang.Long maxSignatureValidityDuration)Signature(java.lang.String keyId, SigningAlgorithm signingAlgorithm, Algorithm algorithm, java.security.spec.AlgorithmParameterSpec parameterSpec, java.lang.String signature, java.util.List<java.lang.String> headers, java.lang.Long maxSignatureValidityDuration, java.lang.Long signatureCreatedTime, java.lang.Long signatureExpiresTime)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static SignaturefromString(java.lang.String authorization)static SignaturefromString(java.lang.String authorization, Algorithm algorithm)Constructs a Signature object by parsing the 'Authorization' header.AlgorithmgetAlgorithm()Returns the detailed implementation algorithm for HTTP signatures.java.util.List<java.lang.String>getHeaders()java.lang.StringgetKeyId()java.security.spec.AlgorithmParameterSpecgetParameterSpec()Returns the specification of cryptographic parameters.java.lang.StringgetSignature()Returns the base-64 encoded value of the signature.java.util.DategetSignatureCreation()Returns the signature creation time.java.lang.LonggetSignatureCreationTimeMilliseconds()Returns the signature creation time in milliseconds since the epoch.java.util.DategetSignatureExpiration()Returns the signature expiration time.java.lang.LonggetSignatureExpirationTimeMilliseconds()Returns the signature expiration time in milliseconds since the epoch.java.lang.LonggetSignatureMaxValidityMilliseconds()Returns the signature max validity duration, in milliseconds.SigningAlgorithmgetSigningAlgorithm()Returns the identifier for the HTTP Signature Algorithm, as registered in the HTTP Signature Algorithms Registry.java.lang.StringtoParamString()Returns the formatted signature parameters without any "Signature " prefixjava.lang.StringtoString()java.lang.StringtoString(java.lang.String prefix)voidverifySignatureValidityDates()Verify the signature is valid with regards to the (created) and (expires) fields.
-
-
-
Constructor Detail
-
Signature
public Signature(java.lang.String keyId, java.lang.String signingAlgorithm, java.lang.String algorithm, java.security.spec.AlgorithmParameterSpec parameterSpec, java.util.List<java.lang.String> headers)Construct a signature configuration instance with the specified keyId, algorithm and HTTP headers.- Parameters:
keyId- An opaque string that the server can use to look up the component they need to validate the signature.signingAlgorithm- An identifier for the HTTP Signature algorithm. This should be "hs2019" except for legacy applications that use an older version of the draft HTTP signature specification.algorithm- The detailed algorithm used to sign the message.parameterSpec- optional cryptographic parameters for the signature.headers- The list of HTTP headers that will be used in the signature.
-
Signature
@Deprecated public Signature(java.lang.String keyId, java.lang.String algorithm, java.lang.String signature, java.lang.String... headers)Deprecated.
-
Signature
@Deprecated public Signature(java.lang.String keyId, Algorithm algorithm, java.lang.String signature, java.lang.String... headers)Deprecated.
-
Signature
@Deprecated public Signature(java.lang.String keyId, java.lang.String algorithm, java.lang.String signature, java.util.List<java.lang.String> headers)Deprecated.
-
Signature
@Deprecated public Signature(java.lang.String keyId, Algorithm algorithm, java.lang.String signature, java.util.List<java.lang.String> headers)Deprecated.
-
Signature
public Signature(java.lang.String keyId, java.lang.String signingAlgorithm, java.lang.String algorithm, java.security.spec.AlgorithmParameterSpec parameterSpec, java.lang.String signature, java.util.List<java.lang.String> headers)
-
Signature
public Signature(java.lang.String keyId, SigningAlgorithm signingAlgorithm, Algorithm algorithm, java.security.spec.AlgorithmParameterSpec parameterSpec, java.lang.String signature, java.util.List<java.lang.String> headers)
-
Signature
public Signature(java.lang.String keyId, SigningAlgorithm signingAlgorithm, Algorithm algorithm, java.security.spec.AlgorithmParameterSpec parameterSpec, java.lang.String signature, java.util.List<java.lang.String> headers, java.lang.Long maxSignatureValidityDuration)
-
Signature
public Signature(java.lang.String keyId, SigningAlgorithm signingAlgorithm, Algorithm algorithm, java.security.spec.AlgorithmParameterSpec parameterSpec, java.lang.String signature, java.util.List<java.lang.String> headers, java.lang.Long maxSignatureValidityDuration, java.lang.Long signatureCreatedTime, java.lang.Long signatureExpiresTime)
-
-
Method Detail
-
getSignatureCreation
public java.util.Date getSignatureCreation()
Returns the signature creation time.- Returns:
- the signature creation time.
-
getSignatureCreationTimeMilliseconds
public java.lang.Long getSignatureCreationTimeMilliseconds()
Returns the signature creation time in milliseconds since the epoch.- Returns:
- the signature creation time in milliseconds since the epoch.
-
getSignatureMaxValidityMilliseconds
public java.lang.Long getSignatureMaxValidityMilliseconds()
Returns the signature max validity duration, in milliseconds.- Returns:
- the signature max validity duration, in milliseconds.
-
getSignatureExpiration
public java.util.Date getSignatureExpiration()
Returns the signature expiration time.- Returns:
- the signature expiration time.
-
getSignatureExpirationTimeMilliseconds
public java.lang.Long getSignatureExpirationTimeMilliseconds()
Returns the signature expiration time in milliseconds since the epoch.- Returns:
- the signature expiration time in milliseconds since the epoch.
-
getKeyId
public java.lang.String getKeyId()
-
getAlgorithm
public Algorithm getAlgorithm()
Returns the detailed implementation algorithm for HTTP signatures.- Returns:
- the cryptographic algorithm.
-
getSigningAlgorithm
public SigningAlgorithm getSigningAlgorithm()
Returns the identifier for the HTTP Signature Algorithm, as registered in the HTTP Signature Algorithms Registry.- Returns:
- the identifier for the HTTP Signature Algorithm.
-
getSignature
public java.lang.String getSignature()
Returns the base-64 encoded value of the signature.- Returns:
- the base-64 encoded value of the signature.
-
getParameterSpec
public java.security.spec.AlgorithmParameterSpec getParameterSpec()
Returns the specification of cryptographic parameters.- Returns:
- specification of cryptographic parameters.
-
getHeaders
public java.util.List<java.lang.String> getHeaders()
-
verifySignatureValidityDates
public void verifySignatureValidityDates()
Verify the signature is valid with regards to the (created) and (expires) fields. When the '(created)' field is present in the HTTP signature, the '(created)' field represents the date when the signature has been created. When the '(expires)' field is present in the HTTP signature, the '(expires)' field represents the date when the signature expires.
-
fromString
public static Signature fromString(java.lang.String authorization, Algorithm algorithm)
Constructs a Signature object by parsing the 'Authorization' header. As stated in the HTTP signature specification, the value of the algorithm parameter in the 'Authorization' header should be set to generic identifier. The detailed algorithm should be derived from the keyId. Hence it is not possible to determine the detailed algorithm by inspecting the signature data.- Parameters:
authorization- The value of the HTTP 'Authorization' header containing the signature data.algorithm- The detailed cryptographic algorithm for the HTTP signature.- Returns:
- The Signature object.
-
fromString
public static Signature fromString(java.lang.String authorization)
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
toParamString
public java.lang.String toParamString()
Returns the formatted signature parameters without any "Signature " prefix
-
toString
public java.lang.String toString(java.lang.String prefix)
-
-