The Wire · Showcase
NODE CRYPTO UNLOCKS PRIVATE KEY LOADERS, FFI CRASH FIXED BEFORE IT SPREADS
By RepoJournal · Filed · About Node.js
Node core shipped two critical improvements overnight: crypto now loads private keys through OpenSSL STORE loaders, and FFI fast calls will no longer crash after library close.
The crypto module now supports loading private keys directly through WHATWG URL objects via configured OpenSSL STORE loaders [1], letting you pass `new URL('file:///path/to/private-key.pem')` straight into `createPrivateKey()` and downstream APIs like `sign()`, `privateDecrypt()`, and `decapsulate()`. This eliminates a friction point for workloads that manage keys through external stores. In parallel, a critical FFI fix [3] prevents optimized fast API calls from invoking stale symbol addresses after `DynamicLibrary.close()` unloads the library, which was causing SIGSEGV crashes on AArch64 and x64 SysV architectures. Root certificates updated to NSS 3.125 [5], dropping Entrust Root Certification Authority and SecureSign Root CA12. Separately, `Server.prototype._listen2` is now runtime-deprecated [4], signaling a coming removal. Zlib updated to 1.3.2.1-motley-42c2f19 [2]. The nodejs.org site absorbed routine dependency bumps: Storybook framework updates [6], testing tools [7], styling dependencies [8], and Vercel stack including Turbo 2.9.16 to 2.10.6 and Next.js ESLint plugin patches [9], plus wrangler 4.77.0 to 4.114.0 [10]. Doc-kit tooling advanced: c8 jumped to 12.0.0 [11] with stricter Node version enforcement, Playwright 1.62.0 [12] shipped a new component testing model, and CI actions refreshed including actions/setup-node 7.0.0 .
One email a day. Unsubscribe in one click.
Keep up with Node.js in about 3 minutes a day: what actually shipped — the commits, pull requests, releases, and security advisories that matter.
One email a day. Unsubscribe in one click. Read a past issue →
Action items
- → Review FFI fast call usage if you use crypto.sign() or privateDecrypt() with native libraries nodejs/node [immediate]
- → Migrate from Server._listen2 if your code calls this internal API nodejs/node [plan]
- → Update c8 to 12.0.0 if pinning Node ^20.19.0 || ^22.12.0 || >=23 nodejs/doc-kit [plan]
References
- [1] crypto: support loading private keys through STORE loaders ↗ nodejs/node
- [2] deps: update zlib to 1.3.2.1-motley-42c2f19 ↗ nodejs/node
- [3] ffi: reject fast calls after library close ↗ nodejs/node
- [4] net: runtime-deprecate Server.prototype._listen2 ↗ nodejs/node
- [5] crypto: update root certificates to NSS 3.125 nodejs/node
- [6] chore(deps): bump the storybook group across 1 directory with 3 updates ↗ nodejs/nodejs.org
- [7] chore(deps): bump the testing group across 1 directory with 2 updates ↗ nodejs/nodejs.org
- [8] chore(deps): bump the styling group across 1 directory with 2 updates ↗ nodejs/nodejs.org
- [9] chore(deps): bump the vercel group across 1 directory with 7 updates ↗ nodejs/nodejs.org
- [10] chore(deps): bump wrangler from 4.77.0 to 4.114.0 ↗ nodejs/nodejs.org
- [11] meta: bump c8 from 11.0.0 to 12.0.0 ↗ nodejs/doc-kit
- [12] meta: bump @playwright/test from 1.60.0 to 1.62.0 ↗ nodejs/doc-kit