File tree Expand file tree Collapse file tree 3 files changed +30
-0
lines changed Expand file tree Collapse file tree 3 files changed +30
-0
lines changed Original file line number Diff line number Diff line change 1
1
from __future__ import annotations
2
2
from typing import Any , Literal , cast
3
3
from abc import ABCMeta , abstractmethod
4
+ from cryptography .x509 import load_pem_x509_certificate
4
5
from cryptography .hazmat .primitives .serialization import (
5
6
load_pem_private_key ,
6
7
load_pem_public_key ,
@@ -38,6 +39,10 @@ def load_pem_key(
38
39
elif b"PRIVATE" in raw :
39
40
key = load_pem_private_key (raw , password = password , backend = default_backend ())
40
41
42
+ elif b"CERTIFICATE" in raw :
43
+ cert = load_pem_x509_certificate (raw , backend = default_backend ())
44
+ return cert .public_key ()
45
+
41
46
else :
42
47
try :
43
48
key = load_der_private_key (raw , password = password , backend = default_backend ())
Original file line number Diff line number Diff line change @@ -133,6 +133,12 @@ def test_import_from_der_bytes(self):
133
133
key1 = RSAKey .import_key (value1 )
134
134
self .assertEqual (value1 , key1 .as_der ())
135
135
136
+ def test_import_from_certificate (self ):
137
+ firebase_cert = read_key ("firebase-cert.pem" )
138
+ key : RSAKey = RSAKey .import_key (firebase_cert )
139
+ data = key .as_dict ()
140
+ self .assertEqual (data ['kty' ], 'RSA' )
141
+
136
142
def test_output_with_password (self ):
137
143
private_pem = read_key ("rsa-openssl-private.pem" )
138
144
key : RSAKey = RSAKey .import_key (private_pem )
Original file line number Diff line number Diff line change
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDHTCCAgWgAwIBAgIJANuivDoSiT/NMA0GCSqGSIb3DQEBBQUAMDExLzAtBgNV
3
+ BAMMJnNlY3VyZXRva2VuLnN5c3RlbS5nc2VydmljZWFjY291bnQuY29tMB4XDTI0
4
+ MTIxMDA3MzI0OVoXDTI0MTIyNjE5NDc0OVowMTEvMC0GA1UEAwwmc2VjdXJldG9r
5
+ ZW4uc3lzdGVtLmdzZXJ2aWNlYWNjb3VudC5jb20wggEiMA0GCSqGSIb3DQEBAQUA
6
+ A4IBDwAwggEKAoIBAQDhywhKx2L+GZJLjmGcOVMCc+x09hrYpCVk3K/LxgJtZZ34
7
+ vHeFUjGexazZiSc9LHd03fNmATFcdtqpVW4Qz+xsP5mQXEqbwPQu2qWZhb5VY8Z6
8
+ Oh02uFFxRCdegupuzggdqEhc/QlkrKb2Y/undxcIyRcXKWcDaEn+5dqQA2NhjMp5
9
+ ir1YsKRanZIJ69wR65Ok8e0YlHHGsP+7uJaW0b1yr0RyilyluEsb7DmpMV/7j7pr
10
+ cnNnOnL7jhpLW2gjbVzjB1FR5ScNy5gKp72htFkxdGxS58/AQoT06kBu80OI2VMb
11
+ mijU6JD4b3tIYtHZp9FOiCNhiQS1e/GTDyGT1ZT1AgMBAAGjODA2MAwGA1UdEwEB
12
+ /wQCMAAwDgYDVR0PAQH/BAQDAgeAMBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMCMA0G
13
+ CSqGSIb3DQEBBQUAA4IBAQDOf4MfPzEesqqm50J0gVW1geCiukD6MrH1nPGuUhm8
14
+ FUYy/4W6Rx69XnKKRxb1rEQwrqmi8WNiELRrpXugY5ieowuRwlcrPk450bB1IwK5
15
+ Jxcqgf4fxwbvqeoADzl0Z0+JxoiYDpH2FMG1HRpdl/YCzB7W0ftv3q1uUqTDLQ+r
16
+ K6Cm1rHyznsOio9oJknkQ8mPbvE7qSRdCYir806gGurzyhO1RacbR97B8M/vujyc
17
+ sNxCxxSphHCgCBW1mz4XqgOF4Sd/XYPrO8/2qhoSjqaqta+gmg644afx82NqsW+Z
18
+ NJrR9cZxaLNEfwzv+fX9s70xT1nSa9U4avINE58o3Dsk
19
+ -----END CERTIFICATE-----
You can’t perform that action at this time.
0 commit comments