Skip to content

Commit

Permalink
fix: importX509 certificate values that do not include a version number
Browse files Browse the repository at this point in the history
closes #308
  • Loading branch information
panva committed Nov 5, 2021
1 parent c373148 commit 51a18b6
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 1 deletion.
3 changes: 2 additions & 1 deletion src/key/import.ts
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,8 @@ function parseElement(bytes: Uint8Array) {
}

function spkiFromX509(buf: Uint8Array) {
return encodeBase64(getElement(getElement(parseElement(buf).contents)[0].contents)[6].raw)
const tbsCertificate = getElement(getElement(parseElement(buf).contents)[0].contents)
return encodeBase64(tbsCertificate[tbsCertificate[0].raw[0] === 0xa0 ? 6 : 5].raw)
}

function getSPKI(x509: string): string {
Expand Down
3 changes: 3 additions & 0 deletions test/key/importexport.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,8 @@ const keys = {
'-----BEGIN PRIVATE KEY-----\nMC4CAQAwBQYDK2VwBCIEIOcUcmmhP080PCEg3n1MojHqLRVqksuWi/mu6IL3oqcd\n-----END PRIVATE KEY-----\n',
publicKey:
'-----BEGIN PUBLIC KEY-----\nMCowBQYDK2VwAyEAYPirSLK5RYui0fLnPzF/zohd13Ey7usg/ZwQmyLBkfE=\n-----END PUBLIC KEY-----\n',
certificate:
'-----BEGIN CERTIFICATE-----\nMIIB0zCCAYUCFEAGUxyTR1mz/XyaVnqHUA1T0bg4MAUGAytlcDCBizELMAkGA1UE\nBhMCVVMxFTATBgNVBAgMDFBlbm5zeWx2YW5pYTETMBEGA1UEBwwKUGl0dHNidXJn\naDEWMBQGA1UECgwNRXhhbXBsZSwgSW5jLjEiMCAGCSqGSIb3DQEJARYTZXhhbXBs\nZUBleGFtcGxlLmNvbTEUMBIGA1UEAwwLZXhhbXBsZS5jb20wHhcNMjExMTA1MTkz\nNTQ4WhcNMjMxMDA2MTkzNTQ4WjCBizELMAkGA1UEBhMCVVMxFTATBgNVBAgMDFBl\nbm5zeWx2YW5pYTETMBEGA1UEBwwKUGl0dHNidXJnaDEWMBQGA1UECgwNRXhhbXBs\nZSwgSW5jLjEiMCAGCSqGSIb3DQEJARYTZXhhbXBsZUBleGFtcGxlLmNvbTEUMBIG\nA1UEAwwLZXhhbXBsZS5jb20wKjAFBgMrZXADIQCuVl9VNLFAflCTZDKRtWjGLqsD\ne/E5r+zIN1H6rWkE/DAFBgMrZXADQQDet6id3ZIBqQ4RP1GBRHN19epkb7euezw6\nYlmU09Tsz1j7utsNgs6ztF43GyzzVWrBtHkjne7qtnIONDqSvJoC\n-----END CERTIFICATE-----',
},
ed448: {
privateKey:
Expand Down Expand Up @@ -178,6 +180,7 @@ Promise.all([import(`${keyRoot}/key/import`), import(`${keyRoot}/key/export`)]).

for (const alg of ['EdDSA']) {
test(`import SPKI ed25519 for ${alg}`, testSPKI, keys.ed25519.publicKey, alg)
test(`import X509 ed25519 for ${alg}`, testX509, keys.ed25519.certificate, alg)
test(`import PKCS8 ed25519 for ${alg}`, testPKCS8, keys.ed25519.privateKey, alg)
conditional({ webcrypto: 1, electron: 0 })(
`import SPKI ed448 for ${alg}`,
Expand Down

0 comments on commit 51a18b6

Please sign in to comment.