Class JWK

  • Direct Known Subclasses:
    EcJWK, OctJWK, OkpJWK, RsaJWK

    public abstract class JWK
    extends Object
    The abstract base class for the 3 implementations of JWK.
    • Constructor Detail

      • JWK

        @Deprecated
        protected JWK​(KeyType keyType,
                      String use,
                      String algorithm,
                      String keyId)
        Deprecated.
        Use the builder instead.
        Creates a JWK given the basic parameters.
        Parameters:
        keyType - the JWK key type
        use - the JWK use
        algorithm - the JWK algorithm
        keyId - the JWK key id
      • JWK

        @Deprecated
        protected JWK​(KeyType keyType,
                      String use,
                      String algorithm,
                      String keyId,
                      String x509url,
                      String x509Thumbprint,
                      List<String> x509Chain)
        Deprecated.
        Use the builder instead.
        Creates a JWK given the basic parameters.
        Parameters:
        keyType - the JWK key type
        use - the JWK use
        algorithm - the JWK algorithm
        keyId - the JWK key id
        x509url - the x509 url for the key
        x509Thumbprint - the x509 thumbnail for the key
        x509Chain - the x509 chain as a list of Base64 encoded strings
      • JWK

        protected JWK​(KeyType keyType,
                      String use,
                      Set<KeyOperation> keyOperations,
                      Algorithm algorithm,
                      String keyId,
                      String x509url,
                      String x509Thumbprint,
                      List<String> x509Chain)
        Creates a JWK given the basic parameters.
        Parameters:
        keyType - the JWK key type
        use - the JWK use
        keyOperations - the JWK key Operations
        algorithm - the JWK algorithm
        keyId - the JWK key id
        x509url - the x509 url for the key
        x509Thumbprint - the x509 thumbprint for the key
        x509Chain - the x509 chain as a list of Base64 encoded strings
    • Method Detail

      • getKeyType

        public KeyType getKeyType()
        Gets the kty parameter of the JWK.
        Returns:
        The KeyType for the JWK
      • getUse

        public String getUse()
        Gets the use parameter of the JWK.
        Returns:
        The key use.
      • getKeyOperations

        public Set<KeyOperation> getKeyOperations()
        Gets the key operations parameter of the JWK.
        Returns:
        A possibly null set of key operations representing the key operations parameter. If null, then all operations are allowed. An empty set mean that no key operations are allowed.
      • getAlgorithm

        @Deprecated
        public String getAlgorithm()
        Deprecated.
        replaced by getJwaAlgorithm()
        Gets the alg parameter of the JWK.
        Returns:
        The algorithm name representing the alg parameter
      • getJwaAlgorithm

        public Algorithm getJwaAlgorithm()
        Gets the alg parameter of the JWK.
        Returns:
        The algorithm
      • getKeyId

        public String getKeyId()
        Gets the keyId parameter of the JWK.
        Returns:
        A String representing the keyId parameter
      • toJsonString

        public String toJsonString()
        Prints the JWK Object as a json string.
        Returns:
        A String representing JWK
      • toJsonValue

        public JsonValue toJsonValue()
        Returns a json representation of the JWK.
        Returns:
        A JSON representation.
      • putField

        protected void putField​(JsonValue jsonValue,
                                String key,
                                Object value)
        Add a string value into a json only if it's not null.
        Parameters:
        jsonValue - the json
        key - the Map key or List index identifying the child value to set.
        value - the value to assign to the member.
      • parse

        public static JWK parse​(String json)
        Parses a String into the proper JWK type.
        Parameters:
        json - The json String.
        Returns:
        A JWK object
        Throws:
        JsonException - If there is a problem parsing the json String.
      • parse

        public static JWK parse​(JsonValue jwk)
        Parses a JsonValue into the proper JWK type.
        Parameters:
        jwk - The JsonValue Object.
        Returns:
        A JWK object
        Throws:
        JsonException - If there is a problem parsing the json String.
      • loadJWKFromJson

        protected static void loadJWKFromJson​(JWK.Builder builder,
                                              JsonValue json)
        Load the generic JWK attributes from the json, by side effect.
        Parameters:
        builder - builder will be modified by side effect.
        json - the json value.
      • getAlgorithm

        public static Algorithm getAlgorithm​(String algorithmName)
        Get the algorithm corresponding.
        Parameters:
        algorithmName - The algorithm name..
        Returns:
        An algorithm
        Throws:
        IllegalArgumentException - If the algorithm is not supported.
      • toJsonValue

        protected static JsonValue toJsonValue​(String json)
        Converts a String into a JsonValue.
        Parameters:
        json - The json String.
        Returns:
        A JsonValue object.
        Throws:
        JsonException - If there is a problem parsing the json String.
      • getX509URL

        public String getX509URL()
        Gets the X509 URL.
        Returns:
        the url of the 509 cert header or null
      • getX509Thumbprint

        public String getX509Thumbprint()
        Gets the X509 thumbprint.
        Returns:
        Base64url of the X509 thumbprint.
      • getX509ThumbprintS256

        public String getX509ThumbprintS256()
        Gets the X.509 SHA-256 thumbprint.
        Returns:
        Base64url of the X.509 SHA-256 thumbprint.
      • getX509Chain

        public List<String> getX509Chain()
        Gets a List of X509 chain certs.
        Returns:
        X509 Cert Chain as list of encoded strings or null if none are available.
      • isPrivate

        public boolean isPrivate()
        Indicates if any private key attributes are present in the JWK.
        Returns:
        true if this JWK contains any private key attributes.
      • toPublicJwk

        public Optional<JWK> toPublicJwk()
        For asymmetric keys, get the public JWK representation of this JWK.
        Returns:
        The public JWK.
      • getPublicJwkBuilder

        protected abstract Optional<JWK.Builder<?>> getPublicJwkBuilder()
        Return a builder with all the values set for representing the public components of the JWK. Common JWK attributes will be added in toPublicJwk().
        Returns:
        The builder.
      • getJwkThumbprint

        public String getJwkThumbprint​(String hashAlgorithm)
        Calculates the JWK Thumbprint of this JWK.
        Parameters:
        hashAlgorithm - the hash algorithm, e.g. SHA-256.
        Returns:
        the JWK thumbprint.