Skip to content

Error parsing PEM formatted EC key #442

@augjoh

Description

@augjoh

When parsing the following key:

> cat test.mjs 
import jose from 'node-jose';

const key = `-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgGhxHIBRF78CETf2Y
4naT6iLT5UJVgy9Pa7TMEMSRCSehRANCAAQ/Idg7BVShuglkq7uV5gN9Bo4tCJIi
ZLAWMdYCKfsfhGk0SRwGKO8WejalYv8YhudHIrwakIcLY0DkkeBAPyOw
-----END PRIVATE KEY-----`;

jose.JWK.asKey(key, 'pem')

Nodejs throws an error:

> node test.mjs
node:internal/buffer:86
    throw new ERR_BUFFER_OUT_OF_BOUNDS();
          ^

RangeError [ERR_BUFFER_OUT_OF_BOUNDS]: Attempt to access memory outside buffer bounds
    at boundsError (node:internal/buffer:86:11)
    at readUInt16BE (node:internal/buffer:334:5)
    at Buffer.<anonymous> (node:internal/buffer:1008:50)
    at Object.import ([...]/node_modules/node-jose/lib/jwk/eckey.js:325:20)
    at [...]/node_modules/node-jose/lib/jwk/keystore.js:198:28
    at Array.forEach (<anonymous>)
    at importFrom ([...]/node_modules/node-jose/lib/jwk/keystore.js:188:25)
    at JWKStore.value ([...]/node_modules/node-jose/lib/jwk/keystore.js:303:19)
    at JWKStore.asKey ([...]/node_modules/node-jose/lib/jwk/keystore.js:692:12)
    at file:///[...]/test.mjs:9:10 {
  code: 'ERR_BUFFER_OUT_OF_BOUNDS'
}

Node.js v24.14.1

The key itself seems to be fine (for openssl):

> openssl ec -in key.pem -text -check
read EC key
Private-Key: (256 bit)
priv:
    1a:1c:47:20:14:45:ef:c0:84:4d:fd:98:e2:76:93:
    ea:22:d3:e5:42:55:83:2f:4f:6b:b4:cc:10:c4:91:
    09:27
pub:
    04:3f:21:d8:3b:05:54:a1:ba:09:64:ab:bb:95:e6:
    03:7d:06:8e:2d:08:92:22:64:b0:16:31:d6:02:29:
    fb:1f:84:69:34:49:1c:06:28:ef:16:7a:36:a5:62:
    ff:18:86:e7:47:22:bc:1a:90:87:0b:63:40:e4:91:
    e0:40:3f:23:b0
ASN1 OID: prime256v1
NIST CURVE: P-256
EC Key valid.
writing EC key
-----BEGIN EC PRIVATE KEY-----
MHcCAQEEIBocRyAURe/AhE39mOJ2k+oi0+VCVYMvT2u0zBDEkQknoAoGCCqGSM49
AwEHoUQDQgAEPyHYOwVUoboJZKu7leYDfQaOLQiSImSwFjHWAin7H4RpNEkcBijv
Fno2pWL/GIbnRyK8GpCHC2NA5JHgQD8jsA==
-----END EC PRIVATE KEY-----

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions