rustls_cert_reloadable_resolver/
key_provider.rs1#[derive(Debug)]
6pub struct Dyn(pub &'static dyn rustls::crypto::KeyProvider);
7
8impl rustls::crypto::KeyProvider for Dyn {
9 fn load_private_key(
10 &self,
11 key_der: rustls::pki_types::PrivateKeyDer<'static>,
12 ) -> Result<std::sync::Arc<dyn rustls::sign::SigningKey>, rustls::Error> {
13 self.0.load_private_key(key_der)
14 }
15}
16
17pub struct FromCrypto<T>(pub T)
20where
21 T: std::borrow::Borrow<rustls::crypto::CryptoProvider>;
22
23impl<T> rustls::crypto::KeyProvider for FromCrypto<T>
24where
25 T: std::borrow::Borrow<rustls::crypto::CryptoProvider> + Send + Sync,
26{
27 fn load_private_key(
28 &self,
29 key_der: rustls::pki_types::PrivateKeyDer<'static>,
30 ) -> Result<std::sync::Arc<dyn rustls::sign::SigningKey>, rustls::Error> {
31 let crypto_provider: &rustls::crypto::CryptoProvider = self.0.borrow();
32 crypto_provider.key_provider.load_private_key(key_der)
33 }
34}
35
36impl<T> std::fmt::Debug for FromCrypto<T>
37where
38 T: std::borrow::Borrow<rustls::crypto::CryptoProvider>,
39{
40 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
41 let crypto_provider: &rustls::crypto::CryptoProvider = self.0.borrow();
42 f.debug_tuple("FromCrypto").field(crypto_provider).finish()
43 }
44}