Class SignedThenEncryptedJwt

  • All Implemented Interfaces:
    Jwt, Payload

    public class SignedThenEncryptedJwt
    extends EncryptedJwt
    A nested signed-then-encrypted JWT.
    • Constructor Detail

      • SignedThenEncryptedJwt

        public SignedThenEncryptedJwt​(EncryptedJwt encryptedJwt)
        Constructs a fresh signed-then-encrypted JWT from an encrypted JWT. To use if you know that the encrypted JWT is actually containing a JWS.
        Parameters:
        encryptedJwt - the encrypted JWT.
      • SignedThenEncryptedJwt

        public SignedThenEncryptedJwt​(JweHeader header,
                                      SignedJwt payload,
                                      Key publicKey)
        Constructs a fresh signed-then-encrypted JWT with the given signed JWT payload, JWE headers and encryption key.
        Parameters:
        header - the JWE headers.
        payload - the signed JWT payload.
        publicKey - the encryption key.
      • SignedThenEncryptedJwt

        public SignedThenEncryptedJwt​(JweHeader header,
                                      String encodedHeader,
                                      byte[] encryptedContentEncryptionKey,
                                      byte[] initialisationVector,
                                      byte[] ciphertext,
                                      byte[] authenticationTag)
        Reconstructs a signed-then-encrypted JWT from components parts of the encrypted JWT string.
        Parameters:
        header - the decoded headers.
        encodedHeader - the encoded headers.
        encryptedContentEncryptionKey - the encrypted content encryption key (CEK), or null if not used.
        initialisationVector - the initialisation vector (IV).
        ciphertext - the encrypted ciphertext payload.
        authenticationTag - the authentication MAC tag.
    • Method Detail

      • verify

        public boolean verify​(SigningHandler signingHandler)
        Verifies that the signature is valid on the nested signed JWT.
        Parameters:
        signingHandler - the handler to use for verifying the signature.
        Returns:
        true if the signature is valid, otherwise false.
        Throws:
        JwsVerifyingException - if the outer JWT has not already been decrypted.
      • decryptAndVerify

        @Deprecated
        public boolean decryptAndVerify​(Key decryptionKey,
                                        SigningHandler signingHandler)
        Decrypts the outer JWT and then verifies the signature on the inner JWT.
        Parameters:
        decryptionKey - the decryption key for the outer JWE.
        signingHandler - the signing handler for verifying the nested JWS.
        Returns:
        true if the nested signature is valid, otherwise false.
        Throws:
        JweDecryptionException - if the JWE cannot be decrypted.
      • decryptAndVerify

        public Promise<SignedThenEncryptedJwt,​JweDecryptionCheckedException> decryptAndVerify​(SecretsProvider secretsProvider,
                                                                                                    Purpose<? extends CryptoKey> decryptionPurpose,
                                                                                                    Purpose<VerificationKey> verificationPurpose)
        Decrypts the outer JWT and then verifies the signature on the inner JWT using secrets from the supplied SecretsProvider. If decryption and verification are successful then it returns the decrypted and verified JWT as a promise, otherwise the promise will resolve to a JweDecryptionCheckedException.
        Parameters:
        secretsProvider - used to resolve secrets to decrypt and verify the JWT.
        decryptionPurpose - the purpose to use for decrypting the outer JWT.
        verificationPurpose - the purpose to use for verifying the signed inner JWT.
        Returns:
        a promise to the decrypted and verified JWT or to an exception indicating that either decryption or signature verification failed.
      • getClaimsSet

        public JwtClaimsSet getClaimsSet()
        Description copied from interface: Jwt
        Gets the claims set object for the Jwt, which contains all of the claims (name value pairs) conveyed by the JWT.
        Specified by:
        getClaimsSet in interface Jwt
        Overrides:
        getClaimsSet in class EncryptedJwt
        Returns:
        The JWTs Claims Set.