Skip to content

Commit

Permalink
feat(node): use native JWK import in node >= 15.12.0
Browse files Browse the repository at this point in the history
  • Loading branch information
panva committed Mar 17, 2021
1 parent ba19ae0 commit f0c2a64
Showing 1 changed file with 15 additions and 0 deletions.
15 changes: 15 additions & 0 deletions src/runtime/node/jwk_to_key.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,22 @@ import { setModulusLength } from './check_modulus_length.js'
import Asn1SequenceEncoder from './asn1_sequence_encoder.js'
import type { JWK } from '../../types.d'

const [major, minor] = process.version
.substr(1)
.split('.')
.map((str) => parseInt(str, 10))

const jwkImportSupported = major >= 16 || (major === 15 && minor >= 12)

const parse: JWKParseFunction = (jwk: JWK): KeyObject => {
if (jwkImportSupported && jwk.kty !== 'oct') {
return jwk.d
? // @ts-expect-error
createPrivateKey({ format: 'jwk', key: jwk })
: // @ts-expect-error
createPublicKey({ format: 'jwk', key: jwk })
}

switch (jwk.kty) {
case 'oct': {
return createSecretKey(base64url(jwk.k!))
Expand Down

0 comments on commit f0c2a64

Please sign in to comment.