1#![no_std]
30#![warn(elided_lifetimes_in_paths, unreachable_pub, clippy::use_self)]
31#![deny(missing_docs, clippy::as_conversions)]
32#![allow(
33 clippy::len_without_is_empty,
34 clippy::new_without_default,
35 clippy::single_match,
36 clippy::single_match_else,
37 clippy::type_complexity,
38 clippy::upper_case_acronyms
39)]
40#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))]
42
43#[cfg(any(feature = "std", test))]
44extern crate std;
45
46#[cfg(any(test, feature = "alloc"))]
47#[cfg_attr(test, macro_use)]
48extern crate alloc;
49
50#[macro_use]
51mod der;
52
53#[cfg(feature = "aws_lc_rs")]
54mod aws_lc_rs_algs;
55mod cert;
56mod end_entity;
57mod error;
58#[cfg(feature = "ring")]
59mod ring_algs;
60mod rpk_entity;
61mod signed_data;
62mod subject_name;
63mod time;
64mod trust_anchor;
65
66mod crl;
67mod verify_cert;
68mod x509;
69
70#[cfg(test)]
71pub(crate) mod test_utils;
72
73pub use {
74 cert::Cert,
75 crl::{
76 BorrowedCertRevocationList, BorrowedRevokedCert, CertRevocationList, ExpirationPolicy,
77 RevocationCheckDepth, RevocationOptions, RevocationOptionsBuilder, RevocationReason,
78 UnknownStatusPolicy,
79 },
80 end_entity::EndEntityCert,
81 error::{DerTypeId, Error},
82 rpk_entity::RawPublicKeyEntity,
83 signed_data::alg_id,
84 trust_anchor::anchor_from_trusted_cert,
85 verify_cert::KeyUsage,
86 verify_cert::VerifiedPath,
87};
88
89pub use pki_types as types;
90
91#[cfg(feature = "alloc")]
92pub use crl::{OwnedCertRevocationList, OwnedRevokedCert};
93
94#[cfg(feature = "ring")]
95pub mod ring {
97 pub use super::ring_algs::{
98 ECDSA_P256_SHA256, ECDSA_P256_SHA384, ECDSA_P384_SHA256, ECDSA_P384_SHA384, ED25519,
99 };
100
101 #[cfg(feature = "alloc")]
102 pub use super::ring_algs::{
103 RSA_PKCS1_2048_8192_SHA256, RSA_PKCS1_2048_8192_SHA384, RSA_PKCS1_2048_8192_SHA512,
104 RSA_PKCS1_3072_8192_SHA384, RSA_PSS_2048_8192_SHA256_LEGACY_KEY,
105 RSA_PSS_2048_8192_SHA384_LEGACY_KEY, RSA_PSS_2048_8192_SHA512_LEGACY_KEY,
106 };
107}
108
109#[cfg(feature = "aws_lc_rs")]
110pub mod aws_lc_rs {
112 pub use super::aws_lc_rs_algs::{
113 ECDSA_P256_SHA256, ECDSA_P256_SHA384, ECDSA_P384_SHA256, ECDSA_P384_SHA384,
114 ECDSA_P521_SHA256, ECDSA_P521_SHA384, ECDSA_P521_SHA512, ED25519,
115 RSA_PKCS1_2048_8192_SHA256, RSA_PKCS1_2048_8192_SHA384, RSA_PKCS1_2048_8192_SHA512,
116 RSA_PKCS1_3072_8192_SHA384, RSA_PSS_2048_8192_SHA256_LEGACY_KEY,
117 RSA_PSS_2048_8192_SHA384_LEGACY_KEY, RSA_PSS_2048_8192_SHA512_LEGACY_KEY,
118 };
119}
120
121pub static ALL_VERIFICATION_ALGS: &[&dyn types::SignatureVerificationAlgorithm] = &[
125 #[cfg(feature = "ring")]
126 ring::ECDSA_P256_SHA256,
127 #[cfg(feature = "ring")]
128 ring::ECDSA_P256_SHA384,
129 #[cfg(feature = "ring")]
130 ring::ECDSA_P384_SHA256,
131 #[cfg(feature = "ring")]
132 ring::ECDSA_P384_SHA384,
133 #[cfg(feature = "ring")]
134 ring::ED25519,
135 #[cfg(all(feature = "ring", feature = "alloc"))]
136 ring::RSA_PKCS1_2048_8192_SHA256,
137 #[cfg(all(feature = "ring", feature = "alloc"))]
138 ring::RSA_PKCS1_2048_8192_SHA384,
139 #[cfg(all(feature = "ring", feature = "alloc"))]
140 ring::RSA_PKCS1_2048_8192_SHA512,
141 #[cfg(all(feature = "ring", feature = "alloc"))]
142 ring::RSA_PKCS1_3072_8192_SHA384,
143 #[cfg(all(feature = "ring", feature = "alloc"))]
144 ring::RSA_PSS_2048_8192_SHA256_LEGACY_KEY,
145 #[cfg(all(feature = "ring", feature = "alloc"))]
146 ring::RSA_PSS_2048_8192_SHA384_LEGACY_KEY,
147 #[cfg(all(feature = "ring", feature = "alloc"))]
148 ring::RSA_PSS_2048_8192_SHA512_LEGACY_KEY,
149 #[cfg(feature = "aws_lc_rs")]
150 aws_lc_rs::ECDSA_P256_SHA256,
151 #[cfg(feature = "aws_lc_rs")]
152 aws_lc_rs::ECDSA_P256_SHA384,
153 #[cfg(feature = "aws_lc_rs")]
154 aws_lc_rs::ECDSA_P384_SHA256,
155 #[cfg(feature = "aws_lc_rs")]
156 aws_lc_rs::ECDSA_P384_SHA384,
157 #[cfg(feature = "aws_lc_rs")]
158 aws_lc_rs::ECDSA_P521_SHA256,
159 #[cfg(feature = "aws_lc_rs")]
160 aws_lc_rs::ECDSA_P521_SHA384,
161 #[cfg(feature = "aws_lc_rs")]
162 aws_lc_rs::ECDSA_P521_SHA512,
163 #[cfg(feature = "aws_lc_rs")]
164 aws_lc_rs::ED25519,
165 #[cfg(feature = "aws_lc_rs")]
166 aws_lc_rs::RSA_PKCS1_2048_8192_SHA256,
167 #[cfg(feature = "aws_lc_rs")]
168 aws_lc_rs::RSA_PKCS1_2048_8192_SHA384,
169 #[cfg(feature = "aws_lc_rs")]
170 aws_lc_rs::RSA_PKCS1_2048_8192_SHA512,
171 #[cfg(feature = "aws_lc_rs")]
172 aws_lc_rs::RSA_PKCS1_3072_8192_SHA384,
173 #[cfg(feature = "aws_lc_rs")]
174 aws_lc_rs::RSA_PSS_2048_8192_SHA256_LEGACY_KEY,
175 #[cfg(feature = "aws_lc_rs")]
176 aws_lc_rs::RSA_PSS_2048_8192_SHA384_LEGACY_KEY,
177 #[cfg(feature = "aws_lc_rs")]
178 aws_lc_rs::RSA_PSS_2048_8192_SHA512_LEGACY_KEY,
179];
180
181fn public_values_eq(a: untrusted::Input<'_>, b: untrusted::Input<'_>) -> bool {
182 a.as_slice_less_safe() == b.as_slice_less_safe()
183}