Package com.nimbusds.jose
Class JWSObject
- java.lang.Object
-
- com.nimbusds.jose.JOSEObject
-
- com.nimbusds.jose.JWSObject
-
- All Implemented Interfaces:
Serializable
- Direct Known Subclasses:
SignedJWT
@ThreadSafe public class JWSObject extends JOSEObject
JSON Web Signature (JWS) secured object serialisable to compact encoding.This class is thread-safe.
- Version:
- 2021-10-05
- Author:
- Vladimir Dzhuvinov
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classJWSObject.StateEnumeration of the states of a JSON Web Signature (JWS) secured object.
-
Field Summary
-
Fields inherited from class com.nimbusds.jose.JOSEObject
MIME_TYPE_COMPACT, MIME_TYPE_JS
-
-
Constructor Summary
Constructors Constructor Description JWSObject(JWSHeader header, Payload payload)Creates a new to-be-signed JSON Web Signature (JWS) object with the specified header and payload.JWSObject(Base64URL firstPart, Payload payload, Base64URL thirdPart)Creates a new signed JSON Web Signature (JWS) object with the specified serialised parts and payload which can be optionally unencoded (RFC 7797).JWSObject(Base64URL firstPart, Base64URL secondPart, Base64URL thirdPart)Creates a new signed JSON Web Signature (JWS) object with the specified serialised parts.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description JWSHeadergetHeader()Returns the header of this JOSE object.Base64URLgetSignature()Returns the signature of this JWS object.byte[]getSigningInput()Returns the signing input for this JWS object.JWSObject.StategetState()Returns the state of the JWS secured object.static JWSObjectparse(String s)Parses a JWS object from the specified string in compact format.static JWSObjectparse(String s, Payload detachedPayload)Parses a JWS object from the specified string in compact format and a detached payload which can be optionally unencoded (RFC 7797).Stringserialize()Serialises this JWS object to its compact format consisting of Base64URL-encoded parts delimited by period ('.') characters.Stringserialize(boolean detachedPayload)Serialises this JWS object to its compact format consisting of Base64URL-encoded parts delimited by period ('.') characters.voidsign(JWSSigner signer)Signs this JWS object with the specified signer.booleanverify(JWSVerifier verifier)Checks the signature of this JWS object with the specified verifier.-
Methods inherited from class com.nimbusds.jose.JOSEObject
getParsedParts, getParsedString, getPayload, setParsedParts, setPayload, split
-
-
-
-
Constructor Detail
-
JWSObject
public JWSObject(JWSHeader header, Payload payload)
Creates a new to-be-signed JSON Web Signature (JWS) object with the specified header and payload. The initial state will beunsigned.- Parameters:
header- The JWS header. Must not benull.payload- The payload. Must not benull.
-
JWSObject
public JWSObject(Base64URL firstPart, Base64URL secondPart, Base64URL thirdPart) throws ParseException
Creates a new signed JSON Web Signature (JWS) object with the specified serialised parts. The state will besigned.- Parameters:
firstPart- The first part, corresponding to the JWS header. Must not benull.secondPart- The second part, corresponding to the payload. Must not benull.thirdPart- The third part, corresponding to the signature. Must not benull.- Throws:
ParseException- If parsing of the serialised parts failed.
-
JWSObject
public JWSObject(Base64URL firstPart, Payload payload, Base64URL thirdPart) throws ParseException
Creates a new signed JSON Web Signature (JWS) object with the specified serialised parts and payload which can be optionally unencoded (RFC 7797). The state will besigned.- Parameters:
firstPart- The first part, corresponding to the JWS header. Must not benull.payload- The payload. Must not benull.thirdPart- The third part, corresponding to the signature. Must not benull.- Throws:
ParseException- If parsing of the serialised parts failed.
-
-
Method Detail
-
getHeader
public JWSHeader getHeader()
Description copied from class:JOSEObjectReturns the header of this JOSE object.- Specified by:
getHeaderin classJOSEObject- Returns:
- The header.
-
getSigningInput
public byte[] getSigningInput()
Returns the signing input for this JWS object.- Returns:
- The signing input, to be passed to a JWS signer or verifier.
-
getSignature
public Base64URL getSignature()
Returns the signature of this JWS object.- Returns:
- The signature,
nullif the JWS object is not signed yet.
-
getState
public JWSObject.State getState()
Returns the state of the JWS secured object.- Returns:
- The state.
-
sign
public void sign(JWSSigner signer) throws JOSEException
Signs this JWS object with the specified signer. The JWS object must be in aunsignedstate.- Parameters:
signer- The JWS signer. Must not benull.- Throws:
IllegalStateException- If the JWS object is not in anunsigned state.JOSEException- If the JWS object couldn't be signed.
-
verify
public boolean verify(JWSVerifier verifier) throws JOSEException
Checks the signature of this JWS object with the specified verifier. The JWS object must be in asignedstate.- Parameters:
verifier- The JWS verifier. Must not benull.- Returns:
trueif the signature was successfully verified, elsefalse.- Throws:
IllegalStateException- If the JWS object is not in asignedorverified state.JOSEException- If the JWS object couldn't be verified.
-
serialize
public String serialize()
Serialises this JWS object to its compact format consisting of Base64URL-encoded parts delimited by period ('.') characters. It must be in asignedorverifiedstate.[header-base64url].[payload-base64url].[signature-base64url]
- Specified by:
serializein classJOSEObject- Returns:
- The serialised JWS object.
- Throws:
IllegalStateException- If the JWS object is not in asignedorverifiedstate.
-
serialize
public String serialize(boolean detachedPayload)
Serialises this JWS object to its compact format consisting of Base64URL-encoded parts delimited by period ('.') characters. It must be in asignedorverifiedstate.- Parameters:
detachedPayload-trueto return a serialised object with a detached payload compliant with RFC 7797,falsefor regular JWS serialisation.- Returns:
- The serialised JOSE object.
- Throws:
IllegalStateException- If the JOSE object is not in a state that permits serialisation.
-
parse
public static JWSObject parse(String s) throws ParseException
Parses a JWS object from the specified string in compact format. The parsed JWS object will be given aJWSObject.State.SIGNEDstate.- Parameters:
s- The JWS string to parse. Must not benull.- Returns:
- The JWS object.
- Throws:
ParseException- If the string couldn't be parsed to a JWS object.
-
parse
public static JWSObject parse(String s, Payload detachedPayload) throws ParseException
Parses a JWS object from the specified string in compact format and a detached payload which can be optionally unencoded (RFC 7797). The parsed JWS object will be given aJWSObject.State.SIGNEDstate.- Parameters:
s- The JWS string to parse for a detached payload. Must not benull.detachedPayload- The detached payload, optionally unencoded (RFC 7797). Must not benull.- Returns:
- The JWS object.
- Throws:
ParseException- If the string couldn't be parsed to a JWS object.
-
-