selfsigned
Version:
Generate self signed certificates private and public keys
98 lines (68 loc) • 3.25 kB
Markdown
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [5.0.0] - 2025-11-26
### 🚀 Major Rewrite
Complete rewrite replacing `node-forge` with modern `@peculiar/x509` and `pkijs` libraries.
### ✨ Added
- Native WebCrypto API support for better performance and security
- TypeScript examples in documentation
- Async/await support as the primary API
- Support for `keyPair` option to use existing keys
- Updated to use Node.js native crypto for all operations
- Separate `selfsigned/pkcs7` module for tree-shakeable PKCS#7 support
### 💥 BREAKING CHANGES
1. **Async-only API**: The `generate()` function now returns a Promise. Synchronous generation has been removed.
```js
// Old (v4.x)
const pems = selfsigned.generate(attrs, options);
// New (v5.x)
const pems = await selfsigned.generate(attrs, options);
```
2. **No callback support**: Callbacks have been completely removed in favor of Promises.
```js
// Old (v4.x)
selfsigned.generate(attrs, options, function(err, pems) { ... });
// New (v5.x)
const pems = await selfsigned.generate(attrs, options);
```
3. **Minimum Node.js version**: Now requires Node.js >= 15.6.0 (was >= 10)
- Required for native WebCrypto support
4. **Dependencies changed**:
- ❌ Removed: `node-forge` (1.64 MB)
- ✅ Added: `@peculiar/x509` (551 KB) - 66% smaller!
- ✅ Added: `pkijs` (1.94 MB, only for PKCS#7 support)
- Bundle size reduced by 66% when not using PKCS#7
5. **PKCS#7 API changed**:
- Old: `const pems = await generate(attrs, { pkcs7: true }); pems.pkcs7`
- New: `const { createPkcs7 } = require('selfsigned/pkcs7'); const pkcs7 = createPkcs7(pems.cert);`
- PKCS#7 is now a separate module for better tree-shaking
### 🔧 Changed
- Default key size remains 2048 bits (was incorrectly documented as 1024)
- PEM output uses `\n` line endings (was `\r\n`)
- Private keys now use PKCS#8 format (`BEGIN PRIVATE KEY` instead of `BEGIN RSA PRIVATE KEY`)
- Certificate generation is now fully async using native WebCrypto
- **PKCS#7 is now tree-shakeable**: Moved to separate `selfsigned/pkcs7` module so bundlers can exclude it when not used
### 🐛 Fixed
- Default key size documentation corrected from 1024 to 2048 bits
- Improved error handling for certificate generation failures
### 📦 Dependencies
**Removed:**
- `node-forge@^1.3.1`
- `@types/node-forge@^1.3.0`
**Added:**
- `@peculiar/x509@^1.14.2` (required)
- `pkijs@^3.3.3` (required, but tree-shakeable via separate `selfsigned/pkcs7` module)
### 🔒 Security
- Now uses Node.js native WebCrypto API instead of JavaScript implementation
- Better integration with platform security features
- More secure random number generation
### 📚 Documentation
- Complete README rewrite with async/await examples
- Added migration guide from v4.x to v5.x
- Updated all code examples to use async/await
- Added requirements section highlighting Node.js version requirement
---
## [4.0.0] - Previous Release
See git history for changes in 4.x and earlier versions.