1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
//! [X.509] Subject Public Key Info (SPKI) types describing public keys and their
//! associated [`AlgorithmIdentifier`] OIDs.
//!
//! Described in [RFC 5280 Section 4.1].
//!
//! # Minimum Supported Rust Version
//!
//! This crate requires **Rust 1.51** at a minimum.
//!
//! # Usage
//!
//! The following example demonstrates how to use an OID as the `parameters`
//! of an [`AlgorithmIdentifier`].
//!
//! Borrow the [`ObjectIdentifier`] first then use [`Into`] (or `Any::from`):
//!
//! ```
//! use spki::{AlgorithmIdentifier, ObjectIdentifier};
//!
//! let alg_oid = "1.2.840.10045.2.1".parse::<ObjectIdentifier>().unwrap();
//! let params_oid = "1.2.840.10045.3.1.7".parse::<ObjectIdentifier>().unwrap();
//!
//! let alg_id = AlgorithmIdentifier {
//! oid: alg_oid,
//! parameters: Some((¶ms_oid).into())
//! };
//! ```
//!
//! [X.509]: https://en.wikipedia.org/wiki/X.509
//! [RFC 5280 Section 4.1]: https://tools.ietf.org/html/rfc5280#section-4.1
#![no_std]
#![doc(
html_logo_url = "https://raw.githubusercontent.com/RustCrypto/meta/master/logo.svg",
html_favicon_url = "https://raw.githubusercontent.com/RustCrypto/meta/master/logo.svg",
html_root_url = "https://docs.rs/spki/0.4.1"
)]
#![forbid(unsafe_code, clippy::unwrap_used)]
#![warn(missing_docs, rust_2018_idioms, unused_qualifications)]
mod algorithm;
mod spki;
pub use crate::{algorithm::AlgorithmIdentifier, spki::SubjectPublicKeyInfo};
pub use der::{self, asn1::ObjectIdentifier};