Skip to main content

noxtls_x509/
lib.rs

1// Copyright (c) 2019-2026, Argenox Technologies LLC
2// All rights reserved.
3//
4// SPDX-License-Identifier: GPL-2.0-only OR LicenseRef-Argenox-Commercial-License
5//
6// This file is part of the NoxTLS Library.
7//
8// This program is free software: you can redistribute it and/or modify
9// it under the terms of the GNU General Public License as published by the
10// Free Software Foundation; version 2 of the License.
11//
12// Alternatively, this file may be used under the terms of a commercial
13// license from Argenox Technologies LLC.
14//
15// See `noxtls/LICENSE` and `noxtls/LICENSE.md` in this repository for full details.
16// CONTACT: info@argenox.com
17
18//! X.509 certificate parsing, minimal issuance helpers, PEM/DER bridging, and chain validation for NoxTLS.
19//!
20//! The crate re-exports a flat API from the crate root: [`Certificate`] parsing, RSA/EC/X25519/X448 key
21//! material helpers, optional strict chain validation, and small DER writers used by tests and tooling.
22
23#![cfg_attr(not(feature = "std"), no_std)]
24#![forbid(unsafe_code)]
25#![allow(clippy::type_complexity)]
26#![allow(clippy::too_many_arguments)]
27#![allow(clippy::cloned_ref_to_slice_refs)]
28
29#[cfg(not(feature = "std"))]
30#[macro_use]
31extern crate alloc;
32
33mod certs;
34mod internal_alloc;
35
36pub use certs::{
37    certificate_chain_pem_to_der_blocks, certificate_der_to_pem, certificate_matches_hostname,
38    certificate_pem_to_der, der_to_pem, ec_private_key_der_to_pem_sec1,
39    ec_private_key_pem_to_der_sec1, ed25519_private_key_from_pem_pkcs8,
40    ed25519_private_key_from_pkcs8_der, ed25519_private_key_to_pem_pkcs8,
41    ed25519_private_key_to_pkcs8_der, ed25519_public_key_from_pem_spki,
42    ed25519_public_key_from_spki_der, ed25519_public_key_to_pem_spki,
43    ed25519_public_key_to_spki_der, mldsa_public_key_from_spki_der,
44    p256_private_key_from_pem_pkcs8, p256_private_key_from_pem_sec1,
45    p256_private_key_from_pkcs8_der, p256_private_key_from_sec1_der, p256_private_key_to_pem_pkcs8,
46    p256_private_key_to_pkcs8_der, p256_public_key_from_pem_spki, p256_public_key_from_spki_der,
47    p256_public_key_to_pem_spki, p256_public_key_to_spki_der, parse_certificate, parse_der_length,
48    parse_der_node, parse_ecdsa_signature_der, parse_pkcs1_rsa_private_key_der,
49    parse_pkcs1_rsa_public_key_der, parse_pkcs8_private_key_info_der,
50    parse_spki_public_key_info_der, pem_to_der, pem_to_der_blocks, private_key_der_to_pem_pkcs8,
51    private_key_pem_to_der_pkcs8, public_key_der_to_pem_spki, public_key_pem_to_der_spki,
52    rsa_private_key_der_to_pem_pkcs1, rsa_private_key_from_pem_pkcs1,
53    rsa_private_key_from_pem_pkcs8, rsa_private_key_from_pkcs1_der, rsa_private_key_from_pkcs8_der,
54    rsa_private_key_pem_to_der_pkcs1, rsa_public_key_der_to_pem_pkcs1,
55    rsa_public_key_from_pem_pkcs1, rsa_public_key_from_pem_spki, rsa_public_key_from_pkcs1_der,
56    rsa_public_key_from_spki_der, rsa_public_key_pem_to_der_pkcs1, rsa_public_key_to_pem_pkcs1,
57    rsa_public_key_to_pem_spki, rsa_public_key_to_spki_der, validate_certificate_chain,
58    validate_certificate_chain_constraints_only, validate_certificate_chain_strict,
59    validate_certificate_chain_with_options, verify_certificate_signature, write_csr_p256_sha256,
60    write_csr_rsa_sha256, write_der_bit_string, write_der_integer, write_der_oid,
61    write_der_sequence, write_minimal_certificate_der, write_self_signed_certificate_p256_sha256,
62    write_self_signed_certificate_rsa_sha256, x25519_private_key_from_pem_pkcs8,
63    x25519_private_key_from_pkcs8_der, x25519_private_key_to_pem_pkcs8,
64    x25519_private_key_to_pkcs8_der, x25519_public_key_from_pem_spki,
65    x25519_public_key_from_spki_der, x25519_public_key_to_pem_spki, x25519_public_key_to_spki_der,
66    x448_private_key_from_pem_pkcs8, x448_private_key_from_pkcs8_der,
67    x448_private_key_to_pem_pkcs8, x448_private_key_to_pkcs8_der, x448_public_key_from_pem_spki,
68    x448_public_key_from_spki_der, x448_public_key_to_pem_spki, x448_public_key_to_spki_der,
69    Certificate, DerNode, Pkcs8PrivateKeyInfoDerParts, RsaPrivateKeyDerParts, RsaPublicKeyDerParts,
70    SpkiPublicKeyInfoDerParts, ValidationError, ValidationOptions, ValidationReport,
71};
72
73#[cfg(feature = "std")]
74pub use certs::{
75    der_to_file, der_to_pem_file, ed25519_private_key_from_pem_file_pkcs8,
76    ed25519_private_key_to_pem_file_pkcs8, p256_private_key_from_pem_file_pkcs8,
77    p256_private_key_to_pem_file_pkcs8, pem_file_to_der, pem_file_to_der_blocks,
78    x25519_private_key_from_pem_file_pkcs8, x25519_private_key_to_pem_file_pkcs8,
79    x448_private_key_from_pem_file_pkcs8, x448_private_key_to_pem_file_pkcs8,
80};