JWK

atproto_crypto.jwk.base64url_encode(data: bytes) → str
atproto_crypto.jwk.base64url_decode(data: str) → bytes
atproto_crypto.jwk.private_key_to_jwk(private_key: EllipticCurvePrivateKey, kid: str | None = None) → Dict[str, Any]

Export a P-256 private key as a private JWK.

Parameters:
  • private_key – P-256 private key.

  • kid – Key ID to put into the JWK.

Returns:

Private JWK.

Return type:

dict

atproto_crypto.jwk.generate_p256_jwk(kid: str | None = None) → Dict[str, Any]

Generate a P-256 key.

Parameters:

kid – Key ID to put into the JWK.

Returns:

Private JWK.

Return type:

dict

atproto_crypto.jwk.get_public_jwk(jwk: Mapping[str, Any]) → Dict[str, Any]

Return the JWK without its private members.

atproto_crypto.jwk.load_private_jwk(jwk: Mapping[str, Any]) → EllipticCurvePrivateKey

Load a P-256 private key from a private JWK.

Raises:

atproto_crypto.exceptions.InvalidJwkError – The JWK is not a P-256 private key.

atproto_crypto.jwk.load_public_jwk(jwk: Mapping[str, Any]) → EllipticCurvePublicKey

Load a P-256 public key from a JWK.

Raises:

atproto_crypto.exceptions.InvalidJwkError – The JWK is not a P-256 key.

atproto_crypto.jwk.get_jwk_thumbprint(jwk: Mapping[str, Any]) → str

Compute the SHA-256 thumbprint of a P-256 JWK as defined by RFC 7638.