#key #pkcs #private

no-std pkcs8

Pure Rust implementation of Public-Key Cryptography Standards (PKCS) #8: Private-Key Information Syntax Specification (RFC 5208), with additional support for PKCS#8v2 asymmetric key packages (RFC 5958)

33 releases

Uses new Rust 2024

0.11.0-rc.3 Apr 23, 2025
0.11.0-rc.2 Feb 15, 2025
0.11.0-rc.1 Sep 6, 2024
0.11.0-rc.0 Jul 26, 2024
0.0.0 Jun 12, 2020

#531 in Cryptography

Download history 1580734/week @ 2025-01-11 1450978/week @ 2025-01-18 1688734/week @ 2025-01-25 1806385/week @ 2025-02-01 1983261/week @ 2025-02-08 1695912/week @ 2025-02-15 1783318/week @ 2025-02-22 2725307/week @ 2025-03-01 2565803/week @ 2025-03-08 2637710/week @ 2025-03-15 3309340/week @ 2025-03-22 2073942/week @ 2025-03-29 2185766/week @ 2025-04-05 1796194/week @ 2025-04-12 1697948/week @ 2025-04-19 1574447/week @ 2025-04-26

7,639,271 downloads per month
Used in 4,470 crates (98 directly)

Apache-2.0 OR MIT

460KB
10K SLoC

RustCrypto: PKCS#8 (Private Keys)

crate Docs Build Status Apache2/MIT licensed Rust Version Project Chat

Pure Rust implementation of Public-Key Cryptography Standards (PKCS) #8: Private-Key Information Syntax Specification (RFC 5208).

Documentation

About PKCS#8

PKCS#8 is a format for cryptographic private keys, often containing pairs of private and public keys.

You can identify a PKCS#8 private key encoded as PEM (i.e. text) by the following:

-----BEGIN PRIVATE KEY-----

PKCS#8 private keys can optionally be encrypted under a password using key derivation algorithms like PBKDF2 and scrypt, and encrypted with ciphers like AES-CBC. When a PKCS#8 private key has been encrypted, it starts with the following:

-----BEGIN ENCRYPTED PRIVATE KEY-----

PKCS#8 private keys can also be serialized in an ASN.1-based binary format. The PEM text encoding is a Base64 representation of this format.

Supported Algorithms

This crate is implemented in an algorithm-agnostic manner with the goal of enabling PKCS#8 support for any algorithm.

That said, it has been tested for interoperability against keys generated by OpenSSL for the following algorithms:

  • ECC (id-ecPublicKey)
  • Ed25519 (id-Ed25519)
  • RSA (id-rsaEncryption)
  • X25519 (id-X25519)

Please open an issue if you encounter trouble using it with a particular algorithm, including the ones listed above or other algorithms.

License

Licensed under either of:

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~0.3–0.8MB
~16K SLoC