mirror of
https://github.com/danbulant/jose
synced 2026-05-21 21:39:04 +00:00
22 lines
602 B
JavaScript
22 lines
602 B
JavaScript
const keyto = require('@trust/keyto')
|
|
|
|
const errors = require('../errors')
|
|
|
|
const SUPPORTED = new Set(['EC', 'RSA'])
|
|
|
|
module.exports.keyObjectToJWK = (keyObject) => {
|
|
const type = keyObject.type === 'private' ? 'pkcs8' : 'spki'
|
|
const format = 'pem'
|
|
|
|
const pem = keyObject.export({ type, format })
|
|
|
|
return keyto.from(pem, 'pem').toJwk(keyObject.type)
|
|
}
|
|
|
|
module.exports.jwkToPem = (jwk) => {
|
|
if (!SUPPORTED.has(jwk.kty)) {
|
|
throw new errors.JOSENotSupported(`unsupported key type: ${jwk.kty}`)
|
|
}
|
|
|
|
return keyto.from(jwk, 'jwk').toString('pem', jwk.d ? 'private_pkcs8' : 'public_pkcs8')
|
|
}
|