1#![deny(broken_intra_doc_links)]
23
24use std::sync::Once;
25use tink_core::registry::register_key_manager;
26
27mod aead_factory;
28pub use aead_factory::*;
29mod aead_key_templates;
30pub use aead_key_templates::*;
31mod aes_ctr_hmac_aead_key_manager;
32pub use aes_ctr_hmac_aead_key_manager::*;
33mod aes_gcm_key_manager;
34pub use aes_gcm_key_manager::*;
35mod aes_gcm_siv_key_manager;
36pub use aes_gcm_siv_key_manager::*;
37mod chacha20poly1305_key_manager;
38pub use chacha20poly1305_key_manager::*;
39mod kms_envelope_aead;
40pub use kms_envelope_aead::*;
41mod kms_envelope_aead_key_manager;
42pub use kms_envelope_aead_key_manager::*;
43mod xchacha20poly1305_key_manager;
44pub use xchacha20poly1305_key_manager::*;
45
46pub mod subtle;
47
48pub const UPSTREAM_VERSION: &str = "1.6.0";
51
52static INIT: Once = Once::new();
53
54pub fn init() {
57 INIT.call_once(|| {
58 register_key_manager(std::sync::Arc::new(AesCtrHmacAeadKeyManager::default()))
59 .expect("tink_aead::init() failed"); register_key_manager(std::sync::Arc::new(AesGcmKeyManager::default()))
61 .expect("tink_aead::init() failed"); register_key_manager(std::sync::Arc::new(AesGcmSivKeyManager::default()))
63 .expect("tink_aead::init() failed"); register_key_manager(std::sync::Arc::new(ChaCha20Poly1305KeyManager::default()))
65 .expect("tink_aead::init() failed"); register_key_manager(std::sync::Arc::new(XChaCha20Poly1305KeyManager::default()))
67 .expect("tink_aead::init() failed"); register_key_manager(std::sync::Arc::new(KmsEnvelopeAeadKeyManager::default()))
69 .expect("tink_aead::init() failed"); tink_core::registry::register_template_generator("AES128_GCM", aes128_gcm_key_template);
72 tink_core::registry::register_template_generator("AES256_GCM", aes256_gcm_key_template);
73 tink_core::registry::register_template_generator(
74 "AES256_GCM_NO_PREFIX",
75 aes256_gcm_no_prefix_key_template,
76 );
77 tink_core::registry::register_template_generator(
78 "AES128_GCM_SIV",
79 aes128_gcm_siv_key_template,
80 );
81 tink_core::registry::register_template_generator(
82 "AES256_GCM_SIV",
83 aes256_gcm_siv_key_template,
84 );
85 tink_core::registry::register_template_generator(
86 "AES256_GCM_SIV_NO_PREFIX",
87 aes256_gcm_siv_no_prefix_key_template,
88 );
89 tink_core::registry::register_template_generator(
90 "AES128_CTR_HMAC_SHA256",
91 aes128_ctr_hmac_sha256_key_template,
92 );
93 tink_core::registry::register_template_generator(
94 "AES256_CTR_HMAC_SHA256",
95 aes256_ctr_hmac_sha256_key_template,
96 );
97 tink_core::registry::register_template_generator(
98 "CHACHA20_POLY1305",
99 cha_cha20_poly1305_key_template,
100 );
101 tink_core::registry::register_template_generator(
102 "XCHACHA20_POLY1305",
103 x_cha_cha20_poly1305_key_template,
104 );
105 });
106}