Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@root/pem

Package Overview
Dependencies
Maintainers
3
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@root/pem

VanillaJS, Lightweight, Zero-Dependency, PEM encoder and decoder.

  • 1.0.4
  • latest
  • npm
  • Socket score

Version published
Maintainers
3
Created
Source

@root/pem

Built by The Root Company for Greenlock and ACME.js

Lightweight, Zero-Dependency PEM encoder and decoder.

| ~300b gzipped | ~650b minified | ~1k full |

  • Zero Dependencies
  • Universal Support
    • Node.js
    • Browsers
  • VanillaJS

This library supports PEM, which is pretty boring on its own.

Most likely you are also interested in some of the following:

Want to contribute? Need commercial support?

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

This works equally well in Browsers and Node.js, but has slightly different code.

Node (and Webpack)

npm install --save @root/pem
var PEM = require('@root/pem');
// just the packer
var PEM = require('@root/pem/packer');
// just the parser
var PEM = require('@root/pem/parser');

Browsers (Vanilla JS)

<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)

Contributions

Did this project save you some time? Maybe make your day? Even save the day?

Please say "thanks" via Paypal or Patreon:

Where does your contribution go?

Root is a collection of experts who trust each other and enjoy working together on deep-tech, Indie Web projects.

Our goal is to operate as a sustainable community.

Your contributions - both in code and especially monetarily - help to not just this project, but also our broader work of projects that fuel the Indie Web.

Also, we chat on Keybase in #rootprojects

Commercial Support

Do you need...

  • more features?
  • bugfixes, on your timeline?
  • custom code, built by experts?
  • commercial support and licensing?

Contact aj@therootcompany.com for support options.

Copyright AJ ONeal, Root 2018-2019

MPL-2.0 | Terms of Use | Privacy Policy

Keywords

FAQs

Package last updated on 13 Oct 2019

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc