mirror of
https://github.com/danbulant/jose
synced 2026-05-24 20:41:46 +00:00
86 lines
2.3 KiB
JavaScript
86 lines
2.3 KiB
JavaScript
const test = require('ava')
|
|
const { createPublicKey, createPrivateKey } = require('crypto')
|
|
|
|
const { errors } = require('../..')
|
|
const { keyObjectToJWK, jwkToPem } = require('../../lib/help/key_utils')
|
|
const { JWK: fixtures } = require('../fixtures')
|
|
const clone = obj => JSON.parse(JSON.stringify(obj))
|
|
|
|
test('jwkToPem only works for EC and RSA', t => {
|
|
t.throws(() => {
|
|
jwkToPem({ kty: 'OKP' })
|
|
}, { instanceOf: errors.JOSENotSupported, message: 'unsupported key type: OKP' })
|
|
})
|
|
|
|
test('jwkToPem only handles known curves', t => {
|
|
t.throws(() => {
|
|
jwkToPem({ kty: 'EC', crv: 'foo' })
|
|
}, { instanceOf: errors.JOSENotSupported, message: 'unsupported EC key curve: foo' })
|
|
})
|
|
|
|
test('RSA Public key', t => {
|
|
const expected = fixtures.RSA_PUBLIC
|
|
const pem = createPublicKey(jwkToPem(expected))
|
|
const actual = keyObjectToJWK(pem)
|
|
|
|
t.deepEqual(actual, expected)
|
|
})
|
|
|
|
test('RSA Private key', t => {
|
|
const expected = fixtures.RSA_PRIVATE
|
|
const pem = createPrivateKey(jwkToPem(expected))
|
|
const actual = keyObjectToJWK(pem)
|
|
|
|
t.deepEqual(actual, expected)
|
|
})
|
|
|
|
test('EC P-256 Public key', t => {
|
|
const expected = clone(fixtures['P-256'])
|
|
delete expected.d
|
|
const pem = createPublicKey(jwkToPem(expected))
|
|
const actual = keyObjectToJWK(pem)
|
|
|
|
t.deepEqual(actual, expected)
|
|
})
|
|
|
|
test('EC P-256 Private key', t => {
|
|
const expected = fixtures['P-256']
|
|
const pem = createPrivateKey(jwkToPem(expected))
|
|
const actual = keyObjectToJWK(pem)
|
|
|
|
t.deepEqual(actual, expected)
|
|
})
|
|
|
|
test('EC P-384 Public key', t => {
|
|
const expected = clone(fixtures['P-384'])
|
|
delete expected.d
|
|
const pem = createPublicKey(jwkToPem(expected))
|
|
const actual = keyObjectToJWK(pem)
|
|
|
|
t.deepEqual(actual, expected)
|
|
})
|
|
|
|
test('EC P-384 Private key', t => {
|
|
const expected = fixtures['P-384']
|
|
const pem = createPrivateKey(jwkToPem(expected))
|
|
const actual = keyObjectToJWK(pem)
|
|
|
|
t.deepEqual(actual, expected)
|
|
})
|
|
|
|
test('EC P-521 Public key', t => {
|
|
const expected = clone(fixtures['P-521'])
|
|
delete expected.d
|
|
const pem = createPublicKey(jwkToPem(expected))
|
|
const actual = keyObjectToJWK(pem)
|
|
|
|
t.deepEqual(actual, expected)
|
|
})
|
|
|
|
test('EC P-521 Private key', t => {
|
|
const expected = fixtures['P-521']
|
|
const pem = createPrivateKey(jwkToPem(expected))
|
|
const actual = keyObjectToJWK(pem)
|
|
|
|
t.deepEqual(actual, expected)
|
|
})
|