mirror of
https://github.com/denoland/deno.git
synced 2024-12-21 23:04:45 -05:00
fix(ext/node): support x509 certificates in createPublicKey
(#25731)
Fixes https://github.com/denoland/deno/issues/25681
This commit is contained in:
parent
159ac45a85
commit
e97f00f6f6
2 changed files with 34 additions and 1 deletions
|
@ -752,7 +752,15 @@ impl KeyObjectHandle {
|
|||
| KeyObjectHandle::Secret(_) => unreachable!(),
|
||||
}
|
||||
}
|
||||
// TODO: handle x509 certificates as public keys
|
||||
"CERTIFICATE" => {
|
||||
let (_, pem) = x509_parser::pem::parse_x509_pem(pem.as_bytes())
|
||||
.map_err(|_| type_error("invalid x509 certificate"))?;
|
||||
|
||||
let cert = pem.parse_x509()?;
|
||||
let public_key = cert.tbs_certificate.subject_pki;
|
||||
|
||||
return KeyObjectHandle::new_x509_public_key(&public_key);
|
||||
}
|
||||
_ => {
|
||||
return Err(type_error(format!("unsupported PEM label: {}", label)))
|
||||
}
|
||||
|
|
|
@ -631,3 +631,28 @@ xjwfpTZOdWW36U3GRuXn12QyITRg6el7ro6CajhCVNg9nJIxvZzp0jyE
|
|||
|
||||
assertEquals(privatePkcs8, pkcs8Expected);
|
||||
});
|
||||
|
||||
Deno.test("createPublicKey x509", function () {
|
||||
const certificate = `-----BEGIN CERTIFICATE-----
|
||||
MIIC8zCCAdugAwIBAgIBATANBgkqhkiG9w0BAQsFADAbMRkwFwYDVQQDExB0ZXN0
|
||||
LWNlcnRpZmljYXRlMB4XDTI0MDkxNzA5MTczNVoXDTI3MDkxNzA5MTczNVowGzEZ
|
||||
MBcGA1UEAxMQdGVzdC1jZXJ0aWZpY2F0ZTCCASIwDQYJKoZIhvcNAQEBBQADggEP
|
||||
ADCCAQoCggEBAMOzTIrwvbUbPIrxCr5DO1XMd3tH37pID0no4cOUq1hxNEnB4l1j
|
||||
2201atvmXwzWI3xtPzfwOYUtE/DGagFh805/nod5yXwR6liGd9RjkABxPi0UF7jl
|
||||
lWHfBLyILUHVR9hEOl65vUpKx5ORNgbO9L7WsL/FKH9pvCbWjdI29+pQnZ4gOoWZ
|
||||
YC6auoKfG7TcbaFb9AubolcIlofC2MHP+cWjPA+iX6ezUqqN1Ug5xGiF/sC79M0o
|
||||
5d6E83zdXxyyFwydUWUv3EKgmVTLln/2hYQFKCRhy72n6L7y9JNcieOauQK0efJB
|
||||
+2HwaWeAr2xkhSnWVCRl4nEgiu/E0nL/zNUCAwEAAaNCMEAwDgYDVR0PAQH/BAQD
|
||||
AgGGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFIAeXho137l8V6daKI33IvRb
|
||||
N6CyMA0GCSqGSIb3DQEBCwUAA4IBAQAQU1Sast6VsD4uTJiSz/lSEkLZ6wC/6v+R
|
||||
az0YSnbNmQ5YczBLdTLs07hBC1tDvv0vfopRXvNxP7AxkopX5O7Lc15zf5JdTZnY
|
||||
/tJwO62jZiaLsfAo2JzrZ31h2cFFFRTYPTx+8E4djgdmwKtaECeQFXqdpOHOJCGv
|
||||
NfwVlZ7Z/cd8fI8oiNtvJDAhPa/UZXAhFV74hT0DiuMwPiJvsG83rutvAYpZ8lPu
|
||||
yG6QSsxPnxzEHIKR+vgxUHKwTdv0sWt3XBmpIY5CGXFR2eIQP1jv0ohtcnLMJe8N
|
||||
z6TExWlQMjt66nV7R8cRAkzmABrG+NW3e8Zpac7Lkuv+zu0S+K7c
|
||||
-----END CERTIFICATE-----`;
|
||||
|
||||
const publicKey = createPublicKey(certificate);
|
||||
assertEquals(publicKey.type, "public");
|
||||
assertEquals(publicKey.asymmetricKeyType, "rsa");
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue