# JSON Web Algorithms

JSON Web Algorithms.

https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40

class josepy.jwa.JWA

  JSON Web Algorithm.

class josepy.jwa.JWASignature(name: str)

  Base class for JSON Web Signature Algorithms.

  classmethod register(signature_cls: JWASignature) → JWASignature

    Register class for JSON deserialization.

  to_partial_json() → Any

    Partially serialize.

    Following the example, partial serialization means the following:

        assert isinstance(Bar().to_partial_json()[0], Foo)
        assert isinstance(Bar().to_partial_json()[1], Foo)

        # in particular...
        assert Bar().to_partial_json() != ['foo', 'foo']

    Raises:

      josepy.errors.SerializationError – in case of any serialization error.

    Returns:

      Partially serializable object.

  classmethod from_json(jobj: Any) → JWASignature

    Deserialize a decoded JSON document.

    Parameters:

      jobj – Python object, composed of only other basic data types, as decoded from JSON document. Not necessarily `dict` (as decoded from “JSON object” document).

    Raises:

      josepy.errors.DeserializationError – if decoding was unsuccessful, e.g. in case of unparseable X509 certificate, or wrong padding in JOSE base64 encoded string, etc.

  abstract sign(key: Any, msg: bytes) → bytes

    Sign the `msg` using `key`.

  abstract verify(key: Any, msg: bytes, sig: bytes) → bool

    Verify the `msg` and `sig` using `key`.

josepy.jwa.HS256 = HS256

  HMAC using SHA-256

josepy.jwa.HS384 = HS384

  HMAC using SHA-384

josepy.jwa.HS512 = HS512

  HMAC using SHA-512

josepy.jwa.RS256 = RS256

  RSASSA-PKCS-v1_5 using SHA-256

josepy.jwa.RS384 = RS384

  RSASSA-PKCS-v1_5 using SHA-384

josepy.jwa.RS512 = RS512

  RSASSA-PKCS-v1_5 using SHA-512

josepy.jwa.PS256 = PS256

  RSASSA-PSS using SHA-256 and MGF1 with SHA-256

josepy.jwa.PS384 = PS384

  RSASSA-PSS using SHA-384 and MGF1 with SHA-384

josepy.jwa.PS512 = PS512

  RSASSA-PSS using SHA-512 and MGF1 with SHA-512

josepy.jwa.ES256 = ES256

  ECDSA using P-256 and SHA-256

josepy.jwa.ES384 = ES384

  ECDSA using P-384 and SHA-384

josepy.jwa.ES512 = ES512

  ECDSA using P-521 and SHA-512