# JSON Web Key

JSON Web Key.

class josepy.jwk.JWK(**kwargs: Any)

  JSON Web Key.

  cryptography_key_types: Tuple[Type[Any], ...] = ()

    Subclasses should override.

  required: Sequence[str] = NotImplemented

    Required members of public key’s representation as defined by JWK/JWA.

  thumbprint(hash_function: Callable[[], cryptography.hazmat.primitives.hashes.HashAlgorithm] = <class 'cryptography.hazmat.primitives.hashes.SHA256'>) → bytes

    Compute JWK Thumbprint.

    https://tools.ietf.org/html/rfc7638

    Returns

      bytes

  abstract public_key() → josepy.jwk.JWK

    Generate JWK with public key.

    For symmetric cryptosystems, this would return `self`.

  classmethod load(data: bytes, password: Optional[bytes] = None, backend: Optional[Any] = None) → josepy.jwk.JWK

    Load serialized key as JWK.

    Parameters

      - data (str) – Public or private key serialized as PEM or DER.

      - password (str) – Optional password.

      - backend – A `PEMSerializationBackend` and `DERSerializationBackend` provider.

    Raises

      errors.Error – if unable to deserialize, or unsupported JWK algorithm

    Returns

      JWK of an appropriate type.

    Return type

      `JWK`

class josepy.jwk.JWKOct(**kwargs: Any)

  Symmetric JWK.

  fields_to_partial_json() → Dict[str, str]

    Serialize fields to JSON.

  public_key() → josepy.jwk.JWKOct

    Generate JWK with public key.

    For symmetric cryptosystems, this would return `self`.

class josepy.jwk.JWKRSA(*args: Any, **kwargs: Any)

  RSA JWK.

  Variables

    key – `RSAPrivateKey` or `RSAPublicKey` wrapped in `ComparableRSAKey`

  public_key() → josepy.jwk.JWKRSA

    Generate JWK with public key.

    For symmetric cryptosystems, this would return `self`.

  fields_to_partial_json() → Dict[str, Any]

    Serialize fields to JSON.

class josepy.jwk.JWKEC(*args: Any, **kwargs: Any)

  EC JWK.

  Variables

    key – `EllipticCurvePrivateKey` or `EllipticCurvePublicKey` wrapped in `ComparableECKey`

  fields_to_partial_json() → Dict[str, Any]

    Serialize fields to JSON.

  public_key() → josepy.jwk.JWKEC

    Generate JWK with public key.

    For symmetric cryptosystems, this would return `self`.