mod.rs (3094B)
1 // Copyright 2022 Adobe. All rights reserved. 2 // This file is licensed to you under the Apache License, 3 // Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0) 4 // or the MIT license (http://opensource.org/licenses/MIT), 5 // at your option. 6 7 // Unless required by applicable law or agreed to in writing, 8 // this software is distributed on an "AS IS" BASIS, WITHOUT 9 // WARRANTIES OR REPRESENTATIONS OF ANY KIND, either express or 10 // implied. See the LICENSE-MIT and LICENSE-APACHE files for the 11 // specific language governing permissions and limitations under 12 // each license. 13 14 #[cfg(feature = "openssl_sign")] 15 mod rsa_signer; 16 #[cfg(feature = "openssl_sign")] 17 pub(crate) use rsa_signer::RsaSigner; 18 19 #[cfg(feature = "openssl")] 20 mod rsa_validator; 21 #[cfg(feature = "openssl")] 22 pub(crate) use rsa_validator::RsaValidator; 23 24 #[cfg(feature = "openssl_sign")] 25 mod ec_signer; 26 #[cfg(feature = "openssl_sign")] 27 pub(crate) use ec_signer::EcSigner; 28 29 #[cfg(feature = "openssl")] 30 mod ec_validator; 31 #[cfg(feature = "openssl")] 32 pub(crate) use ec_validator::EcValidator; 33 34 #[cfg(feature = "openssl_sign")] 35 mod ed_signer; 36 #[cfg(feature = "openssl_sign")] 37 pub(crate) use ed_signer::EdSigner; 38 39 #[cfg(feature = "openssl")] 40 mod ed_validator; 41 #[cfg(feature = "openssl")] 42 pub(crate) use ed_validator::EdValidator; 43 44 #[cfg(feature = "openssl")] 45 mod openssl_trust_handler; 46 #[cfg(test)] 47 pub(crate) mod temp_signer; 48 49 #[cfg(feature = "openssl")] 50 pub(crate) use openssl_trust_handler::verify_trust; 51 #[cfg(feature = "openssl")] 52 pub(crate) use openssl_trust_handler::OpenSSLTrustHandlerConfig; 53 54 #[cfg(test)] 55 pub(crate) mod temp_signer_async; 56 57 #[cfg(feature = "openssl")] 58 use openssl::x509::X509; 59 #[cfg(test)] 60 #[allow(unused_imports)] 61 #[cfg(feature = "openssl")] 62 pub(crate) use temp_signer_async::AsyncSignerAdapter; 63 #[cfg(feature = "openssl")] 64 pub(crate) fn check_chain_order(certs: &[X509]) -> bool { 65 { 66 if certs.len() > 1 { 67 for (i, c) in certs.iter().enumerate() { 68 if let Some(next_c) = certs.get(i + 1) { 69 if let Ok(pkey) = next_c.public_key() { 70 if let Ok(verified) = c.verify(&pkey) { 71 if !verified { 72 return false; 73 } 74 } else { 75 return false; 76 } 77 } else { 78 return false; 79 } 80 } 81 } 82 } 83 true 84 } 85 } 86 87 #[cfg(not(feature = "openssl"))] 88 pub(crate) fn check_chain_order(certs: &[X509]) -> bool { 89 true 90 } 91 92 #[cfg(feature = "openssl")] 93 #[allow(dead_code)] 94 pub(crate) fn check_chain_order_der(cert_ders: &[Vec<u8>]) -> bool { 95 let mut certs: Vec<X509> = Vec::new(); 96 for cert_der in cert_ders { 97 if let Ok(cert) = X509::from_der(cert_der) { 98 certs.push(cert); 99 } else { 100 return false; 101 } 102 } 103 104 check_chain_order(&certs) 105 } 106 107 #[cfg(not(feature = "openssl"))] 108 pub(crate) fn check_chain_order_der(cert_ders: &[Vec<u8>]) -> bool { 109 true 110 }