|
14 | 14 | from cryptojwt.jwk.ec import import_private_ec_key_from_file
|
15 | 15 | from cryptojwt.jwk.ec import import_public_ec_key_from_file
|
16 | 16 | from cryptojwt.jwk.hmac import SYMKey
|
| 17 | +from cryptojwt.jwk.okp import OKPKey |
| 18 | +from cryptojwt.jwk.okp import import_private_okp_key_from_file |
| 19 | +from cryptojwt.jwk.okp import import_public_okp_key_from_file |
17 | 20 | from cryptojwt.jwk.rsa import RSAKey
|
18 | 21 | from cryptojwt.jwk.rsa import import_private_rsa_key_from_file
|
19 | 22 | from cryptojwt.jwk.rsa import import_public_rsa_key_from_file
|
@@ -59,6 +62,22 @@ def pem2ec(
|
59 | 62 | return jwk
|
60 | 63 |
|
61 | 64 |
|
| 65 | +def pem2okp( |
| 66 | + filename: str, |
| 67 | + kid: Optional[str] = None, |
| 68 | + private: bool = False, |
| 69 | + passphrase: Optional[str] = None, |
| 70 | +) -> JWK: |
| 71 | + """Convert OKP key from PEM to JWK""" |
| 72 | + if private: |
| 73 | + key = import_private_okp_key_from_file(filename, passphrase) |
| 74 | + else: |
| 75 | + key = import_public_okp_key_from_file(filename) |
| 76 | + jwk = OKPKey(kid=kid) |
| 77 | + jwk.load_key(key) |
| 78 | + return jwk |
| 79 | + |
| 80 | + |
62 | 81 | def bin2jwk(filename: str, kid: str) -> JWK:
|
63 | 82 | """Read raw key from filename and return JWK"""
|
64 | 83 | with open(filename, "rb") as file:
|
@@ -91,13 +110,17 @@ def pem2jwk(
|
91 | 110 | jwk = pem2ec(filename, kid, private=False)
|
92 | 111 | elif kty is not None and kty == "RSA":
|
93 | 112 | jwk = pem2rsa(filename, kid, private=False)
|
| 113 | + elif kty is not None and kty == "OKP": |
| 114 | + jwk = pem2okp(filename, kid, private=False) |
94 | 115 | else:
|
95 | 116 | raise ValueError("Unknown key type")
|
96 | 117 | elif "BEGIN PRIVATE KEY" in header:
|
97 | 118 | if kty is not None and kty == "EC":
|
98 | 119 | jwk = pem2ec(filename, kid, private=True, passphrase=passphrase)
|
99 | 120 | elif kty is not None and kty == "RSA":
|
100 | 121 | jwk = pem2rsa(filename, kid, private=True, passphrase=passphrase)
|
| 122 | + elif kty is not None and kty == "OKP": |
| 123 | + jwk = pem2okp(filename, kid, private=True, passphrase=passphrase) |
101 | 124 | else:
|
102 | 125 | raise ValueError("Unknown key type")
|
103 | 126 | elif "BEGIN EC PRIVATE KEY" in header:
|
|
0 commit comments