1 // Copyright 2023 Google LLC 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 //! Provides multiple implementations of CryptoProvider through the same struct, configurable by 16 //! feature flag. 17 18 #![no_std] 19 20 cfg_if::cfg_if! { 21 if #[cfg(all(feature = "rustcrypto", feature = "boringssl"))] { 22 compile_error!("Conflicting crypto_providers specified, must only enable a single crypto provider"); 23 } else if #[cfg(feature = "rustcrypto")] { 24 pub use crypto_provider_rustcrypto::RustCrypto as CryptoProviderImpl; 25 } else if #[cfg(feature = "boringssl")] { 26 pub use crypto_provider_boringssl::Boringssl as CryptoProviderImpl; 27 } else { 28 compile_error!("No crypto_provider feature enabled!"); 29 } 30 } 31