AJ ONeal 72d95531d3 | ||
---|---|---|
browser | ||
dist | ||
node | ||
tests | ||
.gitignore | ||
.prettierrc | ||
LICENSE | ||
README.md | ||
build.sh | ||
index.js | ||
package.json | ||
packer.js | ||
parser.js |
README.md
@root/pem
Lightweight, Zero-Dependency PEM encoder and decoder.
| ~300b gzipped | ~650b minified | ~1k full |
- VanillaJS
- Zero-Dependency
- Universal Support
- Node.js
- Browsers
Support
This library supports PEM, which is pretty boring on its own.
Most likely you are also interested in some of the following:
- keypairs.js
- RSA
- EC / ECDSA
- x509.js
- asn1.js
Usage
- PEM.parseBlock(str)
- PEM.packBlock(options)
Parsing
var PEM = require('@root/pem/parser');
var block = PEM.parseBlock(
'-----BEGIN Type-----\nSGVsbG8sIOS4lueVjCE=\n-----END Type-----\n'
);
{
bytes: `<48 65 6c 6c 6f 2c 20 e4 b8 96 e7 95 8c 21>`;
}
Packing
var PEM = require('@root/pem/packer');
var block = PEM.packBlock({
type: 'Type',
// Buffer or Uint8Array or Array
bytes: [0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x2c, 0x20, 0xe4, 0xb8, 0x96, 0xe7, 0x95, 0x8c, 0x21]
);
-----BEGIN Type-----
SGVsbG8sIOS4lueVjCE=
-----END Type-----
Install
Node / Webpack
npm install -g @root/pem
Browsers
<script src="https://unpkg.com/@root/pem/dist/pem.all.js"></script>
<script src="https://unpkg.com/@root/pem/dist/pem.all.min.js"></script>
A PEM Block
A Block represents a PEM encoded structure.
The encoded form is:
-----BEGIN Type-----
Headers
base64-encoded Bytes
-----END Type-----
where Headers is a possibly empty sequence of Key: Value lines.
(credit: https://golang.org/pkg/encoding/pem/)
PEM History
PEM was introduced in 1993 via RFC 1421, but not formally standardized until RFC 7468 in April of 2015.
It has served as the de facto standard for a variety of DER-encoded X509 schemas of ASN.1 data for cryptographic keys and certificates such as:
- PKCS#10 (Certificate Signing Request [CSR])
- X509 Certificate (fullchain.pem, site.crt)
- PKIX (cert.pem, privkey.pem, priv.key)
- PKCS#1 (RSA Public and Private Keys)
- PKCS#8 (RSA and ECDSA Keypairs)
- SEC#1 (ECDSARSA Public and Private Keys)
Legal
MPL-2.0 | Terms of Use | Privacy Policy