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 11from __future__ import annotations
22from typing import Any , Literal , cast
33from abc import ABCMeta , abstractmethod
4+ from cryptography .x509 import load_pem_x509_certificate
45from cryptography .hazmat .primitives .serialization import (
56 load_pem_private_key ,
67 load_pem_public_key ,
@@ -38,6 +39,10 @@ def load_pem_key(
3839 elif b"PRIVATE" in raw :
3940 key = load_pem_private_key (raw , password = password , backend = default_backend ())
4041
42+ elif b"CERTIFICATE" in raw :
43+ cert = load_pem_x509_certificate (raw , backend = default_backend ())
44+ return cert .public_key ()
45+
4146 else :
4247 try :
4348 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):
133133 key1 = RSAKey .import_key (value1 )
134134 self .assertEqual (value1 , key1 .as_der ())
135135
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+
136142 def test_output_with_password (self ):
137143 private_pem = read_key ("rsa-openssl-private.pem" )
138144 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