Package com.nimbusds.jose.jwk
Class OctetSequenceKey
- java.lang.Object
-
- com.nimbusds.jose.jwk.JWK
-
- com.nimbusds.jose.jwk.OctetSequenceKey
-
- All Implemented Interfaces:
SecretJWK,Serializable
@Immutable public final class OctetSequenceKey extends JWK implements SecretJWK
Octet sequenceJSON Web Key (JWK), used to represent symmetric keys. This class is immutable.Octet sequence JWKs should specify the algorithm intended to be used with the key, unless the application uses other means or convention to determine the algorithm used.
Example JSON object representation of an octet sequence JWK:
{ "kty" : "oct", "alg" : "A128KW", "k" : "GawgguFyGrWKav7AX4VKUg" }Use the builder to create a new octet JWK:
OctetSequenceKey key = new OctetSequenceKey.Builder(bytes) .keyID("123") .build();- Version:
- 2020-06-03
- Author:
- Justin Richer, Vladimir Dzhuvinov
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classOctetSequenceKey.BuilderBuilder for constructing octet sequence JWKs.
-
Constructor Summary
Constructors Constructor Description OctetSequenceKey(Base64URL k, KeyUse use, Set<KeyOperation> ops, Algorithm alg, String kid, URI x5u, Base64URL x5t, Base64URL x5t256, List<Base64> x5c, KeyStore ks)Creates a new octet sequence JSON Web Key (JWK) with the specified parameters.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanequals(Object o)Base64URLgetKeyValue()Returns the value of this octet sequence key.LinkedHashMap<String,?>getRequiredParams()Returns the required JWK parameters.inthashCode()booleanisPrivate()Octet sequence (symmetric) keys are never considered public, this method always returnstrue.static OctetSequenceKeyload(KeyStore keyStore, String alias, char[] pin)Loads an octet sequence JWK from the specified JCA key store.static OctetSequenceKeyparse(String s)Parses an octet sequence JWK from the specified JSON object string representation.static OctetSequenceKeyparse(Map<String,Object> jsonObject)Parses an octet sequence JWK from the specified JSON object representation.intsize()Returns the size of this JWK.byte[]toByteArray()Returns a copy of this octet sequence key value as a byte array.Map<String,Object>toJSONObject()Returns a JSON object representation of this JWK.OctetSequenceKeytoPublicJWK()Octet sequence (symmetric) keys are never considered public, this method always returnsnull.SecretKeytoSecretKey()Returns a secret key representation of this octet sequence key.SecretKeytoSecretKey(String jcaAlg)Returns a secret key representation of this octet sequence key with the specified Java Cryptography Architecture (JCA) algorithm.-
Methods inherited from class com.nimbusds.jose.jwk.JWK
computeThumbprint, computeThumbprint, getAlgorithm, getKeyID, getKeyOperations, getKeyStore, getKeyType, getKeyUse, getParsedX509CertChain, getX509CertChain, getX509CertSHA256Thumbprint, getX509CertThumbprint, getX509CertURL, parse, parseFromPEMEncodedObjects, parseFromPEMEncodedX509Cert, toECKey, toJSONString, toOctetKeyPair, toOctetSequenceKey, toRSAKey, toString
-
-
-
-
Constructor Detail
-
OctetSequenceKey
public OctetSequenceKey(Base64URL k, KeyUse use, Set<KeyOperation> ops, Algorithm alg, String kid, URI x5u, Base64URL x5t, Base64URL x5t256, List<Base64> x5c, KeyStore ks)
Creates a new octet sequence JSON Web Key (JWK) with the specified parameters.- Parameters:
k- The key value. It is represented as the Base64URL encoding of the value's big endian representation. Must not benull.use- The key use,nullif not specified or if the key is intended for signing as well as encryption.ops- The key operations,nullif not specified.alg- The intended JOSE algorithm for the key,nullif not specified.kid- The key ID.nullif not specified.x5u- The X.509 certificate URL,nullif not specified.x5t- The X.509 certificate SHA-1 thumbprint,nullif not specified.x5t256- The X.509 certificate SHA-256 thumbprint,nullif not specified.x5c- The X.509 certificate chain,nullif not specified.ks- Reference to the underlying key store,nullif not specified.
-
-
Method Detail
-
getKeyValue
public Base64URL getKeyValue()
Returns the value of this octet sequence key.- Returns:
- The key value. It is represented as the Base64URL encoding of the value's big endian representation.
-
toByteArray
public byte[] toByteArray()
Returns a copy of this octet sequence key value as a byte array.- Returns:
- The key value as a byte array.
-
toSecretKey
public SecretKey toSecretKey()
Returns a secret key representation of this octet sequence key.- Specified by:
toSecretKeyin interfaceSecretJWK- Returns:
- The secret key representation, with an algorithm set to
NONE.
-
toSecretKey
public SecretKey toSecretKey(String jcaAlg)
Returns a secret key representation of this octet sequence key with the specified Java Cryptography Architecture (JCA) algorithm.- Parameters:
jcaAlg- The JCA algorithm. Must not benull.- Returns:
- The secret key representation.
-
getRequiredParams
public LinkedHashMap<String,?> getRequiredParams()
Description copied from class:JWKReturns the required JWK parameters. Intended as input for JWK thumbprint computation. See RFC 7638 for more information.- Specified by:
getRequiredParamsin classJWK- Returns:
- The required JWK parameters, sorted alphanumerically by key name and ready for JSON serialisation.
-
isPrivate
public boolean isPrivate()
Octet sequence (symmetric) keys are never considered public, this method always returnstrue.
-
toPublicJWK
public OctetSequenceKey toPublicJWK()
Octet sequence (symmetric) keys are never considered public, this method always returnsnull.- Specified by:
toPublicJWKin classJWK- Returns:
null
-
toJSONObject
public Map<String,Object> toJSONObject()
Description copied from class:JWKReturns a JSON object representation of this JWK. This method is intended to be called from extending classes.Example:
{ "kty" : "RSA", "use" : "sig", "kid" : "fd28e025-8d24-48bc-a51a-e2ffc8bc274b" }- Overrides:
toJSONObjectin classJWK- Returns:
- The JSON object representation.
-
parse
public static OctetSequenceKey parse(String s) throws ParseException
Parses an octet sequence JWK from the specified JSON object string representation.- Parameters:
s- The JSON object string to parse. Must not benull.- Returns:
- The octet sequence JWK.
- Throws:
ParseException- If the string couldn't be parsed to an octet sequence JWK.
-
parse
public static OctetSequenceKey parse(Map<String,Object> jsonObject) throws ParseException
Parses an octet sequence JWK from the specified JSON object representation.- Parameters:
jsonObject- The JSON object to parse. Must not benull.- Returns:
- The octet sequence JWK.
- Throws:
ParseException- If the JSON object couldn't be parsed to an octet sequence JWK.
-
load
public static OctetSequenceKey load(KeyStore keyStore, String alias, char[] pin) throws KeyStoreException, JOSEException
Loads an octet sequence JWK from the specified JCA key store.- Parameters:
keyStore- The key store. Must not benull.alias- The alias. Must not benull.pin- The pin to unlock the private key if any, empty ornullif not required.- Returns:
- The octet sequence JWK,
nullif no key with the specified alias was found. - Throws:
KeyStoreException- On a key store exception.JOSEException- If octet sequence key loading failed.
-
-