def pubkey_to_jwk(pubkey):
if isinstance(pubkey, bytes):
return {
'kty': 'oct',
'k': bytes_to_jwk(pubkey),
}
if isinstance(pubkey, ec.EllipticCurvePublicKey):
numbers = pubkey.public_numbers()
return {
'kty': 'EC',
'crv': curve_to_jwk(pubkey.curve.name),
'x': uint_to_jwk(numbers.x),
'y': uint_to_jwk(numbers.y),
}
if isinstance(pubkey, rsa.RSAPublicKey):
numbers = pubkey.public_numbers()
return {
'kty': 'RSA',
'n': uint_to_jwk(numbers.n),
'e': uint_to_jwk(numbers.e),
}
raise ValueError('Unsupported public key: ' + str(type(pubkey)))
评论列表
文章目录