Full Code of tink-crypto/tink for AI

master 1f4cd38874ec cached
3712 files
39.5 MB
4.8M tokens
11720 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (19,126K chars total). Download the full file to get everything.
Repository: tink-crypto/tink
Branch: master
Commit: 1f4cd38874ec
Files: 3712
Total size: 39.5 MB

Directory structure:
gitextract_6vi1w9d7/

├── .bazelversion
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.md
│   │   ├── config.yml
│   │   └── feature_request.md
│   └── workflows/
│       └── codeql-analysis.yml
├── .gitignore
├── BUILD.bazel
├── CMakeLists.txt
├── LICENSE
├── README.md
├── cc/
│   ├── .bazelignore
│   ├── .bazelrc
│   ├── .bazelversion
│   ├── BUILD.bazel
│   ├── CMakeLists.txt
│   ├── WORKSPACE
│   ├── aead/
│   │   ├── BUILD.bazel
│   │   ├── CMakeLists.txt
│   │   ├── aead_config.cc
│   │   ├── aead_config.h
│   │   ├── aead_config_test.cc
│   │   ├── aead_factory.cc
│   │   ├── aead_factory.h
│   │   ├── aead_factory_test.cc
│   │   ├── aead_key.h
│   │   ├── aead_key_templates.cc
│   │   ├── aead_key_templates.h
│   │   ├── aead_key_templates_test.cc
│   │   ├── aead_parameters.h
│   │   ├── aead_wrapper.cc
│   │   ├── aead_wrapper.h
│   │   ├── aead_wrapper_test.cc
│   │   ├── aes_ctr_hmac_aead_key.cc
│   │   ├── aes_ctr_hmac_aead_key.h
│   │   ├── aes_ctr_hmac_aead_key_manager.cc
│   │   ├── aes_ctr_hmac_aead_key_manager.h
│   │   ├── aes_ctr_hmac_aead_key_manager_test.cc
│   │   ├── aes_ctr_hmac_aead_key_test.cc
│   │   ├── aes_ctr_hmac_aead_parameters.cc
│   │   ├── aes_ctr_hmac_aead_parameters.h
│   │   ├── aes_ctr_hmac_aead_parameters_test.cc
│   │   ├── aes_ctr_hmac_aead_proto_serialization.cc
│   │   ├── aes_ctr_hmac_aead_proto_serialization.h
│   │   ├── aes_ctr_hmac_aead_proto_serialization_test.cc
│   │   ├── aes_eax_key.cc
│   │   ├── aes_eax_key.h
│   │   ├── aes_eax_key_manager.h
│   │   ├── aes_eax_key_manager_test.cc
│   │   ├── aes_eax_key_test.cc
│   │   ├── aes_eax_parameters.cc
│   │   ├── aes_eax_parameters.h
│   │   ├── aes_eax_parameters_test.cc
│   │   ├── aes_eax_proto_serialization.cc
│   │   ├── aes_eax_proto_serialization.h
│   │   ├── aes_eax_proto_serialization_test.cc
│   │   ├── aes_gcm_key.cc
│   │   ├── aes_gcm_key.h
│   │   ├── aes_gcm_key_manager.h
│   │   ├── aes_gcm_key_manager_test.cc
│   │   ├── aes_gcm_key_test.cc
│   │   ├── aes_gcm_parameters.cc
│   │   ├── aes_gcm_parameters.h
│   │   ├── aes_gcm_parameters_test.cc
│   │   ├── aes_gcm_proto_serialization.cc
│   │   ├── aes_gcm_proto_serialization.h
│   │   ├── aes_gcm_proto_serialization_test.cc
│   │   ├── aes_gcm_siv_key.cc
│   │   ├── aes_gcm_siv_key.h
│   │   ├── aes_gcm_siv_key_manager.h
│   │   ├── aes_gcm_siv_key_manager_test.cc
│   │   ├── aes_gcm_siv_key_test.cc
│   │   ├── aes_gcm_siv_parameters.cc
│   │   ├── aes_gcm_siv_parameters.h
│   │   ├── aes_gcm_siv_parameters_test.cc
│   │   ├── aes_gcm_siv_proto_serialization.cc
│   │   ├── aes_gcm_siv_proto_serialization.h
│   │   ├── aes_gcm_siv_proto_serialization_test.cc
│   │   ├── chacha20_poly1305_key.cc
│   │   ├── chacha20_poly1305_key.h
│   │   ├── chacha20_poly1305_key_test.cc
│   │   ├── chacha20_poly1305_parameters.cc
│   │   ├── chacha20_poly1305_parameters.h
│   │   ├── chacha20_poly1305_parameters_test.cc
│   │   ├── chacha20_poly1305_proto_serialization.cc
│   │   ├── chacha20_poly1305_proto_serialization.h
│   │   ├── chacha20_poly1305_proto_serialization_test.cc
│   │   ├── config_v0.cc
│   │   ├── config_v0.h
│   │   ├── config_v0_test.cc
│   │   ├── cord_aead.h
│   │   ├── cord_aead_wrapper.cc
│   │   ├── cord_aead_wrapper.h
│   │   ├── cord_aead_wrapper_test.cc
│   │   ├── failing_aead.cc
│   │   ├── failing_aead.h
│   │   ├── failing_aead_test.cc
│   │   ├── internal/
│   │   │   ├── BUILD.bazel
│   │   │   ├── CMakeLists.txt
│   │   │   ├── aead_from_zero_copy.cc
│   │   │   ├── aead_from_zero_copy.h
│   │   │   ├── aead_from_zero_copy_test.cc
│   │   │   ├── aead_util.cc
│   │   │   ├── aead_util.h
│   │   │   ├── aead_util_test.cc
│   │   │   ├── config_v0.cc
│   │   │   ├── config_v0.h
│   │   │   ├── config_v0_test.cc
│   │   │   ├── cord_aes_gcm_boringssl.cc
│   │   │   ├── cord_aes_gcm_boringssl.h
│   │   │   ├── cord_aes_gcm_boringssl_test.cc
│   │   │   ├── key_gen_config_v0.cc
│   │   │   ├── key_gen_config_v0.h
│   │   │   ├── mock_zero_copy_aead.h
│   │   │   ├── ssl_aead.cc
│   │   │   ├── ssl_aead.h
│   │   │   ├── ssl_aead_large_inputs_test.cc
│   │   │   ├── ssl_aead_test.cc
│   │   │   ├── wycheproof_aead.cc
│   │   │   ├── wycheproof_aead.h
│   │   │   ├── zero_copy_aead.h
│   │   │   ├── zero_copy_aead_wrapper.cc
│   │   │   ├── zero_copy_aead_wrapper.h
│   │   │   ├── zero_copy_aead_wrapper_test.cc
│   │   │   ├── zero_copy_aes_gcm_boringssl.cc
│   │   │   ├── zero_copy_aes_gcm_boringssl.h
│   │   │   └── zero_copy_aes_gcm_boringssl_test.cc
│   │   ├── key_gen_config_v0.cc
│   │   ├── key_gen_config_v0.h
│   │   ├── kms_aead_key_manager.h
│   │   ├── kms_aead_key_manager_test.cc
│   │   ├── kms_envelope_aead.cc
│   │   ├── kms_envelope_aead.h
│   │   ├── kms_envelope_aead_key_manager.cc
│   │   ├── kms_envelope_aead_key_manager.h
│   │   ├── kms_envelope_aead_key_manager_test.cc
│   │   ├── kms_envelope_aead_test.cc
│   │   ├── mock_aead.h
│   │   ├── subtle/
│   │   │   ├── BUILD.bazel
│   │   │   └── CMakeLists.txt
│   │   ├── xchacha20_poly1305_key.cc
│   │   ├── xchacha20_poly1305_key.h
│   │   ├── xchacha20_poly1305_key_manager.h
│   │   ├── xchacha20_poly1305_key_manager_test.cc
│   │   ├── xchacha20_poly1305_key_test.cc
│   │   ├── xchacha20_poly1305_parameters.cc
│   │   ├── xchacha20_poly1305_parameters.h
│   │   ├── xchacha20_poly1305_parameters_test.cc
│   │   ├── xchacha20_poly1305_proto_serialization.cc
│   │   ├── xchacha20_poly1305_proto_serialization.h
│   │   └── xchacha20_poly1305_proto_serialization_test.cc
│   ├── aead.h
│   ├── aead_config.h
│   ├── aead_factory.h
│   ├── aead_key_templates.h
│   ├── big_integer.h
│   ├── binary_keyset_reader.h
│   ├── binary_keyset_writer.h
│   ├── chunked_mac.h
│   ├── cleartext_keyset_handle.h
│   ├── config/
│   │   ├── BUILD.bazel
│   │   ├── CMakeLists.txt
│   │   ├── config_util.cc
│   │   ├── config_util.h
│   │   ├── config_util_test.cc
│   │   ├── fips_140_2.cc
│   │   ├── fips_140_2.h
│   │   ├── fips_140_2_test.cc
│   │   ├── global_registry.cc
│   │   ├── global_registry.h
│   │   ├── global_registry_test.cc
│   │   ├── internal/
│   │   │   ├── BUILD.bazel
│   │   │   └── CMakeLists.txt
│   │   ├── key_gen_fips_140_2.cc
│   │   ├── key_gen_fips_140_2.h
│   │   ├── key_gen_fips_140_2_test.cc
│   │   ├── key_gen_v0.cc
│   │   ├── key_gen_v0.h
│   │   ├── tink_config.cc
│   │   ├── tink_config.h
│   │   ├── tink_config_test.cc
│   │   ├── tink_fips.cc
│   │   ├── tink_fips.h
│   │   ├── tink_fips_test.cc
│   │   ├── v0.cc
│   │   ├── v0.h
│   │   └── v0_test.cc
│   ├── configuration.h
│   ├── core/
│   │   ├── big_integer.cc
│   │   ├── big_integer_test.cc
│   │   ├── binary_keyset_reader.cc
│   │   ├── binary_keyset_reader_test.cc
│   │   ├── binary_keyset_writer.cc
│   │   ├── binary_keyset_writer_test.cc
│   │   ├── cleartext_keyset_handle.cc
│   │   ├── cleartext_keyset_handle_test.cc
│   │   ├── crypto_format.cc
│   │   ├── crypto_format_test.cc
│   │   ├── ec_point_test.cc
│   │   ├── json_keyset_reader.cc
│   │   ├── json_keyset_reader_test.cc
│   │   ├── json_keyset_writer.cc
│   │   ├── json_keyset_writer_test.cc
│   │   ├── key_access_test.cc
│   │   ├── key_manager.cc
│   │   ├── key_manager_impl.h
│   │   ├── key_manager_impl_test.cc
│   │   ├── key_manager_test.cc
│   │   ├── key_type_manager.h
│   │   ├── key_type_manager_test.cc
│   │   ├── keyset_handle.cc
│   │   ├── keyset_handle_builder.cc
│   │   ├── keyset_handle_builder_test.cc
│   │   ├── keyset_handle_test.cc
│   │   ├── keyset_manager.cc
│   │   ├── keyset_manager_test.cc
│   │   ├── kms_clients.cc
│   │   ├── kms_clients_test.cc
│   │   ├── partial_key_access_token_test.cc
│   │   ├── primitive_set_test.cc
│   │   ├── private_key_manager_impl.h
│   │   ├── private_key_manager_impl_test.cc
│   │   ├── private_key_type_manager.h
│   │   ├── restricted_big_integer.cc
│   │   ├── restricted_big_integer_test.cc
│   │   ├── restricted_data.cc
│   │   ├── restricted_data_test.cc
│   │   ├── template_util.h
│   │   ├── template_util_test.cc
│   │   ├── version.cc
│   │   └── version_test.cc
│   ├── crypto_format.h
│   ├── daead/
│   │   ├── BUILD.bazel
│   │   ├── CMakeLists.txt
│   │   ├── aes_siv_key.cc
│   │   ├── aes_siv_key.h
│   │   ├── aes_siv_key_manager.h
│   │   ├── aes_siv_key_manager_test.cc
│   │   ├── aes_siv_key_test.cc
│   │   ├── aes_siv_parameters.cc
│   │   ├── aes_siv_parameters.h
│   │   ├── aes_siv_parameters_test.cc
│   │   ├── aes_siv_proto_serialization.cc
│   │   ├── aes_siv_proto_serialization.h
│   │   ├── aes_siv_proto_serialization_test.cc
│   │   ├── config_v0.cc
│   │   ├── config_v0.h
│   │   ├── config_v0_test.cc
│   │   ├── deterministic_aead_config.cc
│   │   ├── deterministic_aead_config.h
│   │   ├── deterministic_aead_config_test.cc
│   │   ├── deterministic_aead_factory.cc
│   │   ├── deterministic_aead_factory.h
│   │   ├── deterministic_aead_factory_test.cc
│   │   ├── deterministic_aead_key.h
│   │   ├── deterministic_aead_key_templates.cc
│   │   ├── deterministic_aead_key_templates.h
│   │   ├── deterministic_aead_key_templates_test.cc
│   │   ├── deterministic_aead_parameters.h
│   │   ├── deterministic_aead_wrapper.cc
│   │   ├── deterministic_aead_wrapper.h
│   │   ├── deterministic_aead_wrapper_test.cc
│   │   ├── failing_daead.cc
│   │   ├── failing_daead.h
│   │   ├── failing_daead_test.cc
│   │   ├── internal/
│   │   │   ├── BUILD.bazel
│   │   │   ├── CMakeLists.txt
│   │   │   ├── config_v0.cc
│   │   │   ├── config_v0.h
│   │   │   ├── config_v0_test.cc
│   │   │   ├── key_gen_config_v0.cc
│   │   │   └── key_gen_config_v0.h
│   │   ├── key_gen_config_v0.cc
│   │   ├── key_gen_config_v0.h
│   │   └── subtle/
│   │       ├── BUILD.bazel
│   │       ├── CMakeLists.txt
│   │       ├── aead_or_daead.cc
│   │       ├── aead_or_daead.h
│   │       └── aead_or_daead_test.cc
│   ├── deterministic_aead.h
│   ├── deterministic_aead_config.h
│   ├── deterministic_aead_factory.h
│   ├── deterministic_aead_key_templates.h
│   ├── ec_point.h
│   ├── examples/
│   │   ├── .bazelrc
│   │   ├── .bazelversion
│   │   ├── CMakeLists.txt
│   │   ├── WORKSPACE
│   │   ├── aead/
│   │   │   ├── BUILD.bazel
│   │   │   ├── CMakeLists.txt
│   │   │   ├── aead_cli.cc
│   │   │   ├── aead_cli_test.sh
│   │   │   └── aead_test_keyset.json
│   │   ├── daead/
│   │   │   ├── BUILD.bazel
│   │   │   ├── CMakeLists.txt
│   │   │   ├── deterministic_aead_cli.cc
│   │   │   ├── deterministic_aead_cli_test.sh
│   │   │   └── deterministic_aead_test_keyset.json
│   │   ├── digital_signatures/
│   │   │   ├── BUILD.bazel
│   │   │   ├── CMakeLists.txt
│   │   │   ├── digital_signature_private_keyset.json
│   │   │   ├── digital_signature_public_keyset.json
│   │   │   ├── digital_signatures_cli.cc
│   │   │   └── digital_signatures_cli_test.sh
│   │   ├── hybrid_encryption/
│   │   │   ├── BUILD.bazel
│   │   │   ├── CMakeLists.txt
│   │   │   ├── hybrid_cli.cc
│   │   │   ├── hybrid_cli_test.sh
│   │   │   └── testdata/
│   │   │       ├── BUILD.bazel
│   │   │       ├── hpke_test_private_keyset.json
│   │   │       ├── hpke_test_public_keyset.json
│   │   │       ├── hybrid_test_private_keyset.json
│   │   │       └── hybrid_test_public_keyset.json
│   │   ├── jwt/
│   │   │   ├── BUILD.bazel
│   │   │   ├── CMakeLists.txt
│   │   │   ├── jwt_generate_public_jwk_set.cc
│   │   │   ├── jwt_sign.cc
│   │   │   ├── jwt_signature_cli_test.sh
│   │   │   ├── jwt_signature_private_keyset.json
│   │   │   ├── jwt_signature_public_keyset.json
│   │   │   └── jwt_verify.cc
│   │   ├── key_derivation/
│   │   │   ├── BUILD.bazel
│   │   │   ├── CMakeLists.txt
│   │   │   ├── key_derivation_cli.cc
│   │   │   ├── key_derivation_cli_test.sh
│   │   │   └── keyset.json
│   │   ├── mac/
│   │   │   ├── BUILD.bazel
│   │   │   ├── CMakeLists.txt
│   │   │   ├── mac_cli.cc
│   │   │   ├── mac_cli_test.sh
│   │   │   └── mac_test_keyset.json
│   │   ├── util/
│   │   │   ├── BUILD.bazel
│   │   │   ├── CMakeLists.txt
│   │   │   ├── util.cc
│   │   │   └── util.h
│   │   └── walkthrough/
│   │       ├── BUILD.bazel
│   │       ├── CMakeLists.txt
│   │       ├── create_keyset.cc
│   │       ├── create_keyset.h
│   │       ├── create_keyset_test.cc
│   │       ├── load_cleartext_keyset.cc
│   │       ├── load_cleartext_keyset.h
│   │       ├── load_cleartext_keyset_test.cc
│   │       ├── load_encrypted_keyset.cc
│   │       ├── load_encrypted_keyset.h
│   │       ├── load_encrypted_keyset_test.cc
│   │       ├── obtain_and_use_a_primitive.cc
│   │       ├── obtain_and_use_a_primitive.h
│   │       ├── obtain_and_use_a_primitive_test.cc
│   │       ├── test_util.cc
│   │       ├── test_util.h
│   │       ├── write_cleartext_keyset.cc
│   │       ├── write_cleartext_keyset.h
│   │       ├── write_cleartext_keyset_test.cc
│   │       ├── write_keyset.cc
│   │       ├── write_keyset.h
│   │       └── write_keyset_test.cc
│   ├── experimental/
│   │   └── pqcrypto/
│   │       ├── README.md
│   │       ├── kem/
│   │       │   ├── BUILD.bazel
│   │       │   ├── cecpq2_aead_hkdf_dem_helper.cc
│   │       │   ├── cecpq2_aead_hkdf_dem_helper.h
│   │       │   ├── cecpq2_aead_hkdf_dem_helper_test.cc
│   │       │   ├── cecpq2_aead_hkdf_private_key_manager.cc
│   │       │   ├── cecpq2_aead_hkdf_private_key_manager.h
│   │       │   ├── cecpq2_aead_hkdf_private_key_manager_test.cc
│   │       │   ├── cecpq2_aead_hkdf_public_key_manager.cc
│   │       │   ├── cecpq2_aead_hkdf_public_key_manager.h
│   │       │   ├── cecpq2_aead_hkdf_public_key_manager_test.cc
│   │       │   ├── cecpq2_hybrid_config.cc
│   │       │   ├── cecpq2_hybrid_config.h
│   │       │   ├── cecpq2_hybrid_config_test.cc
│   │       │   ├── cecpq2_hybrid_key_templates.cc
│   │       │   ├── cecpq2_hybrid_key_templates.h
│   │       │   ├── cecpq2_hybrid_key_templates_test.cc
│   │       │   ├── subtle/
│   │       │   │   ├── BUILD.bazel
│   │       │   │   ├── cecpq2_aead_hkdf_hybrid_decrypt.cc
│   │       │   │   ├── cecpq2_aead_hkdf_hybrid_decrypt.h
│   │       │   │   ├── cecpq2_aead_hkdf_hybrid_decrypt_test.cc
│   │       │   │   ├── cecpq2_aead_hkdf_hybrid_encrypt.cc
│   │       │   │   ├── cecpq2_aead_hkdf_hybrid_encrypt.h
│   │       │   │   ├── cecpq2_aead_hkdf_hybrid_encrypt_test.cc
│   │       │   │   ├── cecpq2_hkdf_recipient_kem_boringssl.cc
│   │       │   │   ├── cecpq2_hkdf_recipient_kem_boringssl.h
│   │       │   │   ├── cecpq2_hkdf_recipient_kem_boringssl_test.cc
│   │       │   │   ├── cecpq2_hkdf_sender_kem_boringssl.cc
│   │       │   │   ├── cecpq2_hkdf_sender_kem_boringssl.h
│   │       │   │   ├── cecpq2_hkdf_sender_kem_boringssl_test.cc
│   │       │   │   ├── cecpq2_subtle_boringssl_util.cc
│   │       │   │   ├── cecpq2_subtle_boringssl_util.h
│   │       │   │   └── cecpq2_subtle_boringssl_util_test.cc
│   │       │   └── util/
│   │       │       ├── BUILD.bazel
│   │       │       ├── test_util.cc
│   │       │       ├── test_util.h
│   │       │       └── test_util_test.cc
│   │       ├── proto/
│   │       │   └── BUILD.bazel
│   │       └── signature/
│   │           ├── dilithium_key_template.cc
│   │           ├── dilithium_key_template.h
│   │           ├── dilithium_key_template_test.cc
│   │           ├── dilithium_sign_key_manager.cc
│   │           ├── dilithium_sign_key_manager.h
│   │           ├── dilithium_sign_key_manager_test.cc
│   │           ├── dilithium_verify_key_manager.cc
│   │           ├── dilithium_verify_key_manager.h
│   │           ├── dilithium_verify_key_manager_test.cc
│   │           ├── falcon_key_template.cc
│   │           ├── falcon_key_template.h
│   │           ├── falcon_key_template_test.cc
│   │           ├── falcon_sign_key_manager.cc
│   │           ├── falcon_sign_key_manager.h
│   │           ├── falcon_sign_key_manager_test.cc
│   │           ├── falcon_verify_key_manager.cc
│   │           ├── falcon_verify_key_manager.h
│   │           ├── falcon_verify_key_manager_test.cc
│   │           ├── signature_config.cc
│   │           ├── signature_config.h
│   │           ├── signature_config_test.cc
│   │           ├── signature_config_util_test.cc
│   │           ├── slh_dsa_parameters.cc
│   │           ├── slh_dsa_parameters.h
│   │           ├── slh_dsa_parameters_test.cc
│   │           ├── slh_dsa_private_key.cc
│   │           ├── slh_dsa_private_key.h
│   │           ├── slh_dsa_private_key_test.cc
│   │           ├── slh_dsa_proto_serialization.cc
│   │           ├── slh_dsa_proto_serialization.h
│   │           ├── slh_dsa_proto_serialization_test.cc
│   │           ├── slh_dsa_public_key.cc
│   │           ├── slh_dsa_public_key.h
│   │           ├── slh_dsa_public_key_test.cc
│   │           ├── sphincs_key_template.cc
│   │           ├── sphincs_key_template.h
│   │           ├── sphincs_key_template_test.cc
│   │           ├── sphincs_sign_key_manager.cc
│   │           ├── sphincs_sign_key_manager.h
│   │           ├── sphincs_sign_key_manager_test.cc
│   │           ├── sphincs_verify_key_manager.cc
│   │           ├── sphincs_verify_key_manager.h
│   │           ├── sphincs_verify_key_manager_test.cc
│   │           ├── subtle/
│   │           │   ├── dilithium_avx2_sign.cc
│   │           │   ├── dilithium_avx2_sign.h
│   │           │   ├── dilithium_avx2_sign_test.cc
│   │           │   ├── dilithium_avx2_verify.cc
│   │           │   ├── dilithium_avx2_verify.h
│   │           │   ├── dilithium_avx2_verify_test.cc
│   │           │   ├── dilithium_key.cc
│   │           │   ├── dilithium_key.h
│   │           │   ├── dilithium_key_test.cc
│   │           │   ├── falcon_sign.cc
│   │           │   ├── falcon_sign.h
│   │           │   ├── falcon_sign_test.cc
│   │           │   ├── falcon_subtle_utils.cc
│   │           │   ├── falcon_subtle_utils.h
│   │           │   ├── falcon_subtle_utils_test.cc
│   │           │   ├── falcon_verify.cc
│   │           │   ├── falcon_verify.h
│   │           │   ├── falcon_verify_test.cc
│   │           │   ├── sphincs_helper_pqclean.cc
│   │           │   ├── sphincs_helper_pqclean.h
│   │           │   ├── sphincs_sign.cc
│   │           │   ├── sphincs_sign.h
│   │           │   ├── sphincs_sign_test.cc
│   │           │   ├── sphincs_subtle_utils.cc
│   │           │   ├── sphincs_subtle_utils.h
│   │           │   ├── sphincs_subtle_utils_test.cc
│   │           │   ├── sphincs_verify.cc
│   │           │   ├── sphincs_verify.h
│   │           │   └── sphincs_verify_test.cc
│   │           └── util/
│   │               ├── enums.cc
│   │               ├── enums.h
│   │               └── enums_test.cc
│   ├── exported_symbols.lds
│   ├── hybrid/
│   │   ├── BUILD.bazel
│   │   ├── CMakeLists.txt
│   │   ├── config_v0.cc
│   │   ├── config_v0.h
│   │   ├── config_v0_test.cc
│   │   ├── ecies_aead_hkdf_dem_helper.cc
│   │   ├── ecies_aead_hkdf_dem_helper.h
│   │   ├── ecies_aead_hkdf_dem_helper_test.cc
│   │   ├── ecies_aead_hkdf_hybrid_decrypt.cc
│   │   ├── ecies_aead_hkdf_hybrid_decrypt.h
│   │   ├── ecies_aead_hkdf_hybrid_decrypt_test.cc
│   │   ├── ecies_aead_hkdf_hybrid_encrypt.cc
│   │   ├── ecies_aead_hkdf_hybrid_encrypt.h
│   │   ├── ecies_aead_hkdf_hybrid_encrypt_test.cc
│   │   ├── ecies_aead_hkdf_private_key_manager.cc
│   │   ├── ecies_aead_hkdf_private_key_manager.h
│   │   ├── ecies_aead_hkdf_private_key_manager_test.cc
│   │   ├── ecies_aead_hkdf_public_key_manager.cc
│   │   ├── ecies_aead_hkdf_public_key_manager.h
│   │   ├── ecies_aead_hkdf_public_key_manager_test.cc
│   │   ├── ecies_parameters.cc
│   │   ├── ecies_parameters.h
│   │   ├── ecies_parameters_test.cc
│   │   ├── ecies_private_key.cc
│   │   ├── ecies_private_key.h
│   │   ├── ecies_private_key_test.cc
│   │   ├── ecies_proto_serialization.cc
│   │   ├── ecies_proto_serialization.h
│   │   ├── ecies_proto_serialization_test.cc
│   │   ├── ecies_public_key.cc
│   │   ├── ecies_public_key.h
│   │   ├── ecies_public_key_test.cc
│   │   ├── failing_hybrid.cc
│   │   ├── failing_hybrid.h
│   │   ├── failing_hybrid_test.cc
│   │   ├── hpke_config.cc
│   │   ├── hpke_config.h
│   │   ├── hpke_config_test.cc
│   │   ├── hpke_parameters.cc
│   │   ├── hpke_parameters.h
│   │   ├── hpke_parameters_test.cc
│   │   ├── hpke_private_key.cc
│   │   ├── hpke_private_key.h
│   │   ├── hpke_private_key_test.cc
│   │   ├── hpke_proto_serialization.cc
│   │   ├── hpke_proto_serialization.h
│   │   ├── hpke_proto_serialization_test.cc
│   │   ├── hpke_public_key.cc
│   │   ├── hpke_public_key.h
│   │   ├── hpke_public_key_test.cc
│   │   ├── hybrid_config.cc
│   │   ├── hybrid_config.h
│   │   ├── hybrid_config_test.cc
│   │   ├── hybrid_decrypt_factory.cc
│   │   ├── hybrid_decrypt_factory.h
│   │   ├── hybrid_decrypt_factory_test.cc
│   │   ├── hybrid_decrypt_wrapper.cc
│   │   ├── hybrid_decrypt_wrapper.h
│   │   ├── hybrid_decrypt_wrapper_test.cc
│   │   ├── hybrid_encrypt_factory.cc
│   │   ├── hybrid_encrypt_factory.h
│   │   ├── hybrid_encrypt_factory_test.cc
│   │   ├── hybrid_encrypt_wrapper.cc
│   │   ├── hybrid_encrypt_wrapper.h
│   │   ├── hybrid_encrypt_wrapper_test.cc
│   │   ├── hybrid_key_templates.cc
│   │   ├── hybrid_key_templates.h
│   │   ├── hybrid_key_templates_test.cc
│   │   ├── hybrid_parameters.h
│   │   ├── hybrid_private_key.h
│   │   ├── hybrid_public_key.h
│   │   ├── internal/
│   │   │   ├── BUILD.bazel
│   │   │   ├── CMakeLists.txt
│   │   │   ├── config_v0.cc
│   │   │   ├── config_v0.h
│   │   │   ├── config_v0_test.cc
│   │   │   ├── hpke_context.cc
│   │   │   ├── hpke_context.h
│   │   │   ├── hpke_context_boringssl.cc
│   │   │   ├── hpke_context_boringssl.h
│   │   │   ├── hpke_context_boringssl_test.cc
│   │   │   ├── hpke_context_test.cc
│   │   │   ├── hpke_decrypt.cc
│   │   │   ├── hpke_decrypt.h
│   │   │   ├── hpke_decrypt_boringssl.cc
│   │   │   ├── hpke_decrypt_boringssl.h
│   │   │   ├── hpke_decrypt_boringssl_test.cc
│   │   │   ├── hpke_decrypt_test.cc
│   │   │   ├── hpke_encrypt.cc
│   │   │   ├── hpke_encrypt.h
│   │   │   ├── hpke_encrypt_boringssl.cc
│   │   │   ├── hpke_encrypt_boringssl.h
│   │   │   ├── hpke_encrypt_boringssl_test.cc
│   │   │   ├── hpke_encrypt_test.cc
│   │   │   ├── hpke_key_boringssl.cc
│   │   │   ├── hpke_key_boringssl.h
│   │   │   ├── hpke_key_boringssl_test.cc
│   │   │   ├── hpke_key_manager_util.cc
│   │   │   ├── hpke_key_manager_util.h
│   │   │   ├── hpke_key_manager_util_test.cc
│   │   │   ├── hpke_private_key_manager.cc
│   │   │   ├── hpke_private_key_manager.h
│   │   │   ├── hpke_private_key_manager_test.cc
│   │   │   ├── hpke_public_key_manager.cc
│   │   │   ├── hpke_public_key_manager.h
│   │   │   ├── hpke_public_key_manager_test.cc
│   │   │   ├── hpke_test_util.cc
│   │   │   ├── hpke_test_util.h
│   │   │   ├── hpke_util.cc
│   │   │   ├── hpke_util.h
│   │   │   ├── hpke_util_boringssl.cc
│   │   │   ├── hpke_util_boringssl.h
│   │   │   ├── hpke_util_boringssl_test.cc
│   │   │   ├── hpke_util_test.cc
│   │   │   ├── key_gen_config_v0.cc
│   │   │   ├── key_gen_config_v0.h
│   │   │   ├── test_hpke_context_boringssl.cc
│   │   │   └── test_hpke_context_boringssl.h
│   │   ├── key_gen_config_v0.cc
│   │   ├── key_gen_config_v0.h
│   │   └── subtle/
│   │       ├── BUILD.bazel
│   │       └── CMakeLists.txt
│   ├── hybrid_config.h
│   ├── hybrid_decrypt.h
│   ├── hybrid_decrypt_factory.h
│   ├── hybrid_encrypt.h
│   ├── hybrid_encrypt_factory.h
│   ├── hybrid_key_templates.h
│   ├── input_stream.h
│   ├── insecure_secret_key_access.h
│   ├── integration/
│   │   ├── awskms/
│   │   │   ├── .bazelrc
│   │   │   ├── .bazelversion
│   │   │   ├── BUILD.bazel
│   │   │   ├── WORKSPACE
│   │   │   ├── aws_kms_aead.cc
│   │   │   ├── aws_kms_aead.h
│   │   │   ├── aws_kms_aead_integration_test.cc
│   │   │   ├── aws_kms_client.cc
│   │   │   ├── aws_kms_client.h
│   │   │   ├── aws_kms_client_test.cc
│   │   │   ├── internal/
│   │   │   │   ├── BUILD.bazel
│   │   │   │   ├── test_file_util.h
│   │   │   │   └── test_file_util_bazel.cc
│   │   │   ├── template_rule.bzl
│   │   │   ├── testdata/
│   │   │   │   └── aws/
│   │   │   │       ├── BUILD.bazel
│   │   │   │       ├── README.md
│   │   │   │       ├── access_keys_bad.csv
│   │   │   │       ├── credentials.cred
│   │   │   │       ├── credentials.csv
│   │   │   │       ├── credentials.ini
│   │   │   │       ├── credentials_bad.csv
│   │   │   │       ├── credentials_bad.ini
│   │   │   │       ├── key_arn.txt
│   │   │   │       └── key_arn_bad.txt
│   │   │   ├── third_party/
│   │   │   │   ├── aws_c_common.BUILD.bazel
│   │   │   │   ├── aws_c_event_stream.BUILD.bazel
│   │   │   │   ├── aws_checksums.BUILD.bazel
│   │   │   │   ├── aws_sdk_cpp.BUILD.bazel
│   │   │   │   ├── curl.BUILD.bazel
│   │   │   │   └── zlib.BUILD.bazel
│   │   │   └── tink_cc_awskms_deps.bzl
│   │   └── gcpkms/
│   │       ├── .bazelrc
│   │       ├── .bazelversion
│   │       ├── BUILD.bazel
│   │       ├── WORKSPACE
│   │       ├── gcp_kms_aead.cc
│   │       ├── gcp_kms_aead.h
│   │       ├── gcp_kms_aead_integration_test.cc
│   │       ├── gcp_kms_aead_test.cc
│   │       ├── gcp_kms_client.cc
│   │       ├── gcp_kms_client.h
│   │       ├── gcp_kms_client_test.cc
│   │       ├── gcp_kms_public_key_sign.cc
│   │       ├── gcp_kms_public_key_sign.h
│   │       ├── gcp_kms_public_key_sign_test.cc
│   │       ├── testdata/
│   │       │   └── gcp/
│   │       │       ├── BUILD.bazel
│   │       │       ├── README.md
│   │       │       ├── credential.json
│   │       │       ├── credential_bad.json
│   │       │       ├── key_name.txt
│   │       │       └── key_name_bad.txt
│   │       ├── tink_cc_gcpkms_deps.bzl
│   │       └── tink_cc_gcpkms_deps_init.bzl
│   ├── internal/
│   │   ├── BUILD.bazel
│   │   ├── CMakeLists.txt
│   │   ├── aes_util.cc
│   │   ├── aes_util.h
│   │   ├── aes_util_test.cc
│   │   ├── bn_encoding_util.cc
│   │   ├── bn_encoding_util.h
│   │   ├── bn_encoding_util_test.cc
│   │   ├── bn_util.cc
│   │   ├── bn_util.h
│   │   ├── bn_util_test.cc
│   │   ├── call_with_core_dump_protection.h
│   │   ├── call_with_core_dump_protection_test.cc
│   │   ├── configuration_impl.h
│   │   ├── configuration_impl_test.cc
│   │   ├── ec_util.cc
│   │   ├── ec_util.h
│   │   ├── ec_util_test.cc
│   │   ├── err_util.cc
│   │   ├── err_util.h
│   │   ├── err_util_test.cc
│   │   ├── fips_utils.cc
│   │   ├── fips_utils.h
│   │   ├── fips_utils_test.cc
│   │   ├── key_gen_configuration_impl.h
│   │   ├── key_gen_configuration_impl_test.cc
│   │   ├── key_info.cc
│   │   ├── key_info.h
│   │   ├── key_info_test.cc
│   │   ├── key_parser.h
│   │   ├── key_parser_test.cc
│   │   ├── key_serializer.h
│   │   ├── key_serializer_test.cc
│   │   ├── key_status_util.cc
│   │   ├── key_status_util.h
│   │   ├── key_status_util_test.cc
│   │   ├── key_type_info_store.cc
│   │   ├── key_type_info_store.h
│   │   ├── key_type_info_store_test.cc
│   │   ├── keyset_handle_builder_entry.cc
│   │   ├── keyset_handle_builder_entry.h
│   │   ├── keyset_handle_builder_entry_test.cc
│   │   ├── keyset_wrapper.h
│   │   ├── keyset_wrapper_impl.h
│   │   ├── keyset_wrapper_impl_test.cc
│   │   ├── keyset_wrapper_store.h
│   │   ├── keyset_wrapper_store_test.cc
│   │   ├── legacy_proto_key.cc
│   │   ├── legacy_proto_key.h
│   │   ├── legacy_proto_key_test.cc
│   │   ├── legacy_proto_parameters.cc
│   │   ├── legacy_proto_parameters.h
│   │   ├── legacy_proto_parameters_test.cc
│   │   ├── md_util.cc
│   │   ├── md_util.h
│   │   ├── md_util_test.cc
│   │   ├── monitoring_util.h
│   │   ├── monitoring_util_test.cc
│   │   ├── mutable_serialization_registry.cc
│   │   ├── mutable_serialization_registry.h
│   │   ├── mutable_serialization_registry_test.cc
│   │   ├── parameters_parser.h
│   │   ├── parameters_parser_test.cc
│   │   ├── parameters_serializer.h
│   │   ├── parameters_serializer_test.cc
│   │   ├── parser_index.h
│   │   ├── parser_index_test.cc
│   │   ├── proto_key_serialization.cc
│   │   ├── proto_key_serialization.h
│   │   ├── proto_key_serialization_test.cc
│   │   ├── proto_parameters_serialization.cc
│   │   ├── proto_parameters_serialization.h
│   │   ├── proto_parameters_serialization_test.cc
│   │   ├── registry_impl.cc
│   │   ├── registry_impl.h
│   │   ├── registry_impl_test.cc
│   │   ├── rsa_util.cc
│   │   ├── rsa_util.h
│   │   ├── rsa_util_test.cc
│   │   ├── safe_stringops.h
│   │   ├── safe_stringops_test.cc
│   │   ├── serialization.h
│   │   ├── serialization_registry.cc
│   │   ├── serialization_registry.h
│   │   ├── serialization_registry_test.cc
│   │   ├── serialization_test_util.h
│   │   ├── serialization_test_util_test.cc
│   │   ├── serializer_index.h
│   │   ├── serializer_index_test.cc
│   │   ├── ssl_unique_ptr.h
│   │   ├── ssl_util.h
│   │   ├── test_file_util.cc
│   │   ├── test_file_util.h
│   │   ├── test_file_util_bazel.cc
│   │   ├── test_file_util_cmake.cc
│   │   ├── test_random_access_stream.cc
│   │   ├── test_random_access_stream.h
│   │   ├── test_random_access_stream_test.cc
│   │   ├── util.cc
│   │   ├── util.h
│   │   └── util_test.cc
│   ├── json_keyset_reader.h
│   ├── json_keyset_writer.h
│   ├── jwt/
│   │   ├── BUILD.bazel
│   │   ├── CMakeLists.txt
│   │   ├── internal/
│   │   │   ├── BUILD.bazel
│   │   │   ├── CMakeLists.txt
│   │   │   ├── json_util.cc
│   │   │   ├── json_util.h
│   │   │   ├── json_util_test.cc
│   │   │   ├── jwt_ecdsa_sign_key_manager.cc
│   │   │   ├── jwt_ecdsa_sign_key_manager.h
│   │   │   ├── jwt_ecdsa_sign_verify_key_manager_test.cc
│   │   │   ├── jwt_ecdsa_verify_key_manager.cc
│   │   │   ├── jwt_ecdsa_verify_key_manager.h
│   │   │   ├── jwt_format.cc
│   │   │   ├── jwt_format.h
│   │   │   ├── jwt_format_test.cc
│   │   │   ├── jwt_hmac_key_manager.cc
│   │   │   ├── jwt_hmac_key_manager.h
│   │   │   ├── jwt_hmac_key_manager_test.cc
│   │   │   ├── jwt_mac_impl.cc
│   │   │   ├── jwt_mac_impl.h
│   │   │   ├── jwt_mac_impl_test.cc
│   │   │   ├── jwt_mac_internal.h
│   │   │   ├── jwt_mac_wrapper.cc
│   │   │   ├── jwt_mac_wrapper.h
│   │   │   ├── jwt_mac_wrapper_test.cc
│   │   │   ├── jwt_public_key_sign_impl.cc
│   │   │   ├── jwt_public_key_sign_impl.h
│   │   │   ├── jwt_public_key_sign_internal.h
│   │   │   ├── jwt_public_key_sign_verify_impl_test.cc
│   │   │   ├── jwt_public_key_sign_wrapper.cc
│   │   │   ├── jwt_public_key_sign_wrapper.h
│   │   │   ├── jwt_public_key_verify_impl.cc
│   │   │   ├── jwt_public_key_verify_impl.h
│   │   │   ├── jwt_public_key_verify_internal.h
│   │   │   ├── jwt_public_key_verify_wrapper.cc
│   │   │   ├── jwt_public_key_verify_wrapper.h
│   │   │   ├── jwt_public_key_wrappers_test.cc
│   │   │   ├── jwt_rsa_ssa_pkcs1_sign_key_manager.cc
│   │   │   ├── jwt_rsa_ssa_pkcs1_sign_key_manager.h
│   │   │   ├── jwt_rsa_ssa_pkcs1_sign_verify_key_manager_test.cc
│   │   │   ├── jwt_rsa_ssa_pkcs1_verify_key_manager.cc
│   │   │   ├── jwt_rsa_ssa_pkcs1_verify_key_manager.h
│   │   │   ├── jwt_rsa_ssa_pss_sign_key_manager.cc
│   │   │   ├── jwt_rsa_ssa_pss_sign_key_manager.h
│   │   │   ├── jwt_rsa_ssa_pss_sign_verify_key_manager_test.cc
│   │   │   ├── jwt_rsa_ssa_pss_verify_key_manager.cc
│   │   │   ├── jwt_rsa_ssa_pss_verify_key_manager.h
│   │   │   ├── raw_jwt_ecdsa_sign_key_manager.cc
│   │   │   ├── raw_jwt_ecdsa_sign_key_manager.h
│   │   │   ├── raw_jwt_ecdsa_sign_key_manager_test.cc
│   │   │   ├── raw_jwt_ecdsa_verify_key_manager.cc
│   │   │   ├── raw_jwt_ecdsa_verify_key_manager.h
│   │   │   ├── raw_jwt_ecdsa_verify_key_manager_test.cc
│   │   │   ├── raw_jwt_hmac_key_manager.cc
│   │   │   ├── raw_jwt_hmac_key_manager.h
│   │   │   ├── raw_jwt_hmac_key_manager_test.cc
│   │   │   ├── raw_jwt_rsa_ssa_pkcs1_sign_key_manager.cc
│   │   │   ├── raw_jwt_rsa_ssa_pkcs1_sign_key_manager.h
│   │   │   ├── raw_jwt_rsa_ssa_pkcs1_sign_key_manager_test.cc
│   │   │   ├── raw_jwt_rsa_ssa_pkcs1_verify_key_manager.cc
│   │   │   ├── raw_jwt_rsa_ssa_pkcs1_verify_key_manager.h
│   │   │   ├── raw_jwt_rsa_ssa_pkcs1_verify_key_manager_test.cc
│   │   │   ├── raw_jwt_rsa_ssa_pss_sign_key_manager.cc
│   │   │   ├── raw_jwt_rsa_ssa_pss_sign_key_manager.h
│   │   │   ├── raw_jwt_rsa_ssa_pss_sign_key_manager_test.cc
│   │   │   ├── raw_jwt_rsa_ssa_pss_verify_key_manager.cc
│   │   │   ├── raw_jwt_rsa_ssa_pss_verify_key_manager.h
│   │   │   └── raw_jwt_rsa_ssa_pss_verify_key_manager_test.cc
│   │   ├── jwk_set_converter.cc
│   │   ├── jwk_set_converter.h
│   │   ├── jwk_set_converter_test.cc
│   │   ├── jwt_hmac_key.cc
│   │   ├── jwt_hmac_key.h
│   │   ├── jwt_hmac_key_test.cc
│   │   ├── jwt_hmac_parameters.cc
│   │   ├── jwt_hmac_parameters.h
│   │   ├── jwt_hmac_parameters_test.cc
│   │   ├── jwt_hmac_proto_serialization.cc
│   │   ├── jwt_hmac_proto_serialization.h
│   │   ├── jwt_hmac_proto_serialization_test.cc
│   │   ├── jwt_key_templates.cc
│   │   ├── jwt_key_templates.h
│   │   ├── jwt_key_templates_test.cc
│   │   ├── jwt_mac.h
│   │   ├── jwt_mac_config.cc
│   │   ├── jwt_mac_config.h
│   │   ├── jwt_mac_config_test.cc
│   │   ├── jwt_mac_key.h
│   │   ├── jwt_mac_parameters.h
│   │   ├── jwt_public_key_sign.h
│   │   ├── jwt_public_key_verify.h
│   │   ├── jwt_signature_config.cc
│   │   ├── jwt_signature_config.h
│   │   ├── jwt_signature_config_test.cc
│   │   ├── jwt_signature_parameters.h
│   │   ├── jwt_signature_private_key.h
│   │   ├── jwt_signature_public_key.h
│   │   ├── jwt_validator.cc
│   │   ├── jwt_validator.h
│   │   ├── jwt_validator_test.cc
│   │   ├── raw_jwt.cc
│   │   ├── raw_jwt.h
│   │   ├── raw_jwt_test.cc
│   │   ├── verified_jwt.cc
│   │   ├── verified_jwt.h
│   │   └── verified_jwt_test.cc
│   ├── kem/
│   │   └── internal/
│   │       ├── BUILD.bazel
│   │       ├── CMakeLists.txt
│   │       ├── raw_kem_decapsulate.h
│   │       └── raw_kem_encapsulate.h
│   ├── key.h
│   ├── key_access.h
│   ├── key_gen_configuration.h
│   ├── key_manager.h
│   ├── key_status.h
│   ├── keyderivation/
│   │   ├── BUILD.bazel
│   │   ├── CMakeLists.txt
│   │   ├── internal/
│   │   │   ├── BUILD.bazel
│   │   │   ├── CMakeLists.txt
│   │   │   ├── config_prf_for_deriver.h
│   │   │   ├── config_prf_for_deriver_test.cc
│   │   │   ├── key_derivers.cc
│   │   │   ├── key_derivers.h
│   │   │   ├── key_derivers_test.cc
│   │   │   ├── prf_based_deriver.cc
│   │   │   ├── prf_based_deriver.h
│   │   │   ├── prf_based_deriver_key_manager.h
│   │   │   ├── prf_based_deriver_key_manager_test.cc
│   │   │   └── prf_based_deriver_test.cc
│   │   ├── key_derivation_config.cc
│   │   ├── key_derivation_config.h
│   │   ├── key_derivation_config_test.cc
│   │   ├── key_derivation_key_templates.cc
│   │   ├── key_derivation_key_templates.h
│   │   ├── key_derivation_key_templates_test.cc
│   │   ├── keyset_deriver.h
│   │   ├── keyset_deriver_test.cc
│   │   ├── keyset_deriver_wrapper.cc
│   │   ├── keyset_deriver_wrapper.h
│   │   ├── keyset_deriver_wrapper_test.cc
│   │   └── subtle/
│   │       ├── BUILD.bazel
│   │       └── CMakeLists.txt
│   ├── keyset_handle.h
│   ├── keyset_handle_builder.h
│   ├── keyset_manager.h
│   ├── keyset_reader.h
│   ├── keyset_writer.h
│   ├── kms_client.h
│   ├── kms_clients.h
│   ├── mac/
│   │   ├── BUILD.bazel
│   │   ├── CMakeLists.txt
│   │   ├── aes_cmac_key.cc
│   │   ├── aes_cmac_key.h
│   │   ├── aes_cmac_key_manager.h
│   │   ├── aes_cmac_key_manager_test.cc
│   │   ├── aes_cmac_key_test.cc
│   │   ├── aes_cmac_parameters.cc
│   │   ├── aes_cmac_parameters.h
│   │   ├── aes_cmac_parameters_test.cc
│   │   ├── aes_cmac_proto_serialization.cc
│   │   ├── aes_cmac_proto_serialization.h
│   │   ├── aes_cmac_proto_serialization_test.cc
│   │   ├── config_v0.cc
│   │   ├── config_v0.h
│   │   ├── config_v0_test.cc
│   │   ├── failing_mac.cc
│   │   ├── failing_mac.h
│   │   ├── failing_mac_test.cc
│   │   ├── hmac_key.cc
│   │   ├── hmac_key.h
│   │   ├── hmac_key_manager.cc
│   │   ├── hmac_key_manager.h
│   │   ├── hmac_key_manager_test.cc
│   │   ├── hmac_key_test.cc
│   │   ├── hmac_parameters.cc
│   │   ├── hmac_parameters.h
│   │   ├── hmac_parameters_test.cc
│   │   ├── hmac_proto_serialization.cc
│   │   ├── hmac_proto_serialization.h
│   │   ├── hmac_proto_serialization_test.cc
│   │   ├── internal/
│   │   │   ├── BUILD.bazel
│   │   │   ├── CMakeLists.txt
│   │   │   ├── chunked_mac_impl.cc
│   │   │   ├── chunked_mac_impl.h
│   │   │   ├── chunked_mac_impl_test.cc
│   │   │   ├── chunked_mac_test.cc
│   │   │   ├── chunked_mac_wrapper.cc
│   │   │   ├── chunked_mac_wrapper.h
│   │   │   ├── chunked_mac_wrapper_test.cc
│   │   │   ├── config_v0.cc
│   │   │   ├── config_v0.h
│   │   │   ├── config_v0_test.cc
│   │   │   ├── key_gen_config_v0.cc
│   │   │   └── key_gen_config_v0.h
│   │   ├── key_gen_config_v0.cc
│   │   ├── key_gen_config_v0.h
│   │   ├── mac_config.cc
│   │   ├── mac_config.h
│   │   ├── mac_config_test.cc
│   │   ├── mac_factory.cc
│   │   ├── mac_factory.h
│   │   ├── mac_factory_test.cc
│   │   ├── mac_key.h
│   │   ├── mac_key_templates.cc
│   │   ├── mac_key_templates.h
│   │   ├── mac_key_templates_test.cc
│   │   ├── mac_parameters.h
│   │   ├── mac_wrapper.cc
│   │   ├── mac_wrapper.h
│   │   ├── mac_wrapper_test.cc
│   │   └── subtle/
│   │       ├── BUILD.bazel
│   │       └── CMakeLists.txt
│   ├── mac.h
│   ├── mac_config.h
│   ├── mac_factory.h
│   ├── mac_key_templates.h
│   ├── monitoring/
│   │   ├── BUILD.bazel
│   │   ├── CMakeLists.txt
│   │   ├── monitoring.h
│   │   └── monitoring_client_mocks.h
│   ├── output_stream.h
│   ├── output_stream_with_result.h
│   ├── parameters.h
│   ├── partial_key_access.h
│   ├── partial_key_access_token.h
│   ├── prf/
│   │   ├── BUILD.bazel
│   │   ├── CMakeLists.txt
│   │   ├── aes_cmac_prf_key_manager.h
│   │   ├── aes_cmac_prf_key_manager_test.cc
│   │   ├── config_v0.cc
│   │   ├── config_v0.h
│   │   ├── config_v0_test.cc
│   │   ├── failing_prfset.cc
│   │   ├── failing_prfset.h
│   │   ├── failing_prfset_test.cc
│   │   ├── hkdf_prf_key_manager.h
│   │   ├── hkdf_prf_key_manager_test.cc
│   │   ├── hmac_prf_key_manager.cc
│   │   ├── hmac_prf_key_manager.h
│   │   ├── hmac_prf_key_manager_test.cc
│   │   ├── internal/
│   │   │   ├── BUILD.bazel
│   │   │   ├── CMakeLists.txt
│   │   │   ├── config_v0.cc
│   │   │   ├── config_v0.h
│   │   │   ├── config_v0_test.cc
│   │   │   ├── key_gen_config_v0.cc
│   │   │   └── key_gen_config_v0.h
│   │   ├── key_gen_config_v0.cc
│   │   ├── key_gen_config_v0.h
│   │   ├── prf_config.cc
│   │   ├── prf_config.h
│   │   ├── prf_config_test.cc
│   │   ├── prf_key_templates.cc
│   │   ├── prf_key_templates.h
│   │   ├── prf_key_templates_test.cc
│   │   ├── prf_set.cc
│   │   ├── prf_set.h
│   │   ├── prf_set_test.cc
│   │   ├── prf_set_wrapper.cc
│   │   ├── prf_set_wrapper.h
│   │   ├── prf_set_wrapper_test.cc
│   │   └── subtle/
│   │       ├── BUILD.bazel
│   │       └── CMakeLists.txt
│   ├── primitive_set.h
│   ├── primitive_wrapper.h
│   ├── private_key.h
│   ├── proto/
│   │   ├── BUILD.bazel
│   │   ├── aes_cmac.proto
│   │   ├── aes_cmac_prf.proto
│   │   ├── aes_ctr.proto
│   │   ├── aes_ctr_hmac_aead.proto
│   │   ├── aes_ctr_hmac_streaming.proto
│   │   ├── aes_eax.proto
│   │   ├── aes_gcm.proto
│   │   ├── aes_gcm_hkdf_streaming.proto
│   │   ├── aes_gcm_siv.proto
│   │   ├── aes_siv.proto
│   │   ├── chacha20_poly1305.proto
│   │   ├── common.proto
│   │   ├── config.proto
│   │   ├── ecdsa.proto
│   │   ├── ecies_aead_hkdf.proto
│   │   ├── ed25519.proto
│   │   ├── empty.proto
│   │   ├── experimental/
│   │   │   └── pqcrypto/
│   │   │       ├── BUILD.bazel
│   │   │       ├── cecpq2_aead_hkdf.proto
│   │   │       ├── dilithium.proto
│   │   │       ├── falcon.proto
│   │   │       ├── slh_dsa.proto
│   │   │       └── sphincs.proto
│   │   ├── hkdf_prf.proto
│   │   ├── hmac.proto
│   │   ├── hmac_prf.proto
│   │   ├── hpke.proto
│   │   ├── jwt_ecdsa.proto
│   │   ├── jwt_hmac.proto
│   │   ├── jwt_rsa_ssa_pkcs1.proto
│   │   ├── jwt_rsa_ssa_pss.proto
│   │   ├── kms_aead.proto
│   │   ├── kms_envelope.proto
│   │   ├── prf_based_deriver.proto
│   │   ├── rsa_ssa_pkcs1.proto
│   │   ├── rsa_ssa_pss.proto
│   │   ├── test_proto.proto
│   │   ├── tink.proto
│   │   └── xchacha20_poly1305.proto
│   ├── proto_keyset_format.cc
│   ├── proto_keyset_format.h
│   ├── proto_keyset_format_test.cc
│   ├── public_key_sign.h
│   ├── public_key_sign_factory.h
│   ├── public_key_verify.h
│   ├── public_key_verify_factory.h
│   ├── random_access_stream.h
│   ├── registry.h
│   ├── restricted_big_integer.h
│   ├── restricted_data.h
│   ├── secret_key_access.h
│   ├── secret_key_access_token.h
│   ├── signature/
│   │   ├── BUILD.bazel
│   │   ├── CMakeLists.txt
│   │   ├── config_v0.cc
│   │   ├── config_v0.h
│   │   ├── config_v0_test.cc
│   │   ├── ecdsa_parameters.cc
│   │   ├── ecdsa_parameters.h
│   │   ├── ecdsa_parameters_test.cc
│   │   ├── ecdsa_private_key.cc
│   │   ├── ecdsa_private_key.h
│   │   ├── ecdsa_private_key_test.cc
│   │   ├── ecdsa_proto_serialization.cc
│   │   ├── ecdsa_proto_serialization.h
│   │   ├── ecdsa_proto_serialization_test.cc
│   │   ├── ecdsa_public_key.cc
│   │   ├── ecdsa_public_key.h
│   │   ├── ecdsa_public_key_test.cc
│   │   ├── ecdsa_sign_key_manager.cc
│   │   ├── ecdsa_sign_key_manager.h
│   │   ├── ecdsa_sign_key_manager_test.cc
│   │   ├── ecdsa_verify_key_manager.cc
│   │   ├── ecdsa_verify_key_manager.h
│   │   ├── ecdsa_verify_key_manager_test.cc
│   │   ├── ed25519_parameters.cc
│   │   ├── ed25519_parameters.h
│   │   ├── ed25519_parameters_test.cc
│   │   ├── ed25519_private_key.cc
│   │   ├── ed25519_private_key.h
│   │   ├── ed25519_private_key_test.cc
│   │   ├── ed25519_proto_serialization.cc
│   │   ├── ed25519_proto_serialization.h
│   │   ├── ed25519_proto_serialization_test.cc
│   │   ├── ed25519_public_key.cc
│   │   ├── ed25519_public_key.h
│   │   ├── ed25519_public_key_test.cc
│   │   ├── ed25519_sign_key_manager.cc
│   │   ├── ed25519_sign_key_manager.h
│   │   ├── ed25519_sign_key_manager_test.cc
│   │   ├── ed25519_verify_key_manager.cc
│   │   ├── ed25519_verify_key_manager.h
│   │   ├── ed25519_verify_key_manager_test.cc
│   │   ├── failing_signature.cc
│   │   ├── failing_signature.h
│   │   ├── failing_signature_test.cc
│   │   ├── internal/
│   │   │   ├── BUILD.bazel
│   │   │   ├── CMakeLists.txt
│   │   │   ├── config_fips_140_2.cc
│   │   │   ├── config_fips_140_2.h
│   │   │   ├── config_fips_140_2_test.cc
│   │   │   ├── config_v0.cc
│   │   │   ├── config_v0.h
│   │   │   ├── config_v0_test.cc
│   │   │   ├── ecdsa_raw_sign_boringssl.cc
│   │   │   ├── ecdsa_raw_sign_boringssl.h
│   │   │   ├── ecdsa_raw_sign_boringssl_test.cc
│   │   │   ├── key_gen_config_v0.cc
│   │   │   └── key_gen_config_v0.h
│   │   ├── key_gen_config_v0.cc
│   │   ├── key_gen_config_v0.h
│   │   ├── public_key_sign_factory.cc
│   │   ├── public_key_sign_factory.h
│   │   ├── public_key_sign_factory_test.cc
│   │   ├── public_key_sign_wrapper.cc
│   │   ├── public_key_sign_wrapper.h
│   │   ├── public_key_sign_wrapper_test.cc
│   │   ├── public_key_verify_factory.cc
│   │   ├── public_key_verify_factory.h
│   │   ├── public_key_verify_factory_test.cc
│   │   ├── public_key_verify_wrapper.cc
│   │   ├── public_key_verify_wrapper.h
│   │   ├── public_key_verify_wrapper_test.cc
│   │   ├── rsa_ssa_pkcs1_parameters.cc
│   │   ├── rsa_ssa_pkcs1_parameters.h
│   │   ├── rsa_ssa_pkcs1_parameters_test.cc
│   │   ├── rsa_ssa_pkcs1_private_key.cc
│   │   ├── rsa_ssa_pkcs1_private_key.h
│   │   ├── rsa_ssa_pkcs1_private_key_test.cc
│   │   ├── rsa_ssa_pkcs1_proto_serialization.cc
│   │   ├── rsa_ssa_pkcs1_proto_serialization.h
│   │   ├── rsa_ssa_pkcs1_proto_serialization_test.cc
│   │   ├── rsa_ssa_pkcs1_public_key.cc
│   │   ├── rsa_ssa_pkcs1_public_key.h
│   │   ├── rsa_ssa_pkcs1_public_key_test.cc
│   │   ├── rsa_ssa_pkcs1_sign_key_manager.cc
│   │   ├── rsa_ssa_pkcs1_sign_key_manager.h
│   │   ├── rsa_ssa_pkcs1_sign_key_manager_test.cc
│   │   ├── rsa_ssa_pkcs1_verify_key_manager.cc
│   │   ├── rsa_ssa_pkcs1_verify_key_manager.h
│   │   ├── rsa_ssa_pkcs1_verify_key_manager_test.cc
│   │   ├── rsa_ssa_pss_parameters.cc
│   │   ├── rsa_ssa_pss_parameters.h
│   │   ├── rsa_ssa_pss_parameters_test.cc
│   │   ├── rsa_ssa_pss_private_key.cc
│   │   ├── rsa_ssa_pss_private_key.h
│   │   ├── rsa_ssa_pss_private_key_test.cc
│   │   ├── rsa_ssa_pss_proto_serialization.cc
│   │   ├── rsa_ssa_pss_proto_serialization.h
│   │   ├── rsa_ssa_pss_proto_serialization_test.cc
│   │   ├── rsa_ssa_pss_public_key.cc
│   │   ├── rsa_ssa_pss_public_key.h
│   │   ├── rsa_ssa_pss_public_key_test.cc
│   │   ├── rsa_ssa_pss_sign_key_manager.cc
│   │   ├── rsa_ssa_pss_sign_key_manager.h
│   │   ├── rsa_ssa_pss_sign_key_manager_test.cc
│   │   ├── rsa_ssa_pss_verify_key_manager.cc
│   │   ├── rsa_ssa_pss_verify_key_manager.h
│   │   ├── rsa_ssa_pss_verify_key_manager_test.cc
│   │   ├── sig_util.cc
│   │   ├── sig_util.h
│   │   ├── signature_config.cc
│   │   ├── signature_config.h
│   │   ├── signature_config_test.cc
│   │   ├── signature_key_templates.cc
│   │   ├── signature_key_templates.h
│   │   ├── signature_key_templates_test.cc
│   │   ├── signature_parameters.h
│   │   ├── signature_pem_keyset_reader.cc
│   │   ├── signature_pem_keyset_reader.h
│   │   ├── signature_pem_keyset_reader_test.cc
│   │   ├── signature_private_key.h
│   │   ├── signature_public_key.h
│   │   └── subtle/
│   │       ├── BUILD.bazel
│   │       └── CMakeLists.txt
│   ├── signature_config.h
│   ├── signature_key_templates.h
│   ├── streaming_aead.h
│   ├── streaming_aead_config.h
│   ├── streaming_aead_key_templates.h
│   ├── streaming_mac.h
│   ├── streamingaead/
│   │   ├── BUILD.bazel
│   │   ├── CMakeLists.txt
│   │   ├── aes_ctr_hmac_streaming_key_manager.cc
│   │   ├── aes_ctr_hmac_streaming_key_manager.h
│   │   ├── aes_ctr_hmac_streaming_key_manager_test.cc
│   │   ├── aes_gcm_hkdf_streaming_key_manager.cc
│   │   ├── aes_gcm_hkdf_streaming_key_manager.h
│   │   ├── aes_gcm_hkdf_streaming_key_manager_test.cc
│   │   ├── buffered_input_stream.cc
│   │   ├── buffered_input_stream.h
│   │   ├── buffered_input_stream_test.cc
│   │   ├── config_v0.cc
│   │   ├── config_v0.h
│   │   ├── config_v0_test.cc
│   │   ├── decrypting_input_stream.cc
│   │   ├── decrypting_input_stream.h
│   │   ├── decrypting_input_stream_test.cc
│   │   ├── decrypting_random_access_stream.cc
│   │   ├── decrypting_random_access_stream.h
│   │   ├── decrypting_random_access_stream_test.cc
│   │   ├── internal/
│   │   │   ├── BUILD.bazel
│   │   │   ├── CMakeLists.txt
│   │   │   ├── config_v0.cc
│   │   │   ├── config_v0.h
│   │   │   ├── config_v0_test.cc
│   │   │   ├── key_gen_config_v0.cc
│   │   │   └── key_gen_config_v0.h
│   │   ├── key_gen_config_v0.cc
│   │   ├── key_gen_config_v0.h
│   │   ├── shared_input_stream.h
│   │   ├── shared_input_stream_test.cc
│   │   ├── shared_random_access_stream.h
│   │   ├── shared_random_access_stream_test.cc
│   │   ├── streaming_aead_config.cc
│   │   ├── streaming_aead_config.h
│   │   ├── streaming_aead_config_test.cc
│   │   ├── streaming_aead_key_templates.cc
│   │   ├── streaming_aead_key_templates.h
│   │   ├── streaming_aead_key_templates_test.cc
│   │   ├── streaming_aead_wrapper.cc
│   │   ├── streaming_aead_wrapper.h
│   │   ├── streaming_aead_wrapper_test.cc
│   │   └── subtle/
│   │       ├── BUILD.bazel
│   │       └── CMakeLists.txt
│   ├── subtle/
│   │   ├── BUILD.bazel
│   │   ├── CMakeLists.txt
│   │   ├── aead_test_util.cc
│   │   ├── aead_test_util.h
│   │   ├── aead_test_util_test.cc
│   │   ├── aes_cmac_boringssl.cc
│   │   ├── aes_cmac_boringssl.h
│   │   ├── aes_cmac_boringssl_test.cc
│   │   ├── aes_ctr_boringssl.cc
│   │   ├── aes_ctr_boringssl.h
│   │   ├── aes_ctr_boringssl_test.cc
│   │   ├── aes_ctr_hmac_streaming.cc
│   │   ├── aes_ctr_hmac_streaming.h
│   │   ├── aes_ctr_hmac_streaming_test.cc
│   │   ├── aes_eax_boringssl.cc
│   │   ├── aes_eax_boringssl.h
│   │   ├── aes_eax_boringssl_test.cc
│   │   ├── aes_gcm_boringssl.cc
│   │   ├── aes_gcm_boringssl.h
│   │   ├── aes_gcm_boringssl_test.cc
│   │   ├── aes_gcm_hkdf_stream_segment_decrypter.cc
│   │   ├── aes_gcm_hkdf_stream_segment_decrypter.h
│   │   ├── aes_gcm_hkdf_stream_segment_decrypter_test.cc
│   │   ├── aes_gcm_hkdf_stream_segment_encrypter.cc
│   │   ├── aes_gcm_hkdf_stream_segment_encrypter.h
│   │   ├── aes_gcm_hkdf_stream_segment_encrypter_test.cc
│   │   ├── aes_gcm_hkdf_streaming.cc
│   │   ├── aes_gcm_hkdf_streaming.h
│   │   ├── aes_gcm_hkdf_streaming_test.cc
│   │   ├── aes_gcm_siv_boringssl.cc
│   │   ├── aes_gcm_siv_boringssl.h
│   │   ├── aes_gcm_siv_boringssl_test.cc
│   │   ├── aes_siv_boringssl.cc
│   │   ├── aes_siv_boringssl.h
│   │   ├── aes_siv_boringssl_test.cc
│   │   ├── common_enums.cc
│   │   ├── common_enums.h
│   │   ├── common_enums_test.cc
│   │   ├── decrypting_random_access_stream.cc
│   │   ├── decrypting_random_access_stream.h
│   │   ├── decrypting_random_access_stream_test.cc
│   │   ├── ec_util.h
│   │   ├── ecdsa_sign_boringssl.cc
│   │   ├── ecdsa_sign_boringssl.h
│   │   ├── ecdsa_sign_boringssl_test.cc
│   │   ├── ecdsa_verify_boringssl.cc
│   │   ├── ecdsa_verify_boringssl.h
│   │   ├── ecdsa_verify_boringssl_test.cc
│   │   ├── ecies_hkdf_recipient_kem_boringssl.cc
│   │   ├── ecies_hkdf_recipient_kem_boringssl.h
│   │   ├── ecies_hkdf_recipient_kem_boringssl_test.cc
│   │   ├── ecies_hkdf_sender_kem_boringssl.cc
│   │   ├── ecies_hkdf_sender_kem_boringssl.h
│   │   ├── ecies_hkdf_sender_kem_boringssl_test.cc
│   │   ├── ed25519_sign_boringssl.cc
│   │   ├── ed25519_sign_boringssl.h
│   │   ├── ed25519_sign_boringssl_test.cc
│   │   ├── ed25519_verify_boringssl.cc
│   │   ├── ed25519_verify_boringssl.h
│   │   ├── ed25519_verify_boringssl_test.cc
│   │   ├── encrypt_then_authenticate.cc
│   │   ├── encrypt_then_authenticate.h
│   │   ├── encrypt_then_authenticate_test.cc
│   │   ├── hkdf.cc
│   │   ├── hkdf.h
│   │   ├── hkdf_test.cc
│   │   ├── hmac_boringssl.cc
│   │   ├── hmac_boringssl.h
│   │   ├── hmac_boringssl_test.cc
│   │   ├── hybrid_test_util.cc
│   │   ├── hybrid_test_util.h
│   │   ├── hybrid_test_util_test.cc
│   │   ├── ind_cpa_cipher.h
│   │   ├── mac/
│   │   │   ├── BUILD.bazel
│   │   │   ├── CMakeLists.txt
│   │   │   └── stateful_mac.h
│   │   ├── nonce_based_streaming_aead.cc
│   │   ├── nonce_based_streaming_aead.h
│   │   ├── pem_parser_boringssl.cc
│   │   ├── pem_parser_boringssl.h
│   │   ├── pem_parser_boringssl_test.cc
│   │   ├── prf/
│   │   │   ├── BUILD.bazel
│   │   │   ├── CMakeLists.txt
│   │   │   ├── hkdf_streaming_prf.cc
│   │   │   ├── hkdf_streaming_prf.h
│   │   │   ├── hkdf_streaming_prf_test.cc
│   │   │   ├── prf_set_util.cc
│   │   │   ├── prf_set_util.h
│   │   │   ├── prf_set_util_test.cc
│   │   │   ├── streaming_prf.h
│   │   │   ├── streaming_prf_wrapper.cc
│   │   │   ├── streaming_prf_wrapper.h
│   │   │   └── streaming_prf_wrapper_test.cc
│   │   ├── random.cc
│   │   ├── random.h
│   │   ├── random_test.cc
│   │   ├── rsa_ssa_pkcs1_sign_boringssl.cc
│   │   ├── rsa_ssa_pkcs1_sign_boringssl.h
│   │   ├── rsa_ssa_pkcs1_sign_boringssl_test.cc
│   │   ├── rsa_ssa_pkcs1_verify_boringssl.cc
│   │   ├── rsa_ssa_pkcs1_verify_boringssl.h
│   │   ├── rsa_ssa_pkcs1_verify_boringssl_test.cc
│   │   ├── rsa_ssa_pss_sign_boringssl.cc
│   │   ├── rsa_ssa_pss_sign_boringssl.h
│   │   ├── rsa_ssa_pss_sign_boringssl_test.cc
│   │   ├── rsa_ssa_pss_verify_boringssl.cc
│   │   ├── rsa_ssa_pss_verify_boringssl.h
│   │   ├── rsa_ssa_pss_verify_boringssl_test.cc
│   │   ├── stateful_cmac_boringssl.cc
│   │   ├── stateful_cmac_boringssl.h
│   │   ├── stateful_cmac_boringssl_test.cc
│   │   ├── stateful_hmac_boringssl.cc
│   │   ├── stateful_hmac_boringssl.h
│   │   ├── stateful_hmac_boringssl_test.cc
│   │   ├── stream_segment_decrypter.h
│   │   ├── stream_segment_encrypter.h
│   │   ├── streaming_aead_decrypting_stream.cc
│   │   ├── streaming_aead_decrypting_stream.h
│   │   ├── streaming_aead_decrypting_stream_test.cc
│   │   ├── streaming_aead_encrypting_stream.cc
│   │   ├── streaming_aead_encrypting_stream.h
│   │   ├── streaming_aead_encrypting_stream_test.cc
│   │   ├── streaming_aead_test_util.cc
│   │   ├── streaming_aead_test_util.h
│   │   ├── streaming_aead_test_util_test.cc
│   │   ├── streaming_mac_impl.cc
│   │   ├── streaming_mac_impl.h
│   │   ├── streaming_mac_impl_test.cc
│   │   ├── subtle_util.cc
│   │   ├── subtle_util.h
│   │   ├── subtle_util_boringssl.h
│   │   ├── subtle_util_test.cc
│   │   ├── test_util.cc
│   │   ├── test_util.h
│   │   ├── wycheproof_util.cc
│   │   ├── wycheproof_util.h
│   │   ├── xchacha20_poly1305_boringssl.cc
│   │   ├── xchacha20_poly1305_boringssl.h
│   │   └── xchacha20_poly1305_boringssl_test.cc
│   ├── template_rule.bzl
│   ├── testvectors/
│   │   └── BUILD.bazel
│   ├── third_party/
│   │   ├── BUILD.bazel
│   │   ├── boringssl_fips/
│   │   │   ├── BUILD.bazel
│   │   │   ├── README.md
│   │   │   ├── WORKSPACE
│   │   │   └── boringssl_fips.sh
│   │   └── rapidjson.BUILD.bazel
│   ├── tink_cc_deps.bzl
│   ├── tink_cc_deps_init.bzl
│   ├── tink_config.h
│   ├── tink_version.bzl
│   ├── util/
│   │   ├── BUILD.bazel
│   │   ├── CMakeLists.txt
│   │   ├── buffer.cc
│   │   ├── buffer.h
│   │   ├── buffer_test.cc
│   │   ├── constants.cc
│   │   ├── constants.h
│   │   ├── enums.cc
│   │   ├── enums.h
│   │   ├── enums_test.cc
│   │   ├── errors.h
│   │   ├── errors_test.cc
│   │   ├── fake_kms_client.cc
│   │   ├── fake_kms_client.h
│   │   ├── fake_kms_client_test.cc
│   │   ├── file_input_stream.cc
│   │   ├── file_input_stream.h
│   │   ├── file_input_stream_test.cc
│   │   ├── file_output_stream.cc
│   │   ├── file_output_stream.h
│   │   ├── file_output_stream_test.cc
│   │   ├── file_random_access_stream.cc
│   │   ├── file_random_access_stream.h
│   │   ├── file_random_access_stream_test.cc
│   │   ├── input_stream_util.cc
│   │   ├── input_stream_util.h
│   │   ├── input_stream_util_test.cc
│   │   ├── istream_input_stream.cc
│   │   ├── istream_input_stream.h
│   │   ├── istream_input_stream_test.cc
│   │   ├── keyset_util.cc
│   │   ├── keyset_util.h
│   │   ├── ostream_output_stream.cc
│   │   ├── ostream_output_stream.h
│   │   ├── ostream_output_stream_test.cc
│   │   ├── protobuf_helper.h
│   │   ├── secret_data.h
│   │   ├── secret_data_internal.h
│   │   ├── secret_data_test.cc
│   │   ├── secret_proto.h
│   │   ├── secret_proto_test.cc
│   │   ├── status.h
│   │   ├── statusor.h
│   │   ├── test_keyset_handle.cc
│   │   ├── test_keyset_handle.h
│   │   ├── test_matchers.h
│   │   ├── test_util.cc
│   │   ├── test_util.h
│   │   ├── test_util_test.cc
│   │   ├── validation.cc
│   │   ├── validation.h
│   │   └── validation_test.cc
│   ├── version.h.templ
│   └── version_script.lds
├── cmake/
│   ├── HttpArchive.cmake
│   ├── TinkBuildRules.cmake
│   ├── TinkUtil.cmake
│   └── TinkWorkspace.cmake
├── docs/
│   ├── CMAKE-HOWTO.md
│   ├── CONTRIBUTING.md
│   ├── CPP-HOWTO.md
│   ├── FIPS.md
│   ├── GOLANG-HOWTO.md
│   ├── JAVA-HOWTO.md
│   ├── JWT-HOWTO.md
│   ├── KEY-MANAGEMENT.md
│   ├── KNOWN-ISSUES.md
│   ├── OBJC-HOWTO.md
│   ├── PRIMITIVES.md
│   ├── PYTHON-HOWTO.md
│   ├── SECURITY-USABILITY.md
│   ├── SECURITY.md
│   ├── TINKEY.md
│   └── WIRE-FORMAT.md
├── go/
│   ├── .bazelversion
│   ├── BUILD.bazel
│   ├── README.md
│   ├── WORKSPACE
│   ├── aead/
│   │   ├── BUILD.bazel
│   │   ├── aead.go
│   │   ├── aead_benchmark_test.go
│   │   ├── aead_factory.go
│   │   ├── aead_factory_test.go
│   │   ├── aead_init_test.go
│   │   ├── aead_key_templates.go
│   │   ├── aead_key_templates_test.go
│   │   ├── aead_test.go
│   │   ├── aes_ctr_hmac_aead_key_manager.go
│   │   ├── aes_ctr_hmac_aead_key_manager_test.go
│   │   ├── aes_gcm_key_manager.go
│   │   ├── aes_gcm_key_manager_test.go
│   │   ├── aes_gcm_siv_key_manager.go
│   │   ├── aes_gcm_siv_key_manager_test.go
│   │   ├── chacha20poly1305_key_manager.go
│   │   ├── chacha20poly1305_key_manager_test.go
│   │   ├── internal/
│   │   │   ├── BUILD.bazel
│   │   │   └── testing/
│   │   │       ├── BUILD.bazel
│   │   │       └── kmsaead/
│   │   │           ├── BUILD.bazel
│   │   │           ├── key_manager.go
│   │   │           └── key_manager_test.go
│   │   ├── kms_envelope_aead.go
│   │   ├── kms_envelope_aead_example_test.go
│   │   ├── kms_envelope_aead_key_manager.go
│   │   ├── kms_envelope_aead_key_manager_test.go
│   │   ├── kms_envelope_aead_test.go
│   │   ├── subtle/
│   │   │   ├── BUILD.bazel
│   │   │   ├── aes_ctr.go
│   │   │   ├── aes_ctr_test.go
│   │   │   ├── aes_gcm.go
│   │   │   ├── aes_gcm_siv.go
│   │   │   ├── aes_gcm_siv_test.go
│   │   │   ├── aes_gcm_test.go
│   │   │   ├── chacha20poly1305.go
│   │   │   ├── chacha20poly1305_test.go
│   │   │   ├── chacha20poly1305_vectors_test.go
│   │   │   ├── encrypt_then_authenticate.go
│   │   │   ├── encrypt_then_authenticate_test.go
│   │   │   ├── ind_cpa.go
│   │   │   ├── polyval.go
│   │   │   ├── polyval_test.go
│   │   │   ├── subtle.go
│   │   │   ├── subtle_test.go
│   │   │   ├── xchacha20poly1305.go
│   │   │   ├── xchacha20poly1305_test.go
│   │   │   └── xchacha20poly1305_vectors_test.go
│   │   ├── xchacha20poly1305_key_manager.go
│   │   └── xchacha20poly1305_key_manager_test.go
│   ├── core/
│   │   ├── cryptofmt/
│   │   │   ├── BUILD.bazel
│   │   │   ├── cryptofmt.go
│   │   │   └── cryptofmt_test.go
│   │   ├── primitiveset/
│   │   │   ├── BUILD.bazel
│   │   │   ├── primitiveset.go
│   │   │   └── primitiveset_test.go
│   │   └── registry/
│   │       ├── BUILD.bazel
│   │       ├── custom_key_manager_test.go
│   │       ├── key_manager.go
│   │       ├── kms_client.go
│   │       ├── private_key_manager.go
│   │       ├── registry.go
│   │       └── registry_test.go
│   ├── daead/
│   │   ├── BUILD.bazel
│   │   ├── aes_siv_key_manager.go
│   │   ├── aes_siv_key_manager_test.go
│   │   ├── daead.go
│   │   ├── daead_benchmark_test.go
│   │   ├── daead_factory.go
│   │   ├── daead_factory_test.go
│   │   ├── daead_init_test.go
│   │   ├── daead_key_templates.go
│   │   ├── daead_key_templates_test.go
│   │   ├── daead_test.go
│   │   └── subtle/
│   │       ├── BUILD.bazel
│   │       ├── aes_siv.go
│   │       └── aes_siv_test.go
│   ├── deps.bzl
│   ├── go.mod
│   ├── go.sum
│   ├── hybrid/
│   │   ├── BUILD.bazel
│   │   ├── ecies_aead_hkdf_dem_helper.go
│   │   ├── ecies_aead_hkdf_dem_helper_test.go
│   │   ├── ecies_aead_hkdf_hybrid_decrypt_test.go
│   │   ├── ecies_aead_hkdf_hybrid_encrypt_test.go
│   │   ├── ecies_aead_hkdf_private_key_manager.go
│   │   ├── ecies_aead_hkdf_private_key_manager_test.go
│   │   ├── ecies_aead_hkdf_public_key_manager.go
│   │   ├── ecies_aead_hkdf_public_key_manager_test.go
│   │   ├── ecies_aead_hkdf_test.go
│   │   ├── hpke_private_key_manager.go
│   │   ├── hpke_private_key_manager_test.go
│   │   ├── hpke_public_key_manager.go
│   │   ├── hpke_public_key_manager_test.go
│   │   ├── hybrid.go
│   │   ├── hybrid_benchmark_test.go
│   │   ├── hybrid_decrypt_factory.go
│   │   ├── hybrid_encrypt_factory.go
│   │   ├── hybrid_factory_test.go
│   │   ├── hybrid_key_templates.go
│   │   ├── hybrid_key_templates_test.go
│   │   ├── hybrid_test.go
│   │   ├── internal/
│   │   │   └── hpke/
│   │   │       ├── BUILD.bazel
│   │   │       ├── aead.go
│   │   │       ├── aes_gcm_aead.go
│   │   │       ├── aes_gcm_aead_test.go
│   │   │       ├── chacha20poly1305_aead.go
│   │   │       ├── chacha20poly1305_aead_test.go
│   │   │       ├── context.go
│   │   │       ├── context_test.go
│   │   │       ├── decrypt.go
│   │   │       ├── encrypt.go
│   │   │       ├── encrypt_decrypt_test.go
│   │   │       ├── hkdf_kdf.go
│   │   │       ├── hkdf_kdf_test.go
│   │   │       ├── hpke.go
│   │   │       ├── hpke_test.go
│   │   │       ├── kdf.go
│   │   │       ├── kem.go
│   │   │       ├── primitive_factory.go
│   │   │       ├── primitive_factory_test.go
│   │   │       ├── x25519_kem.go
│   │   │       └── x25519_kem_test.go
│   │   └── subtle/
│   │       ├── BUILD.bazel
│   │       ├── ecies_aead_hkdf_dem_helper.go
│   │       ├── ecies_aead_hkdf_hybrid_decrypt.go
│   │       ├── ecies_aead_hkdf_hybrid_encrypt.go
│   │       ├── ecies_hkdf_recipient_kem.go
│   │       ├── ecies_hkdf_sender_kem.go
│   │       ├── elliptic_curves.go
│   │       ├── elliptic_curves_test.go
│   │       ├── public_key.go
│   │       ├── public_key_test.go
│   │       ├── subtle.go
│   │       └── subtle_test.go
│   ├── insecurecleartextkeyset/
│   │   ├── BUILD.bazel
│   │   ├── example_test.go
│   │   ├── insecurecleartextkeyset.go
│   │   └── insecurecleartextkeyset_test.go
│   ├── integration/
│   │   ├── awskms/
│   │   │   ├── BUILD.bazel
│   │   │   ├── aws_kms_aead.go
│   │   │   ├── aws_kms_client.go
│   │   │   ├── aws_kms_client_test.go
│   │   │   ├── aws_kms_integration_test.go
│   │   │   └── internal/
│   │   │       └── fakeawskms/
│   │   │           ├── BUILD.bazel
│   │   │           ├── fakeawskms.go
│   │   │           └── fakeawskms_test.go
│   │   ├── gcpkms/
│   │   │   ├── BUILD.bazel
│   │   │   ├── gcp_kms_aead.go
│   │   │   ├── gcp_kms_aead_test.go
│   │   │   ├── gcp_kms_client.go
│   │   │   ├── gcp_kms_client_test.go
│   │   │   └── gcp_kms_integration_test.go
│   │   └── hcvault/
│   │       ├── BUILD.bazel
│   │       ├── hcvault_aead.go
│   │       ├── hcvault_aead_internal_test.go
│   │       ├── hcvault_aead_test.go
│   │       ├── hcvault_client.go
│   │       └── hcvault_client_test.go
│   ├── internal/
│   │   ├── BUILD.bazel
│   │   ├── aead/
│   │   │   ├── BUILD.bazel
│   │   │   ├── aead.go
│   │   │   ├── aead_test.go
│   │   │   ├── aes_gcm_insecure_iv.go
│   │   │   ├── aes_gcm_insecure_iv_test.go
│   │   │   ├── chacha20poly1305_insecure_nonce.go
│   │   │   ├── chacha20poly1305_insecure_nonce_test.go
│   │   │   └── chacha20poly1305_insecure_nonce_vectors_test.go
│   │   ├── internal.go
│   │   ├── internalapi/
│   │   │   ├── BUILD.bazel
│   │   │   └── token.go
│   │   ├── internalregistry/
│   │   │   ├── BUILD.bazel
│   │   │   ├── derivable_key_manager.go
│   │   │   ├── internal_registry.go
│   │   │   ├── internal_registry_test.go
│   │   │   ├── key_derivation.go
│   │   │   └── key_derivation_test.go
│   │   ├── monitoringutil/
│   │   │   ├── BUILD.bazel
│   │   │   ├── monitoring_util.go
│   │   │   └── monitoring_util_test.go
│   │   ├── registryconfig/
│   │   │   ├── BUILD.bazel
│   │   │   ├── registry_config.go
│   │   │   └── registry_config_test.go
│   │   ├── signature/
│   │   │   ├── BUILD.bazel
│   │   │   ├── rsa.go
│   │   │   ├── rsa_test.go
│   │   │   ├── rsassapkcs1_signer.go
│   │   │   ├── rsassapkcs1_signer_verifier_test.go
│   │   │   ├── rsassapkcs1_verifier.go
│   │   │   ├── rsassapss_signer.go
│   │   │   ├── rsassapss_signer_verifier_test.go
│   │   │   ├── rsassapss_verifier.go
│   │   │   └── signature.go
│   │   ├── testing/
│   │   │   └── stubkeymanager/
│   │   │       ├── BUILD.bazel
│   │   │       ├── stubkeymanager.go
│   │   │       └── stubkeymanager_test.go
│   │   └── tinkerror/
│   │       ├── BUILD.bazel
│   │       ├── doc.go
│   │       ├── tinkerror.go
│   │       ├── tinkerror_test.go
│   │       └── tinkerrortest/
│   │           ├── BUILD.bazel
│   │           ├── doc.go
│   │           └── tinkerrortest.go
│   ├── jwt/
│   │   ├── BUILD.bazel
│   │   ├── jwk_converter.go
│   │   ├── jwk_converter_test.go
│   │   ├── jwt.go
│   │   ├── jwt_ecdsa_signer_key_manager.go
│   │   ├── jwt_ecdsa_signer_key_manager_test.go
│   │   ├── jwt_ecdsa_verifier_key_manager.go
│   │   ├── jwt_ecdsa_verifier_key_manager_test.go
│   │   ├── jwt_encoding.go
│   │   ├── jwt_encoding_test.go
│   │   ├── jwt_hmac_key_manager.go
│   │   ├── jwt_hmac_key_manager_test.go
│   │   ├── jwt_key_templates.go
│   │   ├── jwt_key_templates_test.go
│   │   ├── jwt_mac.go
│   │   ├── jwt_mac_factory.go
│   │   ├── jwt_mac_factory_test.go
│   │   ├── jwt_mac_kid.go
│   │   ├── jwt_mac_kid_test.go
│   │   ├── jwt_rsa_ssa_pkcs1_signer_key_manager.go
│   │   ├── jwt_rsa_ssa_pkcs1_signer_key_manager_test.go
│   │   ├── jwt_rsa_ssa_pkcs1_verifier_key_manager.go
│   │   ├── jwt_rsa_ssa_pkcs1_verifier_key_manager_test.go
│   │   ├── jwt_rsa_ssa_pss_signer_key_manager.go
│   │   ├── jwt_rsa_ssa_pss_signer_key_manager_test.go
│   │   ├── jwt_rsa_ssa_pss_verify_key_manager.go
│   │   ├── jwt_rsa_ssa_pss_verify_key_manager_test.go
│   │   ├── jwt_signer.go
│   │   ├── jwt_signer_factory.go
│   │   ├── jwt_signer_kid.go
│   │   ├── jwt_signer_verifier_factory_test.go
│   │   ├── jwt_signer_verifier_kid_test.go
│   │   ├── jwt_test.go
│   │   ├── jwt_validator.go
│   │   ├── jwt_validator_test.go
│   │   ├── jwt_verifier.go
│   │   ├── jwt_verifier_factory.go
│   │   ├── jwt_verifier_kid.go
│   │   ├── raw_jwt.go
│   │   ├── raw_jwt_test.go
│   │   ├── verified_jwt.go
│   │   └── verified_jwt_test.go
│   ├── keyderivation/
│   │   ├── BUILD.bazel
│   │   ├── internal/
│   │   │   └── streamingprf/
│   │   │       ├── BUILD.bazel
│   │   │       ├── hkdf_streaming_prf.go
│   │   │       ├── hkdf_streaming_prf_key_manager.go
│   │   │       ├── hkdf_streaming_prf_key_manager_test.go
│   │   │       ├── hkdf_streaming_prf_test.go
│   │   │       ├── streaming_prf.go
│   │   │       ├── streaming_prf_factory.go
│   │   │       ├── streaming_prf_factory_test.go
│   │   │       └── streaming_prf_test.go
│   │   ├── keyderivation.go
│   │   ├── keyderivation_key_templates.go
│   │   ├── keyderivation_key_templates_test.go
│   │   ├── keyderivation_test.go
│   │   ├── keyset_deriver.go
│   │   ├── keyset_deriver_factory.go
│   │   ├── keyset_deriver_factory_test.go
│   │   ├── keyset_deriver_factory_x_test.go
│   │   ├── prf_based_deriver.go
│   │   ├── prf_based_deriver_key_manager.go
│   │   ├── prf_based_deriver_key_manager_test.go
│   │   └── prf_based_deriver_test.go
│   ├── keyset/
│   │   ├── BUILD.bazel
│   │   ├── binary_io.go
│   │   ├── binary_io_test.go
│   │   ├── handle.go
│   │   ├── handle_test.go
│   │   ├── json_io.go
│   │   ├── json_io_test.go
│   │   ├── keyset.go
│   │   ├── keyset_test.go
│   │   ├── manager.go
│   │   ├── manager_test.go
│   │   ├── mem_io.go
│   │   ├── mem_io_test.go
│   │   ├── option.go
│   │   ├── reader.go
│   │   ├── validation.go
│   │   ├── validation_test.go
│   │   └── writer.go
│   ├── kwp/
│   │   └── subtle/
│   │       ├── BUILD.bazel
│   │       ├── kwp.go
│   │       └── kwp_test.go
│   ├── mac/
│   │   ├── BUILD.bazel
│   │   ├── aes_cmac_key_manager.go
│   │   ├── aes_cmac_key_manager_test.go
│   │   ├── hmac_key_manager.go
│   │   ├── hmac_key_manager_test.go
│   │   ├── internal/
│   │   │   └── mactest/
│   │   │       ├── BUILD.bazel
│   │   │       ├── mactest.go
│   │   │       └── mactest_test.go
│   │   ├── mac.go
│   │   ├── mac_benchmark_test.go
│   │   ├── mac_factory.go
│   │   ├── mac_factory_test.go
│   │   ├── mac_init_test.go
│   │   ├── mac_key_templates.go
│   │   ├── mac_key_templates_test.go
│   │   ├── mac_test.go
│   │   └── subtle/
│   │       ├── BUILD.bazel
│   │       ├── cmac.go
│   │       ├── cmac_test.go
│   │       ├── hmac.go
│   │       └── hmac_test.go
│   ├── monitoring/
│   │   ├── BUILD.bazel
│   │   └── monitoring.go
│   ├── prf/
│   │   ├── BUILD.bazel
│   │   ├── aes_cmac_prf_key_manager.go
│   │   ├── aes_cmac_prf_key_manager_test.go
│   │   ├── hkdf_prf_key_manager.go
│   │   ├── hkdf_prf_key_manager_test.go
│   │   ├── hmac_prf_key_manager.go
│   │   ├── hmac_prf_key_manager_test.go
│   │   ├── prf_benchmark_test.go
│   │   ├── prf_key_templates.go
│   │   ├── prf_key_templates_test.go
│   │   ├── prf_set.go
│   │   ├── prf_set_factory.go
│   │   ├── prf_set_factory_test.go
│   │   ├── prf_test.go
│   │   └── subtle/
│   │       ├── BUILD.bazel
│   │       ├── aes_cmac.go
│   │       ├── aes_cmac_test.go
│   │       ├── hkdf.go
│   │       ├── hkdf_test.go
│   │       ├── hmac.go
│   │       ├── hmac_test.go
│   │       ├── subtle.go
│   │       └── subtle_test.go
│   ├── proto/
│   │   ├── aes_cmac_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── aes_cmac.pb.go
│   │   ├── aes_cmac_prf_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── aes_cmac_prf.pb.go
│   │   ├── aes_ctr_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── aes_ctr.pb.go
│   │   ├── aes_ctr_hmac_aead_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── aes_ctr_hmac_aead.pb.go
│   │   ├── aes_ctr_hmac_streaming_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── aes_ctr_hmac_streaming.pb.go
│   │   ├── aes_gcm_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── aes_gcm.pb.go
│   │   ├── aes_gcm_hkdf_streaming_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── aes_gcm_hkdf_streaming.pb.go
│   │   ├── aes_gcm_siv_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── aes_gcm_siv.pb.go
│   │   ├── aes_siv_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── aes_siv.pb.go
│   │   ├── chacha20_poly1305_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── chacha20_poly1305.pb.go
│   │   ├── common_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── common.pb.go
│   │   ├── ecdsa_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── ecdsa.pb.go
│   │   ├── ecies_aead_hkdf_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── ecies_aead_hkdf.pb.go
│   │   ├── ed25519_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── ed25519.pb.go
│   │   ├── hkdf_prf_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── hkdf_prf.pb.go
│   │   ├── hmac_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── hmac.pb.go
│   │   ├── hmac_prf_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── hmac_prf.pb.go
│   │   ├── hpke_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── hpke.pb.go
│   │   ├── jwt_ecdsa_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── jwt_ecdsa.pb.go
│   │   ├── jwt_hmac_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── jwt_hmac.pb.go
│   │   ├── jwt_rsa_ssa_pkcs1_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── jwt_rsa_ssa_pkcs1.pb.go
│   │   ├── jwt_rsa_ssa_pss_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── jwt_rsa_ssa_pss.pb.go
│   │   ├── kms_aead_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── kms_aead.pb.go
│   │   ├── kms_envelope_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── kms_envelope.pb.go
│   │   ├── prf_based_deriver_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── prf_based_deriver.pb.go
│   │   ├── rsa_ssa_pkcs1_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── rsa_ssa_pkcs1.pb.go
│   │   ├── rsa_ssa_pss_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── rsa_ssa_pss.pb.go
│   │   ├── tink_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── tink.pb.go
│   │   └── xchacha20_poly1305_go_proto/
│   │       ├── BUILD.bazel
│   │       └── xchacha20_poly1305.pb.go
│   ├── signature/
│   │   ├── BUILD.bazel
│   │   ├── ecdsa_signer_key_manager.go
│   │   ├── ecdsa_signer_key_manager_test.go
│   │   ├── ecdsa_verifier_key_manager.go
│   │   ├── ecdsa_verifier_key_manager_test.go
│   │   ├── ed25519_signer_key_manager.go
│   │   ├── ed25519_signer_key_manager_test.go
│   │   ├── ed25519_verifier_key_manager.go
│   │   ├── ed25519_verifier_key_manager_test.go
│   │   ├── proto.go
│   │   ├── rsa.go
│   │   ├── rsassapkcs1_signer_key_manager.go
│   │   ├── rsassapkcs1_signer_key_manager_test.go
│   │   ├── rsassapkcs1_verifier_key_manager.go
│   │   ├── rsassapkcs1_verifier_key_manager_test.go
│   │   ├── rsassapss_signer_key_manager.go
│   │   ├── rsassapss_signer_key_manager_test.go
│   │   ├── rsassapss_verifier_key_manager.go
│   │   ├── rsassapss_verifier_key_manager_test.go
│   │   ├── signature.go
│   │   ├── signature_benchmark_test.go
│   │   ├── signature_factory_test.go
│   │   ├── signature_init_test.go
│   │   ├── signature_key_templates.go
│   │   ├── signature_key_templates_test.go
│   │   ├── signature_test.go
│   │   ├── signer_factory.go
│   │   ├── subtle/
│   │   │   ├── BUILD.bazel
│   │   │   ├── ecdsa.go
│   │   │   ├── ecdsa_signer.go
│   │   │   ├── ecdsa_signer_verifier_test.go
│   │   │   ├── ecdsa_test.go
│   │   │   ├── ecdsa_verifier.go
│   │   │   ├── ed25519_signer.go
│   │   │   ├── ed25519_signer_verifier_test.go
│   │   │   ├── ed25519_verifier.go
│   │   │   ├── encoding.go
│   │   │   ├── subtle.go
│   │   │   └── subtle_test.go
│   │   └── verifier_factory.go
│   ├── streamingaead/
│   │   ├── BUILD.bazel
│   │   ├── aes_ctr_hmac_key_manager.go
│   │   ├── aes_ctr_hmac_key_manager_test.go
│   │   ├── aes_gcm_hkdf_key_manager.go
│   │   ├── aes_gcm_hkdf_key_manager_test.go
│   │   ├── decrypt_reader.go
│   │   ├── decrypt_reader_test.go
│   │   ├── streamingaead.go
│   │   ├── streamingaead_factory.go
│   │   ├── streamingaead_factory_test.go
│   │   ├── streamingaead_key_templates.go
│   │   ├── streamingaead_key_templates_test.go
│   │   ├── streamingaead_test.go
│   │   └── subtle/
│   │       ├── BUILD.bazel
│   │       ├── aes_ctr_hmac.go
│   │       ├── aes_ctr_hmac_test.go
│   │       ├── aes_gcm_hkdf.go
│   │       ├── aes_gcm_hkdf_test.go
│   │       ├── noncebased/
│   │       │   ├── BUILD.bazel
│   │       │   ├── noncebased.go
│   │       │   └── noncebased_test.go
│   │       ├── subtle.go
│   │       └── subtle_test.go
│   ├── subtle/
│   │   ├── BUILD.bazel
│   │   ├── hkdf.go
│   │   ├── hkdf_test.go
│   │   ├── random/
│   │   │   ├── BUILD.bazel
│   │   │   ├── random.go
│   │   │   └── random_test.go
│   │   ├── subtle.go
│   │   ├── subtle_test.go
│   │   ├── x25519.go
│   │   └── x25519_test.go
│   ├── testdata/
│   │   ├── BUILD.bazel
│   │   ├── aws/
│   │   │   ├── BUILD.bazel
│   │   │   ├── README.md
│   │   │   ├── access_keys_bad.csv
│   │   │   ├── credentials.cred
│   │   │   ├── credentials.csv
│   │   │   ├── credentials.ini
│   │   │   ├── credentials_bad.csv
│   │   │   ├── credentials_bad.ini
│   │   │   ├── key_arn.txt
│   │   │   └── key_arn_bad.txt
│   │   ├── gcp/
│   │   │   ├── BUILD.bazel
│   │   │   ├── README.md
│   │   │   ├── credential.json
│   │   │   ├── credential_bad.json
│   │   │   ├── key_name.txt
│   │   │   └── key_name_bad.txt
│   │   ├── keysets/
│   │   │   └── BUILD.bazel
│   │   └── testvectors/
│   │       ├── BUILD.bazel
│   │       └── hpke_boringssl.json
│   ├── testing/
│   │   ├── fakekms/
│   │   │   ├── BUILD.bazel
│   │   │   ├── fakekms.go
│   │   │   └── fakekms_test.go
│   │   └── fakemonitoring/
│   │       ├── BUILD.bazel
│   │       ├── fakemonitoring.go
│   │       └── fakemonitoring_test.go
│   ├── testkeyset/
│   │   ├── BUILD.bazel
│   │   ├── testkeyset.go
│   │   └── testkeyset_test.go
│   ├── testutil/
│   │   ├── BUILD.bazel
│   │   ├── constant.go
│   │   ├── hybrid/
│   │   │   ├── BUILD.bazel
│   │   │   ├── private_key.go
│   │   │   └── private_key_test.go
│   │   ├── testutil.go
│   │   ├── testutil_test.go
│   │   ├── wycheproofutil.go
│   │   └── wycheproofutil_test.go
│   ├── tink/
│   │   ├── BUILD.bazel
│   │   ├── aead.go
│   │   ├── deterministic_aead.go
│   │   ├── hybrid_decrypt.go
│   │   ├── hybrid_encrypt.go
│   │   ├── mac.go
│   │   ├── signer.go
│   │   ├── streamingaead.go
│   │   ├── tink.go
│   │   ├── verifier.go
│   │   └── version.go
│   └── tink_version.bzl
├── java_src/
│   ├── .bazelignore
│   ├── .bazelrc
│   ├── .bazelversion
│   ├── BUILD.bazel
│   ├── WORKSPACE
│   ├── examples/
│   │   ├── .bazelignore
│   │   ├── .bazelrc
│   │   ├── .bazelversion
│   │   ├── BUILD.bazel
│   │   ├── WORKSPACE
│   │   ├── aead/
│   │   │   ├── AeadExample.java
│   │   │   ├── BUILD.bazel
│   │   │   ├── README.md
│   │   │   ├── aead_example_test.sh
│   │   │   └── aead_test_keyset.json
│   │   ├── android/
│   │   │   └── helloworld/
│   │   │       ├── README.md
│   │   │       ├── app/
│   │   │       │   ├── build.gradle
│   │   │       │   ├── maven_local.gradle
│   │   │       │   ├── maven_snapshot.gradle
│   │   │       │   └── src/
│   │   │       │       └── main/
│   │   │       │           ├── AndroidManifest.xml
│   │   │       │           ├── java/
│   │   │       │           │   └── com/
│   │   │       │           │       └── helloworld/
│   │   │       │           │           ├── MainActivity.java
│   │   │       │           │           └── TinkApplication.java
│   │   │       │           └── res/
│   │   │       │               ├── layout/
│   │   │       │               │   └── activity_main.xml
│   │   │       │               └── values/
│   │   │       │                   ├── colors.xml
│   │   │       │                   ├── dimens.xml
│   │   │       │                   ├── strings.xml
│   │   │       │                   └── styles.xml
│   │   │       ├── build.gradle
│   │   │       ├── gradle/
│   │   │       │   └── wrapper/
│   │   │       │       ├── gradle-wrapper.jar
│   │   │       │       └── gradle-wrapper.properties
│   │   │       ├── gradle.properties
│   │   │       ├── gradlew
│   │   │       ├── gradlew.bat
│   │   │       └── settings.gradle
│   │   ├── cleartextkeyset/
│   │   │   ├── BUILD.bazel
│   │   │   ├── CleartextKeysetExample.java
│   │   │   ├── README.md
│   │   │   └── cleartext_keyset_example_test.sh
│   │   ├── deterministicaead/
│   │   │   ├── BUILD.bazel
│   │   │   ├── DeterministicAeadExample.java
│   │   │   ├── README.md
│   │   │   ├── deterministic_aead_test.sh
│   │   │   └── deterministic_aead_test_keyset.json
│   │   ├── encryptedkeyset/
│   │   │   ├── BUILD.bazel
│   │   │   ├── EncryptedKeysetExample.java
│   │   │   ├── README.md
│   │   │   └── encrypted_keyset_example_test.sh
│   │   ├── envelopeaead/
│   │   │   ├── BUILD.bazel
│   │   │   ├── EnvelopeAeadExample.java
│   │   │   ├── README.md
│   │   │   └── envelope_aead_example_test.sh
│   │   ├── gcs/
│   │   │   ├── BUILD.bazel
│   │   │   ├── GcsEnvelopeAeadExample.java
│   │   │   ├── README.md
│   │   │   └── gcs_envelope_aead_example_test.sh
│   │   ├── hybrid/
│   │   │   ├── BUILD.bazel
│   │   │   ├── HybridExample.java
│   │   │   ├── README.md
│   │   │   ├── hybrid_example_test.sh
│   │   │   ├── hybrid_test_private_keyset.json
│   │   │   └── hybrid_test_public_keyset.json
│   │   ├── jwt/
│   │   │   ├── BUILD.bazel
│   │   │   ├── JwtGeneratePublicJwkSet.java
│   │   │   ├── JwtSign.java
│   │   │   ├── JwtVerify.java
│   │   │   ├── README.md
│   │   │   ├── jwt_signature_example_test.sh
│   │   │   └── jwt_signature_test_private_keyset.json
│   │   ├── mac/
│   │   │   ├── BUILD.bazel
│   │   │   ├── MacExample.java
│   │   │   ├── README.md
│   │   │   ├── mac_example_test.sh
│   │   │   └── mac_test_keyset.json
│   │   ├── signature/
│   │   │   ├── BUILD.bazel
│   │   │   ├── README.md
│   │   │   ├── SignatureExample.java
│   │   │   ├── signature_example_test.sh
│   │   │   ├── signature_test_private_keyset.json
│   │   │   └── signature_test_public_keyset.json
│   │   ├── streamingaead/
│   │   │   ├── BUILD.bazel
│   │   │   ├── README.md
│   │   │   ├── StreamingAeadExample.java
│   │   │   ├── streaming_aead_example_test.sh
│   │   │   └── streaming_aead_test_keyset.json
│   │   ├── testdata/
│   │   │   └── gcp/
│   │   │       ├── BUILD.bazel
│   │   │       ├── README.md
│   │   │       ├── credential.json
│   │   │       ├── credential_bad.json
│   │   │       ├── key_name.txt
│   │   │       └── key_name_bad.txt
│   │   └── walkthrough/
│   │       └── src/
│   │           ├── main/
│   │           │   └── java/
│   │           │       └── walkthrough/
│   │           │           ├── BUILD.bazel
│   │           │           ├── CreateKeysetExample.java
│   │           │           ├── ObtainAndUseAeadPrimitiveExample.java
│   │           │           ├── ReadCleartextKeysetExample.java
│   │           │           ├── ReadKeysetExample.java
│   │           │           ├── WriteCleartextKeysetExample.java
│   │           │           └── WriteKeysetExample.java
│   │           └── test/
│   │               └── java/
│   │                   └── walkthrough/
│   │                       ├── BUILD.bazel
│   │                       ├── CreateKesetExampleTest.java
│   │                       ├── ObtainAndUseAeadPrimitiveExampleTest.java
│   │                       ├── ReadCleartextKeysetExampleTest.java
│   │                       ├── ReadKeysetExampleTest.java
│   │                       ├── WriteCleartextKeysetExampleTest.java
│   │                       └── WriteKeysetExampleTest.java
│   ├── jar_jar_rules.txt
│   ├── proto/
│   │   ├── BUILD.bazel
│   │   ├── aes_cmac.proto
│   │   ├── aes_cmac_prf.proto
│   │   ├── aes_ctr.proto
│   │   ├── aes_ctr_hmac_aead.proto
│   │   ├── aes_ctr_hmac_streaming.proto
│   │   ├── aes_eax.proto
│   │   ├── aes_gcm.proto
│   │   ├── aes_gcm_hkdf_streaming.proto
│   │   ├── aes_gcm_siv.proto
│   │   ├── aes_siv.proto
│   │   ├── chacha20_poly1305.proto
│   │   ├── common.proto
│   │   ├── config.proto
│   │   ├── ecdsa.proto
│   │   ├── ecies_aead_hkdf.proto
│   │   ├── ed25519.proto
│   │   ├── empty.proto
│   │   ├── hkdf_prf.proto
│   │   ├── hmac.proto
│   │   ├── hmac_prf.proto
│   │   ├── hpke.proto
│   │   ├── jwt_ecdsa.proto
│   │   ├── jwt_hmac.proto
│   │   ├── jwt_rsa_ssa_pkcs1.proto
│   │   ├── jwt_rsa_ssa_pss.proto
│   │   ├── kms_aead.proto
│   │   ├── kms_envelope.proto
│   │   ├── prf_based_deriver.proto
│   │   ├── rsa_ssa_pkcs1.proto
│   │   ├── rsa_ssa_pss.proto
│   │   ├── test_proto.proto
│   │   ├── tink.proto
│   │   └── xchacha20_poly1305.proto
│   ├── src/
│   │   ├── main/
│   │   │   ├── java/
│   │   │   │   └── com/
│   │   │   │       └── google/
│   │   │   │           └── crypto/
│   │   │   │               └── tink/
│   │   │   │                   ├── AccessesPartialKey.java
│   │   │   │                   ├── Aead.java
│   │   │   │                   ├── BUILD.bazel
│   │   │   │                   ├── BinaryKeysetReader.java
│   │   │   │                   ├── BinaryKeysetWriter.java
│   │   │   │                   ├── Catalogue.java
│   │   │   │                   ├── CleartextKeysetHandle.java
│   │   │   │                   ├── Config.java
│   │   │   │                   ├── Configuration.java
│   │   │   │                   ├── ConfigurationFips140v2.java
│   │   │   │                   ├── ConfigurationV0.java
│   │   │   │                   ├── CryptoFormat.java
│   │   │   │                   ├── DeterministicAead.java
│   │   │   │                   ├── HybridDecrypt.java
│   │   │   │                   ├── HybridEncrypt.java
│   │   │   │                   ├── InsecureSecretKeyAccess.java
│   │   │   │                   ├── JsonKeysetReader.java
│   │   │   │                   ├── JsonKeysetWriter.java
│   │   │   │                   ├── Key.java
│   │   │   │                   ├── KeyManager.java
│   │   │   │                   ├── KeyStatus.java
│   │   │   │                   ├── KeyTemplate.java
│   │   │   │                   ├── KeyTemplates.java
│   │   │   │                   ├── KeyWrap.java
│   │   │   │                   ├── KeysetHandle.java
│   │   │   │                   ├── KeysetManager.java
│   │   │   │                   ├── KeysetReader.java
│   │   │   │                   ├── KeysetWriter.java
│   │   │   │                   ├── KmsClient.java
│   │   │   │                   ├── KmsClients.java
│   │   │   │                   ├── KmsClientsTestUtil.java
│   │   │   │                   ├── LegacyKeysetSerialization.java
│   │   │   │                   ├── Mac.java
│   │   │   │                   ├── NoSecretKeysetHandle.java
│   │   │   │                   ├── Parameters.java
│   │   │   │                   ├── PemKeyType.java
│   │   │   │                   ├── PrimitiveWrapper.java
│   │   │   │                   ├── PrivateKey.java
│   │   │   │                   ├── PrivateKeyManager.java
│   │   │   │                   ├── PublicKeySign.java
│   │   │   │                   ├── PublicKeyVerify.java
│   │   │   │                   ├── Registry.java
│   │   │   │                   ├── RegistryConfiguration.java
│   │   │   │                   ├── SecretKeyAccess.java
│   │   │   │                   ├── StreamingAead.java
│   │   │   │                   ├── TinkJsonProtoKeysetFormat.java
│   │   │   │                   ├── TinkProtoKeysetFormat.java
│   │   │   │                   ├── TinkProtoParametersFormat.java
│   │   │   │                   ├── Util.java
│   │   │   │                   ├── Version.java.templ
│   │   │   │                   ├── aead/
│   │   │   │                   │   ├── AeadConfig.java
│   │   │   │                   │   ├── AeadFactory.java
│   │   │   │                   │   ├── AeadKey.java
│   │   │   │                   │   ├── AeadKeyTemplates.java
│   │   │   │                   │   ├── AeadParameters.java
│   │   │   │                   │   ├── AeadWrapper.java
│   │   │   │                   │   ├── AesCtrHmacAeadKey.java
│   │   │   │                   │   ├── AesCtrHmacAeadKeyManager.java
│   │   │   │                   │   ├── AesCtrHmacAeadParameters.java
│   │   │   │                   │   ├── AesEaxKey.java
│   │   │   │                   │   ├── AesEaxKeyManager.java
│   │   │   │                   │   ├── AesEaxParameters.java
│   │   │   │                   │   ├── AesGcmKey.java
│   │   │   │                   │   ├── AesGcmKeyManager.java
│   │   │   │                   │   ├── AesGcmParameters.java
│   │   │   │                   │   ├── AesGcmSivKey.java
│   │   │   │                   │   ├── AesGcmSivKeyManager.java
│   │   │   │                   │   ├── AesGcmSivParameters.java
│   │   │   │                   │   ├── BUILD.bazel
│   │   │   │                   │   ├── ChaCha20Poly1305Key.java
│   │   │   │                   │   ├── ChaCha20Poly1305KeyManager.java
│   │   │   │                   │   ├── ChaCha20Poly1305Parameters.java
│   │   │   │                   │   ├── KmsAeadKeyManager.java
│   │   │   │                   │   ├── KmsEnvelopeAead.java
│   │   │   │                   │   ├── KmsEnvelopeAeadKeyManager.java
│   │   │   │                   │   ├── LegacyKmsAeadKey.java
│   │   │   │                   │   ├── LegacyKmsAeadParameters.java
│   │   │   │                   │   ├── LegacyKmsAeadProtoSerialization.java
│   │   │   │                   │   ├── LegacyKmsEnvelopeAeadKey.java
│   │   │   │                   │   ├── LegacyKmsEnvelopeAeadParameters.java
│   │   │   │                   │   ├── LegacyKmsEnvelopeAeadProtoSerialization.java
│   │   │   │                   │   ├── PredefinedAeadParameters.java
│   │   │   │                   │   ├── XChaCha20Poly1305Key.java
│   │   │   │                   │   ├── XChaCha20Poly1305KeyManager.java
│   │   │   │                   │   ├── XChaCha20Poly1305Parameters.java
│   │   │   │                   │   ├── internal/
│   │   │   │                   │   │   ├── AesCtrHmacAeadProtoSerialization.java
│   │   │   │                   │   │   ├── AesEaxProtoSerialization.java
│   │   │   │                   │   │   ├── AesGcmProtoSerialization.java
│   │   │   │                   │   │   ├── AesGcmSivProtoSerialization.java
│   │   │   │                   │   │   ├── BUILD.bazel
│   │   │   │                   │   │   ├── ChaCha20Poly1305Jce.java
│   │   │   │                   │   │   ├── ChaCha20Poly1305ProtoSerialization.java
│   │   │   │                   │   │   ├── ChaCha20Util.java
│   │   │   │                   │   │   ├── InsecureNonceAesGcmJce.java
│   │   │   │                   │   │   ├── InsecureNonceChaCha20.java
│   │   │   │                   │   │   ├── InsecureNonceChaCha20Base.java
│   │   │   │                   │   │   ├── InsecureNonceChaCha20Poly1305.java
│   │   │   │                   │   │   ├── InsecureNonceChaCha20Poly1305Base.java
│   │   │   │                   │   │   ├── InsecureNonceChaCha20Poly1305Jce.java
│   │   │   │                   │   │   ├── InsecureNonceXChaCha20.java
│   │   │   │                   │   │   ├── InsecureNonceXChaCha20Poly1305.java
│   │   │   │                   │   │   ├── LegacyAesCtrHmacTestKeyManager.java
│   │   │   │                   │   │   ├── LegacyFullAead.java
│   │   │   │                   │   │   ├── Poly1305.java
│   │   │   │                   │   │   ├── XChaCha20Poly1305Jce.java
│   │   │   │                   │   │   └── XChaCha20Poly1305ProtoSerialization.java
│   │   │   │                   │   └── subtle/
│   │   │   │                   │       ├── AeadFactory.java
│   │   │   │                   │       ├── AesGcmFactory.java
│   │   │   │                   │       ├── AesGcmSiv.java
│   │   │   │                   │       └── BUILD.bazel
│   │   │   │                   ├── annotations/
│   │   │   │                   │   ├── Alpha.java
│   │   │   │                   │   └── BUILD.bazel
│   │   │   │                   ├── config/
│   │   │   │                   │   ├── BUILD.bazel
│   │   │   │                   │   ├── TinkConfig.java
│   │   │   │                   │   ├── TinkFips.java
│   │   │   │                   │   └── internal/
│   │   │   │                   │       ├── BUILD.bazel
│   │   │   │                   │       ├── TinkFipsDisabled.java
│   │   │   │                   │       ├── TinkFipsEnabled.java
│   │   │   │                   │       └── TinkFipsUtil.java
│   │   │   │                   ├── daead/
│   │   │   │                   │   ├── AesSivKey.java
│   │   │   │                   │   ├── AesSivKeyManager.java
│   │   │   │                   │   ├── AesSivParameters.java
│   │   │   │                   │   ├── BUILD.bazel
│   │   │   │                   │   ├── DeterministicAeadConfig.java
│   │   │   │                   │   ├── DeterministicAeadFactory.java
│   │   │   │                   │   ├── DeterministicAeadKey.java
│   │   │   │                   │   ├── DeterministicAeadKeyTemplates.java
│   │   │   │                   │   ├── DeterministicAeadParameters.java
│   │   │   │                   │   ├── DeterministicAeadWrapper.java
│   │   │   │                   │   ├── PredefinedDeterministicAeadParameters.java
│   │   │   │                   │   └── internal/
│   │   │   │                   │       ├── AesSivProtoSerialization.java
│   │   │   │                   │       ├── BUILD.bazel
│   │   │   │                   │       ├── LegacyFullDeterministicAead.java
│   │   │   │                   │       └── testing/
│   │   │   │                   │           ├── BUILD.bazel
│   │   │   │                   │           └── LegacyAesSivTestKeyManager.java
│   │   │   │                   ├── hybrid/
│   │   │   │                   │   ├── BUILD.bazel
│   │   │   │                   │   ├── EciesAeadHkdfPrivateKeyManager.java
│   │   │   │                   │   ├── EciesAeadHkdfPublicKeyManager.java
│   │   │   │                   │   ├── EciesParameters.java
│   │   │   │                   │   ├── EciesPrivateKey.java
│   │   │   │                   │   ├── EciesPublicKey.java
│   │   │   │                   │   ├── HpkeParameters.java
│   │   │   │                   │   ├── HpkePrivateKey.java
│   │   │   │                   │   ├── HpkeProtoSerialization.java
│   │   │   │                   │   ├── HpkePublicKey.java
│   │   │   │                   │   ├── HybridConfig.java
│   │   │   │                   │   ├── HybridDecryptConfig.java
│   │   │   │                   │   ├── HybridDecryptFactory.java
│   │   │   │                   │   ├── HybridDecryptWrapper.java
│   │   │   │                   │   ├── HybridEncryptConfig.java
│   │   │   │                   │   ├── HybridEncryptFactory.java
│   │   │   │                   │   ├── HybridEncryptWrapper.java
│   │   │   │                   │   ├── HybridKeyTemplates.java
│   │   │   │                   │   ├── HybridParameters.java
│   │   │   │                   │   ├── HybridPrivateKey.java
│   │   │   │                   │   ├── HybridPublicKey.java
│   │   │   │                   │   ├── HybridUtil.java
│   │   │   │                   │   ├── PredefinedHybridParameters.java
│   │   │   │                   │   ├── internal/
│   │   │   │                   │   │   ├── AesGcmHpkeAead.java
│   │   │   │                   │   │   ├── BUILD.bazel
│   │   │   │                   │   │   ├── ChaCha20Poly1305HpkeAead.java
│   │   │   │                   │   │   ├── EciesProtoSerialization.java
│   │   │   │                   │   │   ├── HkdfHpkeKdf.java
│   │   │   │                   │   │   ├── HpkeAead.java
│   │   │   │                   │   │   ├── HpkeContext.java
│   │   │   │                   │   │   ├── HpkeDecrypt.java
│   │   │   │                   │   │   ├── HpkeEncrypt.java
│   │   │   │                   │   │   ├── HpkeKdf.java
│   │   │   │                   │   │   ├── HpkeKem.java
│   │   │   │                   │   │   ├── HpkeKemEncapOutput.java
│   │   │   │                   │   │   ├── HpkeKemKeyFactory.java
│   │   │   │                   │   │   ├── HpkeKemPrivateKey.java
│   │   │   │                   │   │   ├── HpkePrimitiveFactory.java
│   │   │   │                   │   │   ├── HpkePrivateKeyManager.java
│   │   │   │                   │   │   ├── HpkePublicKeyManager.java
│   │   │   │                   │   │   ├── HpkeUtil.java
│   │   │   │                   │   │   ├── LegacyFullHybridDecrypt.java
│   │   │   │                   │   │   ├── LegacyFullHybridEncrypt.java
│   │   │   │                   │   │   ├── NistCurvesHpkeKem.java
│   │   │   │                   │   │   ├── NistCurvesHpkeKemPrivateKey.java
│   │   │   │                   │   │   ├── X25519HpkeKem.java
│   │   │   │                   │   │   ├── X25519HpkeKemPrivateKey.java
│   │   │   │                   │   │   └── testing/
│   │   │   │                   │   │       ├── BUILD.bazel
│   │   │   │                   │   │       ├── EciesAeadHkdfTestUtil.java
│   │   │   │                   │   │       ├── HpkeTestUtil.java
│   │   │   │                   │   │       ├── HybridTestVector.java
│   │   │   │                   │   │       ├── LegacyHybridDecryptKeyManager.java
│   │   │   │                   │   │       └── LegacyHybridEncryptKeyManager.java
│   │   │   │                   │   └── subtle/
│   │   │   │                   │       ├── AeadOrDaead.java
│   │   │   │                   │       ├── BUILD.bazel
│   │   │   │                   │       ├── RsaKem.java
│   │   │   │                   │       ├── RsaKemHybridDecrypt.java
│   │   │   │                   │       └── RsaKemHybridEncrypt.java
│   │   │   │                   ├── integration/
│   │   │   │                   │   ├── android/
│   │   │   │                   │   │   ├── AndroidKeysetManager.java
│   │   │   │                   │   │   ├── AndroidKeystoreAesGcm.java
│   │   │   │                   │   │   ├── AndroidKeystoreKmsClient.java
│   │   │   │                   │   │   ├── BUILD.bazel
│   │   │   │                   │   │   ├── SharedPrefKeysetReader.java
│   │   │   │                   │   │   ├── SharedPrefKeysetWriter.java
│   │   │   │                   │   │   └── internal/
│   │   │   │                   │   │       └── FakeAndroidKeystoreProvider.java
│   │   │   │                   │   ├── awskms/
│   │   │   │                   │   │   ├── AwsKmsAead.java
│   │   │   │                   │   │   ├── AwsKmsClient.java
│   │   │   │                   │   │   ├── BUILD.bazel
│   │   │   │                   │   │   └── FakeAwsKms.java
│   │   │   │                   │   ├── gcpkms/
│   │   │   │                   │   │   ├── BUILD.bazel
│   │   │   │                   │   │   ├── FakeCloudKms.java
│   │   │   │                   │   │   ├── FakeKeyManagementServiceClient.java
│   │   │   │                   │   │   ├── GcpKmsAead.java
│   │   │   │                   │   │   └── GcpKmsClient.java
│   │   │   │                   │   └── hcvault/
│   │   │   │                   │       ├── BUILD.bazel
│   │   │   │                   │       ├── FakeHcVault.java
│   │   │   │                   │       └── HcVaultAead.java
│   │   │   │                   ├── internal/
│   │   │   │                   │   ├── BUILD.bazel
│   │   │   │                   │   ├── BigIntegerEncoding.java
│   │   │   │                   │   ├── BuildDispatchedCode.java
│   │   │   │                   │   ├── Curve25519.java
│   │   │   │                   │   ├── Ed25519.java
│   │   │   │                   │   ├── Ed25519Constants.java
│   │   │   │                   │   ├── EllipticCurvesUtil.java
│   │   │   │                   │   ├── EnumTypeProtoConverter.java
│   │   │   │                   │   ├── Field25519.java
│   │   │   │                   │   ├── InternalConfiguration.java
│   │   │   │                   │   ├── JsonParser.java
│   │   │   │                   │   ├── KeyManagerRegistry.java
│   │   │   │                   │   ├── KeyParser.java
│   │   │   │                   │   ├── KeySerializer.java
│   │   │   │                   │   ├── KeyStatusTypeProtoConverter.java
│   │   │   │                   │   ├── KeyTemplateProtoConverter.java
│   │   │   │                   │   ├── KeyTester.java
│   │   │   │                   │   ├── LegacyKeyManagerImpl.java
│   │   │   │                   │   ├── LegacyProtoKey.java
│   │   │   │                   │   ├── LegacyProtoParameters.java
│   │   │   │                   │   ├── MonitoringUtil.java
│   │   │   │                   │   ├── MutableKeyCreationRegistry.java
│   │   │   │                   │   ├── MutableKeyDerivationRegistry.java
│   │   │   │                   │   ├── MutableMonitoringRegistry.java
│   │   │   │                   │   ├── MutableParametersRegistry.java
│   │   │   │                   │   ├── MutablePrimitiveRegistry.java
│   │   │   │                   │   ├── MutableSerializationRegistry.java
│   │   │   │                   │   ├── OutputPrefixUtil.java
│   │   │   │                   │   ├── ParametersParser.java
│   │   │   │                   │   ├── ParametersSerializer.java
│   │   │   │                   │   ├── PrimitiveConstructor.java
│   │   │   │                   │   ├── PrimitiveFactory.java
│   │   │   │                   │   ├── PrimitiveRegistry.java
│   │   │   │                   │   ├── PrimitiveSet.java
│   │   │   │                   │   ├── ProtoKeySerialization.java
│   │   │   │                   │   ├── ProtoParametersSerialization.java
│   │   │   │                   │   ├── Random.java
│   │   │   │                   │   ├── RegistryConfiguration.java
│   │   │   │                   │   ├── Serialization.java
│   │   │   │                   │   ├── SerializationRegistry.java
│   │   │   │                   │   ├── SlowInputStream.java
│   │   │   │                   │   ├── TinkBugException.java
│   │   │   │                   │   ├── Util.java
│   │   │   │                   │   └── testing/
│   │   │   │                   │       ├── Asserts.java
│   │   │   │                   │       ├── BUILD.bazel
│   │   │   │                   │       ├── BigIntegerTestUtil.java
│   │   │   │                   │       ├── FakeMonitoringClient.java
│   │   │   │                   │       ├── KeyWithSerialization.java
│   │   │   │                   │       └── ParametersWithSerialization.java
│   │   │   │                   ├── jwt/
│   │   │   │                   │   ├── BUILD.bazel
│   │   │   │                   │   ├── JsonUtil.java
│   │   │   │                   │   ├── JwkSetConverter.java
│   │   │   │                   │   ├── JwtEcdsaParameters.java
│   │   │   │                   │   ├── JwtEcdsaPrivateKey.java
│   │   │   │                   │   ├── JwtEcdsaProtoSerialization.java
│   │   │   │                   │   ├── JwtEcdsaPublicKey.java
│   │   │   │                   │   ├── JwtEcdsaSignKeyManager.java
│   │   │   │                   │   ├── JwtEcdsaVerifyKeyManager.java
│   │   │   │                   │   ├── JwtFormat.java
│   │   │   │                   │   ├── JwtHmacKey.java
│   │   │   │                   │   ├── JwtHmacKeyManager.java
│   │   │   │                   │   ├── JwtHmacParameters.java
│   │   │   │                   │   ├── JwtHmacProtoSerialization.java
│   │   │   │                   │   ├── JwtInvalidException.java
│   │   │   │                   │   ├── JwtMac.java
│   │   │   │                   │   ├── JwtMacConfig.java
│   │   │   │                   │   ├── JwtMacKey.java
│   │   │   │                   │   ├── JwtMacParameters.java
│   │   │   │                   │   ├── JwtMacWrapper.java
│   │   │   │                   │   ├── JwtNames.java
│   │   │   │                   │   ├── JwtPublicKeySign.java
│   │   │   │                   │   ├── JwtPublicKeySignInternal.java
│   │   │   │                   │   ├── JwtPublicKeySignWrapper.java
│   │   │   │                   │   ├── JwtPublicKeyVerify.java
│   │   │   │                   │   ├── JwtPublicKeyVerifyInternal.java
│   │   │   │                   │   ├── JwtPublicKeyVerifyWrapper.java
│   │   │   │                   │   ├── JwtRsaSsaPkcs1Parameters.java
│   │   │   │                   │   ├── JwtRsaSsaPkcs1PrivateKey.java
│   │   │   │                   │   ├── JwtRsaSsaPkcs1ProtoSerialization.java
│   │   │   │                   │   ├── JwtRsaSsaPkcs1PublicKey.java
│   │   │   │                   │   ├── JwtRsaSsaPkcs1SignKeyManager.java
│   │   │   │                   │   ├── JwtRsaSsaPkcs1VerifyKeyManager.java
│   │   │   │                   │   ├── JwtRsaSsaPssParameters.java
│   │   │   │                   │   ├── JwtRsaSsaPssPrivateKey.java
│   │   │   │                   │   ├── JwtRsaSsaPssProtoSerialization.java
│   │   │   │                   │   ├── JwtRsaSsaPssPublicKey.java
│   │   │   │                   │   ├── JwtRsaSsaPssSignKeyManager.java
│   │   │   │                   │   ├── JwtRsaSsaPssVerifyKeyManager.java
│   │   │   │                   │   ├── JwtSignatureConfig.java
│   │   │   │                   │   ├── JwtSignatureParameters.java
│   │   │   │                   │   ├── JwtSignaturePrivateKey.java
│   │   │   │                   │   ├── JwtSignaturePublicKey.java
│   │   │   │                   │   ├── JwtValidator.java
│   │   │   │                   │   ├── RawJwt.java
│   │   │   │                   │   └── VerifiedJwt.java
│   │   │   │                   ├── keyderivation/
│   │   │   │                   │   ├── BUILD.bazel
│   │   │   │                   │   ├── KeyDerivationConfig.java
│   │   │   │                   │   ├── KeyDerivationKey.java
│   │   │   │                   │   ├── KeyDerivationParameters.java
│   │   │   │                   │   ├── KeysetDeriver.java
│   │   │   │                   │   ├── KeysetDeriverWrapper.java
│   │   │   │                   │   ├── PrfBasedKeyDerivationKey.java
│   │   │   │                   │   ├── PrfBasedKeyDerivationParameters.java
│   │   │   │                   │   └── internal/
│   │   │   │                   │       ├── BUILD.bazel
│   │   │   │                   │       ├── KeyDeriver.java
│   │   │   │                   │       ├── KeysetDeriverWrapper.java
│   │   │   │                   │       ├── PrfBasedDeriverKeyManager.java
│   │   │   │                   │       ├── PrfBasedKeyDerivationKeyProtoSerialization.java
│   │   │   │                   │       └── PrfBasedKeyDeriver.java
│   │   │   │                   ├── mac/
│   │   │   │                   │   ├── AesCmacKey.java
│   │   │   │                   │   ├── AesCmacKeyManager.java
│   │   │   │                   │   ├── AesCmacParameters.java
│   │   │   │                   │   ├── BUILD.bazel
│   │   │   │                   │   ├── ChunkedMac.java
│   │   │   │                   │   ├── ChunkedMacComputation.java
│   │   │   │                   │   ├── ChunkedMacVerification.java
│   │   │   │                   │   ├── ChunkedMacWrapper.java
│   │   │   │                   │   ├── HmacKey.java
│   │   │   │                   │   ├── HmacKeyManager.java
│   │   │   │                   │   ├── HmacParameters.java
│   │   │   │                   │   ├── MacConfig.java
│   │   │   │                   │   ├── MacFactory.java
│   │   │   │                   │   ├── MacKey.java
│   │   │   │                   │   ├── MacKeyTemplates.java
│   │   │   │                   │   ├── MacParameters.java
│   │   │   │                   │   ├── MacWrapper.java
│   │   │   │                   │   ├── PredefinedMacParameters.java
│   │   │   │                   │   └── internal/
│   │   │   │                   │       ├── AesCmacProtoSerialization.java
│   │   │   │                   │       ├── AesCmacTestUtil.java
│   │   │   │                   │       ├── AesUtil.java
│   │   │   │                   │       ├── BUILD.bazel
│   │   │   │                   │       ├── ChunkedAesCmacComputation.java
│   │   │   │                   │       ├── ChunkedAesCmacImpl.java
│   │   │   │                   │       ├── ChunkedAesCmacVerification.java
│   │   │   │                   │       ├── ChunkedHmacComputation.java
│   │   │   │                   │       ├── ChunkedHmacImpl.java
│   │   │   │                   │       ├── ChunkedHmacVerification.java
│   │   │   │                   │       ├── HmacProtoSerialization.java
│   │   │   │                   │       ├── HmacTestUtil.java
│   │   │   │                   │       ├── LegacyFullMac.java
│   │   │   │                   │       └── LegacyHmacTestKeyManager.java
│   │   │   │                   ├── monitoring/
│   │   │   │                   │   ├── BUILD.bazel
│   │   │   │                   │   ├── MonitoringAnnotations.java
│   │   │   │                   │   ├── MonitoringClient.java
│   │   │   │                   │   └── MonitoringKeysetInfo.java
│   │   │   │                   ├── prf/
│   │   │   │                   │   ├── AesCmacPrfKey.java
│   │   │   │                   │   ├── AesCmacPrfKeyManager.java
│   │   │   │                   │   ├── AesCmacPrfParameters.java
│   │   │   │                   │   ├── BUILD.bazel
│   │   │   │                   │   ├── HkdfPrfKey.java
│   │   │   │                   │   ├── HkdfPrfKeyManager.java
│   │   │   │                   │   ├── HkdfPrfParameters.java
│   │   │   │                   │   ├── HmacPrfKey.java
│   │   │   │                   │   ├── HmacPrfKeyManager.java
│   │   │   │                   │   ├── HmacPrfParameters.java
│   │   │   │                   │   ├── PredefinedPrfParameters.java
│   │   │   │                   │   ├── Prf.java
│   │   │   │                   │   ├── PrfConfig.java
│   │   │   │                   │   ├── PrfKey.java
│   │   │   │                   │   ├── PrfKeyTemplates.java
│   │   │   │                   │   ├── PrfParameters.java
│   │   │   │                   │   ├── PrfSet.java
│   │   │   │                   │   ├── PrfSetWrapper.java
│   │   │   │                   │   └── internal/
│   │   │   │                   │       ├── AesCmacPrfProtoSerialization.java
│   │   │   │                   │       ├── BUILD.bazel
│   │   │   │                   │       ├── HkdfPrfProtoSerialization.java
│   │   │   │                   │       ├── HmacPrfProtoSerialization.java
│   │   │   │                   │       ├── LegacyFullPrf.java
│   │   │   │                   │       ├── LegacyHmacPrfTestKeyManager.java
│   │   │   │                   │       └── LegacyHmacPrfTestUtil.java
│   │   │   │                   ├── signature/
│   │   │   │                   │   ├── BUILD.bazel
│   │   │   │                   │   ├── EcdsaParameters.java
│   │   │   │                   │   ├── EcdsaPrivateKey.java
│   │   │   │                   │   ├── EcdsaPublicKey.java
│   │   │   │                   │   ├── EcdsaSignKeyManager.java
│   │   │   │                   │   ├── EcdsaVerifyKeyManager.java
│   │   │   │                   │   ├── Ed25519Parameters.java
│   │   │   │                   │   ├── Ed25519PrivateKey.java
│   │   │   │                   │   ├── Ed25519PrivateKeyManager.java
│   │   │   │                   │   ├── Ed25519PublicKey.java
│   │   │   │                   │   ├── Ed25519PublicKeyManager.java
│   │   │   │                   │   ├── PredefinedSignatureParameters.java
│   │   │   │                   │   ├── PublicKeySignConfig.java
│   │   │   │                   │   ├── PublicKeySignFactory.java
│   │   │   │                   │   ├── PublicKeySignWrapper.java
│   │   │   │                   │   ├── PublicKeyVerifyConfig.java
│   │   │   │                   │   ├── PublicKeyVerifyFactory.java
│   │   │   │                   │   ├── PublicKeyVerifyWrapper.java
│   │   │   │                   │   ├── RsaSsaPkcs1Parameters.java
│   │   │   │                   │   ├── RsaSsaPkcs1PrivateKey.java
│   │   │   │                   │   ├── RsaSsaPkcs1PublicKey.java
│   │   │   │                   │   ├── RsaSsaPkcs1SignKeyManager.java
│   │   │   │                   │   ├── RsaSsaPkcs1VerifyKeyManager.java
│   │   │   │                   │   ├── RsaSsaPssParameters.java
│   │   │   │                   │   ├── RsaSsaPssPrivateKey.java
│   │   │   │                   │   ├── RsaSsaPssPublicKey.java
│   │   │   │                   │   ├── RsaSsaPssSignKeyManager.java
│   │   │   │                   │   ├── RsaSsaPssVerifyKeyManager.java
│   │   │   │                   │   ├── SignatureConfig.java
│   │   │   │                   │   ├── SignatureKeyTemplates.java
│   │   │   │                   │   ├── SignatureParameters.java
│   │   │   │                   │   ├── SignaturePemKeysetReader.java
│   │   │   │                   │   ├── SignaturePrivateKey.java
│   │   │   │                   │   ├── SignaturePublicKey.java
│   │   │   │                   │   └── internal/
│   │   │   │                   │       ├── BUILD.bazel
│   │   │   │                   │       ├── EcdsaProtoSerialization.java
│   │   │   │                   │       ├── Ed25519ProtoSerialization.java
│   │   │   │                   │       ├── LegacyFullSign.java
│   │   │   │                   │       ├── LegacyFullVerify.java
│   │   │   │                   │       ├── RsaSsaPkcs1ProtoSerialization.java
│   │   │   │                   │       ├── RsaSsaPssProtoSerialization.java
│   │   │   │                   │       ├── SigUtil.java
│   │   │   │                   │       └── testing/
│   │   │   │                   │           ├── BUILD.bazel
│   │   │   │                   │           ├── EcdsaTestUtil.java
│   │   │   │                   │           ├── Ed25519TestUtil.java
│   │   │   │                   │           ├── LegacyPublicKeySignKeyManager.java
│   │   │   │                   │           ├── LegacyPublicKeyVerifyKeyManager.java
│   │   │   │                   │           ├── RsaSsaPkcs1TestUtil.java
│   │   │   │                   │           ├── RsaSsaPssTestUtil.java
│   │   │   │                   │           └── SignatureTestVector.java
│   │   │   │                   ├── streamingaead/
│   │   │   │                   │   ├── AesCtrHmacStreamingKey.java
│   │   │   │                   │   ├── AesCtrHmacStreamingKeyManager.java
│   │   │   │                   │   ├── AesCtrHmacStreamingParameters.java
│   │   │   │                   │   ├── AesGcmHkdfStreamingKey.java
│   │   │   │                   │   ├── AesGcmHkdfStreamingKeyManager.java
│   │   │   │                   │   ├── AesGcmHkdfStreamingParameters.java
│   │   │   │                   │   ├── BUILD.bazel
│   │   │   │                   │   ├── InputStreamDecrypter.java
│   │   │   │                   │   ├── PredefinedStreamingAeadParameters.java
│   │   │   │                   │   ├── ReadableByteChannelDecrypter.java
│   │   │   │                   │   ├── SeekableByteChannelDecrypter.java
│   │   │   │                   │   ├── StreamingAeadConfig.java
│   │   │   │                   │   ├── StreamingAeadFactory.java
│   │   │   │                   │   ├── StreamingAeadHelper.java
│   │   │   │                   │   ├── StreamingAeadKey.java
│   │   │   │                   │   ├── StreamingAeadKeyTemplates.java
│   │   │   │                   │   ├── StreamingAeadParameters.java
│   │   │   │                   │   ├── StreamingAeadUtil.java
│   │   │   │                   │   ├── StreamingAeadWrapper.java
│   │   │   │                   │   └── internal/
│   │   │   │                   │       ├── AesCtrHmacStreamingProtoSerialization.java
│   │   │   │                   │       ├── AesGcmHkdfStreamingProtoSerialization.java
│   │   │   │                   │       ├── BUILD.bazel
│   │   │   │                   │       ├── LegacyAesGcmHkdfStreamingTestKeyManager.java
│   │   │   │                   │       └── LegacyFullStreamingAead.java
│   │   │   │                   ├── subtle/
│   │   │   │                   │   ├── AesCtrHmacStreaming.java
│   │   │   │                   │   ├── AesCtrJceCipher.java
│   │   │   │                   │   ├── AesEaxJce.java
│   │   │   │                   │   ├── AesGcmHkdfStreaming.java
│   │   │   │                   │   ├── AesGcmJce.java
│   │   │   │                   │   ├── AesSiv.java
│   │   │   │                   │   ├── BUILD.bazel
│   │   │   │                   │   ├── Base64.java
│   │   │   │                   │   ├── Bytes.java
│   │   │   │                   │   ├── ChaCha20.java
│   │   │   │                   │   ├── ChaCha20Poly1305.java
│   │   │   │                   │   ├── EcdsaSignJce.java
│   │   │   │                   │   ├── EcdsaVerifyJce.java
│   │   │   │                   │   ├── EciesAeadHkdfDemHelper.java
│   │   │   │                   │   ├── EciesAeadHkdfHybridDecrypt.java
│   │   │   │                   │   ├── EciesAeadHkdfHybridEncrypt.java
│   │   │   │                   │   ├── EciesHkdfRecipientKem.java
│   │   │   │                   │   ├── EciesHkdfSenderKem.java
│   │   │   │                   │   ├── Ed25519Sign.java
│   │   │   │                   │   ├── Ed25519Verify.java
│   │   │   │                   │   ├── EllipticCurves.java
│   │   │   │                   │   ├── EncryptThenAuthenticate.java
│   │   │   │                   │   ├── EngineFactory.java
│   │   │   │                   │   ├── EngineWrapper.java
│   │   │   │                   │   ├── Enums.java
│   │   │   │                   │   ├── Hex.java
│   │   │   │                   │   ├── Hkdf.java
│   │   │   │                   │   ├── IndCpaCipher.java
│   │   │   │                   │   ├── Kwp.java
│   │   │   │                   │   ├── NonceBasedStreamingAead.java
│   │   │   │                   │   ├── PemKeyType.java
│   │   │   │                   │   ├── PrfAesCmac.java
│   │   │   │                   │   ├── PrfHmacJce.java
│   │   │   │                   │   ├── PrfMac.java
│   │   │   │                   │   ├── Random.java
│   │   │   │                   │   ├── RewindableReadableByteChannel.java
│   │   │   │                   │   ├── RsaSsaPkcs1SignJce.java
│   │   │   │                   │   ├── RsaSsaPkcs1VerifyJce.java
│   │   │   │                   │   ├── RsaSsaPssSignJce.java
│   │   │   │                   │   ├── RsaSsaPssVerifyJce.java
│   │   │   │                   │   ├── SelfKeyTestValidators.java
│   │   │   │                   │   ├── StreamSegmentDecrypter.java
│   │   │   │                   │   ├── StreamSegmentEncrypter.java
│   │   │   │                   │   ├── StreamingAeadDecryptingChannel.java
│   │   │   │                   │   ├── StreamingAeadDecryptingStream.java
│   │   │   │                   │   ├── StreamingAeadEncryptingChannel.java
│   │   │   │                   │   ├── StreamingAeadEncryptingStream.java
│   │   │   │                   │   ├── StreamingAeadSeekableDecryptingChannel.java
│   │   │   │                   │   ├── SubtleUtil.java
│   │   │   │                   │   ├── Validators.java
│   │   │   │                   │   ├── X25519.java
│   │   │   │                   │   ├── XChaCha20.java
│   │   │   │                   │   ├── XChaCha20Poly1305.java
│   │   │   │                   │   └── prf/
│   │   │   │                   │       ├── BUILD.bazel
│   │   │   │                   │       ├── HkdfStreamingPrf.java
│   │   │   │                   │       ├── PrfImpl.java
│   │   │   │                   │       └── StreamingPrf.java
│   │   │   │                   ├── testing/
│   │   │   │                   │   ├── BUILD.bazel
│   │   │   │                   │   ├── FakeKmsClient.java
│   │   │   │                   │   ├── HpkeTestEncryption.java
│   │   │   │                   │   ├── HpkeTestId.java
│   │   │   │                   │   ├── HpkeTestSetup.java
│   │   │   │                   │   ├── HpkeTestUtil.java
│   │   │   │                   │   ├── HpkeTestVector.java
│   │   │   │                   │   ├── StreamingTestUtil.java
│   │   │   │                   │   ├── TestUtil.java
│   │   │   │                   │   └── WycheproofTestUtil.java
│   │   │   │                   ├── tinkkey/
│   │   │   │                   │   ├── BUILD.bazel
│   │   │   │                   │   ├── KeyAccess.java
│   │   │   │                   │   ├── KeyHandle.java
│   │   │   │                   │   ├── SecretKeyAccess.java
│   │   │   │                   │   ├── TinkKey.java
│   │   │   │                   │   └── internal/
│   │   │   │                   │       ├── BUILD.bazel
│   │   │   │                   │       ├── InternalKeyHandle.java
│   │   │   │                   │       └── ProtoKey.java
│   │   │   │                   └── util/
│   │   │   │                       ├── BUILD.bazel
│   │   │   │                       ├── Bytes.java
│   │   │   │                       ├── KeysDownloader.java
│   │   │   │                       ├── SecretBigInteger.java
│   │   │   │                       └── SecretBytes.java
│   │   │   └── resources/
│   │   │       └── META-INF/
│   │   │           └── proguard/
│   │   │               └── protobuf.pro
│   │   └── test/
│   │       ├── BUILD.bazel
│   │       └── java/
│   │           └── com/
│   │               └── google/
│   │                   └── crypto/
│   │                       └── tink/
│   │                           ├── BUILD.bazel
│   │                           ├── BinaryKeysetReaderTest.java
│   │                           ├── CleartextKeysetHandleTest.java
│   │                           ├── ConfigTest.java
│   │                           ├── ConfigurationFips140v2Test.java
│   │                           ├── ConfigurationFips140v2WithoutConscryptTest.java
│   │                           ├── ConfigurationV0Test.java
│   │                           ├── CryptoFormatTest.java
│   │                           ├── IntegrationTest.java
│   │                           ├── JsonKeysetReaderTest.java
│   │                           ├── JsonKeysetWriterTest.java
│   │                           ├── KeyTemplateTest.java
│   │                           ├── KeyTemplatesAsParametersTest.java
│   │                           ├── KeyTemplatesTest.java
│   │                           ├── KeysetHandleFullPrimitiveTest.java
│   │                           ├── KeysetHandleTest.java
│   │                           ├── KeysetManagerTest.java
│   │                           ├── LateRegistrationTest.java
│   │                           ├── LegacyKeysetSerializationTest.java
│   │                           ├── MonitoringUtilTest.java
│   │                           ├── NoSecretKeysetHandleTest.java
│   │                           ├── PemKeyTypeTest.java
│   │                           ├── RegistryConfigurationTest.java
│   │                           ├── RegistryMultithreadTest.java
│   │                           ├── RegistryTest.java
│   │                           ├── SecretKeyAccessTest.java
│   │                           ├── TinkJsonProtoKeysetFormatTest.java
│   │                           ├── TinkProtoKeysetFormatTest.java
│   │                           ├── TinkProtoParametersFormatTest.java
│   │                           ├── TinkProtoTest.java
│   │                           ├── UtilTest.java
│   │                           ├── VersionTest.java
│   │                           ├── aead/
│   │                           │   ├── AeadConfigTest.java
│   │                           │   ├── AeadFactoryTest.java
│   │                           │   ├── AeadFactoryWithoutWrapperRegisteredTest.java
│   │                           │   ├── AeadKeyTemplatesTest.java
│   │                           │   ├── AeadTest.java
│   │                           │   ├── AeadWrapperTest.java
│   │                           │   ├── AesCtrHmacAeadKeyManagerTest.java
│   │                           │   ├── AesCtrHmacAeadKeyTest.java
│   │                           │   ├── AesCtrHmacAeadParametersTest.java
│   │                           │   ├── AesEaxKeyManagerTest.java
│   │                           │   ├── AesEaxKeyTest.java
│   │                           │   ├── AesEaxParametersTest.java
│   │                           │   ├── AesGcmKeyManagerTest.java
│   │                           │   ├── AesGcmKeyTest.java
│   │                           │   ├── AesGcmParametersTest.java
│   │                           │   ├── AesGcmSivKeyManagerTest.java
│   │                           │   ├── AesGcmSivKeyTest.java
│   │                           │   ├── AesGcmSivParametersTest.java
│   │                           │   ├── BUILD.bazel
│   │                           │   ├── ChaCha20Poly1305KeyManagerTest.java
│   │                           │   ├── ChaCha20Poly1305KeyTest.java
│   │                           │   ├── ChaCha20Poly1305ParametersTest.java
│   │                           │   ├── KmsAeadKeyManagerTest.java
│   │                           │   ├── KmsEnvelopeAeadKeyManagerTest.java
│   │                           │   ├── KmsEnvelopeAeadTest.java
│   │                           │   ├── LegacyKmsAeadKeyTest.java
│   │                           │   ├── LegacyKmsAeadParametersTest.java
│   │                           │   ├── LegacyKmsAeadProtoSerializationTest.java
│   │                           │   ├── LegacyKmsEnvelopeAeadKeyTest.java
│   │                           │   ├── LegacyKmsEnvelopeAeadParametersTest.java
│   │                           │   ├── LegacyKmsEnvelopeAeadProtoSerializationTest.java
│   │                           │   ├── PredefinedAeadParametersTest.java
│   │                           │   ├── XChaCha20Poly1305KeyManagerTest.java
│   │                           │   ├── XChaCha20Poly1305KeyTest.java
│   │                           │   ├── XChaCha20Poly1305ParametersTest.java
│   │                           │   ├── internal/
│   │                           │   │   ├── AesCtrHmacAeadProtoSerializationTest.java
│   │                           │   │   ├── AesEaxProtoSerializationTest.java
│   │                           │   │   ├── AesGcmProtoSerializationTest.java
│   │                           │   │   ├── AesGcmSivProtoSerializationTest.java
│   │                           │   │   ├── BUILD.bazel
│   │                           │   │   ├── ChaCha20Poly1305JceTest.java
│   │                           │   │   ├── ChaCha20Poly1305ProtoSerializationTest.java
│   │                           │   │   ├── ChaCha20UtilTest.java
│   │                           │   │   ├── InsecureNonceAesGcmJceTest.java
│   │                           │   │   ├── InsecureNonceChaCha20Poly1305JceTest.java
│   │                           │   │   ├── InsecureNonceChaCha20Poly1305Test.java
│   │                           │   │   ├── InsecureNonceChaCha20Test.java
│   │                           │   │   ├── InsecureNonceXChaCha20Poly1305Test.java
│   │                           │   │   ├── InsecureNonceXChaCha20Test.java
│   │                           │   │   ├── LegacyAesCtrHmacTestKeyManagerTest.java
│   │                           │   │   ├── LegacyFullAeadIntegrationTest.java
│   │                           │   │   ├── LegacyFullAeadTest.java
│   │                           │   │   ├── Poly1305Test.java
│   │                           │   │   ├── XChaCha20Poly1305JceTest.java
│   │                           │   │   └── XChaCha20Poly1305ProtoSerializationTest.java
│   │                           │   └── subtle/
│   │                           │       ├── AesGcmSivTest.java
│   │                           │       └── BUILD.bazel
│   │                           ├── config/
│   │                           │   ├── BUILD.bazel
│   │                           │   ├── TinkConfigTest.java
│   │                           │   ├── TinkFipsTest.java
│   │                           │   └── internal/
│   │                           │       ├── BUILD.bazel
│   │                           │       └── TinkFipsUtilTest.java
│   │                           ├── custom/
│   │                           │   ├── BUILD.bazel
│   │                           │   └── CustomAeadKeyManagerTest.java
│   │                           ├── daead/
│   │                           │   ├── AesSivKeyManagerTest.java
│   │                           │   ├── AesSivKeyTest.java
│   │                           │   ├── AesSivParametersTest.java
│   │                           │   ├── BUILD.bazel
│   │                           │   ├── DaeadTest.java
│   │                           │   ├── DeterministicAeadConfigTest.java
│   │                           │   ├── DeterministicAeadFactoryTest.java
│   │                           │   ├── DeterministicAeadFactoryWithoutWrapperRegisteredTest.java
│   │                           │   ├── DeterministicAeadKeyTemplatesTest.java
│   │                           │   ├── DeterministicAeadWrapperTest.java
│   │                           │   ├── KeyManagerIntegrationTest.java
│   │                           │   ├── PredefinedDeterministicAeadParametersTest.java
│   │                           │   └── internal/
│   │                           │       ├── AesSivProtoSerializationTest.java
│   │                           │       ├── BUILD.bazel
│   │                           │       ├── LegacyFullDeterministicAeadTest.java
│   │                           │       └── testing/
│   │                           │           ├── BUILD.bazel
│   │                           │           └── LegacyAesSivTestKeyManagerTest.java
│   │                           ├── hybrid/
│   │                           │   ├── BUILD.bazel
│   │                           │   ├── EciesAeadHkdfHybridDecryptTest.java
│   │                           │   ├── EciesAeadHkdfHybridEncryptTest.java
│   │                           │   ├── EciesAeadHkdfPrivateKeyManagerTest.java
│   │                           │   ├── EciesParametersTest.java
│   │                           │   ├── EciesPrivateKeyTest.java
│   │                           │   ├── EciesPublicKeyTest.java
│   │                           │   ├── HpkeParametersTest.java
│   │                           │   ├── HpkePrivateKeyTest.java
│   │                           │   ├── HpkeProtoSerializationTest.java
│   │                           │   ├── HpkePublicKeyTest.java
│   │                           │   ├── HybridConfigTest.java
│   │                           │   ├── HybridDecryptFactoryTest.java
│   │                           │   ├── HybridDecryptWrapperTest.java
│   │                           │   ├── HybridEncryptDecryptFactoryWithoutWrapperRegisteredTest.java
│   │                           │   ├── HybridEncryptFactoryTest.java
│   │                           │   ├── HybridEncryptWrapperTest.java
│   │                           │   ├── HybridKeyTemplatesTest.java
│   │                           │   ├── HybridTest.java
│   │                           │   ├── KeyManagerIntegrationTest.java
│   │                           │   ├── PredefinedHybridParametersTest.java
│   │                           │   ├── internal/
│   │                           │   │   ├── AesGcmHpkeAeadTest.java
│   │                           │   │   ├── BUILD.bazel
│   │                           │   │   ├── ChaCha20Poly1305HpkeAeadTest.java
│   │                           │   │   ├── EciesProtoSerializationTest.java
│   │                           │   │   ├── HkdfHpkeKdfTest.java
│   │                           │   │   ├── HpkeContextTest.java
│   │                           │   │   ├── HpkeEncryptDecryptTest.java
│   │                           │   │   ├── HpkeKemKeyFactoryTest.java
│   │                           │   │   ├── HpkePrimitiveFactoryTest.java
│   │                           │   │   ├── HpkePrivateKeyManagerTest.java
│   │                           │   │   ├── HpkeUtilTest.java
│   │                           │   │   ├── LegacyFullHybridDecryptTest.java
│   │                           │   │   ├── LegacyFullHybridEncryptTest.java
│   │                           │   │   ├── NistCurvesHpkeKemTest.java
│   │                           │   │   ├── X25519HpkeKemPrivateKeyTest.java
│   │                           │   │   ├── X25519HpkeKemTest.java
│   │                           │   │   └── testing/
│   │                           │   │       ├── BUILD.bazel
│   │                           │   │       ├── LegacyHybridDecryptKeyManagerTest.java
│   │                           │   │       └── LegacyHybridEncryptKeyManagerTest.java
│   │                           │   └── subtle/
│   │                           │       ├── AeadOrDaeadTest.java
│   │                           │       ├── BUILD.bazel
│   │                           │       ├── RsaKemHybridDecryptTest.java
│   │                           │       ├── RsaKemHybridEncryptTest.java
│   │                           │       └── RsaKemTest.java
│   │                           ├── integration/
│   │                           │   ├── awskms/
│   │                           │   │   ├── AwsKmsAeadTest.java
│   │                           │   │   ├── AwsKmsClientTest.java
│   │                           │   │   ├── BUILD.bazel
│   │                           │   │   └── FakeAwsKmsTest.java
│   │                           │   ├── gcpkms/
│   │                           │   │   ├── BUILD.bazel
│   │                           │   │   ├── FakeCloudKmsTest.java
│   │                           │   │   ├── GcpKmsAeadTest.java
│   │                           │   │   ├── GcpKmsClientTest.java
│   │                           │   │   └── GcpKmsIntegrationTest.java
│   │                           │   └── hcvault/
│   │                           │       ├── BUILD.bazel
│   │                           │       ├── FakeHcVaultTest.java
│   │                           │       └── HcVaultAeadTest.java
│   │                           ├── internal/
│   │                           │   ├── BUILD.bazel
│   │                           │   ├── BigIntegerEncodingTest.java
│   │                           │   ├── Curve25519Test.java
│   │                           │   ├── Ed25519Test.java
│   │                           │   ├── EllipticCurvesUtilTest.java
│   │                           │   ├── EnumTypeProtoConverterTest.java
│   │                           │   ├── Field25519Test.java
│   │                           │   ├── InternalConfigurationTest.java
│   │                           │   ├── JsonParserTest.java
│   │                           │   ├── KeyManagerRegistryTest.java
│   │                           │   ├── KeyParserTest.java
│   │                           │   ├── KeySerializerTest.java
│   │                           │   ├── KeyTemplateProtoConverterTest.java
│   │                           │   ├── KeyTesterTest.java
│   │                           │   ├── LegacyKeyManagerImplTest.java
│   │                           │   ├── LegacyProtoKeyTest.java
│   │                           │   ├── LegacyProtoParametersTest.java
│   │                           │   ├── MutableKeyCreationRegistryTest.java
│   │                           │   ├── MutableKeyDerivationRegistryTest.java
│   │                           │   ├── MutableMonitoringRegistryTest.java
│   │                           │   ├── MutableParametersRegistryTest.java
│   │                           │   ├── MutablePrimitiveRegistryMultithreadTest.java
│   │                           │   ├── MutablePrimitiveRegistryTest.java
│   │                           │   ├── MutableSerializationRegistryMultithreadTest.java
│   │                           │   ├── MutableSerializationRegistryTest.java
│   │                           │   ├── OutputPrefixUtilTest.java
│   │                           │   ├── ParametersParserTest.java
│   │                           │   ├── ParametersSerializerTest.java
│   │                           │   ├── PrimitiveConstructorTest.java
│   │                           │   ├── PrimitiveRegistryTest.java
│   │                           │   ├── PrimitiveSetTest.java
│   │                           │   ├── ProtoKeySerializationTest.java
│   │                           │   ├── ProtoParametersSerializationTest.java
│   │                           │   ├── RandomTest.java
│   │                           │   ├── RandomWithoutConscryptTest.java
│   │                           │   ├── RandomWithoutInstallingConscryptTest.java
│   │                           │   ├── RegistryConfigurationTest.java
│   │                           │   ├── SerializationRegistryTest.java
│   │                           │   ├── SlowInputStreamTest.java
│   │                           │   ├── TinkBugExceptionTest.java
│   │                           │   ├── UtilTest.java
│   │                           │   └── testing/
│   │                           │       ├── AssertsTest.java
│   │                           │       ├── BUILD.bazel
│   │                           │       ├── BigIntegerTestUtilTest.java
│   │                           │       ├── FakeMonitoringClientTest.java
│   │                           │       ├── KeyWithSerializationTest.java
│   │                           │       └── ParametersWithSerializationTest.java
│   │                           ├── jwt/
│   │                           │   ├── BUILD.bazel
│   │                           │   ├── JsonUtilTest.java
│   │                           │   ├── JwkSetConverterTest.java
│   │                           │   ├── JwtEcdsaParametersTest.java
│   │                           │   ├── JwtEcdsaPrivateKeyTest.java
│   │                           │   ├── JwtEcdsaProtoSerializationTest.java
│   │                           │   ├── JwtEcdsaPublicKeyTest.java
│   │                           │   ├── JwtEcdsaSignKeyManagerTest.java
│   │                           │   ├── JwtEcdsaVerifyKeyManagerTest.java
│   │                           │   ├── JwtFormatTest.java
│   │                           │   ├── JwtHmacKeyManagerTest.java
│   │                           │   ├── JwtHmacKeyTest.java
│   │                           │   ├── JwtHmacParametersTest.java
│   │                           │   ├── JwtHmacProtoSerializationTest.java
│   │                           │   ├── JwtMacConfigTest.java
│   │                           │   ├── JwtMacWrapperTest.java
│   │                           │   ├── JwtPublicKeySignVerifyWrappersTest.java
│   │                           │   ├── JwtRsaSsaPkcs1ParametersTest.java
│   │                           │   ├── JwtRsaSsaPkcs1PrivateKeyTest.java
│   │                           │   ├── JwtRsaSsaPkcs1ProtoSerializationTest.java
│   │                           │   ├── JwtRsaSsaPkcs1PublicKeyTest.java
│   │                           │   ├── JwtRsaSsaPkcs1SignKeyManagerTest.java
│   │                           │   ├── JwtRsaSsaPssParametersTest.java
│   │                           │   ├── JwtRsaSsaPssPrivateKeyTest.java
│   │                           │   ├── JwtRsaSsaPssProtoSerializationTest.java
│   │                           │   ├── JwtRsaSsaPssPublicKeyTest.java
│   │                           │   ├── JwtRsaSsaPssSignKeyManagerTest.java
│   │                           │   ├── JwtRsaSsaPssVerifyKeyManagerTest.java
│   │                           │   ├── JwtSignatureConfigTest.java
│   │                           │   ├── JwtSignatureTest.java
│   │                           │   ├── JwtTest.java
│   │                           │   ├── JwtValidatorTest.java
│   │                           │   ├── RawJwtTest.java
│   │                           │   └── VerifiedJwtTest.java
│   │                           ├── keyderivation/
│   │                           │   ├── BUILD.bazel
│   │                           │   ├── KeyDerivationConfigTest.java
│   │                           │   ├── KeyDerivationTest.java
│   │                           │   ├── KeysetDeriverWrapperTest.java
│   │                           │   ├── PrfBasedKeyDerivationKeyTest.java
│   │                           │   ├── PrfBasedKeyDerivationParametersTest.java
│   │                           │   └── internal/
│   │                           │       ├── BUILD.bazel
│   │                           │       ├── KeysetDeriverWrapperTest.java
│   │                           │       ├── PrfBasedDeriverKeyManagerTest.java
│   │                           │       ├── PrfBasedDeriverSecondTest.java
│   │                           │       ├── PrfBasedKeyDerivationKeyProtoSerializationTest.java
│   │                           │       └── PrfBasedKeyDeriverTest.java
│   │                           ├── mac/
│   │                           │   ├── AesCmacKeyManagerTest.java
│   │                           │   ├── AesCmacKeyTest.java
│   │                           │   ├── AesCmacParametersTest.java
│   │                           │   ├── BUILD.bazel
│   │                           │   ├── ChunkedMacTest.java
│   │                           │   ├── ChunkedMacWrapperTest.java
│   │                           │   ├── HmacKeyManagerTest.java
│   │                           │   ├── HmacKeyTest.java
│   │                           │   ├── HmacParametersTest.java
│   │                           │   ├── MacConfigTest.java
│   │                           │   ├── MacFactoryTest.java
│   │                           │   ├── MacFactoryWithoutWrapperRegisteredTest.java
│   │                           │   ├── MacKeyTemplatesTest.java
│   │                           │   ├── MacTest.java
│   │                           │   ├── MacWrapperTest.java
│   │                           │   ├── PredefinedMacParametersTest.java
│   │                           │   └── internal/
│   │                           │       ├── AesCmacProtoSerializationTest.java
│   │                           │       ├── AesUtilTest.java
│   │                           │       ├── BUILD.bazel
│   │                           │       ├── ChunkedAesCmacTest.java
│   │                           │       ├── ChunkedHmacTest.java
│   │                           │       ├── HmacProtoSerializationTest.java
│   │                           │       ├── LegacyFullMacIntegrationTest.java
│   │                           │       └── LegacyFullMacTest.java
│   │                           ├── monitoring/
│   │                           │   ├── BUILD.bazel
│   │                           │   ├── MonitoringAnnotationsTest.java
│   │                           │   └── MonitoringKeysetInfoTest.java
│   │                           ├── prf/
│   │                           │   ├── AesCmacPrfKeyManagerTest.java
│   │                           │   ├── AesCmacPrfKeyTest.java
│   │                           │   ├── AesCmacPrfParametersTest.java
│   │                           │   ├── BUILD.bazel
│   │                           │   ├── HkdfPrfKeyManagerTest.java
│   │                           │   ├── HkdfPrfKeyTest.java
│   │                           │   ├── HkdfPrfParametersTest.java
│   │                           │   ├── HmacPrfKeyManagerTest.java
│   │                           │   ├── HmacPrfKeyTest.java
│   │                           │   ├── HmacPrfParametersTest.java
│   │                           │   ├── PredefinedPrfParametersTest.java
│   │                           │   ├── PrfConfigTest.java
│   │                           │   ├── PrfKeyTemplatesTest.java
│   │                           │   ├── PrfSetWrapperTest.java
│   │                           │   ├── PrfTest.java
│   │                           │   └── internal/
│   │                           │       ├── AesCmacPrfProtoSerializationTest.java
│   │                           │       ├── BUILD.bazel
│   │                           │       ├── HkdfPrfProtoSerializationTest.java
│   │                           │       ├── HmacPrfProtoSerializationTest.java
│   │                           │       ├── LegacyFullPrfIntegrationTest.java
│   │                           │       ├── LegacyFullPrfTest.java
│   │                           │       └── LegacyHmacPrfTestKeyManagerTest.java
│   │                           ├── signature/
│   │                           │   ├── BUILD.bazel
│   │                           │   ├── EcdsaParametersTest.java
│   │                           │   ├── EcdsaPrivateKeyTest.java
│   │                           │   ├── EcdsaPublicKeyTest.java
│   │                           │   ├── EcdsaSignKeyManagerTest.java
│   │                           │   ├── EcdsaVerifyKeyManagerTest.java
│   │                           │   ├── Ed25519ParametersTest.java
│   │                           │   ├── Ed25519PrivateKeyManagerTest.java
│   │                           │   ├── Ed25519PrivateKeyTest.java
│   │                           │   ├── Ed25519PublicKeyManagerTest.java
│   │                           │   ├── Ed25519PublicKeyTest.java
│   │                           │   ├── KeyConversionTest.java
│   │                           │   ├── KeyManagerIntegrationTest.java
│   │                           │   ├── PredefinedSignatureParametersTest.java
│   │                           │   ├── PublicKeySignFactoryTest.java
│   │                           │   ├── PublicKeySignVerifyFactoryWithoutWrapperRegisteredTest.java
│   │                           │   ├── PublicKeySignWrapperTest.java
│   │                           │   ├── PublicKeyVerifyFactoryTest.java
│   │                           │   ├── PublicKeyVerifyWrapperTest.java
│   │                           │   ├── RsaSsaPkcs1ParametersTest.java
│   │                           │   ├── RsaSsaPkcs1PrivateKeyTest.java
│   │                           │   ├── RsaSsaPkcs1PublicKeyTest.java
│   │                           │   ├── RsaSsaPkcs1SignKeyManagerTest.java
│   │                           │   ├── RsaSsaPkcs1VerifyKeyManagerTest.java
│   │                           │   ├── RsaSsaPssParametersTest.java
│   │                           │   ├── RsaSsaPssPrivateKeyTest.java
│   │                           │   ├── RsaSsaPssPublicKeyTest.java
│   │                           │   ├── RsaSsaPssSignKeyManagerTest.java
│   │                           │   ├── RsaSsaPssVerifyKeyManagerTest.java
│   │                           │   ├── SignatureConfigTest.java
│   │                           │   ├── SignatureKeyTemplatesTest.java
│   │                           │   ├── SignaturePemKeysetReaderTest.java
│   │                           │   ├── SignatureTest.java
│   │                           │   └── internal/
│   │                           │       ├── BUILD.bazel
│   │                           │       ├── EcdsaProtoSerializationTest.java
│   │                           │       ├── Ed25519ProtoSerializationTest.java
│   │                           │       ├── LegacyFullSignTest.java
│   │                           │       ├── LegacyFullVerifyTest.java
│   │                           │       ├── RsaSsaPkcs1ProtoSerializationTest.java
│   │                           │       ├── RsaSsaPssProtoSerializationTest.java
│   │                           │       ├── SigUtilTest.java
│   │                           │       └── testing/
│   │                           │           ├── BUILD.bazel
│   │                           │           ├── LegacyPublicKeySignKeyManagerTest.java
│   │                           │           └── LegacyPublicKeyVerifyKeyManagerTest.java
│   │                           ├── streamingaead/
│   │                           │   ├── AesCtrHmacStreamingKeyManagerTest.java
│   │                           │   ├── AesCtrHmacStreamingKeyTest.java
│   │                           │   ├── AesCtrHmacStreamingParametersTest.java
│   │                           │   ├── AesGcmHkdfStreamingKeyManagerTest.java
│   │                           │   ├── AesGcmHkdfStreamingKeyTest.java
│   │                           │   ├── AesGcmHkdfStreamingParametersTest.java
│   │                           │   ├── BUILD.bazel
│   │                           │   ├── PredefinedStreamingAeadParametersTest.java
│   │                           │   ├── StreamingAeadConfigTest.java
│   │                           │   ├── StreamingAeadFactoryTest.java
│   │                           │   ├── StreamingAeadFactoryWithoutWrapperRegisteredTest.java
│   │                           │   ├── StreamingAeadKeyTemplatesTest.java
│   │                           │   ├── StreamingAeadTest.java
│   │                           │   ├── StreamingAeadUtilTest.java
│   │                           │   ├── StreamingAeadWrapperLegacyTest.java
│   │                           │   ├── StreamingAeadWrapperTest.java
│   │                           │   └── internal/
│   │                           │       ├── AesCtrHmacStreamingProtoSerializationTest.java
│   │                           │       ├── AesGcmHkdfStreamingProtoSerializationTest.java
│   │                           │       ├── BUILD.bazel
│   │                           │       ├── LegacyAesGcmHkdfStreamingTestKeyManagerTest.java
│   │                           │       ├── LegacyFullStreamingAeadIntegrationTest.java
│   │                           │       └── LegacyFullStreamingAeadTest.java
│   │                           ├── subtle/
│   │                           │   ├── AeadThreadSafetyTest.java
│   │                           │   ├── AesCtrHmacStreamingTest.java
│   │                           │   ├── AesCtrJceCipherTest.java
│   │                           │   ├── AesEaxJceTest.java
│   │                           │   ├── AesGcmHkdfStreamingTest.java
│   │                           │   ├── AesGcmJceTest.java
│   │                           │   ├── AesSivTest.java
│   │                           │   ├── BUILD.bazel
│   │                           │   ├── Base64Test.java
│   │                           │   ├── BytesTest.java
│   │                           │   ├── ChaCha20Poly1305Test.java
│   │                           │   ├── ChaCha20Test.java
│   │                           │   ├── DaeadThreadSafetyTest.java
│   │                           │   ├── EcdsaSignJceTest.java
│   │                           │   ├── EcdsaVerifyJceTest.java
│   │                           │   ├── Ed25519SignTest.java
│   │                           │   ├── Ed25519VerifyTest.java
│   │                           │   ├── EllipticCurvesTest.java
│   │                           │   ├── EncryptThenAuthenticateTest.java
│   │                           │   ├── EngineFactoryFipsTest.java
│   │                           │   ├── EngineFactoryTest.java
│   │                           │   ├── HkdfTest.java
│   │                           │   ├── KwpTest.java
│   │                           │   ├── PemKeyTypeTest.java
│   │                           │   ├── PrfAesCmacTest.java
│   │                           │   ├── PrfHmacJceTest.java
│   │                           │   ├── PrfMacTest.java
│   │                           │   ├── RandomTest.java
│   │                           │   ├── RewindableReadableByteChannelTest.java
│   │                           │   ├── RsaSsaPkcs1SignJceTest.java
│   │                           │   ├── RsaSsaPkcs1VerifyJceTest.java
│   │                           │   ├── RsaSsaPssSignJceTest.java
│   │                           │   ├── RsaSsaPssVerifyJceTest.java
│   │                           │   ├── SelfKeyTestValidatorsTest.java
│   │                           │   ├── SignatureThreadSafetyTest.java
│   │                           │   ├── StreamingAeadThreadSafetyTest.java
│   │                           │   ├── SubtleUtilTest.java
│   │                           │   ├── ValidatorsTest.java
│   │                           │   ├── X25519Test.java
│   │                           │   ├── XChaCha20Poly1305Test.java
│   │                           │   ├── XChaCha20Test.java
│   │                           │   └── prf/
│   │                           │       ├── BUILD.bazel
│   │                           │       ├── HkdfStreamingPrfTest.java
│   │                           │       └── PrfImplTest.java
│   │                           ├── testing/
│   │                           │   ├── BUILD.bazel
│   │                           │   ├── FakeKmsClientTest.java
│   │                           │   ├── HpkeTestUtilTest.java
│   │                           │   └── TestUtilTest.java
│   │                           ├── tinkkey/
│   │                           │   ├── BUILD.bazel
│   │                           │   ├── KeyAccessTest.java
│   │                           │   ├── KeyHandleTest.java
│   │                           │   ├── SecretKeyAccessTest.java
│   │                           │   └── internal/
│   │                           │       ├── BUILD.bazel
│   │                           │       └── ProtoKeyTest.java
│   │                           └── util/
│   │                               ├── BUILD.bazel
│   │                               ├── BytesTest.java
│   │                               ├── KeysDownloaderTest.java
│   │                               ├── SecretBigIntegerTest.java
│   │                               └── SecretBytesTest.java
│   ├── src_android/
│   │   └── main/
│   │       └── java/
│   │           └── com/
│   │               └── google/
│   │                   └── crypto/
│   │                       └── tink/
│   │                           └── internal/
│   │                               ├── BUILD.bazel
│   │                               └── BuildDispatchedCode.java
│   ├── template_rule.bzl
│   ├── testdata/
│   │   ├── BUILD.bazel
│   │   ├── aws/
│   │   │   ├── BUILD.bazel
│   │   │   ├── README.md
│   │   │   ├── access_keys_bad.csv
│   │   │   ├── credentials.cred
│   │   │   ├── credentials.csv
│   │   │   ├── credentials.ini
│   │   │   ├── credentials_bad.csv
│   │   │   ├── credentials_bad.ini
│   │   │   ├── key_arn.txt
│   │   │   └── key_arn_bad.txt
│   │   ├── gcp/
│   │   │   ├── BUILD.bazel
│   │   │   ├── README.md
│   │   │   ├── credential.json
│   │   │   ├── credential_bad.json
│   │   │   ├── key_name.txt
│   │   │   └── key_name_bad.txt
│   │   ├── keysets/
│   │   │   └── BUILD.bazel
│   │   └── testvectors/
│   │       ├── BUILD.bazel
│   │       └── hpke_boringssl.json
│   ├── tink_java_deps.bzl
│   ├── tink_java_deps_init.bzl
│   ├── tink_version.bzl
│   └── tools/
│       ├── BUILD.bazel
│       ├── check_deps.bzl
│       ├── gen_java_test_rules.bzl
│       ├── gen_maven_jar_rules.bzl
│       ├── jar_jar.bzl
│       ├── java_single_jar.bzl
│       ├── javadoc.bzl
│       └── refaster/
│           ├── README.md
│           └── java/
│               └── com/
│                   └── google/
│                       ├── tink1_templates/
│                       │   └── AllChanges.java
│                       └── tinkuser/
│                           ├── TinkUser.java
│                           └── TinkUser.java_expected
├── kokoro/
│   ├── README.md
│   ├── gcp_ubuntu_per_language/
│   │   ├── cc/
│   │   │   ├── bazel/
│   │   │   │   └── run_tests.sh
│   │   │   ├── bazel_fips/
│   │   │   │   └── run_tests.sh
│   │   │   ├── cmake/
│   │   │   │   └── run_tests.sh
│   │   │   ├── cmake_openssl/
│   │   │   │   └── run_tests.sh
│   │   │   └── examples/
│   │   │       ├── cmake/
│   │   │       │   └── run_tests.sh
│   │   │       └── cmake_openssl/
│   │   │           └── run_tests.sh
│   │   ├── go/
│   │   │   ├── bazel/
│   │   │   │   └── run_tests.sh
│   │   │   └── gomod/
│   │   │       └── run_tests.sh
│   │   ├── java_src/
│   │   │   └── run_tests.sh
│   │   └── python/
│   │       └── pip/
│   │           └── run_tests.sh
│   ├── macos_external/
│   │   ├── cc/
│   │   │   ├── bazel/
│   │   │   │   └── run_tests.sh
│   │   │   ├── cmake/
│   │   │   │   └── run_tests.sh
│   │   │   └── examples/
│   │   │       └── cmake/
│   │   │           └── run_tests.sh
│   │   ├── go/
│   │   │   ├── bazel/
│   │   │   │   └── run_tests.sh
│   │   │   └── gomod/
│   │   │       └── run_tests.sh
│   │   ├── java_src/
│   │   │   └── run_tests.sh
│   │   ├── python/
│   │   │   └── pip/
│   │   │       └── run_tests.sh
│   │   └── tools/
│   │       └── run_tests.sh
│   ├── run_tests.sh
│   └── testutils/
│       ├── check_go_generated_files_up_to_date.sh
│       ├── copy_credentials.sh
│       ├── create_main_build_file.py
│       ├── install_cmake.sh
│       ├── install_go.sh
│       ├── install_openssl.sh
│       ├── install_protoc.sh
│       ├── install_python3.sh
│       ├── install_tink_via_pip.sh
│       ├── install_vault.sh
│       ├── run_bazel_tests.sh
│       ├── run_cmake_tests.sh
│       ├── run_go_mod_tests.sh
│       ├── run_hcvault_test_server.sh
│       ├── test_utils.sh
│       ├── update_android_sdk.sh
│       └── upgrade_gcc.sh
├── passing_test.sh
├── proto/
│   ├── BUILD.bazel
│   ├── CMakeLists.txt
│   ├── aes_cmac.proto
│   ├── aes_cmac_prf.proto
│   ├── aes_ctr.proto
│   ├── aes_ctr_hmac_aead.proto
│   ├── aes_ctr_hmac_streaming.proto
│   ├── aes_eax.proto
│   ├── aes_gcm.proto
│   ├── aes_gcm_hkdf_streaming.proto
│   ├── aes_gcm_siv.proto
│   ├── aes_siv.proto
│   ├── chacha20_poly1305.proto
│   ├── common.proto
│   ├── config.proto
│   ├── ecdsa.proto
│   ├── ecies_aead_hkdf.proto
│   ├── ed25519.proto
│   ├── empty.proto
│   ├── experimental/
│   │   └── pqcrypto/
│   │       ├── BUILD.bazel
│   │       ├── cecpq2_aead_hkdf.proto
│   │       ├── dilithium.proto
│   │       ├── falcon.proto
│   │       ├── slh_dsa.proto
│   │       └── sphincs.proto
│   ├── hkdf_prf.proto
│   ├── hmac.proto
│   ├── hmac_prf.proto
│   ├── hpke.proto
│   ├── jwt_ecdsa.proto
│   ├── jwt_hmac.proto
│   ├── jwt_rsa_ssa_pkcs1.proto
│   ├── jwt_rsa_ssa_pss.proto
│   ├── kms_aead.proto
│   ├── kms_envelope.proto
│   ├── prf_based_deriver.proto
│   ├── rsa_ssa_pkcs1.proto
│   ├── rsa_ssa_pss.proto
│   ├── test_proto.proto
│   ├── tink.proto
│   └── xchacha20_poly1305.proto
├── python/
│   ├── .bazelignore
│   ├── .bazelrc
│   ├── .bazelversion
│   ├── BUILD.bazel
│   ├── MANIFEST.in
│   ├── README.md
│   ├── VERSION
│   ├── WORKSPACE
│   ├── examples/
│   │   ├── .bazelrc
│   │   ├── .bazelversion
│   │   ├── BUILD.bazel
│   │   ├── WORKSPACE
│   │   ├── aead/
│   │   │   ├── BUILD.bazel
│   │   │   ├── README.md
│   │   │   ├── aead_basic.py
│   │   │   ├── aead_basic_test.py
│   │   │   ├── aead_cli.py
│   │   │   ├── aead_cli_test.sh
│   │   │   └── aead_test_keyset.json
│   │   ├── cleartext_keyset/
│   │   │   ├── BUILD.bazel
│   │   │   ├── README.md
│   │   │   ├── cleartext_keyset_cli.py
│   │   │   └── cleartext_keyset_cli_test.sh
│   │   ├── deterministic_aead/
│   │   │   ├── BUILD.bazel
│   │   │   ├── README.md
│   │   │   ├── deterministic_aead_basic.py
│   │   │   ├── deterministic_aead_basic_test.py
│   │   │   ├── deterministic_aead_cli.py
│   │   │   ├── deterministic_aead_cli_test.sh
│   │   │   └── deterministic_aead_test_keyset.json
│   │   ├── encrypted_keyset/
│   │   │   ├── BUILD.bazel
│   │   │   ├── README.md
│   │   │   ├── encrypted_keyset_cli.py
│   │   │   └── encrypted_keyset_cli_test.sh
│   │   ├── envelope_aead/
│   │   │   ├── BUILD.bazel
│   │   │   ├── README.md
│   │   │   ├── envelope_cli.py
│   │   │   └── envelope_cli_test.sh
│   │   ├── gcs/
│   │   │   ├── BUILD.bazel
│   │   │   ├── README.md
│   │   │   ├── gcs_envelope_aead_cli.py
│   │   │   └── gcs_envelope_aead_cli_test.sh
│   │   ├── hybrid/
│   │   │   ├── BUILD.bazel
│   │   │   ├── README.md
│   │   │   ├── hybrid_basic.py
│   │   │   ├── hybrid_basic_test.py
│   │   │   ├── hybrid_cli.py
│   │   │   ├── hybrid_cli_test.sh
│   │   │   ├── hybrid_test_private_keyset.json
│   │   │   └── hybrid_test_public_keyset.json
│   │   ├── jwt/
│   │   │   ├── BUILD.bazel
│   │   │   ├── README.md
│   │   │   ├── jwt_generate_public_jwk_set.py
│   │   │   ├── jwt_sign_cli.py
│   │   │   ├── jwt_signature_test.sh
│   │   │   ├── jwt_test_private_keyset.json
│   │   │   ├── jwt_test_public_keyset.json
│   │   │   └── jwt_verify_cli.py
│   │   ├── mac/
│   │   │   ├── BUILD.bazel
│   │   │   ├── README.md
│   │   │   ├── mac_basic.py
│   │   │   ├── mac_basic_test.py
│   │   │   ├── mac_cli.py
│   │   │   ├── mac_cli_test.sh
│   │   │   └── mac_test_keyset.json
│   │   ├── requirements.in
│   │   ├── requirements.txt
│   │   ├── signature/
│   │   │   ├── BUILD.bazel
│   │   │   ├── README.md
│   │   │   ├── signature_basic.py
│   │   │   ├── signature_basic_test.py
│   │   │   ├── signature_cli.py
│   │   │   ├── signature_cli_test.sh
│   │   │   ├── signature_test_private_keyset.json
│   │   │   └── signature_test_public_keyset.json
│   │   ├── streaming_aead/
│   │   │   ├── BUILD.bazel
│   │   │   ├── README.md
│   │   │   ├── streaming_aead_cli.py
│   │   │   ├── streaming_aead_cli_test.sh
│   │   │   └── streaming_aead_keyset.json
│   │   ├── testdata/
│   │   │   └── gcp/
│   │   │       ├── BUILD.bazel
│   │   │       ├── README.md
│   │   │       ├── credential.json
│   │   │       ├── credential_bad.json
│   │   │       ├── key_name.txt
│   │   │       └── key_name_bad.txt
│   │   └── walkthrough/
│   │       ├── BUILD.bazel
│   │       ├── create_keyset.py
│   │       ├── create_keyset_test.py
│   │       ├── load_cleartext_keyset.py
│   │       ├── load_cleartext_keyset_test.py
│   │       ├── load_encrypted_keyset.py
│   │       ├── load_encrypted_keyset_test.py
│   │       ├── obtain_and_use_a_primitive.py
│   │       ├── obtain_and_use_a_primitive_test.py
│   │       ├── write_cleartext_keyset.py
│   │       ├── write_cleartext_keyset_test.py
│   │       ├── write_keyset.py
│   │       └── write_keyset_test.py
│   ├── requirements.in
│   ├── requirements.txt
│   ├── requirements_all.txt
│   ├── requirements_awskms.in
│   ├── requirements_gcpkms.in
│   ├── requirements_hcvault.in
│   ├── setup.py
│   ├── testdata/
│   │   ├── aws/
│   │   │   ├── BUILD.bazel
│   │   │   ├── README.md
│   │   │   ├── access_keys_bad.csv
│   │   │   ├── credentials.cred
│   │   │   ├── credentials.csv
│   │   │   ├── credentials.ini
│   │   │   ├── credentials_bad.csv
│   │   │   ├── credentials_bad.ini
│   │   │   ├── key_arn.txt
│   │   │   └── key_arn_bad.txt
│   │   └── gcp/
│   │       ├── BUILD.bazel
│   │       ├── README.md
│   │       ├── credential.json
│   │       ├── credential_bad.json
│   │       ├── key_name.txt
│   │       └── key_name_bad.txt
│   ├── tink/
│   │   ├── BUILD.bazel
│   │   ├── __init__.py
│   │   ├── _insecure_keyset_handle.py
│   │   ├── _insecure_keyset_handle_test.py
│   │   ├── _json_proto_keyset_format.py
│   │   ├── _json_proto_keyset_format_test.py
│   │   ├── _keyset_handle.py
│   │   ├── _keyset_handle_test.py
│   │   ├── _keyset_reader.py
│   │   ├── _keyset_reader_test.py
│   │   ├── _keyset_writer.py
│   │   ├── _keyset_writer_test.py
│   │   ├── _kms_clients.py
│   │   ├── _kms_clients_test.py
│   │   ├── _proto_keyset_format.py
│   │   ├── _proto_keyset_format_test.py
│   │   ├── _secret_key_access.py
│   │   ├── aead/
│   │   │   ├── BUILD.bazel
│   │   │   ├── __init__.py
│   │   │   ├── _aead.py
│   │   │   ├── _aead_key_manager.py
│   │   │   ├── _aead_key_manager_test.py
│   │   │   ├── _aead_key_templates.py
│   │   │   ├── _aead_key_templates_test.py
│   │   │   ├── _aead_wrapper.py
│   │   │   ├── _aead_wrapper_test.py
│   │   │   ├── _kms_aead_key_manager.py
│   │   │   ├── _kms_aead_key_manager_test.py
│   │   │   ├── _kms_envelope_aead.py
│   │   │   └── _kms_envelope_aead_test.py
│   │   ├── cc/
│   │   │   ├── BUILD.bazel
│   │   │   ├── cc_hpke_config.cc
│   │   │   ├── cc_hpke_config.h
│   │   │   ├── cc_jwt_config.cc
│   │   │   ├── cc_jwt_config.h
│   │   │   ├── cc_key_manager.h
│   │   │   ├── cc_streaming_aead_wrappers.cc
│   │   │   ├── cc_streaming_aead_wrappers.h
│   │   │   ├── cc_streaming_aead_wrappers_test.cc
│   │   │   ├── cc_tink_config.cc
│   │   │   ├── cc_tink_config.h
│   │   │   ├── input_stream_adapter.cc
│   │   │   ├── input_stream_adapter.h
│   │   │   ├── input_stream_adapter_test.cc
│   │   │   ├── output_stream_adapter.cc
│   │   │   ├── output_stream_adapter.h
│   │   │   ├── output_stream_adapter_test.cc
│   │   │   ├── pybind/
│   │   │   │   ├── BUILD.bazel
│   │   │   │   ├── aead.cc
│   │   │   │   ├── aead.h
│   │   │   │   ├── cc_hpke_config.cc
│   │   │   │   ├── cc_hpke_config.h
│   │   │   │   ├── cc_jwt_config.cc
│   │   │   │   ├── cc_jwt_config.h
│   │   │   │   ├── cc_key_manager.cc
│   │   │   │   ├── cc_key_manager.h
│   │   │   │   ├── cc_key_manager_test.py
│   │   │   │   ├── cc_streaming_aead_wrappers.cc
│   │   │   │   ├── cc_streaming_aead_wrappers.h
│   │   │   │   ├── cc_tink_config.cc
│   │   │   │   ├── cc_tink_config.h
│   │   │   │   ├── cc_tink_config_test.py
│   │   │   │   ├── deterministic_aead.cc
│   │   │   │   ├── deterministic_aead.h
│   │   │   │   ├── hybrid_decrypt.cc
│   │   │   │   ├── hybrid_decrypt.h
│   │   │   │   ├── hybrid_encrypt.cc
│   │   │   │   ├── hybrid_encrypt.h
│   │   │   │   ├── import_helper.cc
│   │   │   │   ├── import_helper.h
│   │   │   │   ├── input_stream_adapter.cc
│   │   │   │   ├── input_stream_adapter.h
│   │   │   │   ├── mac.cc
│   │   │   │   ├── mac.h
│   │   │   │   ├── output_stream_adapter.cc
│   │   │   │   ├── output_stream_adapter.h
│   │   │   │   ├── prf.cc
│   │   │   │   ├── prf.h
│   │   │   │   ├── public_key_sign.cc
│   │   │   │   ├── public_key_sign.h
│   │   │   │   ├── public_key_verify.cc
│   │   │   │   ├── public_key_verify.h
│   │   │   │   ├── python_file_object_adapter.cc
│   │   │   │   ├── python_file_object_adapter.h
│   │   │   │   ├── streaming_aead.cc
│   │   │   │   ├── streaming_aead.h
│   │   │   │   ├── tink_bindings.cc
│   │   │   │   └── tink_exception.h
│   │   │   ├── python_file_object_adapter.h
│   │   │   ├── python_input_stream.cc
│   │   │   ├── python_input_stream.h
│   │   │   ├── python_input_stream_test.cc
│   │   │   ├── python_output_stream.cc
│   │   │   ├── python_output_stream.h
│   │   │   ├── python_output_stream_test.cc
│   │   │   └── test_util.h
│   │   ├── cleartext_keyset_handle.py
│   │   ├── cleartext_keyset_handle_test.py
│   │   ├── core/
│   │   │   ├── BUILD.bazel
│   │   │   ├── __init__.py
│   │   │   ├── _crypto_format.py
│   │   │   ├── _crypto_format_test.py
│   │   │   ├── _key_manager.py
│   │   │   ├── _primitive_set.py
│   │   │   ├── _primitive_set_test.py
│   │   │   ├── _primitive_wrapper.py
│   │   │   ├── _registry.py
│   │   │   ├── _registry_test.py
│   │   │   └── _tink_error.py
│   │   ├── daead/
│   │   │   ├── BUILD.bazel
│   │   │   ├── __init__.py
│   │   │   ├── _deterministic_aead.py
│   │   │   ├── _deterministic_aead_key_manager.py
│   │   │   ├── _deterministic_aead_key_manager_test.py
│   │   │   ├── _deterministic_aead_key_templates.py
│   │   │   ├── _deterministic_aead_key_templates_test.py
│   │   │   ├── _deterministic_aead_wrapper.py
│   │   │   └── _deterministic_aead_wrapper_test.py
│   │   ├── hybrid/
│   │   │   ├── BUILD.bazel
│   │   │   ├── __init__.py
│   │   │   ├── _hybrid_decrypt.py
│   │   │   ├── _hybrid_encrypt.py
│   │   │   ├── _hybrid_key_manager.py
│   │   │   ├── _hybrid_key_manager_test.py
│   │   │   ├── _hybrid_key_templates.py
│   │   │   ├── _hybrid_key_templates_test.py
│   │   │   ├── _hybrid_wrapper.py
│   │   │   └── _hybrid_wrapper_test.py
│   │   ├── integration/
│   │   │   ├── __init__.py
│   │   │   ├── awskms/
│   │   │   │   ├── BUILD.bazel
│   │   │   │   ├── __init__.py
│   │   │   │   ├── _aws_kms_client.py
│   │   │   │   ├── _aws_kms_client_test.py
│   │   │   │   └── _aws_kms_integration_test.py
│   │   │   ├── gcpkms/
│   │   │   │   ├── BUILD.bazel
│   │   │   │   ├── __init__.py
│   │   │   │   ├── _gcp_kms_aead_test.py
│   │   │   │   ├── _gcp_kms_client.py
│   │   │   │   ├── _gcp_kms_client_integration_test.py
│   │   │   │   ├── _gcp_kms_client_test.py
│   │   │   │   └── _gcp_kms_integration_test.py
│   │   │   └── hcvault/
│   │   │       ├── BUILD.bazel
│   │   │       ├── __init__.py
│   │   │       ├── _hcvault_kms_aead.py
│   │   │       ├── _hcvault_kms_aead_test.py
│   │   │       └── _hcvault_kms_integration_test.py
│   │   ├── internal/
│   │   │   ├── BUILD.bazel
│   │   │   ├── __init__.py
│   │   │   ├── big_integer_util.py
│   │   │   └── big_integer_util_test.py
│   │   ├── jwt/
│   │   │   ├── BUILD.bazel
│   │   │   ├── __init__.py
│   │   │   ├── _json_util.py
│   │   │   ├── _json_util_test.py
│   │   │   ├── _jwk_set_converter.py
│   │   │   ├── _jwk_set_converter_test.py
│   │   │   ├── _jwt_error.py
│   │   │   ├── _jwt_format.py
│   │   │   ├── _jwt_format_test.py
│   │   │   ├── _jwt_hmac_key_manager.py
│   │   │   ├── _jwt_hmac_key_manager_test.py
│   │   │   ├── _jwt_key_templates.py
│   │   │   ├── _jwt_key_templates_test.py
│   │   │   ├── _jwt_mac.py
│   │   │   ├── _jwt_mac_wrapper.py
│   │   │   ├── _jwt_mac_wrapper_test.py
│   │   │   ├── _jwt_public_key_sign.py
│   │   │   ├── _jwt_public_key_verify.py
│   │   │   ├── _jwt_signature_key_manager.py
│   │   │   ├── _jwt_signature_key_manager_test.py
│   │   │   ├── _jwt_signature_wrappers.py
│   │   │   ├── _jwt_signature_wrappers_test.py
│   │   │   ├── _jwt_validator.py
│   │   │   ├── _jwt_validator_test.py
│   │   │   ├── _raw_jwt.py
│   │   │   ├── _raw_jwt_test.py
│   │   │   ├── _verified_jwt.py
│   │   │   └── _verified_jwt_test.py
│   │   ├── mac/
│   │   │   ├── BUILD.bazel
│   │   │   ├── __init__.py
│   │   │   ├── _mac.py
│   │   │   ├── _mac_key_manager.py
│   │   │   ├── _mac_key_manager_test.py
│   │   │   ├── _mac_key_templates.py
│   │   │   ├── _mac_key_templates_test.py
│   │   │   ├── _mac_wrapper.py
│   │   │   └── _mac_wrapper_test.py
│   │   ├── prf/
│   │   │   ├── BUILD.bazel
│   │   │   ├── __init__.py
│   │   │   ├── _prf_key_manager.py
│   │   │   ├── _prf_key_manager_test.py
│   │   │   ├── _prf_key_templates.py
│   │   │   ├── _prf_set.py
│   │   │   ├── _prf_set_wrapper.py
│   │   │   └── _prf_set_wrapper_test.py
│   │   ├── proto/
│   │   │   ├── BUILD.bazel
│   │   │   ├── __init__.py
│   │   │   ├── aes_cmac.proto
│   │   │   ├── aes_cmac_prf.proto
│   │   │   ├── aes_ctr.proto
│   │   │   ├── aes_ctr_hmac_aead.proto
│   │   │   ├── aes_ctr_hmac_streaming.proto
│   │   │   ├── aes_eax.proto
│   │   │   ├── aes_gcm.proto
│   │   │   ├── aes_gcm_hkdf_streaming.proto
│   │   │   ├── aes_gcm_siv.proto
│   │   │   ├── aes_siv.proto
│   │   │   ├── chacha20_poly1305.proto
│   │   │   ├── common.proto
│   │   │   ├── config.proto
│   │   │   ├── ecdsa.proto
│   │   │   ├── ecies_aead_hkdf.proto
│   │   │   ├── ed25519.proto
│   │   │   ├── empty.proto
│   │   │   ├── hkdf_prf.proto
│   │   │   ├── hmac.proto
│   │   │   ├── hmac_prf.proto
│   │   │   ├── hpke.proto
│   │   │   ├── jwt_ecdsa.proto
│   │   │   ├── jwt_hmac.proto
│   │   │   ├── jwt_rsa_ssa_pkcs1.proto
│   │   │   ├── jwt_rsa_ssa_pss.proto
│   │   │   ├── kms_aead.proto
│   │   │   ├── kms_envelope.proto
│   │   │   ├── prf_based_deriver.proto
│   │   │   ├── rsa_ssa_pkcs1.proto
│   │   │   ├── rsa_ssa_pss.proto
│   │   │   ├── test_proto.proto
│   │   │   ├── tink.proto
│   │   │   └── xchacha20_poly1305.proto
│   │   ├── secret_key_access.py
│   │   ├── secret_key_access_import_test.py
│   │   ├── secret_key_access_test.py
│   │   ├── signature/
│   │   │   ├── BUILD.bazel
│   │   │   ├── __init__.py
│   │   │   ├── _public_key_sign.py
│   │   │   ├── _public_key_verify.py
│   │   │   ├── _signature_key_manager.py
│   │   │   ├── _signature_key_manager_test.py
│   │   │   ├── _signature_key_templates.py
│   │   │   ├── _signature_wrapper.py
│   │   │   └── _signature_wrapper_test.py
│   │   ├── streaming_aead/
│   │   │   ├── BUILD.bazel
│   │   │   ├── __init__.py
│   │   │   ├── _decrypting_stream.py
│   │   │   ├── _decrypting_stream_test.py
│   │   │   ├── _encrypting_stream.py
│   │   │   ├── _encrypting_stream_test.py
│   │   │   ├── _file_object_adapter.py
│   │   │   ├── _file_object_adapter_test.py
│   │   │   ├── _pybind11_python_file_object_adapter_test.py
│   │   │   ├── _raw_streaming_aead.py
│   │   │   ├── _rewindable_input_stream.py
│   │   │   ├── _rewindable_input_stream_test.py
│   │   │   ├── _streaming_aead.py
│   │   │   ├── _streaming_aead_key_manager.py
│   │   │   ├── _streaming_aead_key_manager_test.py
│   │   │   ├── _streaming_aead_key_templates.py
│   │   │   ├── _streaming_aead_key_templates_test.py
│   │   │   ├── _streaming_aead_test.py
│   │   │   ├── _streaming_aead_wrapper.py
│   │   │   └── _streaming_aead_wrapper_test.py
│   │   ├── testing/
│   │   │   ├── BUILD.bazel
│   │   │   ├── __init__.py
│   │   │   ├── bytes_io.py
│   │   │   ├── bytes_io_test.py
│   │   │   ├── fake_kms.py
│   │   │   ├── fake_kms_test.py
│   │   │   ├── helper.py
│   │   │   ├── helper_test.py
│   │   │   ├── keyset_builder.py
│   │   │   └── keyset_builder_test.py
│   │   ├── tink_config.py
│   │   └── tink_config_test.py
│   ├── tink_py_deps.bzl
│   ├── tink_py_deps_init.bzl
│   └── tools/
│       ├── BUILD.bazel
│       └── distribution/
│           ├── README.md
│           ├── build_linux_binary_wheels.sh
│           ├── create_release.sh
│           ├── requirements.in
│           ├── requirements.txt
│           └── test_linux_binary_wheels.sh
├── testdata/
│   ├── BUILD.bazel
│   ├── aws/
│   │   ├── BUILD.bazel
│   │   ├── README.md
│   │   ├── access_keys_bad.csv
│   │   ├── credentials.cred
│   │   ├── credentials.csv
│   │   ├── credentials.ini
│   │   ├── credentials_bad.csv
│   │   ├── credentials_bad.ini
│   │   ├── key_arn.txt
│   │   └── key_arn_bad.txt
│   ├── gcp/
│   │   ├── BUILD.bazel
│   │   ├── README.md
│   │   ├── credential.json
│   │   ├── credential_bad.json
│   │   ├── key_name.txt
│   │   └── key_name_bad.txt
│   ├── keysets/
│   │   └── BUILD.bazel
│   └── testvectors/
│       ├── BUILD.bazel
│       └── hpke_boringssl.json
├── testing/
│   └── cross_language/
│       └── testdata/
│           ├── aws/
│           │   ├── BUILD.bazel
│           │   ├── README.md
│           │   ├── access_keys_bad.csv
│           │   ├── credentials.cred
│           │   ├── credentials.csv
│           │   ├── credentials.ini
│           │   ├── credentials_bad.csv
│           │   ├── credentials_bad.ini
│           │   ├── key_arn.txt
│           │   └── key_arn_bad.txt
│           └── gcp/
│               ├── BUILD.bazel
│               ├── README.md
│               ├── credential.json
│               ├── credential_bad.json
│               ├── key_name.txt
│               └── key_name_bad.txt
├── tinkey.rb
└── tools/
    ├── .bazelrc
    ├── .bazelversion
    ├── BUILD.bazel
    ├── WORKSPACE
    ├── build_defs/
    │   └── BUILD.bazel
    ├── coverage.sh
    ├── release_tinkey.sh
    ├── requirements.txt
    └── tinkey/
        ├── BUILD.bazel
        ├── README.md
        └── src/
            ├── main/
            │   └── java/
            │       └── com/
            │           └── google/
            │               └── crypto/
            │                   └── tink/
            │                       └── tinkey/
            │                           ├── AddKeyCommand.java
            │                           ├── AddRotateOptions.java
            │                           ├── BUILD.bazel
            │                           ├── Command.java
            │                           ├── ConvertKeysetCommand.java
            │                           ├── ConvertKeysetOptions.java
            │                           ├── CreateKeysetCommand.java
            │                           ├── CreateKeysetOptions.java
            │                           ├── CreatePublicKeysetCommand.java
            │                           ├── DeleteKeyCommand.java
            │                           ├── DestroyKeyCommand.java
            │                           ├── DisableKeyCommand.java
            │                           ├── EnableKeyCommand.java
            │                           ├── HelpCommand.java
            │                           ├── InOptions.java
            │                           ├── InputStreamHandler.java
            │                           ├── KeyIdHandler.java
            │                           ├── KeyIdOptions.java
            │                           ├── KeyTemplateHandler.java
            │                           ├── KmsClientsFactory.java
            │                           ├── ListKeyTemplatesCommand.java
            │                           ├── ListKeysetCommand.java
            │                           ├── OutOptions.java
            │                           ├── OutputStreamHandler.java
            │                           ├── PromoteKeyCommand.java
            │                           ├── RotateKeysetCommand.java
            │                           ├── Tinkey.java
            │                           ├── TinkeyCommands.java
            │                           ├── TinkeyKeyTemplates.java
            │                           ├── TinkeyTestKmsClient.java
            │                           └── TinkeyUtil.java
            └── test/
                └── java/
                    └── com/
                        └── google/
                            └── crypto/
                                └── tink/
                                    └── tinkey/
                                        ├── AddKeyCommandTest.java
                                        ├── BUILD.bazel
                                        ├── ConvertKeysetCommandTest.java
                                        ├── CreateKeysetCommandTest.java
                                        ├── CreatePublicKeysetCommandTest.java
                                        ├── KmsClientsFactoryTest.java
                                        ├── RotateKeysetCommandTest.java
                                        └── TinkeyTestKmsClientTest.java

================================================
FILE CONTENTS
================================================

================================================
FILE: .bazelversion
================================================
6.4.0


================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve Tink

---

> **NOTE**: **Tink moved to github.com/tink-crypto!**
>
> We split Tink into multiple focused repositories.
> Please create this issue in the appropriate repository in
> github.com/tink-crypto instead:
>
> *   [Tink Java](https://github.com/tink-crypto/tink-java/issues/new?template=bug_report.md)
> *   [Tink Java AWS KMS extension](https://github.com/tink-crypto/tink-java-awskms/issues/new?template=bug_report.md)
> *   [Tink Java Google Cloud KMS extension](https://github.com/tink-crypto/tink-java-gcpkms/issues/new?template=bug_report.md)
> *   [Tink Java apps extension](https://github.com/tink-crypto/tink-java-apps/issues/new?template=bug_report.md)
> *   [Tink C++](https://github.com/tink-crypto/tink-cc/issues/new?template=bug_report.md)
> *   [Tink C++ AWS KMS extension](https://github.com/tink-crypto/tink-cc-awskms/issues/new?template=bug_report.md)
> *   [Tink C++ Google Cloud KMS extension](https://github.com/tink-crypto/tink-cc-gcpkms/issues/new?template=bug_report.md)
> *   [Tink Go](https://github.com/tink-crypto/tink-go/issues/new?template=bug_report.md)
> *   [Tink Go AWS KMS extension](https://github.com/tink-crypto/tink-go-awskms/issues/new?template=bug_report.md)
> *   [Tink Go Google Cloud KMS extension](https://github.com/tink-crypto/tink-go-gcpkms/issues/new?template=bug_report.md)
> *   [Tink Go HashiCorp Vault KMS extension](https://github.com/tink-crypto/tink-go-hcvault/issues/new?template=bug_report.md)
> *   [Tink Objc](https://github.com/tink-crypto/tink-objc/issues/new?template=bug_report.md)
> *   [Tink Python](https://github.com/tink-crypto/tink-py/issues/new?template=bug_report.md)
> *   [Tink Tinkey](https://github.com/tink-crypto/tink-tinkey/issues/new?template=bug_report.md)


================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false


================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for Tink

---

> **NOTE**: **Tink moved to github.com/tink-crypto!**
>
> We split Tink into multiple focused repositories.
> Please create this issue in the appropriate repository in
> github.com/tink-crypto instead:
>
> *   [Tink Java](https://github.com/tink-crypto/tink-java/issues/new?template=feature_request.md)
> *   [Tink Java AWS KMS extension](https://github.com/tink-crypto/tink-java-awskms/issues/new?template=feature_request.md)
> *   [Tink Java Google Cloud KMS extension](https://github.com/tink-crypto/tink-java-gcpkms/issues/new?template=feature_request.md)
> *   [Tink Java apps extension](https://github.com/tink-crypto/tink-java-apps/issues/new?template=feature_request.md)
> *   [Tink C++](https://github.com/tink-crypto/tink-cc/issues/new?template=feature_request.md)
> *   [Tink C++ AWS KMS extension](https://github.com/tink-crypto/tink-cc-awskms/issues/new?template=feature_request.md)
> *   [Tink C++ Google Cloud KMS extension](https://github.com/tink-crypto/tink-cc-gcpkms/issues/new?template=feature_request.md)
> *   [Tink Go](https://github.com/tink-crypto/tink-go/issues/new?template=feature_request.md)
> *   [Tink Go AWS KMS extension](https://github.com/tink-crypto/tink-go-awskms/issues/new?template=feature_request.md)
> *   [Tink Go Google Cloud KMS extension](https://github.com/tink-crypto/tink-go-gcpkms/issues/new?template=feature_request.md)
> *   [Tink Go HashiCorp Vault KMS extension](https://github.com/tink-crypto/tink-go-hcvault/issues/new?template=feature_request.md)
> *   [Tink Objc](https://github.com/tink-crypto/tink-objc/issues/new?template=feature_request.md)
> *   [Tink Python](https://github.com/tink-crypto/tink-py/issues/new?template=feature_request.md)
> *   [Tink Tinkey](https://github.com/tink-crypto/tink-tinkey/issues/new?template=feature_request.md)



================================================
FILE: .github/workflows/codeql-analysis.yml
================================================
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
name: "CodeQL"

on:
  push:
    branches: [master, 1.5]
  pull_request:
    # The branches below must be a subset of the branches above
    branches: [master, 1.5]
  schedule:
    - cron: '0 13 * * 0'

jobs:
  analyze:
    name: Analyze
    runs-on: ubuntu-latest

    strategy:
      fail-fast: false
      matrix:
        # Override automatic language detection by changing the below list
        # Supported options are ['csharp', 'cpp', 'go', 'java', 'javascript', 'python']
        #
        # TODO: Re-enable Java with a Bazel build solution.
        language: ['cpp', 'go', 'python', 'javascript']
        # Learn more...
        # https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#overriding-automatic-language-detection

    steps:
    - name: Checkout repository
      uses: actions/checkout@v3
      with:
        # We must fetch at least the immediate parents so that if this is
        # a pull request then we can checkout the head.
        fetch-depth: 2

    # If this run was triggered by a pull request event, then checkout
    # the head of the pull request instead of the merge commit.
    - run: git checkout HEAD^2
      if: ${{ github.event_name == 'pull_request' }}

    # Initializes the CodeQL tools for scanning.
    - name: Initialize CodeQL
      uses: github/codeql-action/init@v2
      with:
        languages: ${{ matrix.language }}
        # If you wish to specify custom queries, you can do so here or in a config file.
        # By default, queries listed here will override any specified in a config file.
        # Prefix the list here with "+" to use these queries and those in the config file.
        # queries: ./path/to/local/query, your-org/your-repo/queries@main

    # Autobuild attempts to build any compiled languages  (C/C++, C#, or Java).
    # If this step fails, then you should remove it and run the build manually (see below)
    - name: Autobuild
      uses: github/codeql-action/autobuild@v2

    # ℹ️ Command-line programs to run using the OS shell.
    # 📚 https://git.io/JvXDl

    # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
    #    and modify them (or add more) to build your code if your project
    #    uses a compiled language

    #- run: |
    #   make bootstrap
    #   make release

    - name: Perform CodeQL Analysis
      uses: github/codeql-action/analyze@v2


================================================
FILE: .gitignore
================================================
.DS_Store
bazel-*
*.swp
*~
**/target
.idea
*.iml
*.tulsiconf-user
tulsi-*
tulsigen-*
*.iml
.gradle
**/local.properties
**/build/**
.externalNativeBuild
node_modules


================================================
FILE: BUILD.bazel
================================================
# Description:
#   Tink (https://github.com/google/tink) is a small crypto library that
#   provides a safe, simple, agile and fast way to accomplish some common
#   crypto tasks.
package(default_visibility = ["//:__subpackages__"])

licenses(["notice"])

exports_files([
    "LICENSE",
    "README.md",
    "__init__.py",
])

filegroup(
    name = "tink_version",
    srcs = ["tink_version.bzl"],
    visibility = ["//visibility:public"],
)


================================================
FILE: CMakeLists.txt
================================================
cmake_minimum_required(VERSION 3.13)
project(Tink VERSION 2.1.2 LANGUAGES CXX)

list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")

option(TINK_BUILD_TESTS "Build Tink tests" OFF)
option(TINK_USE_SYSTEM_OPENSSL "Build Tink linking to OpenSSL installed in the system" OFF)
option(TINK_USE_INSTALLED_ABSEIL "Build Tink linking to Abseil installed in the system" OFF)
option(TINK_USE_INSTALLED_GOOGLETEST "Build Tink linking to GTest installed in the system" OFF)
option(TINK_USE_INSTALLED_PROTOBUF "Build Tink linking to Protobuf installed in the system" OFF)
option(USE_ONLY_FIPS "Enables the FIPS only mode in Tink" OFF)

set(CPACK_GENERATOR TGZ)
set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})

include(CPack)
include(TinkWorkspace)
include(TinkBuildRules)
include(TinkUtil)

# Bazel rewrites import paths so that "cc/example/foo.h" can be included as
# "tink/example/foo.h". The following lines simulate this behaviour by creating
# a symlink to cc/ called tink/, and placing it in a separate subdirectory,
# which is then specified as a global include path.
#
# It's important to create a separate directory and not just drop the link in
# CMAKE_CURRENT_BINARY_DIR, since adding that to the include paths will
# make the whole contents of that directory visible to the compiled files,
# which may result in undeclared dependencies that nevertheless happen to work.
#
set(TINK_INCLUDE_ALIAS_DIR "${CMAKE_CURRENT_BINARY_DIR}/__include_alias")
add_directory_alias(
  "${CMAKE_CURRENT_SOURCE_DIR}/cc" "${TINK_INCLUDE_ALIAS_DIR}/tink")
list(APPEND TINK_INCLUDE_DIRS "${TINK_INCLUDE_ALIAS_DIR}")

add_subdirectory(cc)
add_subdirectory(proto)


================================================
FILE: LICENSE
================================================

                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright [yyyy] [name of copyright owner]

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.


================================================
FILE: README.md
================================================
# Tink

> **NOTE**: **Tink moved to github.com/tink-crypto and this repo is no longer
> active!**
>
> As planned, we have split Tink into
> [multiple GitHub repositories][split_repo_roadmap_url] that are hosted at
> [github.com/tink-crypto](https://github.com/tink-crypto). As a consequence, we
> made this repository read-only and it is not going to be maintained moving
> forward.
>

*A multi-language, cross-platform library that provides cryptographic APIs that
are secure, easy to use correctly, and hard(er) to misuse. See also:
https://developers.google.com/tink*.

[split_repo_roadmap_url]: https://developers.google.com/tink/roadmap#splitting_tink_into_multiple_github_repositories
[tink_mailing_list_url]: https://groups.google.com/forum/#!forum/tink-users

## Index

1.  [Introduction](#introduction)
2.  [Current status](#current-status)
3.  [Getting started](#getting-started)
4.  [Learn more](#learn-more)
5.  [Contact and mailing list](#contact-and-mailing-list)
6.  [Maintainers](#maintainers)

## Introduction

Using crypto in your application [shouldn't have to][devs_are_users_too_slides]
feel like juggling chainsaws in the dark. Tink is a crypto library written by a
group of cryptographers and security engineers at Google. It was born out of our
extensive experience working with Google's product teams,
[fixing weaknesses in implementations](https://github.com/google/wycheproof),
and providing simple APIs that can be used safely without needing a crypto
background.

Tink provides secure APIs that are easy to use correctly and hard(er) to misuse.
It reduces common crypto pitfalls with user-centered design, careful
implementation and code reviews, and extensive testing. At Google, Tink is one
of the standard crypto libraries, and has been deployed in hundreds of products
and systems.

To get a quick overview of Tink design please take a look at
[slides][tink_talk_slides] from [a talk about Tink][tink_talk_recording]
presented at [Real World Crypto 2019](https://rwc.iacr.org/2019/).

[devs_are_users_too_slides]: https://www.usenix.org/sites/default/files/conference/protected-files/hotsec15_slides_green.pdf
[tink_talk_slides]: docs/Tink-a_cryptographic_library--RealWorldCrypto2019.pdf
[tink_talk_recording]: https://www.youtube.com/watch?v=pqev9r3rUJs&t=9665

## Current status

[Java/Android](docs/JAVA-HOWTO.md), [C++](docs/CPP-HOWTO.md),
[Obj-C](docs/OBJC-HOWTO.md), [Go](docs/GOLANG-HOWTO.md), and
[Python](docs/PYTHON-HOWTO.md) are field tested and ready for production. The
latest version is [1.7.0](https://github.com/google/tink/releases/tag/v1.7.0),
released on 2022-08-09.

Javascript/Typescript is in an alpha state and should only be used for testing.
Please see the intent to remove statement
[here](https://github.com/google/tink/issues/689).

**`Ubuntu`**                        | **`macOS`**
----------------------------------- | ---------------------------------
[![Kokoro Ubuntu][ubuntu_badge]](#) | [![Kokoro macOS][macos_badge]](#)

[ubuntu_badge]: https://storage.googleapis.com/tink-kokoro-build-badges/tink-ubuntu.png
[macos_badge]: https://storage.googleapis.com/tink-kokoro-build-badges/tink-macos.png

## Getting started

Documentation for the project is located at https://developers.google.com/tink.
Currently, it details a variety of common usage scenarios and covers the Java
and Python implementations. The site will be populated with more content over
time.

Alternatively, you can look at all of the [`examples`] which demonstrate
performing simple tasks using Tink in a variety of languages.

[`examples`]: https://github.com/google/tink/tree/master/examples

*   Python

```sh
pip3 install tink
```

*   Golang

```sh
go get github.com/google/tink/go/...
```

*   Java

```xml
<dependency>
  <groupId>com.google.crypto.tink</groupId>
  <artifactId>tink</artifactId>
  <version>1.7.0</version>
</dependency>
```

*   Android

```
dependencies {
  implementation 'com.google.crypto.tink:tink-android:1.7.0'
}
```

*   Objective-C/iOS

```sh
cd /path/to/your/Xcode project/
pod init
pod 'Tink', '1.7.0'
pod install
```

## Learn more

*   [Java HOW-TO](docs/JAVA-HOWTO.md)
*   [C++ HOW-TO](docs/CPP-HOWTO.md)
*   [Obj-C HOW-TO](docs/OBJC-HOWTO.md)
*   [Go HOW-TO](docs/GOLANG-HOWTO.md)
*   [Python HOW-TO](docs/PYTHON-HOWTO.md)
*   [Security and Usability Design Goals](docs/SECURITY-USABILITY.md)
*   [Supported Crypto Primitives](docs/PRIMITIVES.md)
*   [Key Management](docs/KEY-MANAGEMENT.md)
*   [Managing keys with Tinkey](docs/TINKEY.md)
*   [Known Issues](docs/KNOWN-ISSUES.md)

## Community-driven ports

Out of the box Tink supports a wide range of languages, but it still doesn't
support every language. Fortunately, some users like Tink so much that they've
ported it to their favorite languages! Below you can find notable ports.

**WARNING** While we usually review these ports, until further notice, we do not
maintain them and have no plan to support them in the foreseeable future.

*   [Clojure](https://github.com/perkss/tinklj)

## Contact and mailing list

If you want to contribute, please read [CONTRIBUTING](docs/CONTRIBUTING.md) and
send us pull requests. You can also report bugs or file feature requests.

If you'd like to talk to the developers or get notified about major product
updates, you may want to subscribe to our [mailing list][tink_mailing_list_url].

## Maintainers

Tink is maintained by (A-Z):

-   Moreno Ambrosin
-   Taymon Beal
-   Daniel Bleichenbacher
-   William Conner
-   Thai Duong
-   Thomas Holenstein
-   Stefan Kölbl
-   Charles Lee
-   Cindy Lin
-   Fernando Lobato Meeser
-   Atul Luykx
-   Rafael Misoczki
-   Sophie Schmieg
-   Laurent Simon
-   Elizaveta Tretiakova
-   Jürg Wullschleger

Alumni:

-   Haris Andrianakis
-   Tanuj Dhir
-   Quan Nguyen
-   Bartosz Przydatek
-   Enzo Puig
-   Veronika Slívová
-   Paula Vidas
-   Cathie Yun
-   Federico Zalcberg


================================================
FILE: cc/.bazelignore
================================================
# Ignore AWS-KMS and Cloud KMS integrations which are in thier own WORKSPACEs.
integration/awskms
integration/gcpkms
# Ignore examples.
examples


================================================
FILE: cc/.bazelrc
================================================
# Enables automatic per-platform configs.
common --enable_platform_specific_config
# Minumum C++ version. Override it building this project with
# `bazel build --cxxopt='-std=c++<XY>' --host_cxxopt='c++<XY>' ...`
# (Both -std and --host_cxxopt must be set to force the desired version.)
build:linux --cxxopt='-std=c++14' --host_cxxopt='-std=c++14'
build:macos --cxxopt='-std=c++14' --host_cxxopt='-std=c++14'
build:windows --cxxopt='/std:c++14' --host_cxxopt='/std:c++14'


================================================
FILE: cc/.bazelversion
================================================
6.4.0


================================================
FILE: cc/BUILD.bazel
================================================
load("//:template_rule.bzl", "template_rule")
load("//:tink_version.bzl", "TINK_VERSION_LABEL")

package(default_visibility = ["//:__subpackages__"])

licenses(["notice"])

# public libraries

alias(
    name = "secret_key_access_testonly",
    testonly = 1,
    actual = ":secret_key_access",
    visibility = ["//visibility:public"],
)

cc_library(
    name = "tink_cc",
    hdrs = [
        "aead.h",
        "aead_config.h",
        "aead_factory.h",
        "aead_key_templates.h",
        "binary_keyset_reader.h",
        "binary_keyset_writer.h",
        "deterministic_aead.h",
        "deterministic_aead_config.h",
        "deterministic_aead_factory.h",
        "deterministic_aead_key_templates.h",
        "hybrid_config.h",
        "hybrid_decrypt.h",
        "hybrid_decrypt_factory.h",
        "hybrid_encrypt.h",
        "hybrid_encrypt_factory.h",
        "hybrid_key_templates.h",
        "input_stream.h",
        "json_keyset_reader.h",
        "json_keyset_writer.h",
        "key_manager.h",
        "keyset_handle.h",
        "keyset_manager.h",
        "keyset_reader.h",
        "keyset_writer.h",
        "kms_client.h",
        "mac.h",
        "mac_config.h",
        "mac_factory.h",
        "mac_key_templates.h",
        "output_stream.h",
        "output_stream_with_result.h",
        "public_key_sign.h",
        "public_key_sign_factory.h",
        "public_key_verify.h",
        "public_key_verify_factory.h",
        "random_access_stream.h",
        "registry.h",
        "signature_config.h",
        "signature_key_templates.h",
        "streaming_aead.h",
        "streaming_aead_config.h",
        "streaming_aead_key_templates.h",
        "streaming_mac.h",
        "tink_config.h",
        "version.h",
    ],
    include_prefix = "tink",
    visibility = ["//visibility:public"],
    deps = [
        ":aead",
        ":binary_keyset_reader",
        ":binary_keyset_writer",
        ":deterministic_aead",
        ":hybrid_decrypt",
        ":hybrid_encrypt",
        ":input_stream",
        ":json_keyset_reader",
        ":json_keyset_writer",
        ":key",
        ":key_manager",
        ":keyset_handle",
        ":keyset_manager",
        ":keyset_reader",
        ":keyset_writer",
        ":kms_client",
        ":mac",
        ":output_stream",
        ":output_stream_with_result",
        ":primitive_set",
        ":public_key_sign",
        ":public_key_verify",
        ":random_access_stream",
        ":registry",
        ":streaming_aead",
        ":streaming_mac",
        ":version",
        "//aead:aead_config",
        "//aead:aead_factory",
        "//aead:aead_key_templates",
        "//config:tink_config",
        "//daead:deterministic_aead_config",
        "//daead:deterministic_aead_factory",
        "//daead:deterministic_aead_key_templates",
        "//hybrid:hybrid_config",
        "//hybrid:hybrid_decrypt_factory",
        "//hybrid:hybrid_encrypt_factory",
        "//hybrid:hybrid_key_templates",
        "//internal:key_info",
        "//internal:registry_impl",
        "//mac:mac_config",
        "//mac:mac_factory",
        "//mac:mac_key_templates",
        "//proto:config_cc_proto",
        "//proto:tink_cc_proto",
        "//signature:public_key_sign_factory",
        "//signature:public_key_verify_factory",
        "//signature:signature_config",
        "//signature:signature_key_templates",
        "//streamingaead:streaming_aead_config",
        "//streamingaead:streaming_aead_key_templates",
        "//util:buffer",
        "//util:errors",
        "//util:protobuf_helper",
        "//util:secret_proto",
        "//util:status",
        "//util:statusor",
        "//util:validation",
        "@com_google_absl//absl/base:core_headers",
        "@com_google_absl//absl/container:flat_hash_map",
        "@com_google_absl//absl/memory",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings",
        "@com_google_absl//absl/synchronization",
    ],
)

cc_library(
    name = "input_stream",
    hdrs = ["input_stream.h"],
    include_prefix = "tink",
    visibility = ["//visibility:public"],
    deps = [
        "//util:status",
        "//util:statusor",
    ],
)

cc_library(
    name = "output_stream",
    hdrs = ["output_stream.h"],
    include_prefix = "tink",
    visibility = ["//visibility:public"],
    deps = [
        "//util:status",
        "//util:statusor",
    ],
)

cc_library(
    name = "random_access_stream",
    hdrs = ["random_access_stream.h"],
    include_prefix = "tink",
    visibility = ["//visibility:public"],
    deps = [
        "//util:buffer",
        "//util:status",
        "//util:statusor",
    ],
)

cc_library(
    name = "output_stream_with_result",
    hdrs = ["output_stream_with_result.h"],
    include_prefix = "tink",
    visibility = ["//visibility:public"],
    deps = [
        ":output_stream",
        "//util:status",
        "//util:statusor",
        "@com_google_absl//absl/status",
    ],
)

cc_library(
    name = "aead",
    hdrs = ["aead.h"],
    include_prefix = "tink",
    visibility = ["//visibility:public"],
    deps = [
        "//util:statusor",
        "@com_google_absl//absl/strings",
    ],
)

cc_library(
    name = "deterministic_aead",
    hdrs = ["deterministic_aead.h"],
    include_prefix = "tink",
    visibility = ["//visibility:public"],
    deps = [
        "//util:statusor",
        "@com_google_absl//absl/strings",
    ],
)

cc_library(
    name = "streaming_aead",
    hdrs = ["streaming_aead.h"],
    include_prefix = "tink",
    visibility = ["//visibility:public"],
    deps = [
        ":input_stream",
        ":output_stream",
        ":random_access_stream",
        "//util:statusor",
        "@com_google_absl//absl/strings",
    ],
)

cc_library(
    name = "streaming_mac",
    hdrs = ["streaming_mac.h"],
    include_prefix = "tink",
    visibility = ["//visibility:public"],
    deps = [
        ":output_stream_with_result",
        "//util:status",
        "//util:statusor",
        "@com_google_absl//absl/strings",
    ],
)

cc_library(
    name = "chunked_mac",
    hdrs = ["chunked_mac.h"],
    include_prefix = "tink",
    visibility = ["//visibility:public"],
    deps = [
        "//util:status",
        "//util:statusor",
        "@com_google_absl//absl/strings",
    ],
)

cc_library(
    name = "hybrid_decrypt",
    hdrs = ["hybrid_decrypt.h"],
    include_prefix = "tink",
    visibility = ["//visibility:public"],
    deps = [
        "//util:statusor",
        "@com_google_absl//absl/strings",
    ],
)

cc_library(
    name = "hybrid_encrypt",
    hdrs = ["hybrid_encrypt.h"],
    include_prefix = "tink",
    visibility = ["//visibility:public"],
    deps = [
        "//util:statusor",
        "@com_google_absl//absl/strings",
    ],
)

cc_library(
    name = "mac",
    hdrs = ["mac.h"],
    include_prefix = "tink",
    visibility = ["//visibility:public"],
    deps = [
        "//util:status",
        "//util:statusor",
        "@com_google_absl//absl/strings",
    ],
)

cc_library(
    name = "public_key_sign",
    hdrs = ["public_key_sign.h"],
    include_prefix = "tink",
    visibility = ["//visibility:public"],
    deps = [
        "//util:statusor",
        "@com_google_absl//absl/strings",
    ],
)

cc_library(
    name = "public_key_verify",
    hdrs = ["public_key_verify.h"],
    include_prefix = "tink",
    visibility = ["//visibility:public"],
    deps = [
        "//util:status",
        "@com_google_absl//absl/strings",
    ],
)

cc_library(
    name = "keyset_reader",
    hdrs = ["keyset_reader.h"],
    include_prefix = "tink",
    visibility = ["//visibility:public"],
    deps = [
        "//proto:tink_cc_proto",
        "//util:statusor",
    ],
)

cc_library(
    name = "keyset_writer",
    hdrs = ["keyset_writer.h"],
    include_prefix = "tink",
    visibility = ["//visibility:public"],
    deps = [
        "//proto:tink_cc_proto",
        "//util:status",
    ],
)

cc_library(
    name = "binary_keyset_reader",
    srcs = ["core/binary_keyset_reader.cc"],
    hdrs = ["binary_keyset_reader.h"],
    include_prefix = "tink",
    visibility = ["//visibility:public"],
    deps = [
        ":keyset_reader",
        "//proto:tink_cc_proto",
        "//util:errors",
        "//util:status",
        "//util:statusor",
        "@com_google_absl//absl/memory",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings",
    ],
)

cc_library(
    name = "binary_keyset_writer",
    srcs = ["core/binary_keyset_writer.cc"],
    hdrs = ["binary_keyset_writer.h"],
    include_prefix = "tink",
    visibility = ["//visibility:public"],
    deps = [
        ":keyset_writer",
        "//proto:tink_cc_proto",
        "//util:protobuf_helper",
        "//util:status",
        "//util:statusor",
        "@com_google_absl//absl/memory",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings",
    ],
)

cc_library(
    name = "json_keyset_reader",
    srcs = ["core/json_keyset_reader.cc"],
    hdrs = ["json_keyset_reader.h"],
    include_prefix = "tink",
    visibility = ["//visibility:public"],
    deps = [
        ":keyset_reader",
        "//proto:tink_cc_proto",
        "//util:enums",
        "//util:status",
        "//util:statusor",
        "@com_google_absl//absl/memory",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings",
        "@rapidjson",
    ],
)

cc_library(
    name = "json_keyset_writer",
    srcs = ["core/json_keyset_writer.cc"],
    hdrs = ["json_keyset_writer.h"],
    include_prefix = "tink",
    visibility = ["//visibility:public"],
    deps = [
        ":keyset_writer",
        "//proto:tink_cc_proto",
        "//util:enums",
        "//util:errors",
        "//util:protobuf_helper",
        "//util:status",
        "//util:statusor",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings",
        "@rapidjson",
    ],
)

cc_library(
    name = "crypto_format",
    srcs = ["core/crypto_format.cc"],
    hdrs = ["crypto_format.h"],
    include_prefix = "tink",
    deps = [
        "//proto:tink_cc_proto",
        "//util:errors",
        "//util:status",
        "//util:statusor",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings:string_view",
    ],
)

cc_library(
    name = "primitive_set",
    srcs = ["primitive_set.h"],
    hdrs = ["primitive_set.h"],
    include_prefix = "tink",
    deps = [
        ":crypto_format",
        "//proto:tink_cc_proto",
        "//util:errors",
        "//util:status",
        "//util:statusor",
        "@com_google_absl//absl/base:core_headers",
        "@com_google_absl//absl/container:flat_hash_map",
        "@com_google_absl//absl/memory",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings:string_view",
        "@com_google_absl//absl/synchronization",
    ],
)

cc_library(
    name = "primitive_wrapper",
    hdrs = ["primitive_wrapper.h"],
    include_prefix = "tink",
    deps = [
        ":primitive_set",
        "//util:statusor",
    ],
)

cc_library(
    name = "registry",
    hdrs = ["registry.h"],
    include_prefix = "tink",
    deps = [
        ":key_manager",
        ":primitive_set",
        "//internal:registry_impl",
        "//proto:tink_cc_proto",
        "//util:status",
        "//util:statusor",
        "@com_google_absl//absl/strings",
    ],
)

template_rule(
    name = "version_h",
    src = "version.h.templ",
    out = "version.h",
    substitutions = {
        "@TINK_VERSION_LABEL@": "%s" % TINK_VERSION_LABEL,
    },
)

cc_library(
    name = "version",
    srcs = ["core/version.cc"],
    hdrs = [":version_h"],
    include_prefix = "tink",
    visibility = ["//visibility:public"],
)

cc_library(
    name = "keyset_handle",
    srcs = ["core/keyset_handle.cc"],
    hdrs = ["keyset_handle.h"],
    include_prefix = "tink",
    visibility = ["//visibility:public"],
    deps = [
        ":aead",
        ":configuration",
        ":insecure_secret_key_access",
        ":key",
        ":key_gen_configuration",
        ":key_manager",
        ":key_status",
        ":keyset_reader",
        ":keyset_writer",
        ":primitive_set",
        ":registry",
        ":restricted_data",
        ":secret_key_access_token",
        "//config:global_registry",
        "//internal:configuration_impl",
        "//internal:key_gen_configuration_impl",
        "//internal:key_info",
        "//internal:key_status_util",
        "//internal:key_type_info_store",
        "//internal:keyset_wrapper",
        "//internal:keyset_wrapper_store",
        "//internal:mutable_serialization_registry",
        "//internal:proto_key_serialization",
        "//internal:registry_impl",
        "//internal:util",
        "//proto:tink_cc_proto",
        "//util:errors",
        "//util:keyset_util",
        "//util:secret_data",
        "//util:secret_proto",
        "//util:status",
        "//util:statusor",
        "//util:validation",
        "@com_google_absl//absl/base:core_headers",
        "@com_google_absl//absl/container:flat_hash_map",
        "@com_google_absl//absl/log:check",
        "@com_google_absl//absl/memory",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings",
        "@com_google_absl//absl/types:optional",
    ],
)

cc_library(
    name = "keyset_handle_builder",
    srcs = ["core/keyset_handle_builder.cc"],
    hdrs = ["keyset_handle_builder.h"],
    include_prefix = "tink",
    visibility = ["//visibility:public"],
    deps = [
        ":key",
        ":key_status",
        ":keyset_handle",
        ":parameters",
        "//internal:keyset_handle_builder_entry",
        "//proto:tink_cc_proto",
        "//subtle:random",
        "//util:secret_proto",
        "//util:status",
        "//util:statusor",
        "@com_google_absl//absl/container:flat_hash_map",
        "@com_google_absl//absl/log:check",
        "@com_google_absl//absl/memory",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings",
        "@com_google_absl//absl/strings:str_format",
        "@com_google_absl//absl/types:optional",
    ],
)

cc_library(
    name = "cleartext_keyset_handle",
    srcs = ["core/cleartext_keyset_handle.cc"],
    hdrs = ["cleartext_keyset_handle.h"],
    include_prefix = "tink",
    visibility = ["//visibility:public"],
    deps = [
        ":keyset_handle",
        ":keyset_reader",
        ":keyset_writer",
        "//proto:tink_cc_proto",
        "//util:errors",
        "//util:secret_proto",
        "//util:status",
        "//util:statusor",
        "@com_google_absl//absl/container:flat_hash_map",
        "@com_google_absl//absl/memory",
        "@com_google_absl//absl/status",
    ],
)

cc_library(
    name = "key_manager",
    srcs = ["core/key_manager.cc"],
    hdrs = ["key_manager.h"],
    include_prefix = "tink",
    deps = [
        "//proto:tink_cc_proto",
        "//util:errors",
        "//util:protobuf_helper",
        "//util:status",
        "//util:statusor",
        "@com_google_absl//absl/memory",
        "@com_google_absl//absl/strings",
    ],
)

cc_library(
    name = "keyset_manager",
    srcs = ["core/keyset_manager.cc"],
    hdrs = ["keyset_manager.h"],
    include_prefix = "tink",
    visibility = ["//visibility:public"],
    deps = [
        ":key_gen_configuration",
        ":keyset_handle",
        "//internal:key_gen_configuration_impl",
        "//proto:tink_cc_proto",
        "//util:enums",
        "//util:errors",
        "//util:secret_proto",
        "//util:status",
        "//util:statusor",
        "@com_google_absl//absl/base:core_headers",
        "@com_google_absl//absl/memory",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/synchronization",
    ],
)

cc_library(
    name = "kms_client",
    hdrs = ["kms_client.h"],
    include_prefix = "tink",
    visibility = ["//visibility:public"],
    deps = [
        ":aead",
        "//util:statusor",
        "@com_google_absl//absl/strings",
    ],
)

cc_library(
    name = "kms_clients",
    srcs = ["core/kms_clients.cc"],
    hdrs = ["kms_clients.h"],
    include_prefix = "tink",
    visibility = ["//visibility:public"],
    deps = [
        ":kms_client",
        "//util:errors",
        "//util:status",
        "//util:statusor",
        "@com_google_absl//absl/base:core_headers",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings",
        "@com_google_absl//absl/synchronization",
    ],
)

cc_library(
    name = "core/template_util",
    hdrs = ["core/template_util.h"],
    include_prefix = "tink",
    deps = ["@com_google_absl//absl/meta:type_traits"],
)

cc_library(
    name = "core/key_type_manager",
    hdrs = ["core/key_type_manager.h"],
    include_prefix = "tink",
    deps = [
        ":core/template_util",
        ":input_stream",
        "//internal:fips_utils",
        "//proto:tink_cc_proto",
        "//util:status",
        "//util:statusor",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings",
    ],
)

cc_library(
    name = "core/key_manager_impl",
    hdrs = ["core/key_manager_impl.h"],
    include_prefix = "tink",
    deps = [
        ":core/key_type_manager",
        ":core/template_util",
        ":input_stream",
        ":key_manager",
        "//proto:tink_cc_proto",
        "//util:constants",
        "//util:errors",
        "//util:secret_proto",
        "//util:status",
        "//util:statusor",
        "@com_google_absl//absl/base",
        "@com_google_absl//absl/memory",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings",
    ],
)

cc_library(
    name = "core/private_key_type_manager",
    hdrs = ["core/private_key_type_manager.h"],
    include_prefix = "tink",
    deps = [
        ":core/key_type_manager",
        ":core/template_util",
        "//util:statusor",
    ],
)

cc_library(
    name = "core/private_key_manager_impl",
    hdrs = ["core/private_key_manager_impl.h"],
    include_prefix = "tink",
    deps = [
        ":core/key_manager_impl",
        ":core/key_type_manager",
        ":core/private_key_type_manager",
        ":key_manager",
        "//util:status",
        "//util:statusor",
        "//util:validation",
        "@com_google_absl//absl/memory",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings:string_view",
    ],
)

cc_library(
    name = "key_access",
    hdrs = ["key_access.h"],
    include_prefix = "tink",
)

cc_library(
    name = "secret_key_access",
    hdrs = ["secret_key_access.h"],
    include_prefix = "tink",
    deps = [":key_access"],
)

cc_library(
    name = "parameters",
    hdrs = ["parameters.h"],
    include_prefix = "tink",
)

cc_library(
    name = "key",
    hdrs = ["key.h"],
    include_prefix = "tink",
    deps = [
        ":parameters",
        "@com_google_absl//absl/types:optional",
    ],
)

cc_library(
    name = "private_key",
    hdrs = ["private_key.h"],
    include_prefix = "tink",
    deps = [":key"],
)

cc_library(
    name = "partial_key_access_token",
    hdrs = ["partial_key_access_token.h"],
    include_prefix = "tink",
)

cc_library(
    name = "partial_key_access",
    hdrs = ["partial_key_access.h"],
    include_prefix = "tink",
    deps = [":partial_key_access_token"],
)

cc_library(
    name = "secret_key_access_token",
    hdrs = ["secret_key_access_token.h"],
    include_prefix = "tink",
)

cc_library(
    name = "insecure_secret_key_access",
    hdrs = ["insecure_secret_key_access.h"],
    include_prefix = "tink",
    visibility = ["//visibility:public"],
    deps = [":secret_key_access_token"],
)

cc_library(
    name = "restricted_data",
    srcs = ["core/restricted_data.cc"],
    hdrs = ["restricted_data.h"],
    include_prefix = "tink",
    deps = [
        ":secret_key_access_token",
        "//subtle:random",
        "//util:secret_data",
        "@boringssl//:crypto",
        "@com_google_absl//absl/log:check",
        "@com_google_absl//absl/strings:string_view",
    ],
)

cc_library(
    name = "key_status",
    hdrs = ["key_status.h"],
    include_prefix = "tink",
    visibility = ["//visibility:public"],
)

cc_library(
    name = "configuration",
    hdrs = ["configuration.h"],
    include_prefix = "tink",
    visibility = ["//visibility:public"],
    deps = [
        "//internal:key_type_info_store",
        "//internal:keyset_wrapper_store",
    ],
)

cc_library(
    name = "key_gen_configuration",
    hdrs = ["key_gen_configuration.h"],
    include_prefix = "tink",
    visibility = ["//visibility:public"],
    deps = ["//internal:key_type_info_store"],
)

cc_library(
    name = "big_integer",
    srcs = ["core/big_integer.cc"],
    hdrs = ["big_integer.h"],
    include_prefix = "tink",
    deps = [
        "@boringssl//:crypto",
        "@com_google_absl//absl/strings:string_view",
    ],
)

cc_library(
    name = "restricted_big_integer",
    srcs = ["core/restricted_big_integer.cc"],
    hdrs = ["restricted_big_integer.h"],
    include_prefix = "tink",
    deps = [
        ":secret_key_access_token",
        "//util:secret_data",
        "@boringssl//:crypto",
        "@com_google_absl//absl/strings:string_view",
    ],
)

cc_library(
    name = "ec_point",
    hdrs = ["ec_point.h"],
    include_prefix = "tink",
    deps = [":big_integer"],
)

# tests

cc_test(
    name = "version_test",
    size = "small",
    srcs = ["core/version_test.cc"],
    deps = [
        ":version",
        "//internal:util",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "binary_keyset_reader_test",
    size = "small",
    srcs = ["core/binary_keyset_reader_test.cc"],
    deps = [
        ":binary_keyset_reader",
        "//proto:tink_cc_proto",
        "//util:test_util",
        "@com_google_absl//absl/status",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "binary_keyset_writer_test",
    size = "small",
    srcs = ["core/binary_keyset_writer_test.cc"],
    deps = [
        ":binary_keyset_writer",
        ":insecure_secret_key_access",
        ":proto_keyset_format",
        ":tink_cc",
        "//aead:aead_config",
        "//config:global_registry",
        "//proto:tink_cc_proto",
        "//util:secret_data",
        "//util:statusor",
        "//util:test_matchers",
        "//util:test_util",
        "@com_google_absl//absl/memory",
        "@com_google_absl//absl/status",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "json_keyset_reader_test",
    size = "small",
    srcs = ["core/json_keyset_reader_test.cc"],
    deps = [
        ":json_keyset_reader",
        ":keyset_reader",
        "//proto:aes_eax_cc_proto",
        "//proto:aes_gcm_cc_proto",
        "//proto:tink_cc_proto",
        "//util:statusor",
        "//util:test_matchers",
        "//util:test_util",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "json_keyset_writer_test",
    size = "small",
    srcs = ["core/json_keyset_writer_test.cc"],
    deps = [
        ":json_keyset_reader",
        ":json_keyset_writer",
        "//proto:aes_eax_cc_proto",
        "//proto:aes_gcm_cc_proto",
        "//proto:tink_cc_proto",
        "//util:protobuf_helper",
        "//util:test_matchers",
        "//util:test_util",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings",
        "@com_google_googletest//:gtest_main",
        "@rapidjson",
    ],
)

cc_test(
    name = "crypto_format_test",
    size = "small",
    srcs = ["core/crypto_format_test.cc"],
    deps = [
        ":crypto_format",
        "//proto:tink_cc_proto",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "keyset_handle_test",
    size = "small",
    srcs = ["core/keyset_handle_test.cc"],
    deps = [
        ":binary_keyset_reader",
        ":cleartext_keyset_handle",
        ":configuration",
        ":core/key_manager_impl",
        ":core/key_type_manager",
        ":core/template_util",
        ":json_keyset_reader",
        ":json_keyset_writer",
        ":key_gen_configuration",
        ":key_status",
        ":keyset_handle",
        ":primitive_set",
        ":primitive_wrapper",
        ":tink_cc",
        "//aead:aead_key_templates",
        "//aead:aead_wrapper",
        "//aead:aes_gcm_key_manager",
        "//config:fips_140_2",
        "//config:global_registry",
        "//config:key_gen_fips_140_2",
        "//config:tink_config",
        "//internal:configuration_impl",
        "//internal:fips_utils",
        "//internal:key_gen_configuration_impl",
        "//proto:aes_gcm_cc_proto",
        "//proto:aes_gcm_siv_cc_proto",
        "//proto:ecdsa_cc_proto",
        "//proto:tink_cc_proto",
        "//signature:ecdsa_sign_key_manager",
        "//signature:ecdsa_verify_key_manager",
        "//signature:signature_key_templates",
        "//subtle:random",
        "//util:status",
        "//util:statusor",
        "//util:test_keyset_handle",
        "//util:test_matchers",
        "//util:test_util",
        "@com_google_absl//absl/container:flat_hash_map",
        "@com_google_absl//absl/memory",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings",
        "@com_google_absl//absl/types:optional",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "keyset_handle_builder_test",
    srcs = ["core/keyset_handle_builder_test.cc"],
    deps = [
        ":aead",
        ":core/key_type_manager",
        ":core/template_util",
        ":input_stream",
        ":insecure_secret_key_access",
        ":key_status",
        ":keyset_handle",
        ":keyset_handle_builder",
        ":mac",
        ":partial_key_access",
        ":primitive_set",
        ":primitive_wrapper",
        ":registry",
        ":restricted_data",
        "//aead:aes_gcm_parameters",
        "//config:global_registry",
        "//config:tink_config",
        "//internal:legacy_proto_key",
        "//internal:legacy_proto_parameters",
        "//internal:proto_key_serialization",
        "//internal:proto_parameters_serialization",
        "//mac:aes_cmac_key",
        "//mac:aes_cmac_parameters",
        "//mac:mac_key_templates",
        "//proto:aes_cmac_cc_proto",
        "//proto:aes_gcm_cc_proto",
        "//proto:tink_cc_proto",
        "//subtle:random",
        "//util:status",
        "//util:statusor",
        "//util:test_matchers",
        "//util:test_util",
        "@com_google_absl//absl/container:flat_hash_map",
        "@com_google_absl//absl/memory",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "key_manager_test",
    size = "small",
    srcs = ["core/key_manager_test.cc"],
    deps = [
        ":key_manager",
        "//proto:empty_cc_proto",
        "//util:status",
        "//util:test_matchers",
        "@com_google_absl//absl/status",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "keyset_manager_test",
    size = "small",
    srcs = ["core/keyset_manager_test.cc"],
    deps = [
        ":keyset_handle",
        ":keyset_manager",
        "//aead:aead_config",
        "//aead:aes_gcm_key_manager",
        "//proto:aes_gcm_cc_proto",
        "//proto:tink_cc_proto",
        "//util:test_keyset_handle",
        "@com_google_absl//absl/status",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "cleartext_keyset_handle_test",
    size = "small",
    srcs = ["core/cleartext_keyset_handle_test.cc"],
    deps = [
        ":binary_keyset_reader",
        ":cleartext_keyset_handle",
        ":keyset_handle",
        "//proto:tink_cc_proto",
        "//util:status",
        "//util:test_keyset_handle",
        "//util:test_util",
        "@com_google_absl//absl/status",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "primitive_set_test",
    size = "small",
    srcs = ["core/primitive_set_test.cc"],
    deps = [
        ":crypto_format",
        ":mac",
        ":primitive_set",
        "//keyderivation:keyset_deriver",
        "//proto:tink_cc_proto",
        "//util:test_matchers",
        "//util:test_util",
        "@com_google_absl//absl/memory",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings",
        "@com_google_absl//absl/strings:string_view",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "kms_clients_test",
    size = "small",
    srcs = ["core/kms_clients_test.cc"],
    deps = [
        ":aead",
        ":kms_client",
        ":kms_clients",
        "//util:status",
        "//util:statusor",
        "//util:test_matchers",
        "//util:test_util",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "core/template_util_test",
    srcs = ["core/template_util_test.cc"],
    deps = [
        ":core/template_util",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "core/key_type_manager_test",
    srcs = ["core/key_type_manager_test.cc"],
    deps = [
        ":aead",
        ":core/key_type_manager",
        ":core/template_util",
        "//proto:aes_gcm_cc_proto",
        "//subtle",
        "//util:secret_data",
        "//util:status",
        "//util:statusor",
        "//util:test_matchers",
        "//util:validation",
        "@com_google_absl//absl/memory",
        "@com_google_absl//absl/status",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "core/key_manager_impl_test",
    srcs = ["core/key_manager_impl_test.cc"],
    deps = [
        ":aead",
        ":core/key_manager_impl",
        "//proto:aes_gcm_cc_proto",
        "//subtle",
        "//util:input_stream_util",
        "//util:istream_input_stream",
        "//util:secret_data",
        "//util:status",
        "//util:statusor",
        "//util:test_matchers",
        "//util:test_util",
        "//util:validation",
        "@com_google_absl//absl/status",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "core/private_key_manager_impl_test",
    srcs = ["core/private_key_manager_impl_test.cc"],
    deps = [
        ":core/key_manager_impl",
        ":core/key_type_manager",
        ":core/private_key_manager_impl",
        ":core/private_key_type_manager",
        ":core/template_util",
        ":key_manager",
        ":registry",
        "//proto:ecdsa_cc_proto",
        "//subtle:aes_gcm_boringssl",
        "//subtle:random",
        "//util:status",
        "//util:statusor",
        "//util:test_matchers",
        "//util:test_util",
        "//util:validation",
        "@com_google_absl//absl/memory",
        "@com_google_absl//absl/status",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "core/key_access_test",
    srcs = ["core/key_access_test.cc"],
    deps = [
        ":key_access",
        ":secret_key_access_testonly",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "core/partial_key_access_token_test",
    srcs = ["core/partial_key_access_token_test.cc"],
    deps = [
        ":partial_key_access",
        ":partial_key_access_token",
        "@com_google_absl//absl/base:core_headers",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "core/restricted_data_test",
    srcs = ["core/restricted_data_test.cc"],
    deps = [
        ":insecure_secret_key_access",
        ":restricted_data",
        "//subtle:random",
        "//util:secret_data",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_library(
    name = "proto_keyset_format",
    srcs = ["proto_keyset_format.cc"],
    hdrs = ["proto_keyset_format.h"],
    include_prefix = "tink",
    visibility = ["//visibility:public"],
    deps = [
        ":binary_keyset_reader",
        ":binary_keyset_writer",
        ":cleartext_keyset_handle",
        ":keyset_handle",
        ":secret_key_access_token",
        "//proto:tink_cc_proto",
        "//util:secret_data",
        "//util:secret_proto",
        "//util:status",
        "//util:statusor",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings",
    ],
)

cc_test(
    name = "proto_keyset_format_test",
    srcs = ["proto_keyset_format_test.cc"],
    deps = [
        ":insecure_secret_key_access",
        ":key_status",
        ":keyset_handle",
        ":keyset_handle_builder",
        ":mac",
        ":proto_keyset_format",
        "//config:global_registry",
        "//config:tink_config",
        "//internal:legacy_proto_parameters",
        "//internal:proto_parameters_serialization",
        "//mac:mac_key_templates",
        "//signature:signature_key_templates",
        "//util:secret_data",
        "//util:statusor",
        "//util:test_matchers",
        "@com_google_absl//absl/strings",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "core/big_integer_test",
    srcs = ["core/big_integer_test.cc"],
    deps = [
        ":big_integer",
        "@com_google_absl//absl/strings",
        "@com_google_absl//absl/strings:string_view",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "core/restricted_big_integer_test",
    srcs = ["core/restricted_big_integer_test.cc"],
    deps = [
        ":insecure_secret_key_access",
        ":restricted_big_integer",
        "@com_google_absl//absl/strings",
        "@com_google_absl//absl/strings:string_view",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "core/ec_point_test",
    srcs = ["core/ec_point_test.cc"],
    deps = [
        ":big_integer",
        ":ec_point",
        "//subtle:random",
        "@com_google_googletest//:gtest_main",
    ],
)


================================================
FILE: cc/CMakeLists.txt
================================================
add_subdirectory(aead)
add_subdirectory(config)
add_subdirectory(daead)
add_subdirectory(hybrid)
add_subdirectory(internal)
add_subdirectory(mac)
add_subdirectory(monitoring)
add_subdirectory(jwt)
add_subdirectory(keyderivation)
add_subdirectory(prf)
add_subdirectory(signature)
add_subdirectory(streamingaead)
add_subdirectory(subtle)
add_subdirectory(util)

tink_module(core)

# Configuration settings for the build.

if(USE_ONLY_FIPS)
    target_compile_definitions(tink_internal_fips_utils PUBLIC TINK_USE_ONLY_FIPS)
endif()

# Public libraries.

set(TINK_VERSION_H "${TINK_GENFILE_DIR}/tink/version.h")

tink_cc_library(
  NAME cc
  SRCS
    aead.h
    aead_config.h
    aead_factory.h
    aead_key_templates.h
    binary_keyset_reader.h
    binary_keyset_writer.h
    cleartext_keyset_handle.h
    deterministic_aead.h
    deterministic_aead_config.h
    deterministic_aead_factory.h
    deterministic_aead_key_templates.h
    hybrid_config.h
    hybrid_decrypt.h
    hybrid_decrypt_factory.h
    hybrid_encrypt.h
    hybrid_encrypt_factory.h
    hybrid_key_templates.h
    input_stream.h
    json_keyset_reader.h
    json_keyset_writer.h
    key_manager.h
    keyset_handle.h
    keyset_manager.h
    keyset_reader.h
    keyset_writer.h
    kms_client.h
    mac.h
    mac_config.h
    mac_factory.h
    mac_key_templates.h
    output_stream.h
    output_stream_with_result.h
    public_key_sign.h
    public_key_sign_factory.h
    public_key_verify.h
    public_key_verify_factory.h
    random_access_stream.h
    registry.h
    signature_config.h
    signature_key_templates.h
    streaming_aead.h
    streaming_aead_config.h
    streaming_aead_key_templates.h
    streaming_mac.h
    tink_config.h
    "${TINK_VERSION_H}"
  DEPS
    tink::core::aead
    tink::core::binary_keyset_reader
    tink::core::binary_keyset_writer
    tink::core::cleartext_keyset_handle
    tink::core::deterministic_aead
    tink::core::hybrid_decrypt
    tink::core::hybrid_encrypt
    tink::core::input_stream
    tink::core::json_keyset_reader
    tink::core::json_keyset_writer
    tink::core::key
    tink::core::key_manager
    tink::core::keyset_handle
    tink::core::keyset_manager
    tink::core::keyset_reader
    tink::core::keyset_writer
    tink::core::kms_client
    tink::core::mac
    tink::core::output_stream
    tink::core::output_stream_with_result
    tink::core::primitive_set
    tink::core::public_key_sign
    tink::core::public_key_verify
    tink::core::random_access_stream
    tink::core::registry
    tink::core::streaming_aead
    tink::core::streaming_mac
    tink::core::version
    absl::core_headers
    absl::flat_hash_map
    absl::memory
    absl::status
    absl::strings
    absl::synchronization
    tink::aead::aead_config
    tink::aead::aead_factory
    tink::aead::aead_key_templates
    tink::config::tink_config
    tink::daead::deterministic_aead_config
    tink::daead::deterministic_aead_factory
    tink::daead::deterministic_aead_key_templates
    tink::hybrid::hybrid_config
    tink::hybrid::hybrid_decrypt_factory
    tink::hybrid::hybrid_encrypt_factory
    tink::hybrid::hybrid_key_templates
    tink::internal::key_info
    tink::internal::registry_impl
    tink::mac::mac_config
    tink::mac::mac_factory
    tink::mac::mac_key_templates
    tink::signature::public_key_sign_factory
    tink::signature::public_key_verify_factory
    tink::signature::signature_config
    tink::signature::signature_key_templates
    tink::streamingaead::streaming_aead_config
    tink::streamingaead::streaming_aead_key_templates
    tink::util::buffer
    tink::util::errors
    tink::util::protobuf_helper
    tink::util::secret_proto
    tink::util::status
    tink::util::statusor
    tink::util::validation
    tink::proto::config_cc_proto
    tink::proto::tink_cc_proto
  PUBLIC
)

add_library(tink::static ALIAS tink_core_cc)

tink_cc_library(
  NAME input_stream
  SRCS
    input_stream.h
  DEPS
    tink::util::status
    tink::util::statusor
)

tink_cc_library(
  NAME output_stream
  SRCS
    output_stream.h
  DEPS
    tink::util::status
    tink::util::statusor
)

tink_cc_library(
  NAME random_access_stream
  SRCS
    random_access_stream.h
  DEPS
    tink::util::buffer
    tink::util::status
    tink::util::statusor
)

tink_cc_library(
  NAME output_stream_with_result
  SRCS
    output_stream_with_result.h
  DEPS
    tink::core::output_stream
    absl::status
    tink::util::status
    tink::util::statusor
)

tink_cc_library(
  NAME aead
  SRCS
    aead.h
  DEPS
    absl::strings
    tink::util::statusor
)

tink_cc_library(
  NAME deterministic_aead
  SRCS
    deterministic_aead.h
  DEPS
    absl::strings
    tink::util::statusor
)

tink_cc_library(
  NAME streaming_aead
  SRCS
    streaming_aead.h
  DEPS
    tink::core::input_stream
    tink::core::output_stream
    tink::core::random_access_stream
    absl::strings
    tink::util::statusor
)

tink_cc_library(
  NAME streaming_mac
  SRCS
    streaming_mac.h
  DEPS
    tink::core::output_stream_with_result
    absl::strings
    tink::util::status
    tink::util::statusor
)

tink_cc_library(
  NAME chunked_mac
  SRCS
    chunked_mac.h
  DEPS
    absl::strings
    tink::util::status
    tink::util::statusor
)

tink_cc_library(
  NAME hybrid_decrypt
  SRCS
    hybrid_decrypt.h
  DEPS
    absl::strings
    tink::util::statusor
)

tink_cc_library(
  NAME hybrid_encrypt
  SRCS
    hybrid_encrypt.h
  DEPS
    absl::strings
    tink::util::statusor
)

tink_cc_library(
  NAME mac
  SRCS
    mac.h
  DEPS
    absl::strings
    tink::util::status
    tink::util::statusor
)

tink_cc_library(
  NAME public_key_sign
  SRCS
    public_key_sign.h
  DEPS
    absl::strings
    tink::util::statusor
)

tink_cc_library(
  NAME public_key_verify
  SRCS
    public_key_verify.h
  DEPS
    absl::strings
    tink::util::status
)

tink_cc_library(
  NAME keyset_reader
  SRCS
    keyset_reader.h
  DEPS
    tink::util::statusor
    tink::proto::tink_cc_proto
)

tink_cc_library(
  NAME keyset_writer
  SRCS
    keyset_writer.h
  DEPS
    tink::util::status
    tink::proto::tink_cc_proto
)

tink_cc_library(
  NAME binary_keyset_reader
  SRCS
    core/binary_keyset_reader.cc
    binary_keyset_reader.h
  DEPS
    tink::core::keyset_reader
    absl::memory
    absl::status
    absl::strings
    tink::util::errors
    tink::util::status
    tink::util::statusor
    tink::proto::tink_cc_proto
)

tink_cc_library(
  NAME binary_keyset_writer
  SRCS
    core/binary_keyset_writer.cc
    binary_keyset_writer.h
  DEPS
    tink::core::keyset_writer
    absl::memory
    absl::status
    absl::strings
    tink::util::protobuf_helper
    tink::util::status
    tink::util::statusor
    tink::proto::tink_cc_proto
)

tink_cc_library(
  NAME json_keyset_reader
  SRCS
    core/json_keyset_reader.cc
    json_keyset_reader.h
  DEPS
    tink::core::keyset_reader
    absl::memory
    absl::status
    absl::strings
    rapidjson
    tink::util::enums
    tink::util::status
    tink::util::statusor
    tink::proto::tink_cc_proto
)

tink_cc_library(
  NAME json_keyset_writer
  SRCS
    core/json_keyset_writer.cc
    json_keyset_writer.h
  DEPS
    tink::core::keyset_writer
    absl::status
    absl::strings
    rapidjson
    tink::util::enums
    tink::util::errors
    tink::util::protobuf_helper
    tink::util::status
    tink::util::statusor
    tink::proto::tink_cc_proto
)

tink_cc_library(
  NAME crypto_format
  SRCS
    core/crypto_format.cc
    crypto_format.h
  DEPS
    absl::status
    absl::string_view
    tink::util::errors
    tink::util::status
    tink::util::statusor
    tink::proto::tink_cc_proto
)

tink_cc_library(
  NAME primitive_set
  SRCS
    primitive_set.h
    primitive_set.h
  DEPS
    tink::core::crypto_format
    absl::core_headers
    absl::flat_hash_map
    absl::memory
    absl::status
    absl::string_view
    absl::synchronization
    tink::util::errors
    tink::util::status
    tink::util::statusor
    tink::proto::tink_cc_proto
)

tink_cc_library(
  NAME primitive_wrapper
  SRCS
    primitive_wrapper.h
  DEPS
    tink::core::primitive_set
    tink::util::statusor
)

tink_cc_library(
  NAME registry
  SRCS
    registry.h
  DEPS
    tink::core::key_manager
    tink::core::primitive_set
    absl::strings
    tink::internal::registry_impl
    tink::util::status
    tink::util::statusor
    tink::proto::tink_cc_proto
)

# Generate TINK_VERSION_H from version.h.templ. TINK_VERSION_LABEL is
# substituted in version.h.templ with the value of PROJECT_VERSION.
set(TINK_VERSION_LABEL "${PROJECT_VERSION}")
configure_file(version.h.templ "${TINK_VERSION_H}")

tink_cc_library(
  NAME version
  SRCS
    core/version.cc
    "${TINK_VERSION_H}"
)

tink_cc_library(
  NAME keyset_handle
  SRCS
    core/keyset_handle.cc
    keyset_handle.h
  DEPS
    tink::core::aead
    tink::core::configuration
    tink::core::insecure_secret_key_access
    tink::core::key
    tink::core::key_gen_configuration
    tink::core::key_manager
    tink::core::key_status
    tink::core::keyset_reader
    tink::core::keyset_writer
    tink::core::primitive_set
    tink::core::registry
    tink::core::restricted_data
    tink::core::secret_key_access_token
    absl::core_headers
    absl::flat_hash_map
    absl::check
    absl::memory
    absl::status
    absl::strings
    absl::optional
    tink::config::global_registry
    tink::internal::configuration_impl
    tink::internal::key_gen_configuration_impl
    tink::internal::key_info
    tink::internal::key_status_util
    tink::internal::key_type_info_store
    tink::internal::keyset_wrapper
    tink::internal::keyset_wrapper_store
    tink::internal::mutable_serialization_registry
    tink::internal::proto_key_serialization
    tink::internal::registry_impl
    tink::internal::util
    tink::util::errors
    tink::util::keyset_util
    tink::util::secret_data
    tink::util::secret_proto
    tink::util::status
    tink::util::statusor
    tink::util::validation
    tink::proto::tink_cc_proto
)

tink_cc_library(
  NAME keyset_handle_builder
  SRCS
    core/keyset_handle_builder.cc
    keyset_handle_builder.h
  DEPS
    tink::core::key
    tink::core::key_status
    tink::core::keyset_handle
    tink::core::parameters
    absl::flat_hash_map
    absl::check
    absl::memory
    absl::status
    absl::strings
    absl::str_format
    absl::optional
    tink::internal::keyset_handle_builder_entry
    tink::subtle::random
    tink::util::secret_proto
    tink::util::status
    tink::util::statusor
    tink::proto::tink_cc_proto
)

tink_cc_library(
  NAME cleartext_keyset_handle
  SRCS
    core/cleartext_keyset_handle.cc
    cleartext_keyset_handle.h
  DEPS
    tink::core::keyset_handle
    tink::core::keyset_reader
    tink::core::keyset_writer
    absl::flat_hash_map
    absl::memory
    absl::status
    tink::util::errors
    tink::util::secret_proto
    tink::util::status
    tink::util::statusor
    tink::proto::tink_cc_proto
)

tink_cc_library(
  NAME key_manager
  SRCS
    core/key_manager.cc
    key_manager.h
  DEPS
    absl::memory
    absl::strings
    tink::util::errors
    tink::util::protobuf_helper
    tink::util::status
    tink::util::statusor
    tink::proto::tink_cc_proto
)

tink_cc_library(
  NAME keyset_manager
  SRCS
    core/keyset_manager.cc
    keyset_manager.h
  DEPS
    tink::core::key_gen_configuration
    tink::core::keyset_handle
    absl::core_headers
    absl::memory
    absl::status
    absl::synchronization
    tink::internal::key_gen_configuration_impl
    tink::util::enums
    tink::util::errors
    tink::util::secret_proto
    tink::util::status
    tink::util::statusor
    tink::proto::tink_cc_proto
  PUBLIC
)

tink_cc_library(
  NAME kms_client
  SRCS
    kms_client.h
  DEPS
    tink::core::aead
    absl::strings
    tink::util::statusor
)

tink_cc_library(
  NAME kms_clients
  SRCS
    core/kms_clients.cc
    kms_clients.h
  DEPS
    tink::core::kms_client
    absl::core_headers
    absl::status
    absl::strings
    absl::synchronization
    tink::util::errors
    tink::util::status
    tink::util::statusor
)

tink_cc_library(
  NAME template_util
  SRCS
    core/template_util.h
  DEPS
    absl::type_traits
)

tink_cc_library(
  NAME key_type_manager
  SRCS
    core/key_type_manager.h
  DEPS
    tink::core::template_util
    tink::core::input_stream
    absl::status
    absl::strings
    tink::internal::fips_utils
    tink::util::status
    tink::util::statusor
    tink::proto::tink_cc_proto
)

tink_cc_library(
  NAME key_manager_impl
  SRCS
    core/key_manager_impl.h
  DEPS
    tink::core::key_type_manager
    tink::core::template_util
    tink::core::input_stream
    tink::core::key_manager
    absl::base
    absl::memory
    absl::status
    absl::strings
    tink::util::constants
    tink::util::errors
    tink::util::secret_proto
    tink::util::status
    tink::util::statusor
    tink::proto::tink_cc_proto
)

tink_cc_library(
  NAME private_key_type_manager
  SRCS
    core/private_key_type_manager.h
  DEPS
    tink::core::key_type_manager
    tink::core::template_util
    tink::util::statusor
)

tink_cc_library(
  NAME private_key_manager_impl
  SRCS
    core/private_key_manager_impl.h
  DEPS
    tink::core::key_manager_impl
    tink::core::key_type_manager
    tink::core::private_key_type_manager
    tink::core::key_manager
    absl::memory
    absl::status
    absl::string_view
    tink::util::status
    tink::util::statusor
    tink::util::validation
)

tink_cc_library(
  NAME key_access
  SRCS
    key_access.h
)

tink_cc_library(
  NAME secret_key_access
  SRCS
    secret_key_access.h
  DEPS
    tink::core::key_access
)

add_library(tink::core::secret_key_access_testonly ALIAS tink_internal_core_secret_key_access)

tink_cc_library(
  NAME parameters
  SRCS
    parameters.h
)

tink_cc_library(
  NAME key
  SRCS
    key.h
  DEPS
    tink::core::parameters
    absl::optional
)

tink_cc_library(
  NAME private_key
  SRCS
    private_key.h
  DEPS
    tink::core::key
)

tink_cc_library(
  NAME partial_key_access_token
  SRCS
    partial_key_access_token.h
)

tink_cc_library(
  NAME partial_key_access
  SRCS
    partial_key_access.h
  DEPS
    tink::core::partial_key_access_token
)

tink_cc_library(
  NAME secret_key_access_token
  SRCS
    secret_key_access_token.h
)

tink_cc_library(
  NAME insecure_secret_key_access
  SRCS
    insecure_secret_key_access.h
  DEPS
    tink::core::secret_key_access_token
)

tink_cc_library(
  NAME restricted_data
  SRCS
    core/restricted_data.cc
    restricted_data.h
  DEPS
    tink::core::secret_key_access_token
    absl::check
    absl::string_view
    crypto
    tink::subtle::random
    tink::util::secret_data
)

tink_cc_library(
  NAME key_status
  SRCS
    key_status.h
)

tink_cc_library(
  NAME configuration
  SRCS
    configuration.h
  DEPS
    tink::internal::key_type_info_store
    tink::internal::keyset_wrapper_store
)

tink_cc_library(
  NAME key_gen_configuration
  SRCS
    key_gen_configuration.h
  DEPS
    tink::internal::key_type_info_store
)

tink_cc_library(
  NAME big_integer
  SRCS
    core/big_integer.cc
    big_integer.h
  DEPS
    absl::string_view
    crypto
)

tink_cc_library(
  NAME restricted_big_integer
  SRCS
    core/restricted_big_integer.cc
    restricted_big_integer.h
  DEPS
    tink::core::secret_key_access_token
    absl::string_view
    crypto
    tink::util::secret_data
)

tink_cc_library(
  NAME ec_point
  SRCS
    ec_point.h
  DEPS
    tink::core::big_integer
)

# tests

tink_cc_test(
  NAME version_test
  SRCS
    core/version_test.cc
  DEPS
    tink::core::version
    gmock
    tink::internal::util
)

tink_cc_test(
  NAME binary_keyset_reader_test
  SRCS
    core/binary_keyset_reader_test.cc
  DEPS
    tink::core::binary_keyset_reader
    gmock
    absl::status
    tink::util::test_util
    tink::proto::tink_cc_proto
)

tink_cc_test(
  NAME binary_keyset_writer_test
  SRCS
    core/binary_keyset_writer_test.cc
  DEPS
    tink::core::binary_keyset_writer
    tink::core::cc
    tink::core::insecure_secret_key_access
    tink::core::proto_keyset_format
    gmock
    absl::memory
    absl::status
    tink::aead::aead_config
    tink::config::global_registry
    tink::util::secret_data
    tink::util::statusor
    tink::util::test_matchers
    tink::util::test_util
    tink::proto::tink_cc_proto
)

tink_cc_test(
  NAME json_keyset_reader_test
  SRCS
    core/json_keyset_reader_test.cc
  DEPS
    tink::core::json_keyset_reader
    tink::core::keyset_reader
    gmock
    absl::status
    absl::strings
    tink::util::statusor
    tink::util::test_matchers
    tink::util::test_util
    tink::proto::aes_eax_cc_proto
    tink::proto::aes_gcm_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_test(
  NAME json_keyset_writer_test
  SRCS
    core/json_keyset_writer_test.cc
  DEPS
    tink::core::json_keyset_reader
    tink::core::json_keyset_writer
    gmock
    absl::status
    absl::strings
    rapidjson
    tink::util::protobuf_helper
    tink::util::test_matchers
    tink::util::test_util
    tink::proto::aes_eax_cc_proto
    tink::proto::aes_gcm_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_test(
  NAME crypto_format_test
  SRCS
    core/crypto_format_test.cc
  DEPS
    tink::core::crypto_format
    gmock
    tink::proto::tink_cc_proto
)

tink_cc_test(
  NAME keyset_handle_test
  SRCS
    core/keyset_handle_test.cc
  DEPS
    tink::core::binary_keyset_reader
    tink::core::cc
    tink::core::cleartext_keyset_handle
    tink::core::configuration
    tink::core::key_manager_impl
    tink::core::key_type_manager
    tink::core::template_util
    tink::core::json_keyset_reader
    tink::core::json_keyset_writer
    tink::core::key_gen_configuration
    tink::core::key_status
    tink::core::keyset_handle
    tink::core::primitive_set
    tink::core::primitive_wrapper
    gmock
    absl::flat_hash_map
    absl::memory
    absl::status
    absl::strings
    absl::optional
    tink::aead::aead_key_templates
    tink::aead::aead_wrapper
    tink::aead::aes_gcm_key_manager
    tink::config::fips_140_2
    tink::config::global_registry
    tink::config::key_gen_fips_140_2
    tink::config::tink_config
    tink::internal::configuration_impl
    tink::internal::fips_utils
    tink::internal::key_gen_configuration_impl
    tink::signature::ecdsa_sign_key_manager
    tink::signature::ecdsa_verify_key_manager
    tink::signature::signature_key_templates
    tink::subtle::random
    tink::util::status
    tink::util::statusor
    tink::util::test_keyset_handle
    tink::util::test_matchers
    tink::util::test_util
    tink::proto::aes_gcm_cc_proto
    tink::proto::aes_gcm_siv_cc_proto
    tink::proto::ecdsa_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_test(
  NAME keyset_handle_builder_test
  SRCS
    core/keyset_handle_builder_test.cc
  DEPS
    tink::core::aead
    tink::core::key_type_manager
    tink::core::template_util
    tink::core::input_stream
    tink::core::insecure_secret_key_access
    tink::core::key_status
    tink::core::keyset_handle
    tink::core::keyset_handle_builder
    tink::core::mac
    tink::core::partial_key_access
    tink::core::primitive_set
    tink::core::primitive_wrapper
    tink::core::registry
    tink::core::restricted_data
    gmock
    absl::flat_hash_map
    absl::memory
    absl::status
    absl::strings
    tink::aead::aes_gcm_parameters
    tink::config::global_registry
    tink::config::tink_config
    tink::internal::legacy_proto_key
    tink::internal::legacy_proto_parameters
    tink::internal::proto_key_serialization
    tink::internal::proto_parameters_serialization
    tink::mac::aes_cmac_key
    tink::mac::aes_cmac_parameters
    tink::mac::mac_key_templates
    tink::subtle::random
    tink::util::status
    tink::util::statusor
    tink::util::test_matchers
    tink::util::test_util
    tink::proto::aes_cmac_cc_proto
    tink::proto::aes_gcm_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_test(
  NAME key_manager_test
  SRCS
    core/key_manager_test.cc
  DEPS
    tink::core::key_manager
    gmock
    absl::status
    tink::util::status
    tink::util::test_matchers
    tink::proto::empty_cc_proto
)

tink_cc_test(
  NAME keyset_manager_test
  SRCS
    core/keyset_manager_test.cc
  DEPS
    tink::core::keyset_handle
    tink::core::keyset_manager
    gmock
    absl::status
    tink::aead::aead_config
    tink::aead::aes_gcm_key_manager
    tink::util::test_keyset_handle
    tink::proto::aes_gcm_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_test(
  NAME cleartext_keyset_handle_test
  SRCS
    core/cleartext_keyset_handle_test.cc
  DEPS
    tink::core::binary_keyset_reader
    tink::core::cleartext_keyset_handle
    tink::core::keyset_handle
    gmock
    absl::status
    tink::util::status
    tink::util::test_keyset_handle
    tink::util::test_util
    tink::proto::tink_cc_proto
)

tink_cc_test(
  NAME primitive_set_test
  SRCS
    core/primitive_set_test.cc
  DEPS
    tink::core::crypto_format
    tink::core::mac
    tink::core::primitive_set
    gmock
    absl::memory
    absl::status
    absl::strings
    absl::string_view
    tink::keyderivation::keyset_deriver
    tink::util::test_matchers
    tink::util::test_util
    tink::proto::tink_cc_proto
)

tink_cc_test(
  NAME kms_clients_test
  SRCS
    core/kms_clients_test.cc
  DEPS
    tink::core::aead
    tink::core::kms_client
    tink::core::kms_clients
    gmock
    absl::status
    absl::strings
    tink::util::status
    tink::util::statusor
    tink::util::test_matchers
    tink::util::test_util
)

tink_cc_test(
  NAME template_util_test
  SRCS
    core/template_util_test.cc
  DEPS
    tink::core::template_util
    gmock
)

tink_cc_test(
  NAME key_type_manager_test
  SRCS
    core/key_type_manager_test.cc
  DEPS
    tink::core::aead
    tink::core::key_type_manager
    tink::core::template_util
    gmock
    absl::memory
    absl::status
    tink::subtle::subtle
    tink::util::secret_data
    tink::util::status
    tink::util::statusor
    tink::util::test_matchers
    tink::util::validation
    tink::proto::aes_gcm_cc_proto
)

tink_cc_test(
  NAME key_manager_impl_test
  SRCS
    core/key_manager_impl_test.cc
  DEPS
    tink::core::aead
    tink::core::key_manager_impl
    gmock
    absl::status
    tink::subtle::subtle
    tink::util::input_stream_util
    tink::util::istream_input_stream
    tink::util::secret_data
    tink::util::status
    tink::util::statusor
    tink::util::test_matchers
    tink::util::test_util
    tink::util::validation
    tink::proto::aes_gcm_cc_proto
)

tink_cc_test(
  NAME private_key_manager_impl_test
  SRCS
    core/private_key_manager_impl_test.cc
  DEPS
    tink::core::key_manager_impl
    tink::core::key_type_manager
    tink::core::private_key_manager_impl
    tink::core::private_key_type_manager
    tink::core::template_util
    tink::core::key_manager
    tink::core::registry
    gmock
    absl::memory
    absl::status
    tink::subtle::aes_gcm_boringssl
    tink::subtle::random
    tink::util::status
    tink::util::statusor
    tink::util::test_matchers
    tink::util::test_util
    tink::util::validation
    tink::proto::ecdsa_cc_proto
)

tink_cc_test(
  NAME key_access_test
  SRCS
    core/key_access_test.cc
  DEPS
    tink::core::key_access
    tink::core::secret_key_access_testonly
    gmock
)

tink_cc_test(
  NAME partial_key_access_token_test
  SRCS
    core/partial_key_access_token_test.cc
  DEPS
    tink::core::partial_key_access
    tink::core::partial_key_access_token
    gmock
    absl::core_headers
)

tink_cc_test(
  NAME restricted_data_test
  SRCS
    core/restricted_data_test.cc
  DEPS
    tink::core::insecure_secret_key_access
    tink::core::restricted_data
    gmock
    tink::subtle::random
    tink::util::secret_data
)

tink_cc_library(
  NAME proto_keyset_format
  SRCS
    proto_keyset_format.cc
    proto_keyset_format.h
  DEPS
    tink::core::binary_keyset_reader
    tink::core::binary_keyset_writer
    tink::core::cleartext_keyset_handle
    tink::core::keyset_handle
    tink::core::secret_key_access_token
    absl::status
    absl::strings
    tink::util::secret_data
    tink::util::secret_proto
    tink::util::status
    tink::util::statusor
    tink::proto::tink_cc_proto
)

tink_cc_test(
  NAME proto_keyset_format_test
  SRCS
    proto_keyset_format_test.cc
  DEPS
    tink::core::insecure_secret_key_access
    tink::core::key_status
    tink::core::keyset_handle
    tink::core::keyset_handle_builder
    tink::core::mac
    tink::core::proto_keyset_format
    gmock
    absl::strings
    tink::config::global_registry
    tink::config::tink_config
    tink::internal::legacy_proto_parameters
    tink::internal::proto_parameters_serialization
    tink::mac::mac_key_templates
    tink::signature::signature_key_templates
    tink::util::secret_data
    tink::util::statusor
    tink::util::test_matchers
)

tink_cc_test(
  NAME big_integer_test
  SRCS
    core/big_integer_test.cc
  DEPS
    tink::core::big_integer
    gmock
    absl::strings
    absl::string_view
)

tink_cc_test(
  NAME restricted_big_integer_test
  SRCS
    core/restricted_big_integer_test.cc
  DEPS
    tink::core::insecure_secret_key_access
    tink::core::restricted_big_integer
    gmock
    absl::strings
    absl::string_view
)

tink_cc_test(
  NAME ec_point_test
  SRCS
    core/ec_point_test.cc
  DEPS
    tink::core::big_integer
    tink::core::ec_point
    gmock
    tink::subtle::random
)


================================================
FILE: cc/WORKSPACE
================================================
workspace(name = "tink_cc")

# Use this repository if you want to build the FIPS module for BoringSSL
# local_repository(
#   name = "boringssl",
#   path = "third_party/boringssl_fips/",
# )

load("@tink_cc//:tink_cc_deps.bzl", "tink_cc_deps", "tink_cc_testonly_deps")

tink_cc_deps()

tink_cc_testonly_deps()

load("@tink_cc//:tink_cc_deps_init.bzl", "tink_cc_deps_init")

tink_cc_deps_init()


================================================
FILE: cc/aead/BUILD.bazel
================================================
package(default_visibility = ["//:__subpackages__"])

licenses(["notice"])

cc_library(
    name = "aead_wrapper",
    srcs = ["aead_wrapper.cc"],
    hdrs = ["aead_wrapper.h"],
    include_prefix = "tink/aead",
    deps = [
        "//:aead",
        "//:crypto_format",
        "//:primitive_set",
        "//:primitive_wrapper",
        "//internal:monitoring_util",
        "//internal:registry_impl",
        "//internal:util",
        "//monitoring",
        "//util:status",
        "//util:statusor",
        "@com_google_absl//absl/memory",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings",
    ],
)

cc_library(
    name = "cord_aead_wrapper",
    srcs = ["cord_aead_wrapper.cc"],
    hdrs = ["cord_aead_wrapper.h"],
    include_prefix = "tink/aead",
    deps = [
        ":cord_aead",
        "//:crypto_format",
        "//:primitive_set",
        "//:primitive_wrapper",
        "//util:status",
        "//util:statusor",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings:cord",
    ],
)

cc_library(
    name = "cord_aead",
    hdrs = ["cord_aead.h"],
    include_prefix = "tink/aead",
    visibility = ["//visibility:public"],
    deps = [
        "//util:statusor",
        "@com_google_absl//absl/strings:cord",
    ],
)

cc_library(
    name = "aead_config",
    srcs = ["aead_config.cc"],
    hdrs = ["aead_config.h"],
    include_prefix = "tink/aead",
    visibility = ["//visibility:public"],
    deps = [
        ":aead_wrapper",
        ":aes_ctr_hmac_aead_key_manager",
        ":aes_ctr_hmac_aead_proto_serialization",
        ":aes_eax_key_manager",
        ":aes_eax_proto_serialization",
        ":aes_gcm_key_manager",
        ":aes_gcm_proto_serialization",
        ":aes_gcm_siv_key_manager",
        ":aes_gcm_siv_proto_serialization",
        ":kms_aead_key_manager",
        ":kms_envelope_aead_key_manager",
        ":xchacha20_poly1305_key_manager",
        ":xchacha20_poly1305_proto_serialization",
        "//:registry",
        "//config:tink_fips",
        "//mac:mac_config",
        "//proto:config_cc_proto",
        "//util:status",
        "@com_google_absl//absl/base:core_headers",
        "@com_google_absl//absl/memory",
        "@com_google_absl//absl/status",
    ],
)

cc_library(
    name = "aead_factory",
    srcs = ["aead_factory.cc"],
    hdrs = ["aead_factory.h"],
    include_prefix = "tink/aead",
    deps = [
        ":aead_wrapper",
        "//:aead",
        "//:key_manager",
        "//:keyset_handle",
        "//:registry",
        "//util:status",
        "//util:statusor",
        "@com_google_absl//absl/base:core_headers",
        "@com_google_absl//absl/memory",
    ],
)

cc_library(
    name = "aead_key_templates",
    srcs = ["aead_key_templates.cc"],
    hdrs = ["aead_key_templates.h"],
    include_prefix = "tink/aead",
    visibility = ["//visibility:public"],
    deps = [
        "//proto:aes_ctr_cc_proto",
        "//proto:aes_ctr_hmac_aead_cc_proto",
        "//proto:aes_eax_cc_proto",
        "//proto:aes_gcm_cc_proto",
        "//proto:aes_gcm_siv_cc_proto",
        "//proto:common_cc_proto",
        "//proto:hmac_cc_proto",
        "//proto:kms_envelope_cc_proto",
        "//proto:tink_cc_proto",
        "@com_google_absl//absl/base:core_headers",
        "@com_google_absl//absl/strings",
    ],
)

cc_library(
    name = "aes_eax_key_manager",
    hdrs = ["aes_eax_key_manager.h"],
    include_prefix = "tink/aead",
    deps = [
        "//:aead",
        "//:core/key_type_manager",
        "//:core/template_util",
        "//proto:aes_eax_cc_proto",
        "//proto:tink_cc_proto",
        "//subtle:aes_eax_boringssl",
        "//subtle:random",
        "//util:constants",
        "//util:secret_data",
        "//util:status",
        "//util:statusor",
        "//util:validation",
        "@com_google_absl//absl/memory",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings",
    ],
)

cc_library(
    name = "aes_gcm_key_manager",
    hdrs = ["aes_gcm_key_manager.h"],
    include_prefix = "tink/aead",
    visibility = ["//visibility:public"],
    deps = [
        ":cord_aead",
        "//:aead",
        "//:core/key_type_manager",
        "//:core/template_util",
        "//:input_stream",
        "//aead/internal:cord_aes_gcm_boringssl",
        "//internal:fips_utils",
        "//proto:aes_gcm_cc_proto",
        "//proto:tink_cc_proto",
        "//subtle:aes_gcm_boringssl",
        "//subtle:random",
        "//util:constants",
        "//util:input_stream_util",
        "//util:secret_data",
        "//util:status",
        "//util:statusor",
        "//util:validation",
        "@com_google_absl//absl/memory",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings",
    ],
)

cc_library(
    name = "aes_gcm_siv_key_manager",
    hdrs = ["aes_gcm_siv_key_manager.h"],
    include_prefix = "tink/aead",
    deps = [
        "//:aead",
        "//:core/key_type_manager",
        "//:core/template_util",
        "//proto:aes_gcm_siv_cc_proto",
        "//proto:tink_cc_proto",
        "//subtle:aes_gcm_siv_boringssl",
        "//subtle:random",
        "//util:constants",
        "//util:secret_data",
        "//util:status",
        "//util:statusor",
        "//util:validation",
        "@com_google_absl//absl/memory",
        "@com_google_absl//absl/strings",
    ],
)

cc_library(
    name = "aes_ctr_hmac_aead_key_manager",
    srcs = ["aes_ctr_hmac_aead_key_manager.cc"],
    hdrs = ["aes_ctr_hmac_aead_key_manager.h"],
    include_prefix = "tink/aead",
    visibility = ["//visibility:public"],
    deps = [
        "//:aead",
        "//:core/key_type_manager",
        "//:core/template_util",
        "//:input_stream",
        "//:mac",
        "//internal:fips_utils",
        "//mac:hmac_key_manager",
        "//proto:aes_ctr_cc_proto",
        "//proto:aes_ctr_hmac_aead_cc_proto",
        "//proto:common_cc_proto",
        "//proto:hmac_cc_proto",
        "//proto:tink_cc_proto",
        "//subtle:aes_ctr_boringssl",
        "//subtle:encrypt_then_authenticate",
        "//subtle:ind_cpa_cipher",
        "//subtle:random",
        "//util:constants",
        "//util:enums",
        "//util:input_stream_util",
        "//util:secret_data",
        "//util:status",
        "//util:statusor",
        "//util:validation",
        "@com_google_absl//absl/memory",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/status:statusor",
        "@com_google_absl//absl/strings",
    ],
)

cc_library(
    name = "xchacha20_poly1305_key_manager",
    hdrs = ["xchacha20_poly1305_key_manager.h"],
    include_prefix = "tink/aead",
    visibility = ["//visibility:public"],
    deps = [
        "//:aead",
        "//:core/key_type_manager",
        "//:core/template_util",
        "//:input_stream",
        "//proto:tink_cc_proto",
        "//proto:xchacha20_poly1305_cc_proto",
        "//subtle",
        "//subtle:xchacha20_poly1305_boringssl",
        "//util:constants",
        "//util:input_stream_util",
        "//util:secret_data",
        "//util:status",
        "//util:statusor",
        "//util:validation",
        "@com_google_absl//absl/memory",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings",
    ],
)

cc_library(
    name = "kms_aead_key_manager",
    hdrs = ["kms_aead_key_manager.h"],
    include_prefix = "tink/aead",
    deps = [
        "//:aead",
        "//:core/key_type_manager",
        "//:core/template_util",
        "//:kms_client",
        "//:kms_clients",
        "//proto:kms_aead_cc_proto",
        "//proto:tink_cc_proto",
        "//util:constants",
        "//util:status",
        "//util:statusor",
        "//util:validation",
        "@com_google_absl//absl/memory",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings",
    ],
)

cc_library(
    name = "kms_envelope_aead",
    srcs = ["kms_envelope_aead.cc"],
    hdrs = ["kms_envelope_aead.h"],
    include_prefix = "tink/aead",
    visibility = ["//visibility:public"],
    deps = [
        "//:aead",
        "//:registry",
        "//aead/internal:aead_util",
        "//proto:tink_cc_proto",
        "//util:status",
        "//util:statusor",
        "@com_google_absl//absl/base:endian",
        "@com_google_absl//absl/memory",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings",
    ],
)

cc_library(
    name = "kms_envelope_aead_key_manager",
    srcs = ["kms_envelope_aead_key_manager.cc"],
    hdrs = ["kms_envelope_aead_key_manager.h"],
    include_prefix = "tink/aead",
    deps = [
        ":kms_envelope_aead",
        "//:aead",
        "//:core/key_type_manager",
        "//:core/template_util",
        "//:kms_client",
        "//:kms_clients",
        "//aead/internal:aead_util",
        "//internal:fips_utils",
        "//proto:kms_envelope_cc_proto",
        "//proto:tink_cc_proto",
        "//util:constants",
        "//util:status",
        "//util:statusor",
        "//util:validation",
        "@com_google_absl//absl/memory",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings",
    ],
)

cc_library(
    name = "mock_aead",
    testonly = 1,
    hdrs = ["mock_aead.h"],
    include_prefix = "tink/aead",
    visibility = ["//visibility:public"],
    deps = [
        "//:aead",
        "//util:statusor",
        "@com_google_absl//absl/strings",
        "@com_google_googletest//:gtest",
    ],
)

cc_library(
    name = "failing_aead",
    testonly = 1,
    srcs = ["failing_aead.cc"],
    hdrs = ["failing_aead.h"],
    include_prefix = "tink/aead",
    visibility = ["//visibility:public"],
    deps = [
        "//:aead",
        "//util:status",
        "//util:statusor",
        "@com_google_absl//absl/memory",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings",
    ],
)

cc_library(
    name = "aead_parameters",
    hdrs = ["aead_parameters.h"],
    include_prefix = "tink/aead",
    deps = ["//:parameters"],
)

cc_library(
    name = "aead_key",
    hdrs = ["aead_key.h"],
    include_prefix = "tink/aead",
    deps = [
        ":aead_parameters",
        "//:key",
        "@com_google_absl//absl/strings",
    ],
)

cc_library(
    name = "aes_gcm_parameters",
    srcs = ["aes_gcm_parameters.cc"],
    hdrs = ["aes_gcm_parameters.h"],
    include_prefix = "tink/aead",
    deps = [
        ":aead_parameters",
        "//:parameters",
        "//util:status",
        "//util:statusor",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings",
    ],
)

cc_library(
    name = "aes_gcm_key",
    srcs = ["aes_gcm_key.cc"],
    hdrs = ["aes_gcm_key.h"],
    include_prefix = "tink/aead",
    deps = [
        ":aead_key",
        ":aes_gcm_parameters",
        "//:key",
        "//:partial_key_access_token",
        "//:restricted_data",
        "//subtle:subtle_util",
        "//util:status",
        "//util:statusor",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings",
        "@com_google_absl//absl/types:optional",
    ],
)

cc_library(
    name = "aes_gcm_proto_serialization",
    srcs = ["aes_gcm_proto_serialization.cc"],
    hdrs = ["aes_gcm_proto_serialization.h"],
    include_prefix = "tink/aead",
    deps = [
        ":aes_gcm_key",
        ":aes_gcm_parameters",
        "//:partial_key_access",
        "//:restricted_data",
        "//:secret_key_access_token",
        "//internal:key_parser",
        "//internal:key_serializer",
        "//internal:mutable_serialization_registry",
        "//internal:parameters_parser",
        "//internal:parameters_serializer",
        "//internal:proto_key_serialization",
        "//internal:proto_parameters_serialization",
        "//proto:aes_gcm_cc_proto",
        "//proto:tink_cc_proto",
        "//util:secret_data",
        "//util:secret_proto",
        "//util:status",
        "//util:statusor",
        "@com_google_absl//absl/base:core_headers",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings:string_view",
        "@com_google_absl//absl/types:optional",
    ],
)

cc_library(
    name = "aes_gcm_siv_parameters",
    srcs = ["aes_gcm_siv_parameters.cc"],
    hdrs = ["aes_gcm_siv_parameters.h"],
    include_prefix = "tink/aead",
    deps = [
        ":aead_parameters",
        "//:parameters",
        "//util:status",
        "//util:statusor",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings",
    ],
)

cc_library(
    name = "aes_gcm_siv_key",
    srcs = ["aes_gcm_siv_key.cc"],
    hdrs = ["aes_gcm_siv_key.h"],
    include_prefix = "tink/aead",
    deps = [
        ":aead_key",
        ":aes_gcm_siv_parameters",
        "//:key",
        "//:partial_key_access_token",
        "//:restricted_data",
        "//subtle:subtle_util",
        "//util:status",
        "//util:statusor",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings",
        "@com_google_absl//absl/types:optional",
    ],
)

cc_library(
    name = "aes_gcm_siv_proto_serialization",
    srcs = ["aes_gcm_siv_proto_serialization.cc"],
    hdrs = ["aes_gcm_siv_proto_serialization.h"],
    include_prefix = "tink/aead",
    deps = [
        ":aes_gcm_siv_key",
        ":aes_gcm_siv_parameters",
        "//:partial_key_access",
        "//:restricted_data",
        "//:secret_key_access_token",
        "//internal:key_parser",
        "//internal:key_serializer",
        "//internal:mutable_serialization_registry",
        "//internal:parameters_parser",
        "//internal:parameters_serializer",
        "//internal:proto_key_serialization",
        "//internal:proto_parameters_serialization",
        "//proto:aes_gcm_siv_cc_proto",
        "//proto:tink_cc_proto",
        "//util:status",
        "//util:statusor",
        "@com_google_absl//absl/base:core_headers",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings:string_view",
        "@com_google_absl//absl/types:optional",
    ],
)

cc_library(
    name = "config_v0",
    srcs = ["config_v0.cc"],
    hdrs = ["config_v0.h"],
    include_prefix = "tink/aead",
    deps = [
        "//:configuration",
        "//aead/internal:config_v0",
        "@com_google_absl//absl/log:check",
    ],
)

cc_library(
    name = "key_gen_config_v0",
    srcs = ["key_gen_config_v0.cc"],
    hdrs = ["key_gen_config_v0.h"],
    include_prefix = "tink/aead",
    deps = [
        "//:key_gen_configuration",
        "//aead/internal:key_gen_config_v0",
        "@com_google_absl//absl/log:check",
    ],
)

cc_library(
    name = "aes_eax_parameters",
    srcs = ["aes_eax_parameters.cc"],
    hdrs = ["aes_eax_parameters.h"],
    include_prefix = "tink/aead",
    deps = [
        ":aead_parameters",
        "//:parameters",
        "//util:status",
        "//util:statusor",
        "@com_google_absl//absl/container:flat_hash_set",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings",
        "@com_google_absl//absl/types:optional",
    ],
)

cc_library(
    name = "aes_eax_key",
    srcs = ["aes_eax_key.cc"],
    hdrs = ["aes_eax_key.h"],
    include_prefix = "tink/aead",
    deps = [
        ":aead_key",
        ":aes_eax_parameters",
        "//:key",
        "//:partial_key_access_token",
        "//:restricted_data",
        "//subtle:subtle_util",
        "//util:status",
        "//util:statusor",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings",
        "@com_google_absl//absl/strings:string_view",
        "@com_google_absl//absl/types:optional",
    ],
)

cc_library(
    name = "aes_eax_proto_serialization",
    srcs = ["aes_eax_proto_serialization.cc"],
    hdrs = ["aes_eax_proto_serialization.h"],
    include_prefix = "tink/aead",
    deps = [
        ":aes_eax_key",
        ":aes_eax_parameters",
        "//:partial_key_access",
        "//:restricted_data",
        "//:secret_key_access_token",
        "//internal:key_parser",
        "//internal:key_serializer",
        "//internal:mutable_serialization_registry",
        "//internal:parameters_parser",
        "//internal:parameters_serializer",
        "//internal:proto_key_serialization",
        "//internal:proto_parameters_serialization",
        "//proto:aes_eax_cc_proto",
        "//proto:tink_cc_proto",
        "//util:secret_data",
        "//util:secret_proto",
        "//util:status",
        "//util:statusor",
        "@com_google_absl//absl/base:core_headers",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings",
        "@com_google_absl//absl/strings:string_view",
        "@com_google_absl//absl/types:optional",
    ],
)

cc_library(
    name = "xchacha20_poly1305_parameters",
    srcs = ["xchacha20_poly1305_parameters.cc"],
    hdrs = ["xchacha20_poly1305_parameters.h"],
    include_prefix = "tink/aead",
    deps = [
        ":aead_parameters",
        "//:parameters",
        "//util:status",
        "//util:statusor",
        "@com_google_absl//absl/status",
    ],
)

cc_library(
    name = "xchacha20_poly1305_key",
    srcs = ["xchacha20_poly1305_key.cc"],
    hdrs = ["xchacha20_poly1305_key.h"],
    include_prefix = "tink/aead",
    deps = [
        ":aead_key",
        ":xchacha20_poly1305_parameters",
        "//:key",
        "//:partial_key_access_token",
        "//:restricted_data",
        "//subtle:subtle_util",
        "//util:status",
        "//util:statusor",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings",
        "@com_google_absl//absl/types:optional",
    ],
)

cc_library(
    name = "xchacha20_poly1305_proto_serialization",
    srcs = ["xchacha20_poly1305_proto_serialization.cc"],
    hdrs = ["xchacha20_poly1305_proto_serialization.h"],
    include_prefix = "tink/aead",
    deps = [
        ":xchacha20_poly1305_key",
        ":xchacha20_poly1305_parameters",
        "//:partial_key_access",
        "//:restricted_data",
        "//:secret_key_access_token",
        "//internal:key_parser",
        "//internal:key_serializer",
        "//internal:mutable_serialization_registry",
        "//internal:parameters_parser",
        "//internal:parameters_serializer",
        "//internal:proto_key_serialization",
        "//internal:proto_parameters_serialization",
        "//proto:tink_cc_proto",
        "//proto:xchacha20_poly1305_cc_proto",
        "//util:status",
        "//util:statusor",
        "@com_google_absl//absl/base:core_headers",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings:string_view",
        "@com_google_absl//absl/types:optional",
    ],
)

cc_library(
    name = "chacha20_poly1305_parameters",
    srcs = ["chacha20_poly1305_parameters.cc"],
    hdrs = ["chacha20_poly1305_parameters.h"],
    include_prefix = "tink/aead",
    deps = [
        ":aead_parameters",
        "//:parameters",
        "//util:status",
        "//util:statusor",
        "@com_google_absl//absl/status",
    ],
)

cc_library(
    name = "chacha20_poly1305_key",
    srcs = ["chacha20_poly1305_key.cc"],
    hdrs = ["chacha20_poly1305_key.h"],
    include_prefix = "tink/aead",
    deps = [
        ":aead_key",
        ":chacha20_poly1305_parameters",
        "//:key",
        "//:partial_key_access_token",
        "//:restricted_data",
        "//subtle:subtle_util",
        "//util:status",
        "//util:statusor",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings",
        "@com_google_absl//absl/types:optional",
    ],
)

cc_library(
    name = "chacha20_poly1305_proto_serialization",
    srcs = ["chacha20_poly1305_proto_serialization.cc"],
    hdrs = ["chacha20_poly1305_proto_serialization.h"],
    include_prefix = "tink/aead",
    deps = [
        ":chacha20_poly1305_key",
        ":chacha20_poly1305_parameters",
        "//:partial_key_access",
        "//:restricted_data",
        "//:secret_key_access_token",
        "//internal:key_parser",
        "//internal:key_serializer",
        "//internal:mutable_serialization_registry",
        "//internal:parameters_parser",
        "//internal:parameters_serializer",
        "//internal:proto_key_serialization",
        "//internal:proto_parameters_serialization",
        "//proto:chacha20_poly1305_cc_proto",
        "//proto:tink_cc_proto",
        "//util:status",
        "//util:statusor",
        "@com_google_absl//absl/base:core_headers",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings:string_view",
        "@com_google_absl//absl/types:optional",
    ],
)

cc_library(
    name = "aes_ctr_hmac_aead_parameters",
    srcs = ["aes_ctr_hmac_aead_parameters.cc"],
    hdrs = ["aes_ctr_hmac_aead_parameters.h"],
    include_prefix = "tink/aead",
    deps = [
        ":aead_parameters",
        "//:parameters",
        "//util:status",
        "//util:statusor",
        "@com_google_absl//absl/algorithm:container",
        "@com_google_absl//absl/container:flat_hash_map",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings",
        "@com_google_absl//absl/types:optional",
    ],
)

cc_library(
    name = "aes_ctr_hmac_aead_key",
    srcs = ["aes_ctr_hmac_aead_key.cc"],
    hdrs = ["aes_ctr_hmac_aead_key.h"],
    include_prefix = "tink/aead",
    deps = [
        ":aead_key",
        ":aes_ctr_hmac_aead_parameters",
        "//:key",
        "//:partial_key_access_token",
        "//:restricted_data",
        "//subtle:subtle_util",
        "//util:status",
        "//util:statusor",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings",
        "@com_google_absl//absl/strings:string_view",
        "@com_google_absl//absl/types:optional",
    ],
)

cc_library(
    name = "aes_ctr_hmac_aead_proto_serialization",
    srcs = ["aes_ctr_hmac_aead_proto_serialization.cc"],
    hdrs = ["aes_ctr_hmac_aead_proto_serialization.h"],
    include_prefix = "tink/aead",
    deps = [
        ":aes_ctr_hmac_aead_key",
        ":aes_ctr_hmac_aead_parameters",
        "//:partial_key_access",
        "//:restricted_data",
        "//:secret_key_access_token",
        "//internal:key_parser",
        "//internal:key_serializer",
        "//internal:mutable_serialization_registry",
        "//internal:parameters_parser",
        "//internal:parameters_serializer",
        "//internal:proto_key_serialization",
        "//internal:proto_parameters_serialization",
        "//proto:aes_ctr_cc_proto",
        "//proto:aes_ctr_hmac_aead_cc_proto",
        "//proto:common_cc_proto",
        "//proto:hmac_cc_proto",
        "//proto:tink_cc_proto",
        "//util:secret_data",
        "//util:secret_proto",
        "//util:status",
        "//util:statusor",
        "@com_google_absl//absl/base:core_headers",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings",
        "@com_google_absl//absl/strings:string_view",
        "@com_google_absl//absl/types:optional",
    ],
)

# tests

cc_test(
    name = "aead_wrapper_test",
    size = "small",
    srcs = ["aead_wrapper_test.cc"],
    deps = [
        ":aead_wrapper",
        ":mock_aead",
        "//:aead",
        "//:crypto_format",
        "//:primitive_set",
        "//:registry",
        "//internal:registry_impl",
        "//monitoring",
        "//monitoring:monitoring_client_mocks",
        "//proto:tink_cc_proto",
        "//util:status",
        "//util:statusor",
        "//util:test_matchers",
        "//util:test_util",
        "@com_google_absl//absl/container:flat_hash_map",
        "@com_google_absl//absl/memory",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/status:statusor",
        "@com_google_absl//absl/strings",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "aead_config_test",
    size = "small",
    srcs = ["aead_config_test.cc"],
    tags = ["fips"],
    deps = [
        ":aead_config",
        ":aead_key_templates",
        ":aes_ctr_hmac_aead_key",
        ":aes_ctr_hmac_aead_parameters",
        ":aes_eax_key",
        ":aes_eax_parameters",
        ":aes_gcm_key",
        ":aes_gcm_key_manager",
        ":aes_gcm_parameters",
        ":aes_gcm_siv_key",
        ":aes_gcm_siv_parameters",
        ":key_gen_config_v0",
        ":xchacha20_poly1305_key",
        ":xchacha20_poly1305_parameters",
        "//:aead",
        "//:insecure_secret_key_access",
        "//:key",
        "//:key_status",
        "//:keyset_handle",
        "//:keyset_handle_builder",
        "//:parameters",
        "//:partial_key_access",
        "//:registry",
        "//:restricted_data",
        "//config:global_registry",
        "//config:tink_fips",
        "//internal:fips_utils",
        "//internal:legacy_proto_key",
        "//internal:mutable_serialization_registry",
        "//internal:proto_key_serialization",
        "//internal:proto_parameters_serialization",
        "//internal:serialization",
        "//proto:aes_eax_cc_proto",
        "//proto:aes_gcm_cc_proto",
        "//proto:aes_gcm_siv_cc_proto",
        "//proto:tink_cc_proto",
        "//proto:xchacha20_poly1305_cc_proto",
        "//subtle:random",
        "//util:statusor",
        "//util:test_matchers",
        "@com_google_absl//absl/status",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "aead_factory_test",
    size = "small",
    srcs = ["aead_factory_test.cc"],
    deps = [
        ":aead_config",
        ":aead_factory",
        ":aes_gcm_key_manager",
        "//:aead",
        "//:crypto_format",
        "//:keyset_handle",
        "//internal:key_info",
        "//proto:aes_gcm_cc_proto",
        "//proto:tink_cc_proto",
        "//util:status",
        "//util:statusor",
        "//util:test_keyset_handle",
        "//util:test_util",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "aead_key_templates_test",
    size = "small",
    srcs = ["aead_key_templates_test.cc"],
    deps = [
        ":aead_config",
        ":aead_key_templates",
        ":aes_ctr_hmac_aead_key_manager",
        ":aes_eax_key_manager",
        ":aes_gcm_key_manager",
        ":aes_gcm_siv_key_manager",
        ":kms_envelope_aead_key_manager",
        ":xchacha20_poly1305_key_manager",
        "//:aead",
        "//:core/key_manager_impl",
        "//:key_manager",
        "//:keyset_handle",
        "//config:global_registry",
        "//proto:aes_ctr_cc_proto",
        "//proto:aes_ctr_hmac_aead_cc_proto",
        "//proto:aes_eax_cc_proto",
        "//proto:aes_gcm_cc_proto",
        "//proto:aes_gcm_siv_cc_proto",
        "//proto:common_cc_proto",
        "//proto:hmac_cc_proto",
        "//proto:kms_envelope_cc_proto",
        "//proto:tink_cc_proto",
        "//proto:xchacha20_poly1305_cc_proto",
        "//subtle:aead_test_util",
        "//util:fake_kms_client",
        "//util:status",
        "//util:test_matchers",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/status:statusor",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "aes_eax_key_manager_test",
    size = "small",
    srcs = ["aes_eax_key_manager_test.cc"],
    deps = [
        ":aes_eax_key_manager",
        "//:aead",
        "//proto:aes_eax_cc_proto",
        "//proto:tink_cc_proto",
        "//subtle:aead_test_util",
        "//subtle:aes_eax_boringssl",
        "//util:secret_data",
        "//util:status",
        "//util:statusor",
        "//util:test_matchers",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "aes_gcm_key_manager_test",
    size = "small",
    srcs = ["aes_gcm_key_manager_test.cc"],
    deps = [
        ":aes_gcm_key_manager",
        ":cord_aead",
        "//:aead",
        "//aead/internal:cord_aes_gcm_boringssl",
        "//proto:aes_gcm_cc_proto",
        "//proto:tink_cc_proto",
        "//subtle:aead_test_util",
        "//subtle:aes_gcm_boringssl",
        "//util:istream_input_stream",
        "//util:secret_data",
        "//util:status",
        "//util:statusor",
        "//util:test_matchers",
        "@com_google_absl//absl/memory",
        "@com_google_absl//absl/status",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "aes_gcm_siv_key_manager_test",
    size = "small",
    srcs = ["aes_gcm_siv_key_manager_test.cc"],
    deps = [
        ":aes_gcm_siv_key_manager",
        "//:aead",
        "//internal:ssl_util",
        "//proto:aes_gcm_siv_cc_proto",
        "//proto:tink_cc_proto",
        "//subtle:aead_test_util",
        "//subtle:aes_gcm_siv_boringssl",
        "//util:secret_data",
        "//util:status",
        "//util:statusor",
        "//util:test_matchers",
        "@com_google_absl//absl/status",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "aes_ctr_hmac_aead_key_manager_test",
    size = "small",
    srcs = ["aes_ctr_hmac_aead_key_manager_test.cc"],
    deps = [
        ":aes_ctr_hmac_aead_key_manager",
        "//:aead",
        "//proto:aes_ctr_cc_proto",
        "//proto:aes_ctr_hmac_aead_cc_proto",
        "//proto:common_cc_proto",
        "//proto:hmac_cc_proto",
        "//proto:tink_cc_proto",
        "//subtle",
        "//subtle:aead_test_util",
        "//subtle:aes_ctr_boringssl",
        "//util:enums",
        "//util:istream_input_stream",
        "//util:secret_data",
        "//util:status",
        "//util:statusor",
        "//util:test_matchers",
        "@com_google_absl//absl/memory",
        "@com_google_absl//absl/status",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "xchacha20_poly1305_key_manager_test",
    size = "small",
    srcs = ["xchacha20_poly1305_key_manager_test.cc"],
    deps = [
        ":xchacha20_poly1305_key_manager",
        "//:aead",
        "//internal:ssl_util",
        "//proto:tink_cc_proto",
        "//proto:xchacha20_poly1305_cc_proto",
        "//subtle:aead_test_util",
        "//subtle:xchacha20_poly1305_boringssl",
        "//util:istream_input_stream",
        "//util:secret_data",
        "//util:status",
        "//util:statusor",
        "//util:test_matchers",
        "@com_google_absl//absl/memory",
        "@com_google_absl//absl/status",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "kms_aead_key_manager_test",
    size = "small",
    srcs = ["kms_aead_key_manager_test.cc"],
    deps = [
        ":kms_aead_key_manager",
        "//:aead",
        "//:kms_client",
        "//:kms_clients",
        "//proto:kms_aead_cc_proto",
        "//proto:tink_cc_proto",
        "//subtle:aead_test_util",
        "//util:status",
        "//util:statusor",
        "//util:test_matchers",
        "//util:test_util",
        "@com_google_absl//absl/memory",
        "@com_google_absl//absl/status",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "kms_envelope_aead_test",
    size = "small",
    srcs = ["kms_envelope_aead_test.cc"],
    deps = [
        ":aead_config",
        ":aead_key_templates",
        ":kms_envelope_aead",
        "//:aead",
        "//:keyset_handle",
        "//:registry",
        "//config:global_registry",
        "//internal:ssl_util",
        "//mac:mac_key_templates",
        "//proto:aes_gcm_cc_proto",
        "//proto:tink_cc_proto",
        "//util:fake_kms_client",
        "//util:status",
        "//util:statusor",
        "//util:test_matchers",
        "//util:test_util",
        "@com_google_absl//absl/base:endian",
        "@com_google_absl//absl/memory",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "kms_envelope_aead_key_manager_test",
    size = "small",
    srcs = ["kms_envelope_aead_key_manager_test.cc"],
    deps = [
        ":aead_config",
        ":aead_key_templates",
        ":aes_eax_key_manager",
        ":kms_envelope_aead",
        ":kms_envelope_aead_key_manager",
        "//:aead",
        "//:keyset_handle",
        "//:kms_client",
        "//:kms_clients",
        "//:registry",
        "//config:global_registry",
        "//mac:mac_key_templates",
        "//proto:kms_envelope_cc_proto",
        "//proto:tink_cc_proto",
        "//subtle:aead_test_util",
        "//util:fake_kms_client",
        "//util:status",
        "//util:statusor",
        "//util:test_matchers",
        "//util:test_util",
        "@com_google_absl//absl/memory",
        "@com_google_absl//absl/status",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "cord_aead_wrapper_test",
    size = "small",
    srcs = ["cord_aead_wrapper_test.cc"],
    deps = [
        ":cord_aead",
        ":cord_aead_wrapper",
        "//:primitive_set",
        "//proto:tink_cc_proto",
        "//util:status",
        "//util:test_matchers",
        "//util:test_util",
        "@com_google_absl//absl/memory",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings",
        "@com_google_absl//absl/strings:cord",
        "@com_google_absl//absl/strings:cord_test_helpers",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "failing_aead_test",
    srcs = ["failing_aead_test.cc"],
    deps = [
        ":failing_aead",
        "//:aead",
        "//util:test_matchers",
        "@com_google_absl//absl/status",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "aes_gcm_parameters_test",
    srcs = ["aes_gcm_parameters_test.cc"],
    deps = [
        ":aes_gcm_parameters",
        "//util:statusor",
        "//util:test_matchers",
        "@com_google_absl//absl/status",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "aes_gcm_key_test",
    srcs = ["aes_gcm_key_test.cc"],
    deps = [
        ":aes_gcm_key",
        ":aes_gcm_parameters",
        "//:partial_key_access",
        "//:restricted_data",
        "//util:statusor",
        "//util:test_matchers",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/types:optional",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "aes_gcm_proto_serialization_test",
    size = "small",
    srcs = ["aes_gcm_proto_serialization_test.cc"],
    deps = [
        ":aes_gcm_key",
        ":aes_gcm_parameters",
        ":aes_gcm_proto_serialization",
        "//:insecure_secret_key_access",
        "//:key",
        "//:parameters",
        "//:partial_key_access",
        "//:restricted_data",
        "//internal:mutable_serialization_registry",
        "//internal:proto_key_serialization",
        "//internal:proto_parameters_serialization",
        "//internal:serialization",
        "//proto:aes_gcm_cc_proto",
        "//proto:tink_cc_proto",
        "//subtle:random",
        "//util:statusor",
        "//util:test_matchers",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/types:optional",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "aes_gcm_siv_parameters_test",
    srcs = ["aes_gcm_siv_parameters_test.cc"],
    deps = [
        ":aes_gcm_siv_parameters",
        "//util:statusor",
        "//util:test_matchers",
        "@com_google_absl//absl/status",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "aes_gcm_siv_key_test",
    srcs = ["aes_gcm_siv_key_test.cc"],
    deps = [
        ":aes_gcm_siv_key",
        ":aes_gcm_siv_parameters",
        "//:partial_key_access",
        "//:restricted_data",
        "//util:statusor",
        "//util:test_matchers",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/types:optional",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "aes_gcm_siv_proto_serialization_test",
    size = "small",
    srcs = ["aes_gcm_siv_proto_serialization_test.cc"],
    deps = [
        ":aes_gcm_siv_key",
        ":aes_gcm_siv_parameters",
        ":aes_gcm_siv_proto_serialization",
        "//:insecure_secret_key_access",
        "//:key",
        "//:parameters",
        "//:partial_key_access",
        "//:restricted_data",
        "//internal:mutable_serialization_registry",
        "//internal:proto_key_serialization",
        "//internal:proto_parameters_serialization",
        "//internal:serialization",
        "//proto:aes_gcm_siv_cc_proto",
        "//proto:tink_cc_proto",
        "//subtle:random",
        "//util:statusor",
        "//util:test_matchers",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/types:optional",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "config_v0_test",
    srcs = ["config_v0_test.cc"],
    deps = [
        ":aead_key_templates",
        ":config_v0",
        ":key_gen_config_v0",
        "//:aead",
        "//:keyset_handle",
        "//internal:ssl_util",
        "//proto:tink_cc_proto",
        "//util:statusor",
        "//util:test_matchers",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "aes_eax_parameters_test",
    srcs = ["aes_eax_parameters_test.cc"],
    deps = [
        ":aes_eax_parameters",
        "//util:statusor",
        "//util:test_matchers",
        "@com_google_absl//absl/status",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "aes_eax_key_test",
    srcs = ["aes_eax_key_test.cc"],
    deps = [
        ":aes_eax_key",
        ":aes_eax_parameters",
        "//:partial_key_access",
        "//:restricted_data",
        "//util:statusor",
        "//util:test_matchers",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/types:optional",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "aes_eax_proto_serialization_test",
    srcs = ["aes_eax_proto_serialization_test.cc"],
    deps = [
        ":aes_eax_key",
        ":aes_eax_parameters",
        ":aes_eax_proto_serialization",
        "//:insecure_secret_key_access",
        "//:key",
        "//:parameters",
        "//:partial_key_access",
        "//:restricted_data",
        "//internal:mutable_serialization_registry",
        "//internal:proto_key_serialization",
        "//internal:proto_parameters_serialization",
        "//internal:serialization",
        "//proto:aes_eax_cc_proto",
        "//proto:tink_cc_proto",
        "//subtle:random",
        "//util:statusor",
        "//util:test_matchers",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings:string_view",
        "@com_google_absl//absl/types:optional",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "xchacha20_poly1305_parameters_test",
    srcs = ["xchacha20_poly1305_parameters_test.cc"],
    deps = [
        ":xchacha20_poly1305_parameters",
        "//util:statusor",
        "//util:test_matchers",
        "@com_google_absl//absl/status",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "xchacha20_poly1305_key_test",
    srcs = ["xchacha20_poly1305_key_test.cc"],
    deps = [
        ":xchacha20_poly1305_key",
        ":xchacha20_poly1305_parameters",
        "//:partial_key_access",
        "//:restricted_data",
        "//util:statusor",
        "//util:test_matchers",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/types:optional",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "xchacha20_poly1305_proto_serialization_test",
    srcs = ["xchacha20_poly1305_proto_serialization_test.cc"],
    deps = [
        ":xchacha20_poly1305_key",
        ":xchacha20_poly1305_parameters",
        ":xchacha20_poly1305_proto_serialization",
        "//:insecure_secret_key_access",
        "//:key",
        "//:parameters",
        "//:partial_key_access",
        "//:restricted_data",
        "//internal:mutable_serialization_registry",
        "//internal:proto_key_serialization",
        "//internal:proto_parameters_serialization",
        "//internal:serialization",
        "//proto:tink_cc_proto",
        "//proto:xchacha20_poly1305_cc_proto",
        "//subtle:random",
        "//util:statusor",
        "//util:test_matchers",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings:string_view",
        "@com_google_absl//absl/types:optional",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "chacha20_poly1305_parameters_test",
    srcs = ["chacha20_poly1305_parameters_test.cc"],
    deps = [
        ":chacha20_poly1305_parameters",
        "//util:statusor",
        "//util:test_matchers",
        "@com_google_absl//absl/status",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "chacha20_poly1305_key_test",
    srcs = ["chacha20_poly1305_key_test.cc"],
    deps = [
        ":chacha20_poly1305_key",
        ":chacha20_poly1305_parameters",
        "//:partial_key_access",
        "//:restricted_data",
        "//util:statusor",
        "//util:test_matchers",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/types:optional",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "chacha20_poly1305_proto_serialization_test",
    srcs = ["chacha20_poly1305_proto_serialization_test.cc"],
    deps = [
        ":chacha20_poly1305_key",
        ":chacha20_poly1305_parameters",
        ":chacha20_poly1305_proto_serialization",
        "//:insecure_secret_key_access",
        "//:key",
        "//:parameters",
        "//:partial_key_access",
        "//:restricted_data",
        "//internal:mutable_serialization_registry",
        "//internal:proto_key_serialization",
        "//internal:proto_parameters_serialization",
        "//internal:serialization",
        "//proto:chacha20_poly1305_cc_proto",
        "//proto:tink_cc_proto",
        "//subtle:random",
        "//util:statusor",
        "//util:test_matchers",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings:string_view",
        "@com_google_absl//absl/types:optional",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "aes_ctr_hmac_aead_parameters_test",
    srcs = ["aes_ctr_hmac_aead_parameters_test.cc"],
    deps = [
        ":aes_ctr_hmac_aead_parameters",
        "//util:statusor",
        "//util:test_matchers",
        "@com_google_absl//absl/status",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "aes_ctr_hmac_aead_key_test",
    srcs = ["aes_ctr_hmac_aead_key_test.cc"],
    deps = [
        ":aes_ctr_hmac_aead_key",
        ":aes_ctr_hmac_aead_parameters",
        "//:partial_key_access",
        "//:restricted_data",
        "//util:statusor",
        "//util:test_matchers",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/types:optional",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "aes_ctr_hmac_aead_proto_serialization_test",
    srcs = ["aes_ctr_hmac_aead_proto_serialization_test.cc"],
    deps = [
        ":aes_ctr_hmac_aead_key",
        ":aes_ctr_hmac_aead_parameters",
        ":aes_ctr_hmac_aead_proto_serialization",
        "//:insecure_secret_key_access",
        "//:key",
        "//:parameters",
        "//:partial_key_access",
        "//:restricted_data",
        "//internal:mutable_serialization_registry",
        "//internal:proto_key_serialization",
        "//internal:proto_parameters_serialization",
        "//internal:serialization",
        "//proto:aes_ctr_cc_proto",
        "//proto:aes_ctr_hmac_aead_cc_proto",
        "//proto:common_cc_proto",
        "//proto:hmac_cc_proto",
        "//proto:tink_cc_proto",
        "//subtle:random",
        "//util:statusor",
        "//util:test_matchers",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings:string_view",
        "@com_google_absl//absl/types:optional",
        "@com_google_googletest//:gtest_main",
    ],
)


================================================
FILE: cc/aead/CMakeLists.txt
================================================
tink_module(aead)

add_subdirectory(internal)

tink_cc_library(
  NAME aead_wrapper
  SRCS
    aead_wrapper.cc
    aead_wrapper.h
  DEPS
    absl::memory
    absl::status
    absl::strings
    tink::core::aead
    tink::core::crypto_format
    tink::core::primitive_set
    tink::core::primitive_wrapper
    tink::internal::monitoring_util
    tink::internal::registry_impl
    tink::internal::util
    tink::monitoring::monitoring
    tink::util::status
    tink::util::statusor
)

tink_cc_library(
  NAME cord_aead
  SRCS
    cord_aead.h
  DEPS
    absl::cord
    tink::util::statusor
)

tink_cc_library(
  NAME cord_aead_wrapper
  SRCS
    cord_aead_wrapper.cc
    cord_aead_wrapper.h
  DEPS
    tink::aead::cord_aead
    absl::status
    absl::cord
    tink::core::crypto_format
    tink::core::primitive_set
    tink::core::primitive_wrapper
    tink::util::status
    tink::util::statusor
)

tink_cc_library(
  NAME aead_config
  SRCS
    aead_config.cc
    aead_config.h
  DEPS
    tink::aead::aead_wrapper
    tink::aead::aes_ctr_hmac_aead_key_manager
    tink::aead::aes_ctr_hmac_aead_proto_serialization
    tink::aead::aes_eax_key_manager
    tink::aead::aes_eax_proto_serialization
    tink::aead::aes_gcm_key_manager
    tink::aead::aes_gcm_proto_serialization
    tink::aead::aes_gcm_siv_key_manager
    tink::aead::aes_gcm_siv_proto_serialization
    tink::aead::kms_aead_key_manager
    tink::aead::kms_envelope_aead_key_manager
    tink::aead::xchacha20_poly1305_key_manager
    tink::aead::xchacha20_poly1305_proto_serialization
    absl::core_headers
    absl::memory
    absl::status
    tink::core::registry
    tink::config::tink_fips
    tink::mac::mac_config
    tink::util::status
    tink::proto::config_cc_proto
)

tink_cc_library(
  NAME aead_factory
  SRCS
    aead_factory.cc
    aead_factory.h
  DEPS
    tink::aead::aead_wrapper
    absl::core_headers
    absl::memory
    tink::core::aead
    tink::core::key_manager
    tink::core::keyset_handle
    tink::core::registry
    tink::util::status
    tink::util::statusor
)

tink_cc_library(
  NAME aead_key_templates
  SRCS
    aead_key_templates.cc
    aead_key_templates.h
  DEPS
    absl::core_headers
    absl::strings
    tink::proto::aes_ctr_cc_proto
    tink::proto::aes_ctr_hmac_aead_cc_proto
    tink::proto::aes_eax_cc_proto
    tink::proto::aes_gcm_cc_proto
    tink::proto::aes_gcm_siv_cc_proto
    tink::proto::common_cc_proto
    tink::proto::hmac_cc_proto
    tink::proto::kms_envelope_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_library(
  NAME aes_eax_key_manager
  SRCS
    aes_eax_key_manager.h
  DEPS
    absl::memory
    absl::status
    absl::strings
    tink::core::aead
    tink::core::key_type_manager
    tink::core::template_util
    tink::subtle::aes_eax_boringssl
    tink::subtle::random
    tink::util::constants
    tink::util::secret_data
    tink::util::status
    tink::util::statusor
    tink::util::validation
    tink::proto::aes_eax_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_library(
  NAME aes_gcm_key_manager
  SRCS
    aes_gcm_key_manager.h
  DEPS
    tink::aead::cord_aead
    absl::memory
    absl::status
    absl::strings
    tink::core::aead
    tink::core::key_type_manager
    tink::core::template_util
    tink::core::input_stream
    tink::aead::internal::cord_aes_gcm_boringssl
    tink::internal::fips_utils
    tink::subtle::aes_gcm_boringssl
    tink::subtle::random
    tink::util::constants
    tink::util::input_stream_util
    tink::util::secret_data
    tink::util::status
    tink::util::statusor
    tink::util::validation
    tink::proto::aes_gcm_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_library(
  NAME aes_gcm_siv_key_manager
  SRCS
    aes_gcm_siv_key_manager.h
  DEPS
    absl::memory
    absl::strings
    tink::core::aead
    tink::core::key_type_manager
    tink::core::template_util
    tink::subtle::aes_gcm_siv_boringssl
    tink::subtle::random
    tink::util::constants
    tink::util::secret_data
    tink::util::status
    tink::util::statusor
    tink::util::validation
    tink::proto::aes_gcm_siv_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_library(
  NAME aes_ctr_hmac_aead_key_manager
  SRCS
    aes_ctr_hmac_aead_key_manager.cc
    aes_ctr_hmac_aead_key_manager.h
  DEPS
    absl::memory
    absl::status
    absl::statusor
    absl::strings
    tink::core::aead
    tink::core::key_type_manager
    tink::core::template_util
    tink::core::input_stream
    tink::core::mac
    tink::internal::fips_utils
    tink::mac::hmac_key_manager
    tink::subtle::aes_ctr_boringssl
    tink::subtle::encrypt_then_authenticate
    tink::subtle::ind_cpa_cipher
    tink::subtle::random
    tink::util::constants
    tink::util::enums
    tink::util::input_stream_util
    tink::util::secret_data
    tink::util::status
    tink::util::statusor
    tink::util::validation
    tink::proto::aes_ctr_cc_proto
    tink::proto::aes_ctr_hmac_aead_cc_proto
    tink::proto::common_cc_proto
    tink::proto::hmac_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_library(
  NAME xchacha20_poly1305_key_manager
  SRCS
    xchacha20_poly1305_key_manager.h
  DEPS
    absl::memory
    absl::status
    absl::strings
    tink::core::aead
    tink::core::key_type_manager
    tink::core::template_util
    tink::core::input_stream
    tink::subtle::subtle
    tink::subtle::xchacha20_poly1305_boringssl
    tink::util::constants
    tink::util::input_stream_util
    tink::util::secret_data
    tink::util::status
    tink::util::statusor
    tink::util::validation
    tink::proto::tink_cc_proto
    tink::proto::xchacha20_poly1305_cc_proto
)

tink_cc_library(
  NAME kms_aead_key_manager
  SRCS
    kms_aead_key_manager.h
  DEPS
    absl::memory
    absl::status
    absl::strings
    tink::core::aead
    tink::core::key_type_manager
    tink::core::template_util
    tink::core::kms_client
    tink::core::kms_clients
    tink::util::constants
    tink::util::status
    tink::util::statusor
    tink::util::validation
    tink::proto::kms_aead_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_library(
  NAME kms_envelope_aead
  SRCS
    kms_envelope_aead.cc
    kms_envelope_aead.h
  DEPS
    absl::endian
    absl::memory
    absl::status
    absl::strings
    tink::core::aead
    tink::core::registry
    tink::aead::internal::aead_util
    tink::util::status
    tink::util::statusor
    tink::proto::tink_cc_proto
)

tink_cc_library(
  NAME kms_envelope_aead_key_manager
  SRCS
    kms_envelope_aead_key_manager.cc
    kms_envelope_aead_key_manager.h
  DEPS
    tink::aead::kms_envelope_aead
    absl::memory
    absl::status
    absl::strings
    tink::core::aead
    tink::core::key_type_manager
    tink::core::template_util
    tink::core::kms_client
    tink::core::kms_clients
    tink::aead::internal::aead_util
    tink::internal::fips_utils
    tink::util::constants
    tink::util::status
    tink::util::statusor
    tink::util::validation
    tink::proto::kms_envelope_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_library(
  NAME mock_aead
  SRCS
    mock_aead.h
  DEPS
    gmock
    absl::strings
    tink::core::aead
    tink::util::statusor
  TESTONLY
)

tink_cc_library(
  NAME failing_aead
  SRCS
    failing_aead.cc
    failing_aead.h
  DEPS
    absl::memory
    absl::status
    absl::strings
    tink::core::aead
    tink::util::status
    tink::util::statusor
  TESTONLY
)

tink_cc_library(
  NAME aead_parameters
  SRCS
    aead_parameters.h
  DEPS
    tink::core::parameters
)

tink_cc_library(
  NAME aead_key
  SRCS
    aead_key.h
  DEPS
    tink::aead::aead_parameters
    absl::strings
    tink::core::key
)

tink_cc_library(
  NAME aes_gcm_parameters
  SRCS
    aes_gcm_parameters.cc
    aes_gcm_parameters.h
  DEPS
    tink::aead::aead_parameters
    absl::status
    absl::strings
    tink::core::parameters
    tink::util::status
    tink::util::statusor
)

tink_cc_library(
  NAME aes_gcm_key
  SRCS
    aes_gcm_key.cc
    aes_gcm_key.h
  DEPS
    tink::aead::aead_key
    tink::aead::aes_gcm_parameters
    absl::status
    absl::strings
    absl::optional
    tink::core::key
    tink::core::partial_key_access_token
    tink::core::restricted_data
    tink::subtle::subtle_util
    tink::util::status
    tink::util::statusor
)

tink_cc_library(
  NAME aes_gcm_proto_serialization
  SRCS
    aes_gcm_proto_serialization.cc
    aes_gcm_proto_serialization.h
  DEPS
    tink::aead::aes_gcm_key
    tink::aead::aes_gcm_parameters
    absl::core_headers
    absl::status
    absl::string_view
    absl::optional
    tink::core::partial_key_access
    tink::core::restricted_data
    tink::core::secret_key_access_token
    tink::internal::key_parser
    tink::internal::key_serializer
    tink::internal::mutable_serialization_registry
    tink::internal::parameters_parser
    tink::internal::parameters_serializer
    tink::internal::proto_key_serialization
    tink::internal::proto_parameters_serialization
    tink::util::secret_data
    tink::util::secret_proto
    tink::util::status
    tink::util::statusor
    tink::proto::aes_gcm_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_library(
  NAME aes_gcm_siv_parameters
  SRCS
    aes_gcm_siv_parameters.cc
    aes_gcm_siv_parameters.h
  DEPS
    tink::aead::aead_parameters
    absl::status
    absl::strings
    tink::core::parameters
    tink::util::status
    tink::util::statusor
)

tink_cc_library(
  NAME aes_gcm_siv_key
  SRCS
    aes_gcm_siv_key.cc
    aes_gcm_siv_key.h
  DEPS
    tink::aead::aead_key
    tink::aead::aes_gcm_siv_parameters
    absl::status
    absl::strings
    absl::optional
    tink::core::key
    tink::core::partial_key_access_token
    tink::core::restricted_data
    tink::subtle::subtle_util
    tink::util::status
    tink::util::statusor
)

tink_cc_library(
  NAME aes_gcm_siv_proto_serialization
  SRCS
    aes_gcm_siv_proto_serialization.cc
    aes_gcm_siv_proto_serialization.h
  DEPS
    tink::aead::aes_gcm_siv_key
    tink::aead::aes_gcm_siv_parameters
    absl::core_headers
    absl::status
    absl::string_view
    absl::optional
    tink::core::partial_key_access
    tink::core::restricted_data
    tink::core::secret_key_access_token
    tink::internal::key_parser
    tink::internal::key_serializer
    tink::internal::mutable_serialization_registry
    tink::internal::parameters_parser
    tink::internal::parameters_serializer
    tink::internal::proto_key_serialization
    tink::internal::proto_parameters_serialization
    tink::util::status
    tink::util::statusor
    tink::proto::aes_gcm_siv_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_library(
  NAME config_v0
  SRCS
    config_v0.cc
    config_v0.h
  DEPS
    absl::check
    tink::core::configuration
    tink::aead::internal::config_v0
)

tink_cc_library(
  NAME key_gen_config_v0
  SRCS
    key_gen_config_v0.cc
    key_gen_config_v0.h
  DEPS
    absl::check
    tink::core::key_gen_configuration
    tink::aead::internal::key_gen_config_v0
)

tink_cc_library(
  NAME aes_eax_parameters
  SRCS
    aes_eax_parameters.cc
    aes_eax_parameters.h
  DEPS
    tink::aead::aead_parameters
    absl::flat_hash_set
    absl::status
    absl::strings
    absl::optional
    tink::core::parameters
    tink::util::status
    tink::util::statusor
)

tink_cc_library(
  NAME aes_eax_key
  SRCS
    aes_eax_key.cc
    aes_eax_key.h
  DEPS
    tink::aead::aead_key
    tink::aead::aes_eax_parameters
    absl::status
    absl::strings
    absl::string_view
    absl::optional
    tink::core::key
    tink::core::partial_key_access_token
    tink::core::restricted_data
    tink::subtle::subtle_util
    tink::util::status
    tink::util::statusor
)

tink_cc_library(
  NAME aes_eax_proto_serialization
  SRCS
    aes_eax_proto_serialization.cc
    aes_eax_proto_serialization.h
  DEPS
    tink::aead::aes_eax_key
    tink::aead::aes_eax_parameters
    absl::core_headers
    absl::status
    absl::strings
    absl::string_view
    absl::optional
    tink::core::partial_key_access
    tink::core::restricted_data
    tink::core::secret_key_access_token
    tink::internal::key_parser
    tink::internal::key_serializer
    tink::internal::mutable_serialization_registry
    tink::internal::parameters_parser
    tink::internal::parameters_serializer
    tink::internal::proto_key_serialization
    tink::internal::proto_parameters_serialization
    tink::util::secret_data
    tink::util::secret_proto
    tink::util::status
    tink::util::statusor
    tink::proto::aes_eax_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_library(
  NAME xchacha20_poly1305_parameters
  SRCS
    xchacha20_poly1305_parameters.cc
    xchacha20_poly1305_parameters.h
  DEPS
    tink::aead::aead_parameters
    absl::status
    tink::core::parameters
    tink::util::status
    tink::util::statusor
)

tink_cc_library(
  NAME xchacha20_poly1305_key
  SRCS
    xchacha20_poly1305_key.cc
    xchacha20_poly1305_key.h
  DEPS
    tink::aead::aead_key
    tink::aead::xchacha20_poly1305_parameters
    absl::status
    absl::strings
    absl::optional
    tink::core::key
    tink::core::partial_key_access_token
    tink::core::restricted_data
    tink::subtle::subtle_util
    tink::util::status
    tink::util::statusor
)

tink_cc_library(
  NAME xchacha20_poly1305_proto_serialization
  SRCS
    xchacha20_poly1305_proto_serialization.cc
    xchacha20_poly1305_proto_serialization.h
  DEPS
    tink::aead::xchacha20_poly1305_key
    tink::aead::xchacha20_poly1305_parameters
    absl::core_headers
    absl::status
    absl::string_view
    absl::optional
    tink::core::partial_key_access
    tink::core::restricted_data
    tink::core::secret_key_access_token
    tink::internal::key_parser
    tink::internal::key_serializer
    tink::internal::mutable_serialization_registry
    tink::internal::parameters_parser
    tink::internal::parameters_serializer
    tink::internal::proto_key_serialization
    tink::internal::proto_parameters_serialization
    tink::util::status
    tink::util::statusor
    tink::proto::tink_cc_proto
    tink::proto::xchacha20_poly1305_cc_proto
)

tink_cc_library(
  NAME chacha20_poly1305_parameters
  SRCS
    chacha20_poly1305_parameters.cc
    chacha20_poly1305_parameters.h
  DEPS
    tink::aead::aead_parameters
    absl::status
    tink::core::parameters
    tink::util::status
    tink::util::statusor
)

tink_cc_library(
  NAME chacha20_poly1305_key
  SRCS
    chacha20_poly1305_key.cc
    chacha20_poly1305_key.h
  DEPS
    tink::aead::aead_key
    tink::aead::chacha20_poly1305_parameters
    absl::status
    absl::strings
    absl::optional
    tink::core::key
    tink::core::partial_key_access_token
    tink::core::restricted_data
    tink::subtle::subtle_util
    tink::util::status
    tink::util::statusor
)

tink_cc_library(
  NAME chacha20_poly1305_proto_serialization
  SRCS
    chacha20_poly1305_proto_serialization.cc
    chacha20_poly1305_proto_serialization.h
  DEPS
    tink::aead::chacha20_poly1305_key
    tink::aead::chacha20_poly1305_parameters
    absl::core_headers
    absl::status
    absl::string_view
    absl::optional
    tink::core::partial_key_access
    tink::core::restricted_data
    tink::core::secret_key_access_token
    tink::internal::key_parser
    tink::internal::key_serializer
    tink::internal::mutable_serialization_registry
    tink::internal::parameters_parser
    tink::internal::parameters_serializer
    tink::internal::proto_key_serialization
    tink::internal::proto_parameters_serialization
    tink::util::status
    tink::util::statusor
    tink::proto::chacha20_poly1305_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_library(
  NAME aes_ctr_hmac_aead_parameters
  SRCS
    aes_ctr_hmac_aead_parameters.cc
    aes_ctr_hmac_aead_parameters.h
  DEPS
    tink::aead::aead_parameters
    absl::algorithm_container
    absl::flat_hash_map
    absl::status
    absl::strings
    absl::optional
    tink::core::parameters
    tink::util::status
    tink::util::statusor
)

tink_cc_library(
  NAME aes_ctr_hmac_aead_key
  SRCS
    aes_ctr_hmac_aead_key.cc
    aes_ctr_hmac_aead_key.h
  DEPS
    tink::aead::aead_key
    tink::aead::aes_ctr_hmac_aead_parameters
    absl::status
    absl::strings
    absl::string_view
    absl::optional
    tink::core::key
    tink::core::partial_key_access_token
    tink::core::restricted_data
    tink::subtle::subtle_util
    tink::util::status
    tink::util::statusor
)

tink_cc_library(
  NAME aes_ctr_hmac_aead_proto_serialization
  SRCS
    aes_ctr_hmac_aead_proto_serialization.cc
    aes_ctr_hmac_aead_proto_serialization.h
  DEPS
    tink::aead::aes_ctr_hmac_aead_key
    tink::aead::aes_ctr_hmac_aead_parameters
    absl::core_headers
    absl::status
    absl::strings
    absl::string_view
    absl::optional
    tink::core::partial_key_access
    tink::core::restricted_data
    tink::core::secret_key_access_token
    tink::internal::key_parser
    tink::internal::key_serializer
    tink::internal::mutable_serialization_registry
    tink::internal::parameters_parser
    tink::internal::parameters_serializer
    tink::internal::proto_key_serialization
    tink::internal::proto_parameters_serialization
    tink::util::secret_data
    tink::util::secret_proto
    tink::util::status
    tink::util::statusor
    tink::proto::aes_ctr_cc_proto
    tink::proto::aes_ctr_hmac_aead_cc_proto
    tink::proto::common_cc_proto
    tink::proto::hmac_cc_proto
    tink::proto::tink_cc_proto
)

# tests

tink_cc_test(
  NAME aead_wrapper_test
  SRCS
    aead_wrapper_test.cc
  DEPS
    tink::aead::aead_wrapper
    tink::aead::mock_aead
    gmock
    absl::flat_hash_map
    absl::memory
    absl::status
    absl::statusor
    absl::strings
    tink::core::aead
    tink::core::crypto_format
    tink::core::primitive_set
    tink::core::registry
    tink::internal::registry_impl
    tink::monitoring::monitoring
    tink::monitoring::monitoring_client_mocks
    tink::util::status
    tink::util::statusor
    tink::util::test_matchers
    tink::util::test_util
    tink::proto::tink_cc_proto
)

tink_cc_test(
  NAME aead_config_test
  SRCS
    aead_config_test.cc
  DEPS
    tink::aead::aead_config
    tink::aead::aead_key_templates
    tink::aead::aes_ctr_hmac_aead_key
    tink::aead::aes_ctr_hmac_aead_parameters
    tink::aead::aes_eax_key
    tink::aead::aes_eax_parameters
    tink::aead::aes_gcm_key
    tink::aead::aes_gcm_key_manager
    tink::aead::aes_gcm_parameters
    tink::aead::aes_gcm_siv_key
    tink::aead::aes_gcm_siv_parameters
    tink::aead::key_gen_config_v0
    tink::aead::xchacha20_poly1305_key
    tink::aead::xchacha20_poly1305_parameters
    gmock
    absl::status
    tink::core::aead
    tink::core::insecure_secret_key_access
    tink::core::key
    tink::core::key_status
    tink::core::keyset_handle
    tink::core::keyset_handle_builder
    tink::core::parameters
    tink::core::partial_key_access
    tink::core::registry
    tink::core::restricted_data
    tink::config::global_registry
    tink::config::tink_fips
    tink::internal::fips_utils
    tink::internal::legacy_proto_key
    tink::internal::mutable_serialization_registry
    tink::internal::proto_key_serialization
    tink::internal::proto_parameters_serialization
    tink::internal::serialization
    tink::subtle::random
    tink::util::statusor
    tink::util::test_matchers
    tink::proto::aes_eax_cc_proto
    tink::proto::aes_gcm_cc_proto
    tink::proto::aes_gcm_siv_cc_proto
    tink::proto::tink_cc_proto
    tink::proto::xchacha20_poly1305_cc_proto
)

tink_cc_test(
  NAME aead_factory_test
  SRCS
    aead_factory_test.cc
  DEPS
    tink::aead::aead_config
    tink::aead::aead_factory
    tink::aead::aes_gcm_key_manager
    gmock
    absl::status
    absl::strings
    tink::core::aead
    tink::core::crypto_format
    tink::core::keyset_handle
    tink::internal::key_info
    tink::util::status
    tink::util::statusor
    tink::util::test_keyset_handle
    tink::util::test_util
    tink::proto::aes_gcm_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_test(
  NAME aead_key_templates_test
  SRCS
    aead_key_templates_test.cc
  DEPS
    tink::aead::aead_config
    tink::aead::aead_key_templates
    tink::aead::aes_ctr_hmac_aead_key_manager
    tink::aead::aes_eax_key_manager
    tink::aead::aes_gcm_key_manager
    tink::aead::aes_gcm_siv_key_manager
    tink::aead::kms_envelope_aead_key_manager
    tink::aead::xchacha20_poly1305_key_manager
    gmock
    absl::status
    absl::statusor
    tink::core::aead
    tink::core::key_manager_impl
    tink::core::key_manager
    tink::core::keyset_handle
    tink::config::global_registry
    tink::subtle::aead_test_util
    tink::util::fake_kms_client
    tink::util::status
    tink::util::test_matchers
    tink::proto::aes_ctr_cc_proto
    tink::proto::aes_ctr_hmac_aead_cc_proto
    tink::proto::aes_eax_cc_proto
    tink::proto::aes_gcm_cc_proto
    tink::proto::aes_gcm_siv_cc_proto
    tink::proto::common_cc_proto
    tink::proto::hmac_cc_proto
    tink::proto::kms_envelope_cc_proto
    tink::proto::tink_cc_proto
    tink::proto::xchacha20_poly1305_cc_proto
)

tink_cc_test(
  NAME aes_eax_key_manager_test
  SRCS
    aes_eax_key_manager_test.cc
  DEPS
    tink::aead::aes_eax_key_manager
    gmock
    tink::core::aead
    tink::subtle::aead_test_util
    tink::subtle::aes_eax_boringssl
    tink::util::secret_data
    tink::util::status
    tink::util::statusor
    tink::util::test_matchers
    tink::proto::aes_eax_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_test(
  NAME aes_gcm_key_manager_test
  SRCS
    aes_gcm_key_manager_test.cc
  DEPS
    tink::aead::aes_gcm_key_manager
    tink::aead::cord_aead
    gmock
    absl::memory
    absl::status
    tink::core::aead
    tink::aead::internal::cord_aes_gcm_boringssl
    tink::subtle::aead_test_util
    tink::subtle::aes_gcm_boringssl
    tink::util::istream_input_stream
    tink::util::secret_data
    tink::util::status
    tink::util::statusor
    tink::util::test_matchers
    tink::proto::aes_gcm_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_test(
  NAME aes_gcm_siv_key_manager_test
  SRCS
    aes_gcm_siv_key_manager_test.cc
  DEPS
    tink::aead::aes_gcm_siv_key_manager
    gmock
    absl::status
    tink::core::aead
    tink::internal::ssl_util
    tink::subtle::aead_test_util
    tink::subtle::aes_gcm_siv_boringssl
    tink::util::secret_data
    tink::util::status
    tink::util::statusor
    tink::util::test_matchers
    tink::proto::aes_gcm_siv_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_test(
  NAME aes_ctr_hmac_aead_key_manager_test
  SRCS
    aes_ctr_hmac_aead_key_manager_test.cc
  DEPS
    tink::aead::aes_ctr_hmac_aead_key_manager
    gmock
    absl::memory
    absl::status
    tink::core::aead
    tink::subtle::subtle
    tink::subtle::aead_test_util
    tink::subtle::aes_ctr_boringssl
    tink::util::enums
    tink::util::istream_input_stream
    tink::util::secret_data
    tink::util::status
    tink::util::statusor
    tink::util::test_matchers
    tink::proto::aes_ctr_cc_proto
    tink::proto::aes_ctr_hmac_aead_cc_proto
    tink::proto::common_cc_proto
    tink::proto::hmac_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_test(
  NAME xchacha20_poly1305_key_manager_test
  SRCS
    xchacha20_poly1305_key_manager_test.cc
  DEPS
    tink::aead::xchacha20_poly1305_key_manager
    gmock
    absl::memory
    absl::status
    tink::core::aead
    tink::internal::ssl_util
    tink::subtle::aead_test_util
    tink::subtle::xchacha20_poly1305_boringssl
    tink::util::istream_input_stream
    tink::util::secret_data
    tink::util::status
    tink::util::statusor
    tink::util::test_matchers
    tink::proto::tink_cc_proto
    tink::proto::xchacha20_poly1305_cc_proto
)

tink_cc_test(
  NAME kms_aead_key_manager_test
  SRCS
    kms_aead_key_manager_test.cc
  DEPS
    tink::aead::kms_aead_key_manager
    gmock
    absl::memory
    absl::status
    tink::core::aead
    tink::core::kms_client
    tink::core::kms_clients
    tink::subtle::aead_test_util
    tink::util::status
    tink::util::statusor
    tink::util::test_matchers
    tink::util::test_util
    tink::proto::kms_aead_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_test(
  NAME kms_envelope_aead_test
  SRCS
    kms_envelope_aead_test.cc
  DEPS
    tink::aead::aead_config
    tink::aead::aead_key_templates
    tink::aead::kms_envelope_aead
    gmock
    absl::endian
    absl::memory
    absl::status
    absl::strings
    tink::core::aead
    tink::core::keyset_handle
    tink::core::registry
    tink::config::global_registry
    tink::internal::ssl_util
    tink::mac::mac_key_templates
    tink::util::fake_kms_client
    tink::util::status
    tink::util::statusor
    tink::util::test_matchers
    tink::util::test_util
    tink::proto::aes_gcm_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_test(
  NAME kms_envelope_aead_key_manager_test
  SRCS
    kms_envelope_aead_key_manager_test.cc
  DEPS
    tink::aead::aead_config
    tink::aead::aead_key_templates
    tink::aead::aes_eax_key_manager
    tink::aead::kms_envelope_aead
    tink::aead::kms_envelope_aead_key_manager
    gmock
    absl::memory
    absl::status
    tink::core::aead
    tink::core::keyset_handle
    tink::core::kms_client
    tink::core::kms_clients
    tink::core::registry
    tink::config::global_registry
    tink::mac::mac_key_templates
    tink::subtle::aead_test_util
    tink::util::fake_kms_client
    tink::util::status
    tink::util::statusor
    tink::util::test_matchers
    tink::util::test_util
    tink::proto::kms_envelope_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_test(
  NAME cord_aead_wrapper_test
  SRCS
    cord_aead_wrapper_test.cc
  DEPS
    tink::aead::cord_aead
    tink::aead::cord_aead_wrapper
    gmock
    absl::memory
    absl::status
    absl::strings
    absl::cord
    tink::core::primitive_set
    tink::util::status
    tink::util::test_matchers
    tink::util::test_util
    tink::proto::tink_cc_proto
)

tink_cc_test(
  NAME failing_aead_test
  SRCS
    failing_aead_test.cc
  DEPS
    tink::aead::failing_aead
    gmock
    absl::status
    tink::core::aead
    tink::util::test_matchers
)

tink_cc_test(
  NAME aes_gcm_parameters_test
  SRCS
    aes_gcm_parameters_test.cc
  DEPS
    tink::aead::aes_gcm_parameters
    gmock
    absl::status
    tink::util::statusor
    tink::util::test_matchers
)

tink_cc_test(
  NAME aes_gcm_key_test
  SRCS
    aes_gcm_key_test.cc
  DEPS
    tink::aead::aes_gcm_key
    tink::aead::aes_gcm_parameters
    gmock
    absl::status
    absl::optional
    tink::core::partial_key_access
    tink::core::restricted_data
    tink::util::statusor
    tink::util::test_matchers
)

tink_cc_test(
  NAME aes_gcm_proto_serialization_test
  SRCS
    aes_gcm_proto_serialization_test.cc
  DEPS
    tink::aead::aes_gcm_key
    tink::aead::aes_gcm_parameters
    tink::aead::aes_gcm_proto_serialization
    gmock
    absl::status
    absl::optional
    tink::core::insecure_secret_key_access
    tink::core::key
    tink::core::parameters
    tink::core::partial_key_access
    tink::core::restricted_data
    tink::internal::mutable_serialization_registry
    tink::internal::proto_key_serialization
    tink::internal::proto_parameters_serialization
    tink::internal::serialization
    tink::subtle::random
    tink::util::statusor
    tink::util::test_matchers
    tink::proto::aes_gcm_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_test(
  NAME aes_gcm_siv_parameters_test
  SRCS
    aes_gcm_siv_parameters_test.cc
  DEPS
    tink::aead::aes_gcm_siv_parameters
    gmock
    absl::status
    tink::util::statusor
    tink::util::test_matchers
)

tink_cc_test(
  NAME aes_gcm_siv_key_test
  SRCS
    aes_gcm_siv_key_test.cc
  DEPS
    tink::aead::aes_gcm_siv_key
    tink::aead::aes_gcm_siv_parameters
    gmock
    absl::status
    absl::optional
    tink::core::partial_key_access
    tink::core::restricted_data
    tink::util::statusor
    tink::util::test_matchers
)

tink_cc_test(
  NAME aes_gcm_siv_proto_serialization_test
  SRCS
    aes_gcm_siv_proto_serialization_test.cc
  DEPS
    tink::aead::aes_gcm_siv_key
    tink::aead::aes_gcm_siv_parameters
    tink::aead::aes_gcm_siv_proto_serialization
    gmock
    absl::status
    absl::optional
    tink::core::insecure_secret_key_access
    tink::core::key
    tink::core::parameters
    tink::core::partial_key_access
    tink::core::restricted_data
    tink::internal::mutable_serialization_registry
    tink::internal::proto_key_serialization
    tink::internal::proto_parameters_serialization
    tink::internal::serialization
    tink::subtle::random
    tink::util::statusor
    tink::util::test_matchers
    tink::proto::aes_gcm_siv_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_test(
  NAME config_v0_test
  SRCS
    config_v0_test.cc
  DEPS
    tink::aead::aead_key_templates
    tink::aead::config_v0
    tink::aead::key_gen_config_v0
    gmock
    tink::core::aead
    tink::core::keyset_handle
    tink::internal::ssl_util
    tink::util::statusor
    tink::util::test_matchers
    tink::proto::tink_cc_proto
)

tink_cc_test(
  NAME aes_eax_parameters_test
  SRCS
    aes_eax_parameters_test.cc
  DEPS
    tink::aead::aes_eax_parameters
    gmock
    absl::status
    tink::util::statusor
    tink::util::test_matchers
)

tink_cc_test(
  NAME aes_eax_key_test
  SRCS
    aes_eax_key_test.cc
  DEPS
    tink::aead::aes_eax_key
    tink::aead::aes_eax_parameters
    gmock
    absl::status
    absl::optional
    tink::core::partial_key_access
    tink::core::restricted_data
    tink::util::statusor
    tink::util::test_matchers
)

tink_cc_test(
  NAME aes_eax_proto_serialization_test
  SRCS
    aes_eax_proto_serialization_test.cc
  DEPS
    tink::aead::aes_eax_key
    tink::aead::aes_eax_parameters
    tink::aead::aes_eax_proto_serialization
    gmock
    absl::status
    absl::string_view
    absl::optional
    tink::core::insecure_secret_key_access
    tink::core::key
    tink::core::parameters
    tink::core::partial_key_access
    tink::core::restricted_data
    tink::internal::mutable_serialization_registry
    tink::internal::proto_key_serialization
    tink::internal::proto_parameters_serialization
    tink::internal::serialization
    tink::subtle::random
    tink::util::statusor
    tink::util::test_matchers
    tink::proto::aes_eax_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_test(
  NAME xchacha20_poly1305_parameters_test
  SRCS
    xchacha20_poly1305_parameters_test.cc
  DEPS
    tink::aead::xchacha20_poly1305_parameters
    gmock
    absl::status
    tink::util::statusor
    tink::util::test_matchers
)

tink_cc_test(
  NAME xchacha20_poly1305_key_test
  SRCS
    xchacha20_poly1305_key_test.cc
  DEPS
    tink::aead::xchacha20_poly1305_key
    tink::aead::xchacha20_poly1305_parameters
    gmock
    absl::status
    absl::optional
    tink::core::partial_key_access
    tink::core::restricted_data
    tink::util::statusor
    tink::util::test_matchers
)

tink_cc_test(
  NAME xchacha20_poly1305_proto_serialization_test
  SRCS
    xchacha20_poly1305_proto_serialization_test.cc
  DEPS
    tink::aead::xchacha20_poly1305_key
    tink::aead::xchacha20_poly1305_parameters
    tink::aead::xchacha20_poly1305_proto_serialization
    gmock
    absl::status
    absl::string_view
    absl::optional
    tink::core::insecure_secret_key_access
    tink::core::key
    tink::core::parameters
    tink::core::partial_key_access
    tink::core::restricted_data
    tink::internal::mutable_serialization_registry
    tink::internal::proto_key_serialization
    tink::internal::proto_parameters_serialization
    tink::internal::serialization
    tink::subtle::random
    tink::util::statusor
    tink::util::test_matchers
    tink::proto::tink_cc_proto
    tink::proto::xchacha20_poly1305_cc_proto
)

tink_cc_test(
  NAME chacha20_poly1305_parameters_test
  SRCS
    chacha20_poly1305_parameters_test.cc
  DEPS
    tink::aead::chacha20_poly1305_parameters
    gmock
    absl::status
    tink::util::statusor
    tink::util::test_matchers
)

tink_cc_test(
  NAME chacha20_poly1305_key_test
  SRCS
    chacha20_poly1305_key_test.cc
  DEPS
    tink::aead::chacha20_poly1305_key
    tink::aead::chacha20_poly1305_parameters
    gmock
    absl::status
    absl::optional
    tink::core::partial_key_access
    tink::core::restricted_data
    tink::util::statusor
    tink::util::test_matchers
)

tink_cc_test(
  NAME chacha20_poly1305_proto_serialization_test
  SRCS
    chacha20_poly1305_proto_serialization_test.cc
  DEPS
    tink::aead::chacha20_poly1305_key
    tink::aead::chacha20_poly1305_parameters
    tink::aead::chacha20_poly1305_proto_serialization
    gmock
    absl::status
    absl::string_view
    absl::optional
    tink::core::insecure_secret_key_access
    tink::core::key
    tink::core::parameters
    tink::core::partial_key_access
    tink::core::restricted_data
    tink::internal::mutable_serialization_registry
    tink::internal::proto_key_serialization
    tink::internal::proto_parameters_serialization
    tink::internal::serialization
    tink::subtle::random
    tink::util::statusor
    tink::util::test_matchers
    tink::proto::chacha20_poly1305_cc_proto
    tink::proto::tink_cc_proto
)

tink_cc_test(
  NAME aes_ctr_hmac_aead_parameters_test
  SRCS
    aes_ctr_hmac_aead_parameters_test.cc
  DEPS
    tink::aead::aes_ctr_hmac_aead_parameters
    gmock
    absl::status
    tink::util::statusor
    tink::util::test_matchers
)

tink_cc_test(
  NAME aes_ctr_hmac_aead_key_test
  SRCS
    aes_ctr_hmac_aead_key_test.cc
  DEPS
    tink::aead::aes_ctr_hmac_aead_key
    tink::aead::aes_ctr_hmac_aead_parameters
    gmock
    absl::status
    absl::optional
    tink::core::partial_key_access
    tink::core::restricted_data
    tink::util::statusor
    tink::util::test_matchers
)

tink_cc_test(
  NAME aes_ctr_hmac_aead_proto_serialization_test
  SRCS
    aes_ctr_hmac_aead_proto_serialization_test.cc
  DEPS
    tink::aead::aes_ctr_hmac_aead_key
    tink::aead::aes_ctr_hmac_aead_parameters
    tink::aead::aes_ctr_hmac_aead_proto_serialization
    gmock
    absl::status
    absl::string_view
    absl::optional
    tink::core::insecure_secret_key_access
    tink::core::key
    tink::core::parameters
    tink::core::partial_key_access
    tink::core::restricted_data
    tink::internal::mutable_serialization_registry
    tink::internal::proto_key_serialization
    tink::internal::proto_parameters_serialization
    tink::internal::serialization
    tink::subtle::random
    tink::util::statusor
    tink::util::test_matchers
    tink::proto::aes_ctr_cc_proto
    tink::proto::aes_ctr_hmac_aead_cc_proto
    tink::proto::common_cc_proto
    tink::proto::hmac_cc_proto
    tink::proto::tink_cc_proto
)


================================================
FILE: cc/aead/aead_config.cc
================================================
// Copyright 2017 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
///////////////////////////////////////////////////////////////////////////////

#include "tink/aead/aead_config.h"

#include "absl/memory/memory.h"
#include "absl/status/status.h"
#include "tink/aead/aead_wrapper.h"
#include "tink/aead/aes_ctr_hmac_aead_key_manager.h"
#include "tink/aead/aes_ctr_hmac_aead_proto_serialization.h"
#include "tink/aead/aes_eax_key_manager.h"
#include "tink/aead/aes_eax_proto_serialization.h"
#include "tink/aead/aes_gcm_key_manager.h"
#include "tink/aead/aes_gcm_proto_serialization.h"
#include "tink/aead/aes_gcm_siv_key_manager.h"
#include "tink/aead/aes_gcm_siv_proto_serialization.h"
#include "tink/aead/kms_aead_key_manager.h"
#include "tink/aead/kms_envelope_aead_key_manager.h"
#include "tink/aead/xchacha20_poly1305_key_manager.h"
#include "tink/aead/xchacha20_poly1305_proto_serialization.h"
#include "tink/config/tink_fips.h"
#include "tink/mac/mac_config.h"
#include "tink/registry.h"
#include "tink/util/status.h"
#include "proto/config.pb.h"

namespace crypto {
namespace tink {
// static
util::Status AeadConfig::Register() {
  auto status = MacConfig::Register();
  if (!status.ok()) {
    return status;
  }

  // Register primitive wrapper.
  status = Registry::RegisterPrimitiveWrapper(absl::make_unique<AeadWrapper>());
  if (!status.ok()) {
    return status;
  }

  // Register key managers which utilize the FIPS validated BoringCrypto
  // implementations.
  status = Registry::RegisterKeyTypeManager(
      absl::make_unique<AesCtrHmacAeadKeyManager>(), true);
  if (!status.ok()) {
    return status;
  }

  status = Registry::RegisterKeyTypeManager(
      absl::make_unique<AesGcmKeyManager>(), true);
  if (!status.ok()) {
    return status;
  }

  status = RegisterAesCtrHmacAeadProtoSerialization();
  if (!status.ok()) {
    return status;
  }

  status = RegisterAesGcmProtoSerialization();
  if (!status.ok()) {
    return status;
  }

  if (IsFipsModeEnabled()) {
    return util::OkStatus();
  }

  // Register all the other key managers.
  status = Registry::RegisterKeyTypeManager(
      absl::make_unique<AesGcmSivKeyManager>(), true);
  if (!status.ok()) {
    return status;
  }

  status = Registry::RegisterKeyTypeManager(
      absl::make_unique<AesEaxKeyManager>(), true);
  if (!status.ok()) {
    return status;
  }

  status = Registry::RegisterKeyTypeManager(
      absl::make_unique<XChaCha20Poly1305KeyManager>(), true);
  if (!status.ok()) {
    return status;
  }

  status = Registry::RegisterKeyTypeManager(
      absl::make_unique<KmsAeadKeyManager>(), true);
  if (!status.ok()) {
    return status;
  }

  status = Registry::RegisterKeyTypeManager(
      absl::make_unique<KmsEnvelopeAeadKeyManager>(), true);
  if (!status.ok()) {
    return status;
  }

  status = RegisterAesGcmSivProtoSerialization();
  if (!status.ok()) {
    return status;
  }

  status = RegisterAesEaxProtoSerialization();
  if (!status.ok()) {
    return status;
  }

  status = RegisterXChaCha20Poly1305ProtoSerialization();
  if (!status.ok()) {
    return status;
  }

  return util::OkStatus();
}

}  // namespace tink
}  // namespace crypto


================================================
FILE: cc/aead/aead_config.h
================================================
// Copyright 2017 Google Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
///////////////////////////////////////////////////////////////////////////////

#ifndef TINK_AEAD_AEAD_CONFIG_H_
#define TINK_AEAD_AEAD_CONFIG_H_

#include "absl/base/attributes.h"
#include "tink/util/status.h"
#include "proto/config.pb.h"

namespace crypto {
namespace tink {

///////////////////////////////////////////////////////////////////////////////
// Static methods and constants for registering with the Registry
// all instances of Aead key types supported in a particular release of Tink.
//
// To register all Aead key types from the current Tink release one can do:
//
//   auto status = AeadConfig::Register();
//
class AeadConfig {
 public:
  // Registers Aead primitive wrapper and key managers for all Aead key types
  // from the current Tink release.
  static crypto::tink::util::Status Register();

 private:
  AeadConfig() {}
};

}  // namespace tink
}  // namespace crypto

#endif  // TINK_AEAD_AEAD_CONFIG_H_


================================================
FILE: cc/aead/aead_config_test.cc
================================================
// Copyright 2017 Google Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
////////////////////////////////////////////////////////////////////////////////

#include "tink/aead/aead_config.h"

#include <list>
#include <memory>

#include "gmock/gmock.h"
#include "gtest/gtest.h"
#include "absl/status/status.h"
#include "tink/aead.h"
#include "tink/aead/aead_key_templates.h"
#include "tink/aead/aes_ctr_hmac_aead_key.h"
#include "tink/aead/aes_ctr_hmac_aead_parameters.h"
#include "tink/aead/aes_eax_key.h"
#include "tink/aead/aes_eax_parameters.h"
#include "tink/aead/aes_gcm_key.h"
#include "tink/aead/aes_gcm_key_manager.h"
#include "tink/aead/aes_gcm_parameters.h"
#include "tink/aead/aes_gcm_siv_key.h"
#include "tink/aead/aes_gcm_siv_parameters.h"
#include "tink/aead/key_gen_config_v0.h"
#include "tink/aead/xchacha20_poly1305_key.h"
#include "tink/aead/xchacha20_poly1305_parameters.h"
#include "tink/config/global_registry.h"
#include "tink/config/tink_fips.h"
#include "tink/insecure_secret_key_access.h"
#include "tink/internal/fips_utils.h"
#include "tink/internal/legacy_proto_key.h"
#include "tink/internal/mutable_serialization_registry.h"
#include "tink/internal/proto_key_serialization.h"
#include "tink/internal/proto_parameters_serialization.h"
#include "tink/internal/serialization.h"
#include "tink/key.h"
#include "tink/key_status.h"
#include "tink/keyset_handle.h"
#include "tink/keyset_handle_builder.h"
#include "tink/parameters.h"
#include "tink/partial_key_access.h"
#include "tink/registry.h"
#include "tink/restricted_data.h"
#include "tink/subtle/random.h"
#include "tink/util/statusor.h"
#include "tink/util/test_matchers.h"
#include "proto/aes_eax.pb.h"
#include "proto/aes_gcm.pb.h"
#include "proto/aes_gcm_siv.pb.h"
#include "proto/tink.pb.h"
#include "proto/xchacha20_poly1305.pb.h"

namespace crypto {
namespace tink {
namespace {

using ::crypto::tink::test::IsOk;
using ::crypto::tink::test::StatusIs;
using ::crypto::tink::util::StatusOr;
using ::google::crypto::tink::KeyData;
using ::google::crypto::tink::KeyTemplate;
using ::google::crypto::tink::OutputPrefixType;
using ::testing::HasSubstr;
using ::testing::IsNull;
using ::testing::Not;
using ::testing::Test;

class AeadConfigTest : public Test {
 protected:
  void SetUp() override {
    Registry::Reset();
    internal::MutableSerializationRegistry::GlobalInstance().Reset();
  }
};

TEST_F(AeadConfigTest, RegisterWorks) {
  if (IsFipsModeEnabled()) {
    GTEST_SKIP() << "Not supported in FIPS-only mode";
  }
  EXPECT_THAT(Registry::get_key_manager<Aead>(AesGcmKeyManager().get_key_type())
                  .status(),
              StatusIs(absl::StatusCode::kNotFound));
  EXPECT_THAT(AeadConfig::Register(), IsOk());
  EXPECT_THAT(Registry::get_key_manager<Aead>(AesGcmKeyManager().get_key_type())
                  .status(),
              IsOk());
}

// Tests that the AeadWrapper has been properly registered and we can wrap
// primitives.
TEST_F(AeadConfigTest, WrappersRegistered) {
  if (IsFipsModeEnabled()) {
    GTEST_SKIP() << "Not supported in FIPS-only mode";
  }

  ASSERT_THAT(AeadConfig::Register(), IsOk());

  StatusOr<std::unique_ptr<KeysetHandle>> keyset_handle =
      KeysetHandle::GenerateNew(AeadKeyTemplates::Aes128Gcm(),
                                KeyGenConfigGlobalRegistry());
  ASSERT_THAT(keyset_handle.status(), IsOk());
  StatusOr<std::unique_ptr<Aead>> aead =
      (*keyset_handle)
          ->GetPrimitive<crypto::tink::Aead>(ConfigGlobalRegistry());
  ASSERT_THAT(aead.status(), IsOk());
  ASSERT_THAT(*aead, Not(IsNull()));
}

// FIPS-only mode tests
TEST_F(AeadConfigTest, RegisterNonFipsTemplates) {
  if (!IsFipsModeEnabled() || !internal::IsFipsEnabledInSsl()) {
    GTEST_SKIP() << "Only supported in FIPS-only mode with BoringCrypto.";
  }

  ASSERT_THAT(AeadConfig::Register(), IsOk());

  std::list<KeyTemplate> non_fips_key_templates = {
      AeadKeyTemplates::Aes128Eax(),         AeadKeyTemplates::Aes256Eax(),
      AeadKeyTemplates::Aes128GcmSiv(),      AeadKeyTemplates::Aes256GcmSiv(),
      AeadKeyTemplates::XChaCha20Poly1305(),
  };

  for (auto key_template : non_fips_key_templates) {
    auto new_keyset_handle_result =
        KeysetHandle::GenerateNew(key_template, KeyGenConfigGlobalRegistry());
    EXPECT_THAT(new_keyset_handle_result.status(),
                StatusIs(absl::StatusCode::kNotFound));
  }
}

TEST_F(AeadConfigTest, RegisterFipsValidTemplates) {
  if (!IsFipsModeEnabled() || !internal::IsFipsEnabledInSsl()) {
    GTEST_SKIP() << "Only supported in FIPS-only mode with BoringCrypto.";
  }

  EXPECT_THAT(AeadConfig::Register(), IsOk());

  std::list<KeyTemplate> fips_key_templates = {
      AeadKeyTemplates::Aes128Gcm(),
      AeadKeyTemplates::Aes256Gcm(),
      AeadKeyTemplates::Aes128CtrHmacSha256(),
      AeadKeyTemplates::Aes256CtrHmacSha256(),
  };

  for (auto key_template : fips_key_templates) {
    auto new_keyset_handle_result =
        KeysetHandle::GenerateNew(key_template, KeyGenConfigGlobalRegistry());
    EXPECT_THAT(new_keyset_handle_result, IsOk());
  }
}

TEST_F(AeadConfigTest, RegisterFailsIfBoringCryptoNotAvailable) {
  if (!IsFipsModeEnabled() || internal::IsFipsEnabledInSsl()) {
    GTEST_SKIP()
        << "Only supported in FIPS-only mode with BoringCrypto not available.";
  }

  EXPECT_THAT(Registry::get_key_manager<Aead>(AesGcmKeyManager().get_key_type())
                  .status(),
              StatusIs(absl::StatusCode::kNotFound));
  EXPECT_THAT(AeadConfig::Register(), StatusIs(absl::StatusCode::kInternal));
}

TEST_F(AeadConfigTest, AesGcmProtoParamsSerializationRegistered) {
  if (IsFipsModeEnabled()) {
    GTEST_SKIP() << "Not supported in FIPS-only mode";
  }

  util::StatusOr<internal::ProtoParametersSerialization>
      proto_params_serialization =
          internal::ProtoParametersSerialization::Create(
              AeadKeyTemplates::Aes256Gcm());
  ASSERT_THAT(proto_params_serialization, IsOk());

  util::StatusOr<std::unique_ptr<Parameters>> parsed_params =
      internal::MutableSerializationRegistry::GlobalInstance().ParseParameters(
          *proto_params_serialization);
  ASSERT_THAT(parsed_params.status(), StatusIs(absl::StatusCode::kNotFound));

  util::StatusOr<AesGcmParameters> params =
      AesGcmParameters::Builder()
          .SetVariant(AesGcmParameters::Variant::kTink)
          .SetKeySizeInBytes(32)
          .SetIvSizeInBytes(12)
          .SetTagSizeInBytes(16)
          .Build();
  ASSERT_THAT(params, IsOk());

  util::StatusOr<std::unique_ptr<Serialization>> serialized_params =
      internal::MutableSerializationRegistry::GlobalInstance()
          .SerializeParameters<internal::ProtoParametersSerialization>(*params);
  ASSERT_THAT(serialized_params.status(),
              StatusIs(absl::StatusCode::kNotFound));

  ASSERT_THAT(AeadConfig::Register(), IsOk());

  util::StatusOr<std::unique_ptr<Parameters>> parsed_params2 =
      internal::MutableSerializationRegistry::GlobalInstance().ParseParameters(
          *proto_params_serialization);
  ASSERT_THAT(parsed_params2, IsOk());

  util::StatusOr<std::unique_ptr<Serialization>> serialized_params2 =
      internal::MutableSerializationRegistry::GlobalInstance()
          .SerializeParameters<internal::ProtoParametersSerialization>(*params);
  ASSERT_THAT(serialized_params2, IsOk());
}

TEST_F(AeadConfigTest, AesGcmProtoKeySerializationRegistered) {
  if (IsFipsModeEnabled()) {
    GTEST_SKIP() << "Not supported in FIPS-only mode";
  }

  google::crypto::tink::AesGcmKey key_proto;
  key_proto.set_version(0);
  key_proto.set_key_value(subtle::Random::GetRandomBytes(32));

  util::StatusOr<internal::ProtoKeySerialization> proto_key_serialization =
      internal::ProtoKeySerialization::Create(
          "type.googleapis.com/google.crypto.tink.AesGcmKey",
          RestrictedData(key_proto.SerializeAsString(),
                         InsecureSecretKeyAccess::Get()),
          KeyData::SYMMETRIC, OutputPrefixType::TINK, /*id_requirement=*/123);
  ASSERT_THAT(proto_key_serialization, IsOk());

  util::StatusOr<std::unique_ptr<Key>> parsed_key =
      internal::MutableSerializationRegistry::GlobalInstance().ParseKey(
          *proto_key_serialization, InsecureSecretKeyAccess::Get());
  ASSERT_THAT(parsed_key.status(), StatusIs(absl::StatusCode::kNotFound));

  util::StatusOr<AesGcmParameters> params =
      AesGcmParameters::Builder()
          .SetVariant(AesGcmParameters::Variant::kTink)
          .SetKeySizeInBytes(32)
          .SetIvSizeInBytes(12)
          .SetTagSizeInBytes(16)
          .Build();
  ASSERT_THAT(params, IsOk());

  util::StatusOr<AesGcmKey> key =
      AesGcmKey::Create(*params,
                        RestrictedData(subtle::Random::GetRandomBytes(32),
                                       InsecureSecretKeyAccess::Get()),
                        /*id_requirement=*/123, GetPartialKeyAccess());
  ASSERT_THAT(key, IsOk());

  util::StatusOr<std::unique_ptr<Serialization>> serialized_key =
      internal::MutableSerializationRegistry::GlobalInstance()
          .SerializeKey<internal::ProtoKeySerialization>(
              *key, InsecureSecretKeyAccess::Get());
  ASSERT_THAT(serialized_key.status(), StatusIs(absl::StatusCode::kNotFound));

  ASSERT_THAT(AeadConfig::Register(), IsOk());

  util::StatusOr<std::unique_ptr<Key>> parsed_key2 =
      internal::MutableSerializationRegistry::GlobalInstance().ParseKey(
          *proto_key_serialization, InsecureSecretKeyAccess::Get());
  ASSERT_THAT(parsed_key2, IsOk());

  util::StatusOr<std::unique_ptr<Serialization>> serialized_key2 =
      internal::MutableSerializationRegistry::GlobalInstance()
          .SerializeKey<internal::ProtoKeySerialization>(
              *key, InsecureSecretKeyAccess::Get());
  ASSERT_THAT(serialized_key2, IsOk());
}

TEST_F(AeadConfigTest, AesGcmSivProtoParamsSerializationRegistered) {
  if (IsFipsModeEnabled()) {
    GTEST_SKIP() << "Not supported in FIPS-only mode";
  }

  util::StatusOr<internal::ProtoParametersSerialization>
      proto_params_serialization =
          internal::ProtoParametersSerialization::Create(
              AeadKeyTemplates::Aes256GcmSiv());
  ASSERT_THAT(proto_params_serialization, IsOk());

  util::StatusOr<std::unique_ptr<Parameters>> parsed_params =
      internal::MutableSerializationRegistry::GlobalInstance().ParseParameters(
          *proto_params_serialization);
  ASSERT_THAT(parsed_params.status(), StatusIs(absl::StatusCode::kNotFound));

  util::StatusOr<AesGcmSivParameters> params = AesGcmSivParameters::Create(
      /*key_size_in_bytes=*/32, AesGcmSivParameters::Variant::kTink);
  ASSERT_THAT(params, IsOk());

  util::StatusOr<std::unique_ptr<Serialization>> serialized_params =
      internal::MutableSerializationRegistry::GlobalInstance()
          .SerializeParameters<internal::ProtoParametersSerialization>(*params);
  ASSERT_THAT(serialized_params.status(),
              StatusIs(absl::StatusCode::kNotFound));

  ASSERT_THAT(AeadConfig::Register(), IsOk());

  util::StatusOr<std::unique_ptr<Parameters>> parsed_params2 =
      internal::MutableSerializationRegistry::GlobalInstance().ParseParameters(
          *proto_params_serialization);
  ASSERT_THAT(parsed_params2, IsOk());

  util::StatusOr<std::unique_ptr<Serialization>> serialized_params2 =
      internal::MutableSerializationRegistry::GlobalInstance()
          .SerializeParameters<internal::ProtoParametersSerialization>(*params);
  ASSERT_THAT(serialized_params2, IsOk());
}

TEST_F(AeadConfigTest, AesGcmSivProtoKeySerializationRegistered) {
  if (IsFipsModeEnabled()) {
    GTEST_SKIP() << "Not supported in FIPS-only mode";
  }

  google::crypto::tink::AesGcmSivKey key_proto;
  key_proto.set_version(0);
  key_proto.set_key_value(subtle::Random::GetRandomBytes(32));

  util::StatusOr<internal::ProtoKeySerialization> proto_key_serialization =
      internal::ProtoKeySerialization::Create(
          "type.googleapis.com/google.crypto.tink.AesGcmSivKey",
          RestrictedData(key_proto.SerializeAsString(),
                         InsecureSecretKeyAccess::Get()),
          KeyData::SYMMETRIC, OutputPrefixType::TINK, /*id_requirement=*/123);
  ASSERT_THAT(proto_key_serialization, IsOk());

  util::StatusOr<std::unique_ptr<Key>> parsed_key =
      internal::MutableSerializationRegistry::GlobalInstance().ParseKey(
          *proto_key_serialization, InsecureSecretKeyAccess::Get());
  ASSERT_THAT(parsed_key.status(), StatusIs(absl::StatusCode::kNotFound));

  util::StatusOr<AesGcmSivParameters> params = AesGcmSivParameters::Create(
      /*key_size_in_bytes=*/32, AesGcmSivParameters::Variant::kTink);
  ASSERT_THAT(params, IsOk());

  util::StatusOr<AesGcmSivKey> key =
      AesGcmSivKey::Create(*params,
                           RestrictedData(subtle::Random::GetRandomBytes(32),
                                          InsecureSecretKeyAccess::Get()),
                           /*id_requirement=*/123, GetPartialKeyAccess());
  ASSERT_THAT(key, IsOk());

  util::StatusOr<std::unique_ptr<Serialization>> serialized_key =
      internal::MutableSerializationRegistry::GlobalInstance()
          .SerializeKey<internal::ProtoKeySerialization>(
              *key, InsecureSecretKeyAccess::Get());
  ASSERT_THAT(serialized_key.status(), StatusIs(absl::StatusCode::kNotFound));

  ASSERT_THAT(AeadConfig::Register(), IsOk());

  util::StatusOr<std::unique_ptr<Key>> parsed_key2 =
      internal::MutableSerializationRegistry::GlobalInstance().ParseKey(
          *proto_key_serialization, InsecureSecretKeyAccess::Get());
  ASSERT_THAT(parsed_key2, IsOk());

  util::StatusOr<std::unique_ptr<Serialization>> serialized_key2 =
      internal::MutableSerializationRegistry::GlobalInstance()
          .SerializeKey<internal::ProtoKeySerialization>(
              *key, InsecureSecretKeyAccess::Get());
  ASSERT_THAT(serialized_key2, IsOk());
}

TEST_F(AeadConfigTest, AesEaxProtoParamsSerializationRegistered) {
  if (IsFipsModeEnabled()) {
    GTEST_SKIP() << "Not supported in FIPS-only mode";
  }

  util::StatusOr<internal::ProtoParametersSerialization>
      proto_params_serialization =
          internal::ProtoParametersSerialization::Create(
              AeadKeyTemplates::Aes256Eax());
  ASSERT_THAT(proto_params_serialization, IsOk());

  util::StatusOr<std::unique_ptr<Parameters>> parsed_params =
      internal::MutableSerializationRegistry::GlobalInstance().ParseParameters(
          *proto_params_serialization);
  ASSERT_THAT(parsed_params.status(), StatusIs(absl::StatusCode::kNotFound));

  util::StatusOr<AesEaxParameters> params =
      AesEaxParameters::Builder()
          .SetVariant(AesEaxParameters::Variant::kTink)
          .SetKeySizeInBytes(32)
          .SetIvSizeInBytes(16)
          .SetTagSizeInBytes(16)
          .Build();
  ASSERT_THAT(params, IsOk());

  util::StatusOr<std::unique_ptr<Serialization>> serialized_params =
      internal::MutableSerializationRegistry::GlobalInstance()
          .SerializeParameters<internal::ProtoParametersSerialization>(*params);
  ASSERT_THAT(serialized_params.status(),
              StatusIs(absl::StatusCode::kNotFound));

  ASSERT_THAT(AeadConfig::Register(), IsOk());

  util::StatusOr<std::unique_ptr<Parameters>> parsed_params2 =
      internal::MutableSerializationRegistry::GlobalInstance().ParseParameters(
          *proto_params_serialization);
  ASSERT_THAT(parsed_params2, IsOk());

  util::StatusOr<std::unique_ptr<Serialization>> serialized_params2 =
      internal::MutableSerializationRegistry::GlobalInstance()
          .SerializeParameters<internal::ProtoParametersSerialization>(*params);
  ASSERT_THAT(serialized_params2, IsOk());
}

TEST_F(AeadConfigTest, AesEaxProtoKeySerializationRegistered) {
  if (IsFipsModeEnabled()) {
    GTEST_SKIP() << "Not supported in FIPS-only mode";
  }

  google::crypto::tink::AesEaxKey key_proto;
  key_proto.set_version(0);
  key_proto.mutable_params()->set_iv_size(16);
  key_proto.set_key_value(subtle::Random::GetRandomBytes(32));

  util::StatusOr<internal::ProtoKeySerialization> proto_key_serialization =
      internal::ProtoKeySerialization::Create(
          "type.googleapis.com/google.crypto.tink.AesEaxKey",
          RestrictedData(key_proto.SerializeAsString(),
                         InsecureSecretKeyAccess::Get()),
          KeyData::SYMMETRIC, OutputPrefixType::TINK, /*id_requirement=*/123);
  ASSERT_THAT(proto_key_serialization, IsOk());

  util::StatusOr<std::unique_ptr<Key>> parsed_key =
      internal::MutableSerializationRegistry::GlobalInstance().ParseKey(
          *proto_key_serialization, InsecureSecretKeyAccess::Get());
  ASSERT_THAT(parsed_key.status(), StatusIs(absl::StatusCode::kNotFound));

  util::StatusOr<AesEaxParameters> params =
      AesEaxParameters::Builder()
          .SetVariant(AesEaxParameters::Variant::kTink)
          .SetKeySizeInBytes(32)
          .SetIvSizeInBytes(16)
          .SetTagSizeInBytes(16)
          .Build();
  ASSERT_THAT(params, IsOk());

  util::StatusOr<AesEaxKey> key =
      AesEaxKey::Create(*params,
                        RestrictedData(subtle::Random::GetRandomBytes(32),
                                       InsecureSecretKeyAccess::Get()),
                        /*id_requirement=*/123, GetPartialKeyAccess());
  ASSERT_THAT(key, IsOk());

  util::StatusOr<std::unique_ptr<Serialization>> serialized_key =
      internal::MutableSerializationRegistry::GlobalInstance()
          .SerializeKey<internal::ProtoKeySerialization>(
              *key, InsecureSecretKeyAccess::Get());
  ASSERT_THAT(serialized_key.status(), StatusIs(absl::StatusCode::kNotFound));

  ASSERT_THAT(AeadConfig::Register(), IsOk());

  util::StatusOr<std::unique_ptr<Key>> parsed_key2 =
      internal::MutableSerializationRegistry::GlobalInstance().ParseKey(
          *proto_key_serialization, InsecureSecretKeyAccess::Get());
  ASSERT_THAT(parsed_key2, IsOk());

  util::StatusOr<std::unique_ptr<Serialization>> serialized_key2 =
      internal::MutableSerializationRegistry::GlobalInstance()
          .SerializeKey<internal::ProtoKeySerialization>(
              *key, InsecureSecretKeyAccess::Get());
  ASSERT_THAT(serialized_key2, IsOk());
}

TEST_F(AeadConfigTest, XChaCha20Poly1305ProtoParamsSerializationRegistered) {
  if (IsFipsModeEnabled()) {
    GTEST_SKIP() << "Not supported in FIPS-only mode";
  }

  // TODO: b/325507124 - Rewrite tests using parameters proto format API.
  util::StatusOr<internal::ProtoParametersSerialization>
      proto_params_serialization =
          internal::ProtoParametersSerialization::Create(
              AeadKeyTemplates::XChaCha20Poly1305());
  ASSERT_THAT(proto_params_serialization, IsOk());

  util::StatusOr<std::unique_ptr<Parameters>> parsed_params =
      internal::MutableSerializationRegistry::GlobalInstance().ParseParameters(
          *proto_params_serialization);
  ASSERT_THAT(parsed_params.status(), StatusIs(absl::StatusCode::kNotFound));

  util::StatusOr<XChaCha20Poly1305Parameters> params =
      XChaCha20Poly1305Parameters::Create(
          XChaCha20Poly1305Parameters::Variant::kTink);
  ASSERT_THAT(params, IsOk());

  util::StatusOr<std::unique_ptr<Serialization>> serialized_params =
      internal::MutableSerializationRegistry::GlobalInstance()
          .SerializeParameters<internal::ProtoParametersSerialization>(*params);
  ASSERT_THAT(serialized_params.status(),
              StatusIs(absl::StatusCode::kNotFound));

  ASSERT_THAT(AeadConfig::Register(), IsOk());

  util::StatusOr<std::unique_ptr<Parameters>> parsed_params2 =
      internal::MutableSerializationRegistry::GlobalInstance().ParseParameters(
          *proto_params_serialization);
  ASSERT_THAT(parsed_params2, IsOk());

  util::StatusOr<std::unique_ptr<Serialization>> serialized_params2 =
      internal::MutableSerializationRegistry::GlobalInstance()
          .SerializeParameters<internal::ProtoParametersSerialization>(*params);
  ASSERT_THAT(serialized_params2, IsOk());
}

TEST_F(AeadConfigTest, XChaCha20Poly1305ProtoKeySerializationRegistered) {
  if (IsFipsModeEnabled()) {
    GTEST_SKIP() << "Not supported in FIPS-only mode";
  }

  util::StatusOr<std::unique_ptr<KeysetHandle>> handle =
      KeysetHandle::GenerateNew(AeadKeyTemplates::XChaCha20Poly1305(),
                                KeyGenConfigAeadV0());
  ASSERT_THAT(handle, IsOk());

  // Fails to parse this key type, so falls back to legacy proto key.
  const internal::LegacyProtoKey* legacy_proto_key_from_handle =
      reinterpret_cast<const internal::LegacyProtoKey*>(
          (*handle)->GetPrimary().GetKey().get());
  EXPECT_THAT(legacy_proto_key_from_handle, Not(IsNull()));

  util::StatusOr<XChaCha20Poly1305Key> key = XChaCha20Poly1305Key::Create(
      XChaCha20Poly1305Parameters::Variant::kTink,
      RestrictedData(subtle::Random::GetRandomBytes(32),
                     InsecureSecretKeyAccess::Get()),
      /*id_requirement=*/123, GetPartialKeyAccess());
  ASSERT_THAT(key, IsOk());

  // Fails to serialize this key type.
  EXPECT_THAT(KeysetHandleBuilder()
                  .AddEntry(KeysetHandleBuilder::Entry::CreateFromCopyableKey(
                      *key, KeyStatus::kEnabled, /*is_primary=*/true))
                  .Build()
                  .status(),
              StatusIs(absl::StatusCode::kInvalidArgument,
                       HasSubstr("Failed to serialize")));

  ASSERT_THAT(AeadConfig::Register(), IsOk());

  const XChaCha20Poly1305Key* key_from_handle =
      reinterpret_cast<const XChaCha20Poly1305Key*>(
          (*handle)->GetPrimary().GetKey().get());
  EXPECT_THAT(key_from_handle, Not(IsNull()));

  EXPECT_THAT(KeysetHandleBuilder()
                  .AddEntry(KeysetHandleBuilder::Entry::CreateFromCopyableKey(
                      *key, KeyStatus::kEnabled, /*is_primary=*/true))
                  .Build(),
              IsOk());
}

TEST_F(AeadConfigTest, AesCtrHmacAeadProtoParamsSerializationRegistered) {
  if (IsFipsModeEnabled()) {
    GTEST_SKIP() << "Not supported in FIPS-only mode";
  }

  // TODO: b/325507124 - Rewrite tests using parameters proto format API.
  util::StatusOr<internal::ProtoParametersSerialization>
      proto_params_serialization =
          internal::ProtoParametersSerialization::Create(
              AeadKeyTemplates::Aes256CtrHmacSha256());
  ASSERT_THAT(proto_params_serialization, IsOk());

  util::StatusOr<std::unique_ptr<Parameters>> parsed_params =
      internal::MutableSerializationRegistry::GlobalInstance().ParseParameters(
          *proto_params_serialization);
  ASSERT_THAT(parsed_params.status(), StatusIs(absl::StatusCode::kNotFound));

  util::StatusOr<AesCtrHmacAeadParameters> params =
      AesCtrHmacAeadParameters::Builder()
          .SetAesKeySizeInBytes(32)
          .SetHmacKeySizeInBytes(32)
          .SetIvSizeInBytes(16)
          .SetTagSizeInBytes(16)
          .SetVariant(AesCtrHmacAeadParameters::Variant::kTink)
          .SetHashType(AesCtrHmacAeadParameters::HashType::kSha256)
          .Build();
  ASSERT_THAT(params, IsOk());

  util::StatusOr<std::unique_ptr<Serialization>> serialized_params =
      internal::MutableSerializationRegistry::GlobalInstance()
          .SerializeParameters<internal::ProtoParametersSerialization>(*params);
  ASSERT_THAT(serialized_params.status(),
              StatusIs(absl::StatusCode::kNotFound));

  ASSERT_THAT(AeadConfig::Register(), IsOk());

  util::StatusOr<std::unique_ptr<Parameters>> parsed_params2 =
      internal::MutableSerializationRegistry::GlobalInstance().ParseParameters(
          *proto_params_serialization);
  ASSERT_THAT(parsed_params2, IsOk());

  util::StatusOr<std::unique_ptr<Serialization>> serialized_params2 =
      internal::MutableSerializationRegistry::GlobalInstance()
          .SerializeParameters<internal::ProtoParametersSerialization>(*params);
  ASSERT_THAT(serialized_params2, IsOk());
}

TEST_F(AeadConfigTest, AesCtrHmacAeadProtoKeySerializationRegistered) {
  if (IsFipsModeEnabled()) {
    GTEST_SKIP() << "Not supported in FIPS-only mode";
  }

  util::StatusOr<std::unique_ptr<KeysetHandle>> handle =
      KeysetHandle::GenerateNew(AeadKeyTemplates::Aes256CtrHmacSha256(),
                                KeyGenConfigAeadV0());
  ASSERT_THAT(handle, IsOk());

  // Failed to parse this key type, so fell back to legacy proto key.
  EXPECT_THAT(dynamic_cast<const internal::LegacyProtoKey*>(
                  (*handle)->GetPrimary().GetKey().get()),
              Not(IsNull()));

  util::StatusOr<AesCtrHmacAeadParameters> params =
      AesCtrHmacAeadParameters::Builder()
          .SetAesKeySizeInBytes(32)
          .SetHmacKeySizeInBytes(32)
          .SetIvSizeInBytes(16)
          .SetTagSizeInBytes(16)
          .SetVariant(AesCtrHmacAeadParameters::Variant::kTink)
          .SetHashType(AesCtrHmacAeadParameters::HashType::kSha256)
          .Build();
  ASSERT_THAT(params, IsOk());

  util::StatusOr<AesCtrHmacAeadKey> key =
      AesCtrHmacAeadKey::Builder()
          .SetParameters(*params)
          .SetAesKeyBytes(RestrictedData(subtle::Random::GetRandomBytes(32),
                                         InsecureSecretKeyAccess::Get()))
          .SetHmacKeyBytes(RestrictedData(subtle::Random::GetRandomBytes(32),
                                          InsecureSecretKeyAccess::Get()))
          .SetIdRequirement(123)
          .Build(GetPartialKeyAccess());
  ASSERT_THAT(key, IsOk());

  // Fails to serialize this key type.
  EXPECT_THAT(KeysetHandleBuilder()
                  .AddEntry(KeysetHandleBuilder::Entry::CreateFromCopyableKey(
                      *key, KeyStatus::kEnabled, /*is_primary=*/true))
                  .Build()
                  .status(),
              StatusIs(absl::StatusCode::kInvalidArgument,
                       HasSubstr("Failed to serialize")));

  ASSERT_THAT(AeadConfig::Register(), IsOk());

  util::StatusOr<std::unique_ptr<KeysetHandle>> handle2 =
      KeysetHandle::GenerateNew(AeadKeyTemplates::Aes256CtrHmacSha256(),
                                KeyGenConfigAeadV0());
  ASSERT_THAT(handle2, IsOk());

  // Parsing now creates the right key type.
 
Download .txt
gitextract_6vi1w9d7/

├── .bazelversion
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.md
│   │   ├── config.yml
│   │   └── feature_request.md
│   └── workflows/
│       └── codeql-analysis.yml
├── .gitignore
├── BUILD.bazel
├── CMakeLists.txt
├── LICENSE
├── README.md
├── cc/
│   ├── .bazelignore
│   ├── .bazelrc
│   ├── .bazelversion
│   ├── BUILD.bazel
│   ├── CMakeLists.txt
│   ├── WORKSPACE
│   ├── aead/
│   │   ├── BUILD.bazel
│   │   ├── CMakeLists.txt
│   │   ├── aead_config.cc
│   │   ├── aead_config.h
│   │   ├── aead_config_test.cc
│   │   ├── aead_factory.cc
│   │   ├── aead_factory.h
│   │   ├── aead_factory_test.cc
│   │   ├── aead_key.h
│   │   ├── aead_key_templates.cc
│   │   ├── aead_key_templates.h
│   │   ├── aead_key_templates_test.cc
│   │   ├── aead_parameters.h
│   │   ├── aead_wrapper.cc
│   │   ├── aead_wrapper.h
│   │   ├── aead_wrapper_test.cc
│   │   ├── aes_ctr_hmac_aead_key.cc
│   │   ├── aes_ctr_hmac_aead_key.h
│   │   ├── aes_ctr_hmac_aead_key_manager.cc
│   │   ├── aes_ctr_hmac_aead_key_manager.h
│   │   ├── aes_ctr_hmac_aead_key_manager_test.cc
│   │   ├── aes_ctr_hmac_aead_key_test.cc
│   │   ├── aes_ctr_hmac_aead_parameters.cc
│   │   ├── aes_ctr_hmac_aead_parameters.h
│   │   ├── aes_ctr_hmac_aead_parameters_test.cc
│   │   ├── aes_ctr_hmac_aead_proto_serialization.cc
│   │   ├── aes_ctr_hmac_aead_proto_serialization.h
│   │   ├── aes_ctr_hmac_aead_proto_serialization_test.cc
│   │   ├── aes_eax_key.cc
│   │   ├── aes_eax_key.h
│   │   ├── aes_eax_key_manager.h
│   │   ├── aes_eax_key_manager_test.cc
│   │   ├── aes_eax_key_test.cc
│   │   ├── aes_eax_parameters.cc
│   │   ├── aes_eax_parameters.h
│   │   ├── aes_eax_parameters_test.cc
│   │   ├── aes_eax_proto_serialization.cc
│   │   ├── aes_eax_proto_serialization.h
│   │   ├── aes_eax_proto_serialization_test.cc
│   │   ├── aes_gcm_key.cc
│   │   ├── aes_gcm_key.h
│   │   ├── aes_gcm_key_manager.h
│   │   ├── aes_gcm_key_manager_test.cc
│   │   ├── aes_gcm_key_test.cc
│   │   ├── aes_gcm_parameters.cc
│   │   ├── aes_gcm_parameters.h
│   │   ├── aes_gcm_parameters_test.cc
│   │   ├── aes_gcm_proto_serialization.cc
│   │   ├── aes_gcm_proto_serialization.h
│   │   ├── aes_gcm_proto_serialization_test.cc
│   │   ├── aes_gcm_siv_key.cc
│   │   ├── aes_gcm_siv_key.h
│   │   ├── aes_gcm_siv_key_manager.h
│   │   ├── aes_gcm_siv_key_manager_test.cc
│   │   ├── aes_gcm_siv_key_test.cc
│   │   ├── aes_gcm_siv_parameters.cc
│   │   ├── aes_gcm_siv_parameters.h
│   │   ├── aes_gcm_siv_parameters_test.cc
│   │   ├── aes_gcm_siv_proto_serialization.cc
│   │   ├── aes_gcm_siv_proto_serialization.h
│   │   ├── aes_gcm_siv_proto_serialization_test.cc
│   │   ├── chacha20_poly1305_key.cc
│   │   ├── chacha20_poly1305_key.h
│   │   ├── chacha20_poly1305_key_test.cc
│   │   ├── chacha20_poly1305_parameters.cc
│   │   ├── chacha20_poly1305_parameters.h
│   │   ├── chacha20_poly1305_parameters_test.cc
│   │   ├── chacha20_poly1305_proto_serialization.cc
│   │   ├── chacha20_poly1305_proto_serialization.h
│   │   ├── chacha20_poly1305_proto_serialization_test.cc
│   │   ├── config_v0.cc
│   │   ├── config_v0.h
│   │   ├── config_v0_test.cc
│   │   ├── cord_aead.h
│   │   ├── cord_aead_wrapper.cc
│   │   ├── cord_aead_wrapper.h
│   │   ├── cord_aead_wrapper_test.cc
│   │   ├── failing_aead.cc
│   │   ├── failing_aead.h
│   │   ├── failing_aead_test.cc
│   │   ├── internal/
│   │   │   ├── BUILD.bazel
│   │   │   ├── CMakeLists.txt
│   │   │   ├── aead_from_zero_copy.cc
│   │   │   ├── aead_from_zero_copy.h
│   │   │   ├── aead_from_zero_copy_test.cc
│   │   │   ├── aead_util.cc
│   │   │   ├── aead_util.h
│   │   │   ├── aead_util_test.cc
│   │   │   ├── config_v0.cc
│   │   │   ├── config_v0.h
│   │   │   ├── config_v0_test.cc
│   │   │   ├── cord_aes_gcm_boringssl.cc
│   │   │   ├── cord_aes_gcm_boringssl.h
│   │   │   ├── cord_aes_gcm_boringssl_test.cc
│   │   │   ├── key_gen_config_v0.cc
│   │   │   ├── key_gen_config_v0.h
│   │   │   ├── mock_zero_copy_aead.h
│   │   │   ├── ssl_aead.cc
│   │   │   ├── ssl_aead.h
│   │   │   ├── ssl_aead_large_inputs_test.cc
│   │   │   ├── ssl_aead_test.cc
│   │   │   ├── wycheproof_aead.cc
│   │   │   ├── wycheproof_aead.h
│   │   │   ├── zero_copy_aead.h
│   │   │   ├── zero_copy_aead_wrapper.cc
│   │   │   ├── zero_copy_aead_wrapper.h
│   │   │   ├── zero_copy_aead_wrapper_test.cc
│   │   │   ├── zero_copy_aes_gcm_boringssl.cc
│   │   │   ├── zero_copy_aes_gcm_boringssl.h
│   │   │   └── zero_copy_aes_gcm_boringssl_test.cc
│   │   ├── key_gen_config_v0.cc
│   │   ├── key_gen_config_v0.h
│   │   ├── kms_aead_key_manager.h
│   │   ├── kms_aead_key_manager_test.cc
│   │   ├── kms_envelope_aead.cc
│   │   ├── kms_envelope_aead.h
│   │   ├── kms_envelope_aead_key_manager.cc
│   │   ├── kms_envelope_aead_key_manager.h
│   │   ├── kms_envelope_aead_key_manager_test.cc
│   │   ├── kms_envelope_aead_test.cc
│   │   ├── mock_aead.h
│   │   ├── subtle/
│   │   │   ├── BUILD.bazel
│   │   │   └── CMakeLists.txt
│   │   ├── xchacha20_poly1305_key.cc
│   │   ├── xchacha20_poly1305_key.h
│   │   ├── xchacha20_poly1305_key_manager.h
│   │   ├── xchacha20_poly1305_key_manager_test.cc
│   │   ├── xchacha20_poly1305_key_test.cc
│   │   ├── xchacha20_poly1305_parameters.cc
│   │   ├── xchacha20_poly1305_parameters.h
│   │   ├── xchacha20_poly1305_parameters_test.cc
│   │   ├── xchacha20_poly1305_proto_serialization.cc
│   │   ├── xchacha20_poly1305_proto_serialization.h
│   │   └── xchacha20_poly1305_proto_serialization_test.cc
│   ├── aead.h
│   ├── aead_config.h
│   ├── aead_factory.h
│   ├── aead_key_templates.h
│   ├── big_integer.h
│   ├── binary_keyset_reader.h
│   ├── binary_keyset_writer.h
│   ├── chunked_mac.h
│   ├── cleartext_keyset_handle.h
│   ├── config/
│   │   ├── BUILD.bazel
│   │   ├── CMakeLists.txt
│   │   ├── config_util.cc
│   │   ├── config_util.h
│   │   ├── config_util_test.cc
│   │   ├── fips_140_2.cc
│   │   ├── fips_140_2.h
│   │   ├── fips_140_2_test.cc
│   │   ├── global_registry.cc
│   │   ├── global_registry.h
│   │   ├── global_registry_test.cc
│   │   ├── internal/
│   │   │   ├── BUILD.bazel
│   │   │   └── CMakeLists.txt
│   │   ├── key_gen_fips_140_2.cc
│   │   ├── key_gen_fips_140_2.h
│   │   ├── key_gen_fips_140_2_test.cc
│   │   ├── key_gen_v0.cc
│   │   ├── key_gen_v0.h
│   │   ├── tink_config.cc
│   │   ├── tink_config.h
│   │   ├── tink_config_test.cc
│   │   ├── tink_fips.cc
│   │   ├── tink_fips.h
│   │   ├── tink_fips_test.cc
│   │   ├── v0.cc
│   │   ├── v0.h
│   │   └── v0_test.cc
│   ├── configuration.h
│   ├── core/
│   │   ├── big_integer.cc
│   │   ├── big_integer_test.cc
│   │   ├── binary_keyset_reader.cc
│   │   ├── binary_keyset_reader_test.cc
│   │   ├── binary_keyset_writer.cc
│   │   ├── binary_keyset_writer_test.cc
│   │   ├── cleartext_keyset_handle.cc
│   │   ├── cleartext_keyset_handle_test.cc
│   │   ├── crypto_format.cc
│   │   ├── crypto_format_test.cc
│   │   ├── ec_point_test.cc
│   │   ├── json_keyset_reader.cc
│   │   ├── json_keyset_reader_test.cc
│   │   ├── json_keyset_writer.cc
│   │   ├── json_keyset_writer_test.cc
│   │   ├── key_access_test.cc
│   │   ├── key_manager.cc
│   │   ├── key_manager_impl.h
│   │   ├── key_manager_impl_test.cc
│   │   ├── key_manager_test.cc
│   │   ├── key_type_manager.h
│   │   ├── key_type_manager_test.cc
│   │   ├── keyset_handle.cc
│   │   ├── keyset_handle_builder.cc
│   │   ├── keyset_handle_builder_test.cc
│   │   ├── keyset_handle_test.cc
│   │   ├── keyset_manager.cc
│   │   ├── keyset_manager_test.cc
│   │   ├── kms_clients.cc
│   │   ├── kms_clients_test.cc
│   │   ├── partial_key_access_token_test.cc
│   │   ├── primitive_set_test.cc
│   │   ├── private_key_manager_impl.h
│   │   ├── private_key_manager_impl_test.cc
│   │   ├── private_key_type_manager.h
│   │   ├── restricted_big_integer.cc
│   │   ├── restricted_big_integer_test.cc
│   │   ├── restricted_data.cc
│   │   ├── restricted_data_test.cc
│   │   ├── template_util.h
│   │   ├── template_util_test.cc
│   │   ├── version.cc
│   │   └── version_test.cc
│   ├── crypto_format.h
│   ├── daead/
│   │   ├── BUILD.bazel
│   │   ├── CMakeLists.txt
│   │   ├── aes_siv_key.cc
│   │   ├── aes_siv_key.h
│   │   ├── aes_siv_key_manager.h
│   │   ├── aes_siv_key_manager_test.cc
│   │   ├── aes_siv_key_test.cc
│   │   ├── aes_siv_parameters.cc
│   │   ├── aes_siv_parameters.h
│   │   ├── aes_siv_parameters_test.cc
│   │   ├── aes_siv_proto_serialization.cc
│   │   ├── aes_siv_proto_serialization.h
│   │   ├── aes_siv_proto_serialization_test.cc
│   │   ├── config_v0.cc
│   │   ├── config_v0.h
│   │   ├── config_v0_test.cc
│   │   ├── deterministic_aead_config.cc
│   │   ├── deterministic_aead_config.h
│   │   ├── deterministic_aead_config_test.cc
│   │   ├── deterministic_aead_factory.cc
│   │   ├── deterministic_aead_factory.h
│   │   ├── deterministic_aead_factory_test.cc
│   │   ├── deterministic_aead_key.h
│   │   ├── deterministic_aead_key_templates.cc
│   │   ├── deterministic_aead_key_templates.h
│   │   ├── deterministic_aead_key_templates_test.cc
│   │   ├── deterministic_aead_parameters.h
│   │   ├── deterministic_aead_wrapper.cc
│   │   ├── deterministic_aead_wrapper.h
│   │   ├── deterministic_aead_wrapper_test.cc
│   │   ├── failing_daead.cc
│   │   ├── failing_daead.h
│   │   ├── failing_daead_test.cc
│   │   ├── internal/
│   │   │   ├── BUILD.bazel
│   │   │   ├── CMakeLists.txt
│   │   │   ├── config_v0.cc
│   │   │   ├── config_v0.h
│   │   │   ├── config_v0_test.cc
│   │   │   ├── key_gen_config_v0.cc
│   │   │   └── key_gen_config_v0.h
│   │   ├── key_gen_config_v0.cc
│   │   ├── key_gen_config_v0.h
│   │   └── subtle/
│   │       ├── BUILD.bazel
│   │       ├── CMakeLists.txt
│   │       ├── aead_or_daead.cc
│   │       ├── aead_or_daead.h
│   │       └── aead_or_daead_test.cc
│   ├── deterministic_aead.h
│   ├── deterministic_aead_config.h
│   ├── deterministic_aead_factory.h
│   ├── deterministic_aead_key_templates.h
│   ├── ec_point.h
│   ├── examples/
│   │   ├── .bazelrc
│   │   ├── .bazelversion
│   │   ├── CMakeLists.txt
│   │   ├── WORKSPACE
│   │   ├── aead/
│   │   │   ├── BUILD.bazel
│   │   │   ├── CMakeLists.txt
│   │   │   ├── aead_cli.cc
│   │   │   ├── aead_cli_test.sh
│   │   │   └── aead_test_keyset.json
│   │   ├── daead/
│   │   │   ├── BUILD.bazel
│   │   │   ├── CMakeLists.txt
│   │   │   ├── deterministic_aead_cli.cc
│   │   │   ├── deterministic_aead_cli_test.sh
│   │   │   └── deterministic_aead_test_keyset.json
│   │   ├── digital_signatures/
│   │   │   ├── BUILD.bazel
│   │   │   ├── CMakeLists.txt
│   │   │   ├── digital_signature_private_keyset.json
│   │   │   ├── digital_signature_public_keyset.json
│   │   │   ├── digital_signatures_cli.cc
│   │   │   └── digital_signatures_cli_test.sh
│   │   ├── hybrid_encryption/
│   │   │   ├── BUILD.bazel
│   │   │   ├── CMakeLists.txt
│   │   │   ├── hybrid_cli.cc
│   │   │   ├── hybrid_cli_test.sh
│   │   │   └── testdata/
│   │   │       ├── BUILD.bazel
│   │   │       ├── hpke_test_private_keyset.json
│   │   │       ├── hpke_test_public_keyset.json
│   │   │       ├── hybrid_test_private_keyset.json
│   │   │       └── hybrid_test_public_keyset.json
│   │   ├── jwt/
│   │   │   ├── BUILD.bazel
│   │   │   ├── CMakeLists.txt
│   │   │   ├── jwt_generate_public_jwk_set.cc
│   │   │   ├── jwt_sign.cc
│   │   │   ├── jwt_signature_cli_test.sh
│   │   │   ├── jwt_signature_private_keyset.json
│   │   │   ├── jwt_signature_public_keyset.json
│   │   │   └── jwt_verify.cc
│   │   ├── key_derivation/
│   │   │   ├── BUILD.bazel
│   │   │   ├── CMakeLists.txt
│   │   │   ├── key_derivation_cli.cc
│   │   │   ├── key_derivation_cli_test.sh
│   │   │   └── keyset.json
│   │   ├── mac/
│   │   │   ├── BUILD.bazel
│   │   │   ├── CMakeLists.txt
│   │   │   ├── mac_cli.cc
│   │   │   ├── mac_cli_test.sh
│   │   │   └── mac_test_keyset.json
│   │   ├── util/
│   │   │   ├── BUILD.bazel
│   │   │   ├── CMakeLists.txt
│   │   │   ├── util.cc
│   │   │   └── util.h
│   │   └── walkthrough/
│   │       ├── BUILD.bazel
│   │       ├── CMakeLists.txt
│   │       ├── create_keyset.cc
│   │       ├── create_keyset.h
│   │       ├── create_keyset_test.cc
│   │       ├── load_cleartext_keyset.cc
│   │       ├── load_cleartext_keyset.h
│   │       ├── load_cleartext_keyset_test.cc
│   │       ├── load_encrypted_keyset.cc
│   │       ├── load_encrypted_keyset.h
│   │       ├── load_encrypted_keyset_test.cc
│   │       ├── obtain_and_use_a_primitive.cc
│   │       ├── obtain_and_use_a_primitive.h
│   │       ├── obtain_and_use_a_primitive_test.cc
│   │       ├── test_util.cc
│   │       ├── test_util.h
│   │       ├── write_cleartext_keyset.cc
│   │       ├── write_cleartext_keyset.h
│   │       ├── write_cleartext_keyset_test.cc
│   │       ├── write_keyset.cc
│   │       ├── write_keyset.h
│   │       └── write_keyset_test.cc
│   ├── experimental/
│   │   └── pqcrypto/
│   │       ├── README.md
│   │       ├── kem/
│   │       │   ├── BUILD.bazel
│   │       │   ├── cecpq2_aead_hkdf_dem_helper.cc
│   │       │   ├── cecpq2_aead_hkdf_dem_helper.h
│   │       │   ├── cecpq2_aead_hkdf_dem_helper_test.cc
│   │       │   ├── cecpq2_aead_hkdf_private_key_manager.cc
│   │       │   ├── cecpq2_aead_hkdf_private_key_manager.h
│   │       │   ├── cecpq2_aead_hkdf_private_key_manager_test.cc
│   │       │   ├── cecpq2_aead_hkdf_public_key_manager.cc
│   │       │   ├── cecpq2_aead_hkdf_public_key_manager.h
│   │       │   ├── cecpq2_aead_hkdf_public_key_manager_test.cc
│   │       │   ├── cecpq2_hybrid_config.cc
│   │       │   ├── cecpq2_hybrid_config.h
│   │       │   ├── cecpq2_hybrid_config_test.cc
│   │       │   ├── cecpq2_hybrid_key_templates.cc
│   │       │   ├── cecpq2_hybrid_key_templates.h
│   │       │   ├── cecpq2_hybrid_key_templates_test.cc
│   │       │   ├── subtle/
│   │       │   │   ├── BUILD.bazel
│   │       │   │   ├── cecpq2_aead_hkdf_hybrid_decrypt.cc
│   │       │   │   ├── cecpq2_aead_hkdf_hybrid_decrypt.h
│   │       │   │   ├── cecpq2_aead_hkdf_hybrid_decrypt_test.cc
│   │       │   │   ├── cecpq2_aead_hkdf_hybrid_encrypt.cc
│   │       │   │   ├── cecpq2_aead_hkdf_hybrid_encrypt.h
│   │       │   │   ├── cecpq2_aead_hkdf_hybrid_encrypt_test.cc
│   │       │   │   ├── cecpq2_hkdf_recipient_kem_boringssl.cc
│   │       │   │   ├── cecpq2_hkdf_recipient_kem_boringssl.h
│   │       │   │   ├── cecpq2_hkdf_recipient_kem_boringssl_test.cc
│   │       │   │   ├── cecpq2_hkdf_sender_kem_boringssl.cc
│   │       │   │   ├── cecpq2_hkdf_sender_kem_boringssl.h
│   │       │   │   ├── cecpq2_hkdf_sender_kem_boringssl_test.cc
│   │       │   │   ├── cecpq2_subtle_boringssl_util.cc
│   │       │   │   ├── cecpq2_subtle_boringssl_util.h
│   │       │   │   └── cecpq2_subtle_boringssl_util_test.cc
│   │       │   └── util/
│   │       │       ├── BUILD.bazel
│   │       │       ├── test_util.cc
│   │       │       ├── test_util.h
│   │       │       └── test_util_test.cc
│   │       ├── proto/
│   │       │   └── BUILD.bazel
│   │       └── signature/
│   │           ├── dilithium_key_template.cc
│   │           ├── dilithium_key_template.h
│   │           ├── dilithium_key_template_test.cc
│   │           ├── dilithium_sign_key_manager.cc
│   │           ├── dilithium_sign_key_manager.h
│   │           ├── dilithium_sign_key_manager_test.cc
│   │           ├── dilithium_verify_key_manager.cc
│   │           ├── dilithium_verify_key_manager.h
│   │           ├── dilithium_verify_key_manager_test.cc
│   │           ├── falcon_key_template.cc
│   │           ├── falcon_key_template.h
│   │           ├── falcon_key_template_test.cc
│   │           ├── falcon_sign_key_manager.cc
│   │           ├── falcon_sign_key_manager.h
│   │           ├── falcon_sign_key_manager_test.cc
│   │           ├── falcon_verify_key_manager.cc
│   │           ├── falcon_verify_key_manager.h
│   │           ├── falcon_verify_key_manager_test.cc
│   │           ├── signature_config.cc
│   │           ├── signature_config.h
│   │           ├── signature_config_test.cc
│   │           ├── signature_config_util_test.cc
│   │           ├── slh_dsa_parameters.cc
│   │           ├── slh_dsa_parameters.h
│   │           ├── slh_dsa_parameters_test.cc
│   │           ├── slh_dsa_private_key.cc
│   │           ├── slh_dsa_private_key.h
│   │           ├── slh_dsa_private_key_test.cc
│   │           ├── slh_dsa_proto_serialization.cc
│   │           ├── slh_dsa_proto_serialization.h
│   │           ├── slh_dsa_proto_serialization_test.cc
│   │           ├── slh_dsa_public_key.cc
│   │           ├── slh_dsa_public_key.h
│   │           ├── slh_dsa_public_key_test.cc
│   │           ├── sphincs_key_template.cc
│   │           ├── sphincs_key_template.h
│   │           ├── sphincs_key_template_test.cc
│   │           ├── sphincs_sign_key_manager.cc
│   │           ├── sphincs_sign_key_manager.h
│   │           ├── sphincs_sign_key_manager_test.cc
│   │           ├── sphincs_verify_key_manager.cc
│   │           ├── sphincs_verify_key_manager.h
│   │           ├── sphincs_verify_key_manager_test.cc
│   │           ├── subtle/
│   │           │   ├── dilithium_avx2_sign.cc
│   │           │   ├── dilithium_avx2_sign.h
│   │           │   ├── dilithium_avx2_sign_test.cc
│   │           │   ├── dilithium_avx2_verify.cc
│   │           │   ├── dilithium_avx2_verify.h
│   │           │   ├── dilithium_avx2_verify_test.cc
│   │           │   ├── dilithium_key.cc
│   │           │   ├── dilithium_key.h
│   │           │   ├── dilithium_key_test.cc
│   │           │   ├── falcon_sign.cc
│   │           │   ├── falcon_sign.h
│   │           │   ├── falcon_sign_test.cc
│   │           │   ├── falcon_subtle_utils.cc
│   │           │   ├── falcon_subtle_utils.h
│   │           │   ├── falcon_subtle_utils_test.cc
│   │           │   ├── falcon_verify.cc
│   │           │   ├── falcon_verify.h
│   │           │   ├── falcon_verify_test.cc
│   │           │   ├── sphincs_helper_pqclean.cc
│   │           │   ├── sphincs_helper_pqclean.h
│   │           │   ├── sphincs_sign.cc
│   │           │   ├── sphincs_sign.h
│   │           │   ├── sphincs_sign_test.cc
│   │           │   ├── sphincs_subtle_utils.cc
│   │           │   ├── sphincs_subtle_utils.h
│   │           │   ├── sphincs_subtle_utils_test.cc
│   │           │   ├── sphincs_verify.cc
│   │           │   ├── sphincs_verify.h
│   │           │   └── sphincs_verify_test.cc
│   │           └── util/
│   │               ├── enums.cc
│   │               ├── enums.h
│   │               └── enums_test.cc
│   ├── exported_symbols.lds
│   ├── hybrid/
│   │   ├── BUILD.bazel
│   │   ├── CMakeLists.txt
│   │   ├── config_v0.cc
│   │   ├── config_v0.h
│   │   ├── config_v0_test.cc
│   │   ├── ecies_aead_hkdf_dem_helper.cc
│   │   ├── ecies_aead_hkdf_dem_helper.h
│   │   ├── ecies_aead_hkdf_dem_helper_test.cc
│   │   ├── ecies_aead_hkdf_hybrid_decrypt.cc
│   │   ├── ecies_aead_hkdf_hybrid_decrypt.h
│   │   ├── ecies_aead_hkdf_hybrid_decrypt_test.cc
│   │   ├── ecies_aead_hkdf_hybrid_encrypt.cc
│   │   ├── ecies_aead_hkdf_hybrid_encrypt.h
│   │   ├── ecies_aead_hkdf_hybrid_encrypt_test.cc
│   │   ├── ecies_aead_hkdf_private_key_manager.cc
│   │   ├── ecies_aead_hkdf_private_key_manager.h
│   │   ├── ecies_aead_hkdf_private_key_manager_test.cc
│   │   ├── ecies_aead_hkdf_public_key_manager.cc
│   │   ├── ecies_aead_hkdf_public_key_manager.h
│   │   ├── ecies_aead_hkdf_public_key_manager_test.cc
│   │   ├── ecies_parameters.cc
│   │   ├── ecies_parameters.h
│   │   ├── ecies_parameters_test.cc
│   │   ├── ecies_private_key.cc
│   │   ├── ecies_private_key.h
│   │   ├── ecies_private_key_test.cc
│   │   ├── ecies_proto_serialization.cc
│   │   ├── ecies_proto_serialization.h
│   │   ├── ecies_proto_serialization_test.cc
│   │   ├── ecies_public_key.cc
│   │   ├── ecies_public_key.h
│   │   ├── ecies_public_key_test.cc
│   │   ├── failing_hybrid.cc
│   │   ├── failing_hybrid.h
│   │   ├── failing_hybrid_test.cc
│   │   ├── hpke_config.cc
│   │   ├── hpke_config.h
│   │   ├── hpke_config_test.cc
│   │   ├── hpke_parameters.cc
│   │   ├── hpke_parameters.h
│   │   ├── hpke_parameters_test.cc
│   │   ├── hpke_private_key.cc
│   │   ├── hpke_private_key.h
│   │   ├── hpke_private_key_test.cc
│   │   ├── hpke_proto_serialization.cc
│   │   ├── hpke_proto_serialization.h
│   │   ├── hpke_proto_serialization_test.cc
│   │   ├── hpke_public_key.cc
│   │   ├── hpke_public_key.h
│   │   ├── hpke_public_key_test.cc
│   │   ├── hybrid_config.cc
│   │   ├── hybrid_config.h
│   │   ├── hybrid_config_test.cc
│   │   ├── hybrid_decrypt_factory.cc
│   │   ├── hybrid_decrypt_factory.h
│   │   ├── hybrid_decrypt_factory_test.cc
│   │   ├── hybrid_decrypt_wrapper.cc
│   │   ├── hybrid_decrypt_wrapper.h
│   │   ├── hybrid_decrypt_wrapper_test.cc
│   │   ├── hybrid_encrypt_factory.cc
│   │   ├── hybrid_encrypt_factory.h
│   │   ├── hybrid_encrypt_factory_test.cc
│   │   ├── hybrid_encrypt_wrapper.cc
│   │   ├── hybrid_encrypt_wrapper.h
│   │   ├── hybrid_encrypt_wrapper_test.cc
│   │   ├── hybrid_key_templates.cc
│   │   ├── hybrid_key_templates.h
│   │   ├── hybrid_key_templates_test.cc
│   │   ├── hybrid_parameters.h
│   │   ├── hybrid_private_key.h
│   │   ├── hybrid_public_key.h
│   │   ├── internal/
│   │   │   ├── BUILD.bazel
│   │   │   ├── CMakeLists.txt
│   │   │   ├── config_v0.cc
│   │   │   ├── config_v0.h
│   │   │   ├── config_v0_test.cc
│   │   │   ├── hpke_context.cc
│   │   │   ├── hpke_context.h
│   │   │   ├── hpke_context_boringssl.cc
│   │   │   ├── hpke_context_boringssl.h
│   │   │   ├── hpke_context_boringssl_test.cc
│   │   │   ├── hpke_context_test.cc
│   │   │   ├── hpke_decrypt.cc
│   │   │   ├── hpke_decrypt.h
│   │   │   ├── hpke_decrypt_boringssl.cc
│   │   │   ├── hpke_decrypt_boringssl.h
│   │   │   ├── hpke_decrypt_boringssl_test.cc
│   │   │   ├── hpke_decrypt_test.cc
│   │   │   ├── hpke_encrypt.cc
│   │   │   ├── hpke_encrypt.h
│   │   │   ├── hpke_encrypt_boringssl.cc
│   │   │   ├── hpke_encrypt_boringssl.h
│   │   │   ├── hpke_encrypt_boringssl_test.cc
│   │   │   ├── hpke_encrypt_test.cc
│   │   │   ├── hpke_key_boringssl.cc
│   │   │   ├── hpke_key_boringssl.h
│   │   │   ├── hpke_key_boringssl_test.cc
│   │   │   ├── hpke_key_manager_util.cc
│   │   │   ├── hpke_key_manager_util.h
│   │   │   ├── hpke_key_manager_util_test.cc
│   │   │   ├── hpke_private_key_manager.cc
│   │   │   ├── hpke_private_key_manager.h
│   │   │   ├── hpke_private_key_manager_test.cc
│   │   │   ├── hpke_public_key_manager.cc
│   │   │   ├── hpke_public_key_manager.h
│   │   │   ├── hpke_public_key_manager_test.cc
│   │   │   ├── hpke_test_util.cc
│   │   │   ├── hpke_test_util.h
│   │   │   ├── hpke_util.cc
│   │   │   ├── hpke_util.h
│   │   │   ├── hpke_util_boringssl.cc
│   │   │   ├── hpke_util_boringssl.h
│   │   │   ├── hpke_util_boringssl_test.cc
│   │   │   ├── hpke_util_test.cc
│   │   │   ├── key_gen_config_v0.cc
│   │   │   ├── key_gen_config_v0.h
│   │   │   ├── test_hpke_context_boringssl.cc
│   │   │   └── test_hpke_context_boringssl.h
│   │   ├── key_gen_config_v0.cc
│   │   ├── key_gen_config_v0.h
│   │   └── subtle/
│   │       ├── BUILD.bazel
│   │       └── CMakeLists.txt
│   ├── hybrid_config.h
│   ├── hybrid_decrypt.h
│   ├── hybrid_decrypt_factory.h
│   ├── hybrid_encrypt.h
│   ├── hybrid_encrypt_factory.h
│   ├── hybrid_key_templates.h
│   ├── input_stream.h
│   ├── insecure_secret_key_access.h
│   ├── integration/
│   │   ├── awskms/
│   │   │   ├── .bazelrc
│   │   │   ├── .bazelversion
│   │   │   ├── BUILD.bazel
│   │   │   ├── WORKSPACE
│   │   │   ├── aws_kms_aead.cc
│   │   │   ├── aws_kms_aead.h
│   │   │   ├── aws_kms_aead_integration_test.cc
│   │   │   ├── aws_kms_client.cc
│   │   │   ├── aws_kms_client.h
│   │   │   ├── aws_kms_client_test.cc
│   │   │   ├── internal/
│   │   │   │   ├── BUILD.bazel
│   │   │   │   ├── test_file_util.h
│   │   │   │   └── test_file_util_bazel.cc
│   │   │   ├── template_rule.bzl
│   │   │   ├── testdata/
│   │   │   │   └── aws/
│   │   │   │       ├── BUILD.bazel
│   │   │   │       ├── README.md
│   │   │   │       ├── access_keys_bad.csv
│   │   │   │       ├── credentials.cred
│   │   │   │       ├── credentials.csv
│   │   │   │       ├── credentials.ini
│   │   │   │       ├── credentials_bad.csv
│   │   │   │       ├── credentials_bad.ini
│   │   │   │       ├── key_arn.txt
│   │   │   │       └── key_arn_bad.txt
│   │   │   ├── third_party/
│   │   │   │   ├── aws_c_common.BUILD.bazel
│   │   │   │   ├── aws_c_event_stream.BUILD.bazel
│   │   │   │   ├── aws_checksums.BUILD.bazel
│   │   │   │   ├── aws_sdk_cpp.BUILD.bazel
│   │   │   │   ├── curl.BUILD.bazel
│   │   │   │   └── zlib.BUILD.bazel
│   │   │   └── tink_cc_awskms_deps.bzl
│   │   └── gcpkms/
│   │       ├── .bazelrc
│   │       ├── .bazelversion
│   │       ├── BUILD.bazel
│   │       ├── WORKSPACE
│   │       ├── gcp_kms_aead.cc
│   │       ├── gcp_kms_aead.h
│   │       ├── gcp_kms_aead_integration_test.cc
│   │       ├── gcp_kms_aead_test.cc
│   │       ├── gcp_kms_client.cc
│   │       ├── gcp_kms_client.h
│   │       ├── gcp_kms_client_test.cc
│   │       ├── gcp_kms_public_key_sign.cc
│   │       ├── gcp_kms_public_key_sign.h
│   │       ├── gcp_kms_public_key_sign_test.cc
│   │       ├── testdata/
│   │       │   └── gcp/
│   │       │       ├── BUILD.bazel
│   │       │       ├── README.md
│   │       │       ├── credential.json
│   │       │       ├── credential_bad.json
│   │       │       ├── key_name.txt
│   │       │       └── key_name_bad.txt
│   │       ├── tink_cc_gcpkms_deps.bzl
│   │       └── tink_cc_gcpkms_deps_init.bzl
│   ├── internal/
│   │   ├── BUILD.bazel
│   │   ├── CMakeLists.txt
│   │   ├── aes_util.cc
│   │   ├── aes_util.h
│   │   ├── aes_util_test.cc
│   │   ├── bn_encoding_util.cc
│   │   ├── bn_encoding_util.h
│   │   ├── bn_encoding_util_test.cc
│   │   ├── bn_util.cc
│   │   ├── bn_util.h
│   │   ├── bn_util_test.cc
│   │   ├── call_with_core_dump_protection.h
│   │   ├── call_with_core_dump_protection_test.cc
│   │   ├── configuration_impl.h
│   │   ├── configuration_impl_test.cc
│   │   ├── ec_util.cc
│   │   ├── ec_util.h
│   │   ├── ec_util_test.cc
│   │   ├── err_util.cc
│   │   ├── err_util.h
│   │   ├── err_util_test.cc
│   │   ├── fips_utils.cc
│   │   ├── fips_utils.h
│   │   ├── fips_utils_test.cc
│   │   ├── key_gen_configuration_impl.h
│   │   ├── key_gen_configuration_impl_test.cc
│   │   ├── key_info.cc
│   │   ├── key_info.h
│   │   ├── key_info_test.cc
│   │   ├── key_parser.h
│   │   ├── key_parser_test.cc
│   │   ├── key_serializer.h
│   │   ├── key_serializer_test.cc
│   │   ├── key_status_util.cc
│   │   ├── key_status_util.h
│   │   ├── key_status_util_test.cc
│   │   ├── key_type_info_store.cc
│   │   ├── key_type_info_store.h
│   │   ├── key_type_info_store_test.cc
│   │   ├── keyset_handle_builder_entry.cc
│   │   ├── keyset_handle_builder_entry.h
│   │   ├── keyset_handle_builder_entry_test.cc
│   │   ├── keyset_wrapper.h
│   │   ├── keyset_wrapper_impl.h
│   │   ├── keyset_wrapper_impl_test.cc
│   │   ├── keyset_wrapper_store.h
│   │   ├── keyset_wrapper_store_test.cc
│   │   ├── legacy_proto_key.cc
│   │   ├── legacy_proto_key.h
│   │   ├── legacy_proto_key_test.cc
│   │   ├── legacy_proto_parameters.cc
│   │   ├── legacy_proto_parameters.h
│   │   ├── legacy_proto_parameters_test.cc
│   │   ├── md_util.cc
│   │   ├── md_util.h
│   │   ├── md_util_test.cc
│   │   ├── monitoring_util.h
│   │   ├── monitoring_util_test.cc
│   │   ├── mutable_serialization_registry.cc
│   │   ├── mutable_serialization_registry.h
│   │   ├── mutable_serialization_registry_test.cc
│   │   ├── parameters_parser.h
│   │   ├── parameters_parser_test.cc
│   │   ├── parameters_serializer.h
│   │   ├── parameters_serializer_test.cc
│   │   ├── parser_index.h
│   │   ├── parser_index_test.cc
│   │   ├── proto_key_serialization.cc
│   │   ├── proto_key_serialization.h
│   │   ├── proto_key_serialization_test.cc
│   │   ├── proto_parameters_serialization.cc
│   │   ├── proto_parameters_serialization.h
│   │   ├── proto_parameters_serialization_test.cc
│   │   ├── registry_impl.cc
│   │   ├── registry_impl.h
│   │   ├── registry_impl_test.cc
│   │   ├── rsa_util.cc
│   │   ├── rsa_util.h
│   │   ├── rsa_util_test.cc
│   │   ├── safe_stringops.h
│   │   ├── safe_stringops_test.cc
│   │   ├── serialization.h
│   │   ├── serialization_registry.cc
│   │   ├── serialization_registry.h
│   │   ├── serialization_registry_test.cc
│   │   ├── serialization_test_util.h
│   │   ├── serialization_test_util_test.cc
│   │   ├── serializer_index.h
│   │   ├── serializer_index_test.cc
│   │   ├── ssl_unique_ptr.h
│   │   ├── ssl_util.h
│   │   ├── test_file_util.cc
│   │   ├── test_file_util.h
│   │   ├── test_file_util_bazel.cc
│   │   ├── test_file_util_cmake.cc
│   │   ├── test_random_access_stream.cc
│   │   ├── test_random_access_stream.h
│   │   ├── test_random_access_stream_test.cc
│   │   ├── util.cc
│   │   ├── util.h
│   │   └── util_test.cc
│   ├── json_keyset_reader.h
│   ├── json_keyset_writer.h
│   ├── jwt/
│   │   ├── BUILD.bazel
│   │   ├── CMakeLists.txt
│   │   ├── internal/
│   │   │   ├── BUILD.bazel
│   │   │   ├── CMakeLists.txt
│   │   │   ├── json_util.cc
│   │   │   ├── json_util.h
│   │   │   ├── json_util_test.cc
│   │   │   ├── jwt_ecdsa_sign_key_manager.cc
│   │   │   ├── jwt_ecdsa_sign_key_manager.h
│   │   │   ├── jwt_ecdsa_sign_verify_key_manager_test.cc
│   │   │   ├── jwt_ecdsa_verify_key_manager.cc
│   │   │   ├── jwt_ecdsa_verify_key_manager.h
│   │   │   ├── jwt_format.cc
│   │   │   ├── jwt_format.h
│   │   │   ├── jwt_format_test.cc
│   │   │   ├── jwt_hmac_key_manager.cc
│   │   │   ├── jwt_hmac_key_manager.h
│   │   │   ├── jwt_hmac_key_manager_test.cc
│   │   │   ├── jwt_mac_impl.cc
│   │   │   ├── jwt_mac_impl.h
│   │   │   ├── jwt_mac_impl_test.cc
│   │   │   ├── jwt_mac_internal.h
│   │   │   ├── jwt_mac_wrapper.cc
│   │   │   ├── jwt_mac_wrapper.h
│   │   │   ├── jwt_mac_wrapper_test.cc
│   │   │   ├── jwt_public_key_sign_impl.cc
│   │   │   ├── jwt_public_key_sign_impl.h
│   │   │   ├── jwt_public_key_sign_internal.h
│   │   │   ├── jwt_public_key_sign_verify_impl_test.cc
│   │   │   ├── jwt_public_key_sign_wrapper.cc
│   │   │   ├── jwt_public_key_sign_wrapper.h
│   │   │   ├── jwt_public_key_verify_impl.cc
│   │   │   ├── jwt_public_key_verify_impl.h
│   │   │   ├── jwt_public_key_verify_internal.h
│   │   │   ├── jwt_public_key_verify_wrapper.cc
│   │   │   ├── jwt_public_key_verify_wrapper.h
│   │   │   ├── jwt_public_key_wrappers_test.cc
│   │   │   ├── jwt_rsa_ssa_pkcs1_sign_key_manager.cc
│   │   │   ├── jwt_rsa_ssa_pkcs1_sign_key_manager.h
│   │   │   ├── jwt_rsa_ssa_pkcs1_sign_verify_key_manager_test.cc
│   │   │   ├── jwt_rsa_ssa_pkcs1_verify_key_manager.cc
│   │   │   ├── jwt_rsa_ssa_pkcs1_verify_key_manager.h
│   │   │   ├── jwt_rsa_ssa_pss_sign_key_manager.cc
│   │   │   ├── jwt_rsa_ssa_pss_sign_key_manager.h
│   │   │   ├── jwt_rsa_ssa_pss_sign_verify_key_manager_test.cc
│   │   │   ├── jwt_rsa_ssa_pss_verify_key_manager.cc
│   │   │   ├── jwt_rsa_ssa_pss_verify_key_manager.h
│   │   │   ├── raw_jwt_ecdsa_sign_key_manager.cc
│   │   │   ├── raw_jwt_ecdsa_sign_key_manager.h
│   │   │   ├── raw_jwt_ecdsa_sign_key_manager_test.cc
│   │   │   ├── raw_jwt_ecdsa_verify_key_manager.cc
│   │   │   ├── raw_jwt_ecdsa_verify_key_manager.h
│   │   │   ├── raw_jwt_ecdsa_verify_key_manager_test.cc
│   │   │   ├── raw_jwt_hmac_key_manager.cc
│   │   │   ├── raw_jwt_hmac_key_manager.h
│   │   │   ├── raw_jwt_hmac_key_manager_test.cc
│   │   │   ├── raw_jwt_rsa_ssa_pkcs1_sign_key_manager.cc
│   │   │   ├── raw_jwt_rsa_ssa_pkcs1_sign_key_manager.h
│   │   │   ├── raw_jwt_rsa_ssa_pkcs1_sign_key_manager_test.cc
│   │   │   ├── raw_jwt_rsa_ssa_pkcs1_verify_key_manager.cc
│   │   │   ├── raw_jwt_rsa_ssa_pkcs1_verify_key_manager.h
│   │   │   ├── raw_jwt_rsa_ssa_pkcs1_verify_key_manager_test.cc
│   │   │   ├── raw_jwt_rsa_ssa_pss_sign_key_manager.cc
│   │   │   ├── raw_jwt_rsa_ssa_pss_sign_key_manager.h
│   │   │   ├── raw_jwt_rsa_ssa_pss_sign_key_manager_test.cc
│   │   │   ├── raw_jwt_rsa_ssa_pss_verify_key_manager.cc
│   │   │   ├── raw_jwt_rsa_ssa_pss_verify_key_manager.h
│   │   │   └── raw_jwt_rsa_ssa_pss_verify_key_manager_test.cc
│   │   ├── jwk_set_converter.cc
│   │   ├── jwk_set_converter.h
│   │   ├── jwk_set_converter_test.cc
│   │   ├── jwt_hmac_key.cc
│   │   ├── jwt_hmac_key.h
│   │   ├── jwt_hmac_key_test.cc
│   │   ├── jwt_hmac_parameters.cc
│   │   ├── jwt_hmac_parameters.h
│   │   ├── jwt_hmac_parameters_test.cc
│   │   ├── jwt_hmac_proto_serialization.cc
│   │   ├── jwt_hmac_proto_serialization.h
│   │   ├── jwt_hmac_proto_serialization_test.cc
│   │   ├── jwt_key_templates.cc
│   │   ├── jwt_key_templates.h
│   │   ├── jwt_key_templates_test.cc
│   │   ├── jwt_mac.h
│   │   ├── jwt_mac_config.cc
│   │   ├── jwt_mac_config.h
│   │   ├── jwt_mac_config_test.cc
│   │   ├── jwt_mac_key.h
│   │   ├── jwt_mac_parameters.h
│   │   ├── jwt_public_key_sign.h
│   │   ├── jwt_public_key_verify.h
│   │   ├── jwt_signature_config.cc
│   │   ├── jwt_signature_config.h
│   │   ├── jwt_signature_config_test.cc
│   │   ├── jwt_signature_parameters.h
│   │   ├── jwt_signature_private_key.h
│   │   ├── jwt_signature_public_key.h
│   │   ├── jwt_validator.cc
│   │   ├── jwt_validator.h
│   │   ├── jwt_validator_test.cc
│   │   ├── raw_jwt.cc
│   │   ├── raw_jwt.h
│   │   ├── raw_jwt_test.cc
│   │   ├── verified_jwt.cc
│   │   ├── verified_jwt.h
│   │   └── verified_jwt_test.cc
│   ├── kem/
│   │   └── internal/
│   │       ├── BUILD.bazel
│   │       ├── CMakeLists.txt
│   │       ├── raw_kem_decapsulate.h
│   │       └── raw_kem_encapsulate.h
│   ├── key.h
│   ├── key_access.h
│   ├── key_gen_configuration.h
│   ├── key_manager.h
│   ├── key_status.h
│   ├── keyderivation/
│   │   ├── BUILD.bazel
│   │   ├── CMakeLists.txt
│   │   ├── internal/
│   │   │   ├── BUILD.bazel
│   │   │   ├── CMakeLists.txt
│   │   │   ├── config_prf_for_deriver.h
│   │   │   ├── config_prf_for_deriver_test.cc
│   │   │   ├── key_derivers.cc
│   │   │   ├── key_derivers.h
│   │   │   ├── key_derivers_test.cc
│   │   │   ├── prf_based_deriver.cc
│   │   │   ├── prf_based_deriver.h
│   │   │   ├── prf_based_deriver_key_manager.h
│   │   │   ├── prf_based_deriver_key_manager_test.cc
│   │   │   └── prf_based_deriver_test.cc
│   │   ├── key_derivation_config.cc
│   │   ├── key_derivation_config.h
│   │   ├── key_derivation_config_test.cc
│   │   ├── key_derivation_key_templates.cc
│   │   ├── key_derivation_key_templates.h
│   │   ├── key_derivation_key_templates_test.cc
│   │   ├── keyset_deriver.h
│   │   ├── keyset_deriver_test.cc
│   │   ├── keyset_deriver_wrapper.cc
│   │   ├── keyset_deriver_wrapper.h
│   │   ├── keyset_deriver_wrapper_test.cc
│   │   └── subtle/
│   │       ├── BUILD.bazel
│   │       └── CMakeLists.txt
│   ├── keyset_handle.h
│   ├── keyset_handle_builder.h
│   ├── keyset_manager.h
│   ├── keyset_reader.h
│   ├── keyset_writer.h
│   ├── kms_client.h
│   ├── kms_clients.h
│   ├── mac/
│   │   ├── BUILD.bazel
│   │   ├── CMakeLists.txt
│   │   ├── aes_cmac_key.cc
│   │   ├── aes_cmac_key.h
│   │   ├── aes_cmac_key_manager.h
│   │   ├── aes_cmac_key_manager_test.cc
│   │   ├── aes_cmac_key_test.cc
│   │   ├── aes_cmac_parameters.cc
│   │   ├── aes_cmac_parameters.h
│   │   ├── aes_cmac_parameters_test.cc
│   │   ├── aes_cmac_proto_serialization.cc
│   │   ├── aes_cmac_proto_serialization.h
│   │   ├── aes_cmac_proto_serialization_test.cc
│   │   ├── config_v0.cc
│   │   ├── config_v0.h
│   │   ├── config_v0_test.cc
│   │   ├── failing_mac.cc
│   │   ├── failing_mac.h
│   │   ├── failing_mac_test.cc
│   │   ├── hmac_key.cc
│   │   ├── hmac_key.h
│   │   ├── hmac_key_manager.cc
│   │   ├── hmac_key_manager.h
│   │   ├── hmac_key_manager_test.cc
│   │   ├── hmac_key_test.cc
│   │   ├── hmac_parameters.cc
│   │   ├── hmac_parameters.h
│   │   ├── hmac_parameters_test.cc
│   │   ├── hmac_proto_serialization.cc
│   │   ├── hmac_proto_serialization.h
│   │   ├── hmac_proto_serialization_test.cc
│   │   ├── internal/
│   │   │   ├── BUILD.bazel
│   │   │   ├── CMakeLists.txt
│   │   │   ├── chunked_mac_impl.cc
│   │   │   ├── chunked_mac_impl.h
│   │   │   ├── chunked_mac_impl_test.cc
│   │   │   ├── chunked_mac_test.cc
│   │   │   ├── chunked_mac_wrapper.cc
│   │   │   ├── chunked_mac_wrapper.h
│   │   │   ├── chunked_mac_wrapper_test.cc
│   │   │   ├── config_v0.cc
│   │   │   ├── config_v0.h
│   │   │   ├── config_v0_test.cc
│   │   │   ├── key_gen_config_v0.cc
│   │   │   └── key_gen_config_v0.h
│   │   ├── key_gen_config_v0.cc
│   │   ├── key_gen_config_v0.h
│   │   ├── mac_config.cc
│   │   ├── mac_config.h
│   │   ├── mac_config_test.cc
│   │   ├── mac_factory.cc
│   │   ├── mac_factory.h
│   │   ├── mac_factory_test.cc
│   │   ├── mac_key.h
│   │   ├── mac_key_templates.cc
│   │   ├── mac_key_templates.h
│   │   ├── mac_key_templates_test.cc
│   │   ├── mac_parameters.h
│   │   ├── mac_wrapper.cc
│   │   ├── mac_wrapper.h
│   │   ├── mac_wrapper_test.cc
│   │   └── subtle/
│   │       ├── BUILD.bazel
│   │       └── CMakeLists.txt
│   ├── mac.h
│   ├── mac_config.h
│   ├── mac_factory.h
│   ├── mac_key_templates.h
│   ├── monitoring/
│   │   ├── BUILD.bazel
│   │   ├── CMakeLists.txt
│   │   ├── monitoring.h
│   │   └── monitoring_client_mocks.h
│   ├── output_stream.h
│   ├── output_stream_with_result.h
│   ├── parameters.h
│   ├── partial_key_access.h
│   ├── partial_key_access_token.h
│   ├── prf/
│   │   ├── BUILD.bazel
│   │   ├── CMakeLists.txt
│   │   ├── aes_cmac_prf_key_manager.h
│   │   ├── aes_cmac_prf_key_manager_test.cc
│   │   ├── config_v0.cc
│   │   ├── config_v0.h
│   │   ├── config_v0_test.cc
│   │   ├── failing_prfset.cc
│   │   ├── failing_prfset.h
│   │   ├── failing_prfset_test.cc
│   │   ├── hkdf_prf_key_manager.h
│   │   ├── hkdf_prf_key_manager_test.cc
│   │   ├── hmac_prf_key_manager.cc
│   │   ├── hmac_prf_key_manager.h
│   │   ├── hmac_prf_key_manager_test.cc
│   │   ├── internal/
│   │   │   ├── BUILD.bazel
│   │   │   ├── CMakeLists.txt
│   │   │   ├── config_v0.cc
│   │   │   ├── config_v0.h
│   │   │   ├── config_v0_test.cc
│   │   │   ├── key_gen_config_v0.cc
│   │   │   └── key_gen_config_v0.h
│   │   ├── key_gen_config_v0.cc
│   │   ├── key_gen_config_v0.h
│   │   ├── prf_config.cc
│   │   ├── prf_config.h
│   │   ├── prf_config_test.cc
│   │   ├── prf_key_templates.cc
│   │   ├── prf_key_templates.h
│   │   ├── prf_key_templates_test.cc
│   │   ├── prf_set.cc
│   │   ├── prf_set.h
│   │   ├── prf_set_test.cc
│   │   ├── prf_set_wrapper.cc
│   │   ├── prf_set_wrapper.h
│   │   ├── prf_set_wrapper_test.cc
│   │   └── subtle/
│   │       ├── BUILD.bazel
│   │       └── CMakeLists.txt
│   ├── primitive_set.h
│   ├── primitive_wrapper.h
│   ├── private_key.h
│   ├── proto/
│   │   ├── BUILD.bazel
│   │   ├── aes_cmac.proto
│   │   ├── aes_cmac_prf.proto
│   │   ├── aes_ctr.proto
│   │   ├── aes_ctr_hmac_aead.proto
│   │   ├── aes_ctr_hmac_streaming.proto
│   │   ├── aes_eax.proto
│   │   ├── aes_gcm.proto
│   │   ├── aes_gcm_hkdf_streaming.proto
│   │   ├── aes_gcm_siv.proto
│   │   ├── aes_siv.proto
│   │   ├── chacha20_poly1305.proto
│   │   ├── common.proto
│   │   ├── config.proto
│   │   ├── ecdsa.proto
│   │   ├── ecies_aead_hkdf.proto
│   │   ├── ed25519.proto
│   │   ├── empty.proto
│   │   ├── experimental/
│   │   │   └── pqcrypto/
│   │   │       ├── BUILD.bazel
│   │   │       ├── cecpq2_aead_hkdf.proto
│   │   │       ├── dilithium.proto
│   │   │       ├── falcon.proto
│   │   │       ├── slh_dsa.proto
│   │   │       └── sphincs.proto
│   │   ├── hkdf_prf.proto
│   │   ├── hmac.proto
│   │   ├── hmac_prf.proto
│   │   ├── hpke.proto
│   │   ├── jwt_ecdsa.proto
│   │   ├── jwt_hmac.proto
│   │   ├── jwt_rsa_ssa_pkcs1.proto
│   │   ├── jwt_rsa_ssa_pss.proto
│   │   ├── kms_aead.proto
│   │   ├── kms_envelope.proto
│   │   ├── prf_based_deriver.proto
│   │   ├── rsa_ssa_pkcs1.proto
│   │   ├── rsa_ssa_pss.proto
│   │   ├── test_proto.proto
│   │   ├── tink.proto
│   │   └── xchacha20_poly1305.proto
│   ├── proto_keyset_format.cc
│   ├── proto_keyset_format.h
│   ├── proto_keyset_format_test.cc
│   ├── public_key_sign.h
│   ├── public_key_sign_factory.h
│   ├── public_key_verify.h
│   ├── public_key_verify_factory.h
│   ├── random_access_stream.h
│   ├── registry.h
│   ├── restricted_big_integer.h
│   ├── restricted_data.h
│   ├── secret_key_access.h
│   ├── secret_key_access_token.h
│   ├── signature/
│   │   ├── BUILD.bazel
│   │   ├── CMakeLists.txt
│   │   ├── config_v0.cc
│   │   ├── config_v0.h
│   │   ├── config_v0_test.cc
│   │   ├── ecdsa_parameters.cc
│   │   ├── ecdsa_parameters.h
│   │   ├── ecdsa_parameters_test.cc
│   │   ├── ecdsa_private_key.cc
│   │   ├── ecdsa_private_key.h
│   │   ├── ecdsa_private_key_test.cc
│   │   ├── ecdsa_proto_serialization.cc
│   │   ├── ecdsa_proto_serialization.h
│   │   ├── ecdsa_proto_serialization_test.cc
│   │   ├── ecdsa_public_key.cc
│   │   ├── ecdsa_public_key.h
│   │   ├── ecdsa_public_key_test.cc
│   │   ├── ecdsa_sign_key_manager.cc
│   │   ├── ecdsa_sign_key_manager.h
│   │   ├── ecdsa_sign_key_manager_test.cc
│   │   ├── ecdsa_verify_key_manager.cc
│   │   ├── ecdsa_verify_key_manager.h
│   │   ├── ecdsa_verify_key_manager_test.cc
│   │   ├── ed25519_parameters.cc
│   │   ├── ed25519_parameters.h
│   │   ├── ed25519_parameters_test.cc
│   │   ├── ed25519_private_key.cc
│   │   ├── ed25519_private_key.h
│   │   ├── ed25519_private_key_test.cc
│   │   ├── ed25519_proto_serialization.cc
│   │   ├── ed25519_proto_serialization.h
│   │   ├── ed25519_proto_serialization_test.cc
│   │   ├── ed25519_public_key.cc
│   │   ├── ed25519_public_key.h
│   │   ├── ed25519_public_key_test.cc
│   │   ├── ed25519_sign_key_manager.cc
│   │   ├── ed25519_sign_key_manager.h
│   │   ├── ed25519_sign_key_manager_test.cc
│   │   ├── ed25519_verify_key_manager.cc
│   │   ├── ed25519_verify_key_manager.h
│   │   ├── ed25519_verify_key_manager_test.cc
│   │   ├── failing_signature.cc
│   │   ├── failing_signature.h
│   │   ├── failing_signature_test.cc
│   │   ├── internal/
│   │   │   ├── BUILD.bazel
│   │   │   ├── CMakeLists.txt
│   │   │   ├── config_fips_140_2.cc
│   │   │   ├── config_fips_140_2.h
│   │   │   ├── config_fips_140_2_test.cc
│   │   │   ├── config_v0.cc
│   │   │   ├── config_v0.h
│   │   │   ├── config_v0_test.cc
│   │   │   ├── ecdsa_raw_sign_boringssl.cc
│   │   │   ├── ecdsa_raw_sign_boringssl.h
│   │   │   ├── ecdsa_raw_sign_boringssl_test.cc
│   │   │   ├── key_gen_config_v0.cc
│   │   │   └── key_gen_config_v0.h
│   │   ├── key_gen_config_v0.cc
│   │   ├── key_gen_config_v0.h
│   │   ├── public_key_sign_factory.cc
│   │   ├── public_key_sign_factory.h
│   │   ├── public_key_sign_factory_test.cc
│   │   ├── public_key_sign_wrapper.cc
│   │   ├── public_key_sign_wrapper.h
│   │   ├── public_key_sign_wrapper_test.cc
│   │   ├── public_key_verify_factory.cc
│   │   ├── public_key_verify_factory.h
│   │   ├── public_key_verify_factory_test.cc
│   │   ├── public_key_verify_wrapper.cc
│   │   ├── public_key_verify_wrapper.h
│   │   ├── public_key_verify_wrapper_test.cc
│   │   ├── rsa_ssa_pkcs1_parameters.cc
│   │   ├── rsa_ssa_pkcs1_parameters.h
│   │   ├── rsa_ssa_pkcs1_parameters_test.cc
│   │   ├── rsa_ssa_pkcs1_private_key.cc
│   │   ├── rsa_ssa_pkcs1_private_key.h
│   │   ├── rsa_ssa_pkcs1_private_key_test.cc
│   │   ├── rsa_ssa_pkcs1_proto_serialization.cc
│   │   ├── rsa_ssa_pkcs1_proto_serialization.h
│   │   ├── rsa_ssa_pkcs1_proto_serialization_test.cc
│   │   ├── rsa_ssa_pkcs1_public_key.cc
│   │   ├── rsa_ssa_pkcs1_public_key.h
│   │   ├── rsa_ssa_pkcs1_public_key_test.cc
│   │   ├── rsa_ssa_pkcs1_sign_key_manager.cc
│   │   ├── rsa_ssa_pkcs1_sign_key_manager.h
│   │   ├── rsa_ssa_pkcs1_sign_key_manager_test.cc
│   │   ├── rsa_ssa_pkcs1_verify_key_manager.cc
│   │   ├── rsa_ssa_pkcs1_verify_key_manager.h
│   │   ├── rsa_ssa_pkcs1_verify_key_manager_test.cc
│   │   ├── rsa_ssa_pss_parameters.cc
│   │   ├── rsa_ssa_pss_parameters.h
│   │   ├── rsa_ssa_pss_parameters_test.cc
│   │   ├── rsa_ssa_pss_private_key.cc
│   │   ├── rsa_ssa_pss_private_key.h
│   │   ├── rsa_ssa_pss_private_key_test.cc
│   │   ├── rsa_ssa_pss_proto_serialization.cc
│   │   ├── rsa_ssa_pss_proto_serialization.h
│   │   ├── rsa_ssa_pss_proto_serialization_test.cc
│   │   ├── rsa_ssa_pss_public_key.cc
│   │   ├── rsa_ssa_pss_public_key.h
│   │   ├── rsa_ssa_pss_public_key_test.cc
│   │   ├── rsa_ssa_pss_sign_key_manager.cc
│   │   ├── rsa_ssa_pss_sign_key_manager.h
│   │   ├── rsa_ssa_pss_sign_key_manager_test.cc
│   │   ├── rsa_ssa_pss_verify_key_manager.cc
│   │   ├── rsa_ssa_pss_verify_key_manager.h
│   │   ├── rsa_ssa_pss_verify_key_manager_test.cc
│   │   ├── sig_util.cc
│   │   ├── sig_util.h
│   │   ├── signature_config.cc
│   │   ├── signature_config.h
│   │   ├── signature_config_test.cc
│   │   ├── signature_key_templates.cc
│   │   ├── signature_key_templates.h
│   │   ├── signature_key_templates_test.cc
│   │   ├── signature_parameters.h
│   │   ├── signature_pem_keyset_reader.cc
│   │   ├── signature_pem_keyset_reader.h
│   │   ├── signature_pem_keyset_reader_test.cc
│   │   ├── signature_private_key.h
│   │   ├── signature_public_key.h
│   │   └── subtle/
│   │       ├── BUILD.bazel
│   │       └── CMakeLists.txt
│   ├── signature_config.h
│   ├── signature_key_templates.h
│   ├── streaming_aead.h
│   ├── streaming_aead_config.h
│   ├── streaming_aead_key_templates.h
│   ├── streaming_mac.h
│   ├── streamingaead/
│   │   ├── BUILD.bazel
│   │   ├── CMakeLists.txt
│   │   ├── aes_ctr_hmac_streaming_key_manager.cc
│   │   ├── aes_ctr_hmac_streaming_key_manager.h
│   │   ├── aes_ctr_hmac_streaming_key_manager_test.cc
│   │   ├── aes_gcm_hkdf_streaming_key_manager.cc
│   │   ├── aes_gcm_hkdf_streaming_key_manager.h
│   │   ├── aes_gcm_hkdf_streaming_key_manager_test.cc
│   │   ├── buffered_input_stream.cc
│   │   ├── buffered_input_stream.h
│   │   ├── buffered_input_stream_test.cc
│   │   ├── config_v0.cc
│   │   ├── config_v0.h
│   │   ├── config_v0_test.cc
│   │   ├── decrypting_input_stream.cc
│   │   ├── decrypting_input_stream.h
│   │   ├── decrypting_input_stream_test.cc
│   │   ├── decrypting_random_access_stream.cc
│   │   ├── decrypting_random_access_stream.h
│   │   ├── decrypting_random_access_stream_test.cc
│   │   ├── internal/
│   │   │   ├── BUILD.bazel
│   │   │   ├── CMakeLists.txt
│   │   │   ├── config_v0.cc
│   │   │   ├── config_v0.h
│   │   │   ├── config_v0_test.cc
│   │   │   ├── key_gen_config_v0.cc
│   │   │   └── key_gen_config_v0.h
│   │   ├── key_gen_config_v0.cc
│   │   ├── key_gen_config_v0.h
│   │   ├── shared_input_stream.h
│   │   ├── shared_input_stream_test.cc
│   │   ├── shared_random_access_stream.h
│   │   ├── shared_random_access_stream_test.cc
│   │   ├── streaming_aead_config.cc
│   │   ├── streaming_aead_config.h
│   │   ├── streaming_aead_config_test.cc
│   │   ├── streaming_aead_key_templates.cc
│   │   ├── streaming_aead_key_templates.h
│   │   ├── streaming_aead_key_templates_test.cc
│   │   ├── streaming_aead_wrapper.cc
│   │   ├── streaming_aead_wrapper.h
│   │   ├── streaming_aead_wrapper_test.cc
│   │   └── subtle/
│   │       ├── BUILD.bazel
│   │       └── CMakeLists.txt
│   ├── subtle/
│   │   ├── BUILD.bazel
│   │   ├── CMakeLists.txt
│   │   ├── aead_test_util.cc
│   │   ├── aead_test_util.h
│   │   ├── aead_test_util_test.cc
│   │   ├── aes_cmac_boringssl.cc
│   │   ├── aes_cmac_boringssl.h
│   │   ├── aes_cmac_boringssl_test.cc
│   │   ├── aes_ctr_boringssl.cc
│   │   ├── aes_ctr_boringssl.h
│   │   ├── aes_ctr_boringssl_test.cc
│   │   ├── aes_ctr_hmac_streaming.cc
│   │   ├── aes_ctr_hmac_streaming.h
│   │   ├── aes_ctr_hmac_streaming_test.cc
│   │   ├── aes_eax_boringssl.cc
│   │   ├── aes_eax_boringssl.h
│   │   ├── aes_eax_boringssl_test.cc
│   │   ├── aes_gcm_boringssl.cc
│   │   ├── aes_gcm_boringssl.h
│   │   ├── aes_gcm_boringssl_test.cc
│   │   ├── aes_gcm_hkdf_stream_segment_decrypter.cc
│   │   ├── aes_gcm_hkdf_stream_segment_decrypter.h
│   │   ├── aes_gcm_hkdf_stream_segment_decrypter_test.cc
│   │   ├── aes_gcm_hkdf_stream_segment_encrypter.cc
│   │   ├── aes_gcm_hkdf_stream_segment_encrypter.h
│   │   ├── aes_gcm_hkdf_stream_segment_encrypter_test.cc
│   │   ├── aes_gcm_hkdf_streaming.cc
│   │   ├── aes_gcm_hkdf_streaming.h
│   │   ├── aes_gcm_hkdf_streaming_test.cc
│   │   ├── aes_gcm_siv_boringssl.cc
│   │   ├── aes_gcm_siv_boringssl.h
│   │   ├── aes_gcm_siv_boringssl_test.cc
│   │   ├── aes_siv_boringssl.cc
│   │   ├── aes_siv_boringssl.h
│   │   ├── aes_siv_boringssl_test.cc
│   │   ├── common_enums.cc
│   │   ├── common_enums.h
│   │   ├── common_enums_test.cc
│   │   ├── decrypting_random_access_stream.cc
│   │   ├── decrypting_random_access_stream.h
│   │   ├── decrypting_random_access_stream_test.cc
│   │   ├── ec_util.h
│   │   ├── ecdsa_sign_boringssl.cc
│   │   ├── ecdsa_sign_boringssl.h
│   │   ├── ecdsa_sign_boringssl_test.cc
│   │   ├── ecdsa_verify_boringssl.cc
│   │   ├── ecdsa_verify_boringssl.h
│   │   ├── ecdsa_verify_boringssl_test.cc
│   │   ├── ecies_hkdf_recipient_kem_boringssl.cc
│   │   ├── ecies_hkdf_recipient_kem_boringssl.h
│   │   ├── ecies_hkdf_recipient_kem_boringssl_test.cc
│   │   ├── ecies_hkdf_sender_kem_boringssl.cc
│   │   ├── ecies_hkdf_sender_kem_boringssl.h
│   │   ├── ecies_hkdf_sender_kem_boringssl_test.cc
│   │   ├── ed25519_sign_boringssl.cc
│   │   ├── ed25519_sign_boringssl.h
│   │   ├── ed25519_sign_boringssl_test.cc
│   │   ├── ed25519_verify_boringssl.cc
│   │   ├── ed25519_verify_boringssl.h
│   │   ├── ed25519_verify_boringssl_test.cc
│   │   ├── encrypt_then_authenticate.cc
│   │   ├── encrypt_then_authenticate.h
│   │   ├── encrypt_then_authenticate_test.cc
│   │   ├── hkdf.cc
│   │   ├── hkdf.h
│   │   ├── hkdf_test.cc
│   │   ├── hmac_boringssl.cc
│   │   ├── hmac_boringssl.h
│   │   ├── hmac_boringssl_test.cc
│   │   ├── hybrid_test_util.cc
│   │   ├── hybrid_test_util.h
│   │   ├── hybrid_test_util_test.cc
│   │   ├── ind_cpa_cipher.h
│   │   ├── mac/
│   │   │   ├── BUILD.bazel
│   │   │   ├── CMakeLists.txt
│   │   │   └── stateful_mac.h
│   │   ├── nonce_based_streaming_aead.cc
│   │   ├── nonce_based_streaming_aead.h
│   │   ├── pem_parser_boringssl.cc
│   │   ├── pem_parser_boringssl.h
│   │   ├── pem_parser_boringssl_test.cc
│   │   ├── prf/
│   │   │   ├── BUILD.bazel
│   │   │   ├── CMakeLists.txt
│   │   │   ├── hkdf_streaming_prf.cc
│   │   │   ├── hkdf_streaming_prf.h
│   │   │   ├── hkdf_streaming_prf_test.cc
│   │   │   ├── prf_set_util.cc
│   │   │   ├── prf_set_util.h
│   │   │   ├── prf_set_util_test.cc
│   │   │   ├── streaming_prf.h
│   │   │   ├── streaming_prf_wrapper.cc
│   │   │   ├── streaming_prf_wrapper.h
│   │   │   └── streaming_prf_wrapper_test.cc
│   │   ├── random.cc
│   │   ├── random.h
│   │   ├── random_test.cc
│   │   ├── rsa_ssa_pkcs1_sign_boringssl.cc
│   │   ├── rsa_ssa_pkcs1_sign_boringssl.h
│   │   ├── rsa_ssa_pkcs1_sign_boringssl_test.cc
│   │   ├── rsa_ssa_pkcs1_verify_boringssl.cc
│   │   ├── rsa_ssa_pkcs1_verify_boringssl.h
│   │   ├── rsa_ssa_pkcs1_verify_boringssl_test.cc
│   │   ├── rsa_ssa_pss_sign_boringssl.cc
│   │   ├── rsa_ssa_pss_sign_boringssl.h
│   │   ├── rsa_ssa_pss_sign_boringssl_test.cc
│   │   ├── rsa_ssa_pss_verify_boringssl.cc
│   │   ├── rsa_ssa_pss_verify_boringssl.h
│   │   ├── rsa_ssa_pss_verify_boringssl_test.cc
│   │   ├── stateful_cmac_boringssl.cc
│   │   ├── stateful_cmac_boringssl.h
│   │   ├── stateful_cmac_boringssl_test.cc
│   │   ├── stateful_hmac_boringssl.cc
│   │   ├── stateful_hmac_boringssl.h
│   │   ├── stateful_hmac_boringssl_test.cc
│   │   ├── stream_segment_decrypter.h
│   │   ├── stream_segment_encrypter.h
│   │   ├── streaming_aead_decrypting_stream.cc
│   │   ├── streaming_aead_decrypting_stream.h
│   │   ├── streaming_aead_decrypting_stream_test.cc
│   │   ├── streaming_aead_encrypting_stream.cc
│   │   ├── streaming_aead_encrypting_stream.h
│   │   ├── streaming_aead_encrypting_stream_test.cc
│   │   ├── streaming_aead_test_util.cc
│   │   ├── streaming_aead_test_util.h
│   │   ├── streaming_aead_test_util_test.cc
│   │   ├── streaming_mac_impl.cc
│   │   ├── streaming_mac_impl.h
│   │   ├── streaming_mac_impl_test.cc
│   │   ├── subtle_util.cc
│   │   ├── subtle_util.h
│   │   ├── subtle_util_boringssl.h
│   │   ├── subtle_util_test.cc
│   │   ├── test_util.cc
│   │   ├── test_util.h
│   │   ├── wycheproof_util.cc
│   │   ├── wycheproof_util.h
│   │   ├── xchacha20_poly1305_boringssl.cc
│   │   ├── xchacha20_poly1305_boringssl.h
│   │   └── xchacha20_poly1305_boringssl_test.cc
│   ├── template_rule.bzl
│   ├── testvectors/
│   │   └── BUILD.bazel
│   ├── third_party/
│   │   ├── BUILD.bazel
│   │   ├── boringssl_fips/
│   │   │   ├── BUILD.bazel
│   │   │   ├── README.md
│   │   │   ├── WORKSPACE
│   │   │   └── boringssl_fips.sh
│   │   └── rapidjson.BUILD.bazel
│   ├── tink_cc_deps.bzl
│   ├── tink_cc_deps_init.bzl
│   ├── tink_config.h
│   ├── tink_version.bzl
│   ├── util/
│   │   ├── BUILD.bazel
│   │   ├── CMakeLists.txt
│   │   ├── buffer.cc
│   │   ├── buffer.h
│   │   ├── buffer_test.cc
│   │   ├── constants.cc
│   │   ├── constants.h
│   │   ├── enums.cc
│   │   ├── enums.h
│   │   ├── enums_test.cc
│   │   ├── errors.h
│   │   ├── errors_test.cc
│   │   ├── fake_kms_client.cc
│   │   ├── fake_kms_client.h
│   │   ├── fake_kms_client_test.cc
│   │   ├── file_input_stream.cc
│   │   ├── file_input_stream.h
│   │   ├── file_input_stream_test.cc
│   │   ├── file_output_stream.cc
│   │   ├── file_output_stream.h
│   │   ├── file_output_stream_test.cc
│   │   ├── file_random_access_stream.cc
│   │   ├── file_random_access_stream.h
│   │   ├── file_random_access_stream_test.cc
│   │   ├── input_stream_util.cc
│   │   ├── input_stream_util.h
│   │   ├── input_stream_util_test.cc
│   │   ├── istream_input_stream.cc
│   │   ├── istream_input_stream.h
│   │   ├── istream_input_stream_test.cc
│   │   ├── keyset_util.cc
│   │   ├── keyset_util.h
│   │   ├── ostream_output_stream.cc
│   │   ├── ostream_output_stream.h
│   │   ├── ostream_output_stream_test.cc
│   │   ├── protobuf_helper.h
│   │   ├── secret_data.h
│   │   ├── secret_data_internal.h
│   │   ├── secret_data_test.cc
│   │   ├── secret_proto.h
│   │   ├── secret_proto_test.cc
│   │   ├── status.h
│   │   ├── statusor.h
│   │   ├── test_keyset_handle.cc
│   │   ├── test_keyset_handle.h
│   │   ├── test_matchers.h
│   │   ├── test_util.cc
│   │   ├── test_util.h
│   │   ├── test_util_test.cc
│   │   ├── validation.cc
│   │   ├── validation.h
│   │   └── validation_test.cc
│   ├── version.h.templ
│   └── version_script.lds
├── cmake/
│   ├── HttpArchive.cmake
│   ├── TinkBuildRules.cmake
│   ├── TinkUtil.cmake
│   └── TinkWorkspace.cmake
├── docs/
│   ├── CMAKE-HOWTO.md
│   ├── CONTRIBUTING.md
│   ├── CPP-HOWTO.md
│   ├── FIPS.md
│   ├── GOLANG-HOWTO.md
│   ├── JAVA-HOWTO.md
│   ├── JWT-HOWTO.md
│   ├── KEY-MANAGEMENT.md
│   ├── KNOWN-ISSUES.md
│   ├── OBJC-HOWTO.md
│   ├── PRIMITIVES.md
│   ├── PYTHON-HOWTO.md
│   ├── SECURITY-USABILITY.md
│   ├── SECURITY.md
│   ├── TINKEY.md
│   └── WIRE-FORMAT.md
├── go/
│   ├── .bazelversion
│   ├── BUILD.bazel
│   ├── README.md
│   ├── WORKSPACE
│   ├── aead/
│   │   ├── BUILD.bazel
│   │   ├── aead.go
│   │   ├── aead_benchmark_test.go
│   │   ├── aead_factory.go
│   │   ├── aead_factory_test.go
│   │   ├── aead_init_test.go
│   │   ├── aead_key_templates.go
│   │   ├── aead_key_templates_test.go
│   │   ├── aead_test.go
│   │   ├── aes_ctr_hmac_aead_key_manager.go
│   │   ├── aes_ctr_hmac_aead_key_manager_test.go
│   │   ├── aes_gcm_key_manager.go
│   │   ├── aes_gcm_key_manager_test.go
│   │   ├── aes_gcm_siv_key_manager.go
│   │   ├── aes_gcm_siv_key_manager_test.go
│   │   ├── chacha20poly1305_key_manager.go
│   │   ├── chacha20poly1305_key_manager_test.go
│   │   ├── internal/
│   │   │   ├── BUILD.bazel
│   │   │   └── testing/
│   │   │       ├── BUILD.bazel
│   │   │       └── kmsaead/
│   │   │           ├── BUILD.bazel
│   │   │           ├── key_manager.go
│   │   │           └── key_manager_test.go
│   │   ├── kms_envelope_aead.go
│   │   ├── kms_envelope_aead_example_test.go
│   │   ├── kms_envelope_aead_key_manager.go
│   │   ├── kms_envelope_aead_key_manager_test.go
│   │   ├── kms_envelope_aead_test.go
│   │   ├── subtle/
│   │   │   ├── BUILD.bazel
│   │   │   ├── aes_ctr.go
│   │   │   ├── aes_ctr_test.go
│   │   │   ├── aes_gcm.go
│   │   │   ├── aes_gcm_siv.go
│   │   │   ├── aes_gcm_siv_test.go
│   │   │   ├── aes_gcm_test.go
│   │   │   ├── chacha20poly1305.go
│   │   │   ├── chacha20poly1305_test.go
│   │   │   ├── chacha20poly1305_vectors_test.go
│   │   │   ├── encrypt_then_authenticate.go
│   │   │   ├── encrypt_then_authenticate_test.go
│   │   │   ├── ind_cpa.go
│   │   │   ├── polyval.go
│   │   │   ├── polyval_test.go
│   │   │   ├── subtle.go
│   │   │   ├── subtle_test.go
│   │   │   ├── xchacha20poly1305.go
│   │   │   ├── xchacha20poly1305_test.go
│   │   │   └── xchacha20poly1305_vectors_test.go
│   │   ├── xchacha20poly1305_key_manager.go
│   │   └── xchacha20poly1305_key_manager_test.go
│   ├── core/
│   │   ├── cryptofmt/
│   │   │   ├── BUILD.bazel
│   │   │   ├── cryptofmt.go
│   │   │   └── cryptofmt_test.go
│   │   ├── primitiveset/
│   │   │   ├── BUILD.bazel
│   │   │   ├── primitiveset.go
│   │   │   └── primitiveset_test.go
│   │   └── registry/
│   │       ├── BUILD.bazel
│   │       ├── custom_key_manager_test.go
│   │       ├── key_manager.go
│   │       ├── kms_client.go
│   │       ├── private_key_manager.go
│   │       ├── registry.go
│   │       └── registry_test.go
│   ├── daead/
│   │   ├── BUILD.bazel
│   │   ├── aes_siv_key_manager.go
│   │   ├── aes_siv_key_manager_test.go
│   │   ├── daead.go
│   │   ├── daead_benchmark_test.go
│   │   ├── daead_factory.go
│   │   ├── daead_factory_test.go
│   │   ├── daead_init_test.go
│   │   ├── daead_key_templates.go
│   │   ├── daead_key_templates_test.go
│   │   ├── daead_test.go
│   │   └── subtle/
│   │       ├── BUILD.bazel
│   │       ├── aes_siv.go
│   │       └── aes_siv_test.go
│   ├── deps.bzl
│   ├── go.mod
│   ├── go.sum
│   ├── hybrid/
│   │   ├── BUILD.bazel
│   │   ├── ecies_aead_hkdf_dem_helper.go
│   │   ├── ecies_aead_hkdf_dem_helper_test.go
│   │   ├── ecies_aead_hkdf_hybrid_decrypt_test.go
│   │   ├── ecies_aead_hkdf_hybrid_encrypt_test.go
│   │   ├── ecies_aead_hkdf_private_key_manager.go
│   │   ├── ecies_aead_hkdf_private_key_manager_test.go
│   │   ├── ecies_aead_hkdf_public_key_manager.go
│   │   ├── ecies_aead_hkdf_public_key_manager_test.go
│   │   ├── ecies_aead_hkdf_test.go
│   │   ├── hpke_private_key_manager.go
│   │   ├── hpke_private_key_manager_test.go
│   │   ├── hpke_public_key_manager.go
│   │   ├── hpke_public_key_manager_test.go
│   │   ├── hybrid.go
│   │   ├── hybrid_benchmark_test.go
│   │   ├── hybrid_decrypt_factory.go
│   │   ├── hybrid_encrypt_factory.go
│   │   ├── hybrid_factory_test.go
│   │   ├── hybrid_key_templates.go
│   │   ├── hybrid_key_templates_test.go
│   │   ├── hybrid_test.go
│   │   ├── internal/
│   │   │   └── hpke/
│   │   │       ├── BUILD.bazel
│   │   │       ├── aead.go
│   │   │       ├── aes_gcm_aead.go
│   │   │       ├── aes_gcm_aead_test.go
│   │   │       ├── chacha20poly1305_aead.go
│   │   │       ├── chacha20poly1305_aead_test.go
│   │   │       ├── context.go
│   │   │       ├── context_test.go
│   │   │       ├── decrypt.go
│   │   │       ├── encrypt.go
│   │   │       ├── encrypt_decrypt_test.go
│   │   │       ├── hkdf_kdf.go
│   │   │       ├── hkdf_kdf_test.go
│   │   │       ├── hpke.go
│   │   │       ├── hpke_test.go
│   │   │       ├── kdf.go
│   │   │       ├── kem.go
│   │   │       ├── primitive_factory.go
│   │   │       ├── primitive_factory_test.go
│   │   │       ├── x25519_kem.go
│   │   │       └── x25519_kem_test.go
│   │   └── subtle/
│   │       ├── BUILD.bazel
│   │       ├── ecies_aead_hkdf_dem_helper.go
│   │       ├── ecies_aead_hkdf_hybrid_decrypt.go
│   │       ├── ecies_aead_hkdf_hybrid_encrypt.go
│   │       ├── ecies_hkdf_recipient_kem.go
│   │       ├── ecies_hkdf_sender_kem.go
│   │       ├── elliptic_curves.go
│   │       ├── elliptic_curves_test.go
│   │       ├── public_key.go
│   │       ├── public_key_test.go
│   │       ├── subtle.go
│   │       └── subtle_test.go
│   ├── insecurecleartextkeyset/
│   │   ├── BUILD.bazel
│   │   ├── example_test.go
│   │   ├── insecurecleartextkeyset.go
│   │   └── insecurecleartextkeyset_test.go
│   ├── integration/
│   │   ├── awskms/
│   │   │   ├── BUILD.bazel
│   │   │   ├── aws_kms_aead.go
│   │   │   ├── aws_kms_client.go
│   │   │   ├── aws_kms_client_test.go
│   │   │   ├── aws_kms_integration_test.go
│   │   │   └── internal/
│   │   │       └── fakeawskms/
│   │   │           ├── BUILD.bazel
│   │   │           ├── fakeawskms.go
│   │   │           └── fakeawskms_test.go
│   │   ├── gcpkms/
│   │   │   ├── BUILD.bazel
│   │   │   ├── gcp_kms_aead.go
│   │   │   ├── gcp_kms_aead_test.go
│   │   │   ├── gcp_kms_client.go
│   │   │   ├── gcp_kms_client_test.go
│   │   │   └── gcp_kms_integration_test.go
│   │   └── hcvault/
│   │       ├── BUILD.bazel
│   │       ├── hcvault_aead.go
│   │       ├── hcvault_aead_internal_test.go
│   │       ├── hcvault_aead_test.go
│   │       ├── hcvault_client.go
│   │       └── hcvault_client_test.go
│   ├── internal/
│   │   ├── BUILD.bazel
│   │   ├── aead/
│   │   │   ├── BUILD.bazel
│   │   │   ├── aead.go
│   │   │   ├── aead_test.go
│   │   │   ├── aes_gcm_insecure_iv.go
│   │   │   ├── aes_gcm_insecure_iv_test.go
│   │   │   ├── chacha20poly1305_insecure_nonce.go
│   │   │   ├── chacha20poly1305_insecure_nonce_test.go
│   │   │   └── chacha20poly1305_insecure_nonce_vectors_test.go
│   │   ├── internal.go
│   │   ├── internalapi/
│   │   │   ├── BUILD.bazel
│   │   │   └── token.go
│   │   ├── internalregistry/
│   │   │   ├── BUILD.bazel
│   │   │   ├── derivable_key_manager.go
│   │   │   ├── internal_registry.go
│   │   │   ├── internal_registry_test.go
│   │   │   ├── key_derivation.go
│   │   │   └── key_derivation_test.go
│   │   ├── monitoringutil/
│   │   │   ├── BUILD.bazel
│   │   │   ├── monitoring_util.go
│   │   │   └── monitoring_util_test.go
│   │   ├── registryconfig/
│   │   │   ├── BUILD.bazel
│   │   │   ├── registry_config.go
│   │   │   └── registry_config_test.go
│   │   ├── signature/
│   │   │   ├── BUILD.bazel
│   │   │   ├── rsa.go
│   │   │   ├── rsa_test.go
│   │   │   ├── rsassapkcs1_signer.go
│   │   │   ├── rsassapkcs1_signer_verifier_test.go
│   │   │   ├── rsassapkcs1_verifier.go
│   │   │   ├── rsassapss_signer.go
│   │   │   ├── rsassapss_signer_verifier_test.go
│   │   │   ├── rsassapss_verifier.go
│   │   │   └── signature.go
│   │   ├── testing/
│   │   │   └── stubkeymanager/
│   │   │       ├── BUILD.bazel
│   │   │       ├── stubkeymanager.go
│   │   │       └── stubkeymanager_test.go
│   │   └── tinkerror/
│   │       ├── BUILD.bazel
│   │       ├── doc.go
│   │       ├── tinkerror.go
│   │       ├── tinkerror_test.go
│   │       └── tinkerrortest/
│   │           ├── BUILD.bazel
│   │           ├── doc.go
│   │           └── tinkerrortest.go
│   ├── jwt/
│   │   ├── BUILD.bazel
│   │   ├── jwk_converter.go
│   │   ├── jwk_converter_test.go
│   │   ├── jwt.go
│   │   ├── jwt_ecdsa_signer_key_manager.go
│   │   ├── jwt_ecdsa_signer_key_manager_test.go
│   │   ├── jwt_ecdsa_verifier_key_manager.go
│   │   ├── jwt_ecdsa_verifier_key_manager_test.go
│   │   ├── jwt_encoding.go
│   │   ├── jwt_encoding_test.go
│   │   ├── jwt_hmac_key_manager.go
│   │   ├── jwt_hmac_key_manager_test.go
│   │   ├── jwt_key_templates.go
│   │   ├── jwt_key_templates_test.go
│   │   ├── jwt_mac.go
│   │   ├── jwt_mac_factory.go
│   │   ├── jwt_mac_factory_test.go
│   │   ├── jwt_mac_kid.go
│   │   ├── jwt_mac_kid_test.go
│   │   ├── jwt_rsa_ssa_pkcs1_signer_key_manager.go
│   │   ├── jwt_rsa_ssa_pkcs1_signer_key_manager_test.go
│   │   ├── jwt_rsa_ssa_pkcs1_verifier_key_manager.go
│   │   ├── jwt_rsa_ssa_pkcs1_verifier_key_manager_test.go
│   │   ├── jwt_rsa_ssa_pss_signer_key_manager.go
│   │   ├── jwt_rsa_ssa_pss_signer_key_manager_test.go
│   │   ├── jwt_rsa_ssa_pss_verify_key_manager.go
│   │   ├── jwt_rsa_ssa_pss_verify_key_manager_test.go
│   │   ├── jwt_signer.go
│   │   ├── jwt_signer_factory.go
│   │   ├── jwt_signer_kid.go
│   │   ├── jwt_signer_verifier_factory_test.go
│   │   ├── jwt_signer_verifier_kid_test.go
│   │   ├── jwt_test.go
│   │   ├── jwt_validator.go
│   │   ├── jwt_validator_test.go
│   │   ├── jwt_verifier.go
│   │   ├── jwt_verifier_factory.go
│   │   ├── jwt_verifier_kid.go
│   │   ├── raw_jwt.go
│   │   ├── raw_jwt_test.go
│   │   ├── verified_jwt.go
│   │   └── verified_jwt_test.go
│   ├── keyderivation/
│   │   ├── BUILD.bazel
│   │   ├── internal/
│   │   │   └── streamingprf/
│   │   │       ├── BUILD.bazel
│   │   │       ├── hkdf_streaming_prf.go
│   │   │       ├── hkdf_streaming_prf_key_manager.go
│   │   │       ├── hkdf_streaming_prf_key_manager_test.go
│   │   │       ├── hkdf_streaming_prf_test.go
│   │   │       ├── streaming_prf.go
│   │   │       ├── streaming_prf_factory.go
│   │   │       ├── streaming_prf_factory_test.go
│   │   │       └── streaming_prf_test.go
│   │   ├── keyderivation.go
│   │   ├── keyderivation_key_templates.go
│   │   ├── keyderivation_key_templates_test.go
│   │   ├── keyderivation_test.go
│   │   ├── keyset_deriver.go
│   │   ├── keyset_deriver_factory.go
│   │   ├── keyset_deriver_factory_test.go
│   │   ├── keyset_deriver_factory_x_test.go
│   │   ├── prf_based_deriver.go
│   │   ├── prf_based_deriver_key_manager.go
│   │   ├── prf_based_deriver_key_manager_test.go
│   │   └── prf_based_deriver_test.go
│   ├── keyset/
│   │   ├── BUILD.bazel
│   │   ├── binary_io.go
│   │   ├── binary_io_test.go
│   │   ├── handle.go
│   │   ├── handle_test.go
│   │   ├── json_io.go
│   │   ├── json_io_test.go
│   │   ├── keyset.go
│   │   ├── keyset_test.go
│   │   ├── manager.go
│   │   ├── manager_test.go
│   │   ├── mem_io.go
│   │   ├── mem_io_test.go
│   │   ├── option.go
│   │   ├── reader.go
│   │   ├── validation.go
│   │   ├── validation_test.go
│   │   └── writer.go
│   ├── kwp/
│   │   └── subtle/
│   │       ├── BUILD.bazel
│   │       ├── kwp.go
│   │       └── kwp_test.go
│   ├── mac/
│   │   ├── BUILD.bazel
│   │   ├── aes_cmac_key_manager.go
│   │   ├── aes_cmac_key_manager_test.go
│   │   ├── hmac_key_manager.go
│   │   ├── hmac_key_manager_test.go
│   │   ├── internal/
│   │   │   └── mactest/
│   │   │       ├── BUILD.bazel
│   │   │       ├── mactest.go
│   │   │       └── mactest_test.go
│   │   ├── mac.go
│   │   ├── mac_benchmark_test.go
│   │   ├── mac_factory.go
│   │   ├── mac_factory_test.go
│   │   ├── mac_init_test.go
│   │   ├── mac_key_templates.go
│   │   ├── mac_key_templates_test.go
│   │   ├── mac_test.go
│   │   └── subtle/
│   │       ├── BUILD.bazel
│   │       ├── cmac.go
│   │       ├── cmac_test.go
│   │       ├── hmac.go
│   │       └── hmac_test.go
│   ├── monitoring/
│   │   ├── BUILD.bazel
│   │   └── monitoring.go
│   ├── prf/
│   │   ├── BUILD.bazel
│   │   ├── aes_cmac_prf_key_manager.go
│   │   ├── aes_cmac_prf_key_manager_test.go
│   │   ├── hkdf_prf_key_manager.go
│   │   ├── hkdf_prf_key_manager_test.go
│   │   ├── hmac_prf_key_manager.go
│   │   ├── hmac_prf_key_manager_test.go
│   │   ├── prf_benchmark_test.go
│   │   ├── prf_key_templates.go
│   │   ├── prf_key_templates_test.go
│   │   ├── prf_set.go
│   │   ├── prf_set_factory.go
│   │   ├── prf_set_factory_test.go
│   │   ├── prf_test.go
│   │   └── subtle/
│   │       ├── BUILD.bazel
│   │       ├── aes_cmac.go
│   │       ├── aes_cmac_test.go
│   │       ├── hkdf.go
│   │       ├── hkdf_test.go
│   │       ├── hmac.go
│   │       ├── hmac_test.go
│   │       ├── subtle.go
│   │       └── subtle_test.go
│   ├── proto/
│   │   ├── aes_cmac_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── aes_cmac.pb.go
│   │   ├── aes_cmac_prf_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── aes_cmac_prf.pb.go
│   │   ├── aes_ctr_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── aes_ctr.pb.go
│   │   ├── aes_ctr_hmac_aead_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── aes_ctr_hmac_aead.pb.go
│   │   ├── aes_ctr_hmac_streaming_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── aes_ctr_hmac_streaming.pb.go
│   │   ├── aes_gcm_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── aes_gcm.pb.go
│   │   ├── aes_gcm_hkdf_streaming_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── aes_gcm_hkdf_streaming.pb.go
│   │   ├── aes_gcm_siv_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── aes_gcm_siv.pb.go
│   │   ├── aes_siv_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── aes_siv.pb.go
│   │   ├── chacha20_poly1305_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── chacha20_poly1305.pb.go
│   │   ├── common_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── common.pb.go
│   │   ├── ecdsa_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── ecdsa.pb.go
│   │   ├── ecies_aead_hkdf_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── ecies_aead_hkdf.pb.go
│   │   ├── ed25519_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── ed25519.pb.go
│   │   ├── hkdf_prf_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── hkdf_prf.pb.go
│   │   ├── hmac_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── hmac.pb.go
│   │   ├── hmac_prf_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── hmac_prf.pb.go
│   │   ├── hpke_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── hpke.pb.go
│   │   ├── jwt_ecdsa_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── jwt_ecdsa.pb.go
│   │   ├── jwt_hmac_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── jwt_hmac.pb.go
│   │   ├── jwt_rsa_ssa_pkcs1_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── jwt_rsa_ssa_pkcs1.pb.go
│   │   ├── jwt_rsa_ssa_pss_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── jwt_rsa_ssa_pss.pb.go
│   │   ├── kms_aead_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── kms_aead.pb.go
│   │   ├── kms_envelope_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── kms_envelope.pb.go
│   │   ├── prf_based_deriver_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── prf_based_deriver.pb.go
│   │   ├── rsa_ssa_pkcs1_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── rsa_ssa_pkcs1.pb.go
│   │   ├── rsa_ssa_pss_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── rsa_ssa_pss.pb.go
│   │   ├── tink_go_proto/
│   │   │   ├── BUILD.bazel
│   │   │   └── tink.pb.go
│   │   └── xchacha20_poly1305_go_proto/
│   │       ├── BUILD.bazel
│   │       └── xchacha20_poly1305.pb.go
│   ├── signature/
│   │   ├── BUILD.bazel
│   │   ├── ecdsa_signer_key_manager.go
│   │   ├── ecdsa_signer_key_manager_test.go
│   │   ├── ecdsa_verifier_key_manager.go
│   │   ├── ecdsa_verifier_key_manager_test.go
│   │   ├── ed25519_signer_key_manager.go
│   │   ├── ed25519_signer_key_manager_test.go
│   │   ├── ed25519_verifier_key_manager.go
│   │   ├── ed25519_verifier_key_manager_test.go
│   │   ├── proto.go
│   │   ├── rsa.go
│   │   ├── rsassapkcs1_signer_key_manager.go
│   │   ├── rsassapkcs1_signer_key_manager_test.go
│   │   ├── rsassapkcs1_verifier_key_manager.go
│   │   ├── rsassapkcs1_verifier_key_manager_test.go
│   │   ├── rsassapss_signer_key_manager.go
│   │   ├── rsassapss_signer_key_manager_test.go
│   │   ├── rsassapss_verifier_key_manager.go
│   │   ├── rsassapss_verifier_key_manager_test.go
│   │   ├── signature.go
│   │   ├── signature_benchmark_test.go
│   │   ├── signature_factory_test.go
│   │   ├── signature_init_test.go
│   │   ├── signature_key_templates.go
│   │   ├── signature_key_templates_test.go
│   │   ├── signature_test.go
│   │   ├── signer_factory.go
│   │   ├── subtle/
│   │   │   ├── BUILD.bazel
│   │   │   ├── ecdsa.go
│   │   │   ├── ecdsa_signer.go
│   │   │   ├── ecdsa_signer_verifier_test.go
│   │   │   ├── ecdsa_test.go
│   │   │   ├── ecdsa_verifier.go
│   │   │   ├── ed25519_signer.go
│   │   │   ├── ed25519_signer_verifier_test.go
│   │   │   ├── ed25519_verifier.go
│   │   │   ├── encoding.go
│   │   │   ├── subtle.go
│   │   │   └── subtle_test.go
│   │   └── verifier_factory.go
│   ├── streamingaead/
│   │   ├── BUILD.bazel
│   │   ├── aes_ctr_hmac_key_manager.go
│   │   ├── aes_ctr_hmac_key_manager_test.go
│   │   ├── aes_gcm_hkdf_key_manager.go
│   │   ├── aes_gcm_hkdf_key_manager_test.go
│   │   ├── decrypt_reader.go
│   │   ├── decrypt_reader_test.go
│   │   ├── streamingaead.go
│   │   ├── streamingaead_factory.go
│   │   ├── streamingaead_factory_test.go
│   │   ├── streamingaead_key_templates.go
│   │   ├── streamingaead_key_templates_test.go
│   │   ├── streamingaead_test.go
│   │   └── subtle/
│   │       ├── BUILD.bazel
│   │       ├── aes_ctr_hmac.go
│   │       ├── aes_ctr_hmac_test.go
│   │       ├── aes_gcm_hkdf.go
│   │       ├── aes_gcm_hkdf_test.go
│   │       ├── noncebased/
│   │       │   ├── BUILD.bazel
│   │       │   ├── noncebased.go
│   │       │   └── noncebased_test.go
│   │       ├── subtle.go
│   │       └── subtle_test.go
│   ├── subtle/
│   │   ├── BUILD.bazel
│   │   ├── hkdf.go
│   │   ├── hkdf_test.go
│   │   ├── random/
│   │   │   ├── BUILD.bazel
│   │   │   ├── random.go
│   │   │   └── random_test.go
│   │   ├── subtle.go
│   │   ├── subtle_test.go
│   │   ├── x25519.go
│   │   └── x25519_test.go
│   ├── testdata/
│   │   ├── BUILD.bazel
│   │   ├── aws/
│   │   │   ├── BUILD.bazel
│   │   │   ├── README.md
│   │   │   ├── access_keys_bad.csv
│   │   │   ├── credentials.cred
│   │   │   ├── credentials.csv
│   │   │   ├── credentials.ini
│   │   │   ├── credentials_bad.csv
│   │   │   ├── credentials_bad.ini
│   │   │   ├── key_arn.txt
│   │   │   └── key_arn_bad.txt
│   │   ├── gcp/
│   │   │   ├── BUILD.bazel
│   │   │   ├── README.md
│   │   │   ├── credential.json
│   │   │   ├── credential_bad.json
│   │   │   ├── key_name.txt
│   │   │   └── key_name_bad.txt
│   │   ├── keysets/
│   │   │   └── BUILD.bazel
│   │   └── testvectors/
│   │       ├── BUILD.bazel
│   │       └── hpke_boringssl.json
│   ├── testing/
│   │   ├── fakekms/
│   │   │   ├── BUILD.bazel
│   │   │   ├── fakekms.go
│   │   │   └── fakekms_test.go
│   │   └── fakemonitoring/
│   │       ├── BUILD.bazel
│   │       ├── fakemonitoring.go
│   │       └── fakemonitoring_test.go
│   ├── testkeyset/
│   │   ├── BUILD.bazel
│   │   ├── testkeyset.go
│   │   └── testkeyset_test.go
│   ├── testutil/
│   │   ├── BUILD.bazel
│   │   ├── constant.go
│   │   ├── hybrid/
│   │   │   ├── BUILD.bazel
│   │   │   ├── private_key.go
│   │   │   └── private_key_test.go
│   │   ├── testutil.go
│   │   ├── testutil_test.go
│   │   ├── wycheproofutil.go
│   │   └── wycheproofutil_test.go
│   ├── tink/
│   │   ├── BUILD.bazel
│   │   ├── aead.go
│   │   ├── deterministic_aead.go
│   │   ├── hybrid_decrypt.go
│   │   ├── hybrid_encrypt.go
│   │   ├── mac.go
│   │   ├── signer.go
│   │   ├── streamingaead.go
│   │   ├── tink.go
│   │   ├── verifier.go
│   │   └── version.go
│   └── tink_version.bzl
├── java_src/
│   ├── .bazelignore
│   ├── .bazelrc
│   ├── .bazelversion
│   ├── BUILD.bazel
│   ├── WORKSPACE
│   ├── examples/
│   │   ├── .bazelignore
│   │   ├── .bazelrc
│   │   ├── .bazelversion
│   │   ├── BUILD.bazel
│   │   ├── WORKSPACE
│   │   ├── aead/
│   │   │   ├── AeadExample.java
│   │   │   ├── BUILD.bazel
│   │   │   ├── README.md
│   │   │   ├── aead_example_test.sh
│   │   │   └── aead_test_keyset.json
│   │   ├── android/
│   │   │   └── helloworld/
│   │   │       ├── README.md
│   │   │       ├── app/
│   │   │       │   ├── build.gradle
│   │   │       │   ├── maven_local.gradle
│   │   │       │   ├── maven_snapshot.gradle
│   │   │       │   └── src/
│   │   │       │       └── main/
│   │   │       │           ├── AndroidManifest.xml
│   │   │       │           ├── java/
│   │   │       │           │   └── com/
│   │   │       │           │       └── helloworld/
│   │   │       │           │           ├── MainActivity.java
│   │   │       │           │           └── TinkApplication.java
│   │   │       │           └── res/
│   │   │       │               ├── layout/
│   │   │       │               │   └── activity_main.xml
│   │   │       │               └── values/
│   │   │       │                   ├── colors.xml
│   │   │       │                   ├── dimens.xml
│   │   │       │                   ├── strings.xml
│   │   │       │                   └── styles.xml
│   │   │       ├── build.gradle
│   │   │       ├── gradle/
│   │   │       │   └── wrapper/
│   │   │       │       ├── gradle-wrapper.jar
│   │   │       │       └── gradle-wrapper.properties
│   │   │       ├── gradle.properties
│   │   │       ├── gradlew
│   │   │       ├── gradlew.bat
│   │   │       └── settings.gradle
│   │   ├── cleartextkeyset/
│   │   │   ├── BUILD.bazel
│   │   │   ├── CleartextKeysetExample.java
│   │   │   ├── README.md
│   │   │   └── cleartext_keyset_example_test.sh
│   │   ├── deterministicaead/
│   │   │   ├── BUILD.bazel
│   │   │   ├── DeterministicAeadExample.java
│   │   │   ├── README.md
│   │   │   ├── deterministic_aead_test.sh
│   │   │   └── deterministic_aead_test_keyset.json
│   │   ├── encryptedkeyset/
│   │   │   ├── BUILD.bazel
│   │   │   ├── EncryptedKeysetExample.java
│   │   │   ├── README.md
│   │   │   └── encrypted_keyset_example_test.sh
│   │   ├── envelopeaead/
│   │   │   ├── BUILD.bazel
│   │   │   ├── EnvelopeAeadExample.java
│   │   │   ├── README.md
│   │   │   └── envelope_aead_example_test.sh
│   │   ├── gcs/
│   │   │   ├── BUILD.bazel
│   │   │   ├── GcsEnvelopeAeadExample.java
│   │   │   ├── README.md
│   │   │   └── gcs_envelope_aead_example_test.sh
│   │   ├── hybrid/
│   │   │   ├── BUILD.bazel
│   │   │   ├── HybridExample.java
│   │   │   ├── README.md
│   │   │   ├── hybrid_example_test.sh
│   │   │   ├── hybrid_test_private_keyset.json
│   │   │   └── hybrid_test_public_keyset.json
│   │   ├── jwt/
│   │   │   ├── BUILD.bazel
│   │   │   ├── JwtGeneratePublicJwkSet.java
│   │   │   ├── JwtSign.java
│   │   │   ├── JwtVerify.java
│   │   │   ├── README.md
│   │   │   ├── jwt_signature_example_test.sh
│   │   │   └── jwt_signature_test_private_keyset.json
│   │   ├── mac/
│   │   │   ├── BUILD.bazel
│   │   │   ├── MacExample.java
│   │   │   ├── README.md
│   │   │   ├── mac_example_test.sh
│   │   │   └── mac_test_keyset.json
│   │   ├── signature/
│   │   │   ├── BUILD.bazel
│   │   │   ├── README.md
│   │   │   ├── SignatureExample.java
│   │   │   ├── signature_example_test.sh
│   │   │   ├── signature_test_private_keyset.json
│   │   │   └── signature_test_public_keyset.json
│   │   ├── streamingaead/
│   │   │   ├── BUILD.bazel
│   │   │   ├── README.md
│   │   │   ├── StreamingAeadExample.java
│   │   │   ├── streaming_aead_example_test.sh
│   │   │   └── streaming_aead_test_keyset.json
│   │   ├── testdata/
│   │   │   └── gcp/
│   │   │       ├── BUILD.bazel
│   │   │       ├── README.md
│   │   │       ├── credential.json
│   │   │       ├── credential_bad.json
│   │   │       ├── key_name.txt
│   │   │       └── key_name_bad.txt
│   │   └── walkthrough/
│   │       └── src/
│   │           ├── main/
│   │           │   └── java/
│   │           │       └── walkthrough/
│   │           │           ├── BUILD.bazel
│   │           │           ├── CreateKeysetExample.java
│   │           │           ├── ObtainAndUseAeadPrimitiveExample.java
│   │           │           ├── ReadCleartextKeysetExample.java
│   │           │           ├── ReadKeysetExample.java
│   │           │           ├── WriteCleartextKeysetExample.java
│   │           │           └── WriteKeysetExample.java
│   │           └── test/
│   │               └── java/
│   │                   └── walkthrough/
│   │                       ├── BUILD.bazel
│   │                       ├── CreateKesetExampleTest.java
│   │                       ├── ObtainAndUseAeadPrimitiveExampleTest.java
│   │                       ├── ReadCleartextKeysetExampleTest.java
│   │                       ├── ReadKeysetExampleTest.java
│   │                       ├── WriteCleartextKeysetExampleTest.java
│   │                       └── WriteKeysetExampleTest.java
│   ├── jar_jar_rules.txt
│   ├── proto/
│   │   ├── BUILD.bazel
│   │   ├── aes_cmac.proto
│   │   ├── aes_cmac_prf.proto
│   │   ├── aes_ctr.proto
│   │   ├── aes_ctr_hmac_aead.proto
│   │   ├── aes_ctr_hmac_streaming.proto
│   │   ├── aes_eax.proto
│   │   ├── aes_gcm.proto
│   │   ├── aes_gcm_hkdf_streaming.proto
│   │   ├── aes_gcm_siv.proto
│   │   ├── aes_siv.proto
│   │   ├── chacha20_poly1305.proto
│   │   ├── common.proto
│   │   ├── config.proto
│   │   ├── ecdsa.proto
│   │   ├── ecies_aead_hkdf.proto
│   │   ├── ed25519.proto
│   │   ├── empty.proto
│   │   ├── hkdf_prf.proto
│   │   ├── hmac.proto
│   │   ├── hmac_prf.proto
│   │   ├── hpke.proto
│   │   ├── jwt_ecdsa.proto
│   │   ├── jwt_hmac.proto
│   │   ├── jwt_rsa_ssa_pkcs1.proto
│   │   ├── jwt_rsa_ssa_pss.proto
│   │   ├── kms_aead.proto
│   │   ├── kms_envelope.proto
│   │   ├── prf_based_deriver.proto
│   │   ├── rsa_ssa_pkcs1.proto
│   │   ├── rsa_ssa_pss.proto
│   │   ├── test_proto.proto
│   │   ├── tink.proto
│   │   └── xchacha20_poly1305.proto
│   ├── src/
│   │   ├── main/
│   │   │   ├── java/
│   │   │   │   └── com/
│   │   │   │       └── google/
│   │   │   │           └── crypto/
│   │   │   │               └── tink/
│   │   │   │                   ├── AccessesPartialKey.java
│   │   │   │                   ├── Aead.java
│   │   │   │                   ├── BUILD.bazel
│   │   │   │                   ├── BinaryKeysetReader.java
│   │   │   │                   ├── BinaryKeysetWriter.java
│   │   │   │                   ├── Catalogue.java
│   │   │   │                   ├── CleartextKeysetHandle.java
│   │   │   │                   ├── Config.java
│   │   │   │                   ├── Configuration.java
│   │   │   │                   ├── ConfigurationFips140v2.java
│   │   │   │                   ├── ConfigurationV0.java
│   │   │   │                   ├── CryptoFormat.java
│   │   │   │                   ├── DeterministicAead.java
│   │   │   │                   ├── HybridDecrypt.java
│   │   │   │                   ├── HybridEncrypt.java
│   │   │   │                   ├── InsecureSecretKeyAccess.java
│   │   │   │                   ├── JsonKeysetReader.java
│   │   │   │                   ├── JsonKeysetWriter.java
│   │   │   │                   ├── Key.java
│   │   │   │                   ├── KeyManager.java
│   │   │   │                   ├── KeyStatus.java
│   │   │   │                   ├── KeyTemplate.java
│   │   │   │                   ├── KeyTemplates.java
│   │   │   │                   ├── KeyWrap.java
│   │   │   │                   ├── KeysetHandle.java
│   │   │   │                   ├── KeysetManager.java
│   │   │   │                   ├── KeysetReader.java
│   │   │   │                   ├── KeysetWriter.java
│   │   │   │                   ├── KmsClient.java
│   │   │   │                   ├── KmsClients.java
│   │   │   │                   ├── KmsClientsTestUtil.java
│   │   │   │                   ├── LegacyKeysetSerialization.java
│   │   │   │                   ├── Mac.java
│   │   │   │                   ├── NoSecretKeysetHandle.java
│   │   │   │                   ├── Parameters.java
│   │   │   │                   ├── PemKeyType.java
│   │   │   │                   ├── PrimitiveWrapper.java
│   │   │   │                   ├── PrivateKey.java
│   │   │   │                   ├── PrivateKeyManager.java
│   │   │   │                   ├── PublicKeySign.java
│   │   │   │                   ├── PublicKeyVerify.java
│   │   │   │                   ├── Registry.java
│   │   │   │                   ├── RegistryConfiguration.java
│   │   │   │                   ├── SecretKeyAccess.java
│   │   │   │                   ├── StreamingAead.java
│   │   │   │                   ├── TinkJsonProtoKeysetFormat.java
│   │   │   │                   ├── TinkProtoKeysetFormat.java
│   │   │   │                   ├── TinkProtoParametersFormat.java
│   │   │   │                   ├── Util.java
│   │   │   │                   ├── Version.java.templ
│   │   │   │                   ├── aead/
│   │   │   │                   │   ├── AeadConfig.java
│   │   │   │                   │   ├── AeadFactory.java
│   │   │   │                   │   ├── AeadKey.java
│   │   │   │                   │   ├── AeadKeyTemplates.java
│   │   │   │                   │   ├── AeadParameters.java
│   │   │   │                   │   ├── AeadWrapper.java
│   │   │   │                   │   ├── AesCtrHmacAeadKey.java
│   │   │   │                   │   ├── AesCtrHmacAeadKeyManager.java
│   │   │   │                   │   ├── AesCtrHmacAeadParameters.java
│   │   │   │                   │   ├── AesEaxKey.java
│   │   │   │                   │   ├── AesEaxKeyManager.java
│   │   │   │                   │   ├── AesEaxParameters.java
│   │   │   │                   │   ├── AesGcmKey.java
│   │   │   │                   │   ├── AesGcmKeyManager.java
│   │   │   │                   │   ├── AesGcmParameters.java
│   │   │   │                   │   ├── AesGcmSivKey.java
│   │   │   │                   │   ├── AesGcmSivKeyManager.java
│   │   │   │                   │   ├── AesGcmSivParameters.java
│   │   │   │                   │   ├── BUILD.bazel
│   │   │   │                   │   ├── ChaCha20Poly1305Key.java
│   │   │   │                   │   ├── ChaCha20Poly1305KeyManager.java
│   │   │   │                   │   ├── ChaCha20Poly1305Parameters.java
│   │   │   │                   │   ├── KmsAeadKeyManager.java
│   │   │   │                   │   ├── KmsEnvelopeAead.java
│   │   │   │                   │   ├── KmsEnvelopeAeadKeyManager.java
│   │   │   │                   │   ├── LegacyKmsAeadKey.java
│   │   │   │                   │   ├── LegacyKmsAeadParameters.java
│   │   │   │                   │   ├── LegacyKmsAeadProtoSerialization.java
│   │   │   │                   │   ├── LegacyKmsEnvelopeAeadKey.java
│   │   │   │                   │   ├── LegacyKmsEnvelopeAeadParameters.java
│   │   │   │                   │   ├── LegacyKmsEnvelopeAeadProtoSerialization.java
│   │   │   │                   │   ├── PredefinedAeadParameters.java
│   │   │   │                   │   ├── XChaCha20Poly1305Key.java
│   │   │   │                   │   ├── XChaCha20Poly1305KeyManager.java
│   │   │   │                   │   ├── XChaCha20Poly1305Parameters.java
│   │   │   │                   │   ├── internal/
│   │   │   │                   │   │   ├── AesCtrHmacAeadProtoSerialization.java
│   │   │   │                   │   │   ├── AesEaxProtoSerialization.java
│   │   │   │                   │   │   ├── AesGcmProtoSerialization.java
│   │   │   │                   │   │   ├── AesGcmSivProtoSerialization.java
│   │   │   │                   │   │   ├── BUILD.bazel
│   │   │   │                   │   │   ├── ChaCha20Poly1305Jce.java
│   │   │   │                   │   │   ├── ChaCha20Poly1305ProtoSerialization.java
│   │   │   │                   │   │   ├── ChaCha20Util.java
│   │   │   │                   │   │   ├── InsecureNonceAesGcmJce.java
│   │   │   │                   │   │   ├── InsecureNonceChaCha20.java
│   │   │   │                   │   │   ├── InsecureNonceChaCha20Base.java
│   │   │   │                   │   │   ├── InsecureNonceChaCha20Poly1305.java
│   │   │   │                   │   │   ├── InsecureNonceChaCha20Poly1305Base.java
│   │   │   │                   │   │   ├── InsecureNonceChaCha20Poly1305Jce.java
│   │   │   │                   │   │   ├── InsecureNonceXChaCha20.java
│   │   │   │                   │   │   ├── InsecureNonceXChaCha20Poly1305.java
│   │   │   │                   │   │   ├── LegacyAesCtrHmacTestKeyManager.java
│   │   │   │                   │   │   ├── LegacyFullAead.java
│   │   │   │                   │   │   ├── Poly1305.java
│   │   │   │                   │   │   ├── XChaCha20Poly1305Jce.java
│   │   │   │                   │   │   └── XChaCha20Poly1305ProtoSerialization.java
│   │   │   │                   │   └── subtle/
│   │   │   │                   │       ├── AeadFactory.java
│   │   │   │                   │       ├── AesGcmFactory.java
│   │   │   │                   │       ├── AesGcmSiv.java
│   │   │   │                   │       └── BUILD.bazel
│   │   │   │                   ├── annotations/
│   │   │   │                   │   ├── Alpha.java
│   │   │   │                   │   └── BUILD.bazel
│   │   │   │                   ├── config/
│   │   │   │                   │   ├── BUILD.bazel
│   │   │   │                   │   ├── TinkConfig.java
│   │   │   │                   │   ├── TinkFips.java
│   │   │   │                   │   └── internal/
│   │   │   │                   │       ├── BUILD.bazel
│   │   │   │                   │       ├── TinkFipsDisabled.java
│   │   │   │                   │       ├── TinkFipsEnabled.java
│   │   │   │                   │       └── TinkFipsUtil.java
│   │   │   │                   ├── daead/
│   │   │   │                   │   ├── AesSivKey.java
│   │   │   │                   │   ├── AesSivKeyManager.java
│   │   │   │                   │   ├── AesSivParameters.java
│   │   │   │                   │   ├── BUILD.bazel
│   │   │   │                   │   ├── DeterministicAeadConfig.java
│   │   │   │                   │   ├── DeterministicAeadFactory.java
│   │   │   │                   │   ├── DeterministicAeadKey.java
│   │   │   │                   │   ├── DeterministicAeadKeyTemplates.java
│   │   │   │                   │   ├── DeterministicAeadParameters.java
│   │   │   │                   │   ├── DeterministicAeadWrapper.java
│   │   │   │                   │   ├── PredefinedDeterministicAeadParameters.java
│   │   │   │                   │   └── internal/
│   │   │   │                   │       ├── AesSivProtoSerialization.java
│   │   │   │                   │       ├── BUILD.bazel
│   │   │   │                   │       ├── LegacyFullDeterministicAead.java
│   │   │   │                   │       └── testing/
│   │   │   │                   │           ├── BUILD.bazel
│   │   │   │                   │           └── LegacyAesSivTestKeyManager.java
│   │   │   │                   ├── hybrid/
│   │   │   │                   │   ├── BUILD.bazel
│   │   │   │                   │   ├── EciesAeadHkdfPrivateKeyManager.java
│   │   │   │                   │   ├── EciesAeadHkdfPublicKeyManager.java
│   │   │   │                   │   ├── EciesParameters.java
│   │   │   │                   │   ├── EciesPrivateKey.java
│   │   │   │                   │   ├── EciesPublicKey.java
│   │   │   │                   │   ├── HpkeParameters.java
│   │   │   │                   │   ├── HpkePrivateKey.java
│   │   │   │                   │   ├── HpkeProtoSerialization.java
│   │   │   │                   │   ├── HpkePublicKey.java
│   │   │   │                   │   ├── HybridConfig.java
│   │   │   │                   │   ├── HybridDecryptConfig.java
│   │   │   │                   │   ├── HybridDecryptFactory.java
│   │   │   │                   │   ├── HybridDecryptWrapper.java
│   │   │   │                   │   ├── HybridEncryptConfig.java
│   │   │   │                   │   ├── HybridEncryptFactory.java
│   │   │   │                   │   ├── HybridEncryptWrapper.java
│   │   │   │                   │   ├── HybridKeyTemplates.java
│   │   │   │                   │   ├── HybridParameters.java
│   │   │   │                   │   ├── HybridPrivateKey.java
│   │   │   │                   │   ├── HybridPublicKey.java
│   │   │   │                   │   ├── HybridUtil.java
│   │   │   │                   │   ├── PredefinedHybridParameters.java
│   │   │   │                   │   ├── internal/
│   │   │   │                   │   │   ├── AesGcmHpkeAead.java
│   │   │   │                   │   │   ├── BUILD.bazel
│   │   │   │                   │   │   ├── ChaCha20Poly1305HpkeAead.java
│   │   │   │                   │   │   ├── EciesProtoSerialization.java
│   │   │   │                   │   │   ├── HkdfHpkeKdf.java
│   │   │   │                   │   │   ├── HpkeAead.java
│   │   │   │                   │   │   ├── HpkeContext.java
│   │   │   │                   │   │   ├── HpkeDecrypt.java
│   │   │   │                   │   │   ├── HpkeEncrypt.java
│   │   │   │                   │   │   ├── HpkeKdf.java
│   │   │   │                   │   │   ├── HpkeKem.java
│   │   │   │                   │   │   ├── HpkeKemEncapOutput.java
│   │   │   │                   │   │   ├── HpkeKemKeyFactory.java
│   │   │   │                   │   │   ├── HpkeKemPrivateKey.java
│   │   │   │                   │   │   ├── HpkePrimitiveFactory.java
│   │   │   │                   │   │   ├── HpkePrivateKeyManager.java
│   │   │   │                   │   │   ├── HpkePublicKeyManager.java
│   │   │   │                   │   │   ├── HpkeUtil.java
│   │   │   │                   │   │   ├── LegacyFullHybridDecrypt.java
│   │   │   │                   │   │   ├── LegacyFullHybridEncrypt.java
│   │   │   │                   │   │   ├── NistCurvesHpkeKem.java
│   │   │   │                   │   │   ├── NistCurvesHpkeKemPrivateKey.java
│   │   │   │                   │   │   ├── X25519HpkeKem.java
│   │   │   │                   │   │   ├── X25519HpkeKemPrivateKey.java
│   │   │   │                   │   │   └── testing/
│   │   │   │                   │   │       ├── BUILD.bazel
│   │   │   │                   │   │       ├── EciesAeadHkdfTestUtil.java
│   │   │   │                   │   │       ├── HpkeTestUtil.java
│   │   │   │                   │   │       ├── HybridTestVector.java
│   │   │   │                   │   │       ├── LegacyHybridDecryptKeyManager.java
│   │   │   │                   │   │       └── LegacyHybridEncryptKeyManager.java
│   │   │   │                   │   └── subtle/
│   │   │   │                   │       ├── AeadOrDaead.java
│   │   │   │                   │       ├── BUILD.bazel
│   │   │   │                   │       ├── RsaKem.java
│   │   │   │                   │       ├── RsaKemHybridDecrypt.java
│   │   │   │                   │       └── RsaKemHybridEncrypt.java
│   │   │   │                   ├── integration/
│   │   │   │                   │   ├── android/
│   │   │   │                   │   │   ├── AndroidKeysetManager.java
│   │   │   │                   │   │   ├── AndroidKeystoreAesGcm.java
│   │   │   │                   │   │   ├── AndroidKeystoreKmsClient.java
│   │   │   │                   │   │   ├── BUILD.bazel
│   │   │   │                   │   │   ├── SharedPrefKeysetReader.java
│   │   │   │                   │   │   ├── SharedPrefKeysetWriter.java
│   │   │   │                   │   │   └── internal/
│   │   │   │                   │   │       └── FakeAndroidKeystoreProvider.java
│   │   │   │                   │   ├── awskms/
│   │   │   │                   │   │   ├── AwsKmsAead.java
│   │   │   │                   │   │   ├── AwsKmsClient.java
│   │   │   │                   │   │   ├── BUILD.bazel
│   │   │   │                   │   │   └── FakeAwsKms.java
│   │   │   │                   │   ├── gcpkms/
│   │   │   │                   │   │   ├── BUILD.bazel
│   │   │   │                   │   │   ├── FakeCloudKms.java
│   │   │   │                   │   │   ├── FakeKeyManagementServiceClient.java
│   │   │   │                   │   │   ├── GcpKmsAead.java
│   │   │   │                   │   │   └── GcpKmsClient.java
│   │   │   │                   │   └── hcvault/
│   │   │   │                   │       ├── BUILD.bazel
│   │   │   │                   │       ├── FakeHcVault.java
│   │   │   │                   │       └── HcVaultAead.java
│   │   │   │                   ├── internal/
│   │   │   │                   │   ├── BUILD.bazel
│   │   │   │                   │   ├── BigIntegerEncoding.java
│   │   │   │                   │   ├── BuildDispatchedCode.java
│   │   │   │                   │   ├── Curve25519.java
│   │   │   │                   │   ├── Ed25519.java
│   │   │   │                   │   ├── Ed25519Constants.java
│   │   │   │                   │   ├── EllipticCurvesUtil.java
│   │   │   │                   │   ├── EnumTypeProtoConverter.java
│   │   │   │                   │   ├── Field25519.java
│   │   │   │                   │   ├── InternalConfiguration.java
│   │   │   │                   │   ├── JsonParser.java
│   │   │   │                   │   ├── KeyManagerRegistry.java
│   │   │   │                   │   ├── KeyParser.java
│   │   │   │                   │   ├── KeySerializer.java
│   │   │   │                   │   ├── KeyStatusTypeProtoConverter.java
│   │   │   │                   │   ├── KeyTemplateProtoConverter.java
│   │   │   │                   │   ├── KeyTester.java
│   │   │   │                   │   ├── LegacyKeyManagerImpl.java
│   │   │   │                   │   ├── LegacyProtoKey.java
│   │   │   │                   │   ├── LegacyProtoParameters.java
│   │   │   │                   │   ├── MonitoringUtil.java
│   │   │   │                   │   ├── MutableKeyCreationRegistry.java
│   │   │   │                   │   ├── MutableKeyDerivationRegistry.java
│   │   │   │                   │   ├── MutableMonitoringRegistry.java
│   │   │   │                   │   ├── MutableParametersRegistry.java
│   │   │   │                   │   ├── MutablePrimitiveRegistry.java
│   │   │   │                   │   ├── MutableSerializationRegistry.java
│   │   │   │                   │   ├── OutputPrefixUtil.java
│   │   │   │                   │   ├── ParametersParser.java
│   │   │   │                   │   ├── ParametersSerializer.java
│   │   │   │                   │   ├── PrimitiveConstructor.java
│   │   │   │                   │   ├── PrimitiveFactory.java
│   │   │   │                   │   ├── PrimitiveRegistry.java
│   │   │   │                   │   ├── PrimitiveSet.java
│   │   │   │                   │   ├── ProtoKeySerialization.java
│   │   │   │                   │   ├── ProtoParametersSerialization.java
│   │   │   │                   │   ├── Random.java
│   │   │   │                   │   ├── RegistryConfiguration.java
│   │   │   │                   │   ├── Serialization.java
│   │   │   │                   │   ├── SerializationRegistry.java
│   │   │   │                   │   ├── SlowInputStream.java
│   │   │   │                   │   ├── TinkBugException.java
│   │   │   │                   │   ├── Util.java
│   │   │   │                   │   └── testing/
│   │   │   │                   │       ├── Asserts.java
│   │   │   │                   │       ├── BUILD.bazel
│   │   │   │                   │       ├── BigIntegerTestUtil.java
│   │   │   │                   │       ├── FakeMonitoringClient.java
│   │   │   │                   │       ├── KeyWithSerialization.java
│   │   │   │                   │       └── ParametersWithSerialization.java
│   │   │   │                   ├── jwt/
│   │   │   │                   │   ├── BUILD.bazel
│   │   │   │                   │   ├── JsonUtil.java
│   │   │   │                   │   ├── JwkSetConverter.java
│   │   │   │                   │   ├── JwtEcdsaParameters.java
│   │   │   │                   │   ├── JwtEcdsaPrivateKey.java
│   │   │   │                   │   ├── JwtEcdsaProtoSerialization.java
│   │   │   │                   │   ├── JwtEcdsaPublicKey.java
│   │   │   │                   │   ├── JwtEcdsaSignKeyManager.java
│   │   │   │                   │   ├── JwtEcdsaVerifyKeyManager.java
│   │   │   │                   │   ├── JwtFormat.java
│   │   │   │                   │   ├── JwtHmacKey.java
│   │   │   │                   │   ├── JwtHmacKeyManager.java
│   │   │   │                   │   ├── JwtHmacParameters.java
│   │   │   │                   │   ├── JwtHmacProtoSerialization.java
│   │   │   │                   │   ├── JwtInvalidException.java
│   │   │   │                   │   ├── JwtMac.java
│   │   │   │                   │   ├── JwtMacConfig.java
│   │   │   │                   │   ├── JwtMacKey.java
│   │   │   │                   │   ├── JwtMacParameters.java
│   │   │   │                   │   ├── JwtMacWrapper.java
│   │   │   │                   │   ├── JwtNames.java
│   │   │   │                   │   ├── JwtPublicKeySign.java
│   │   │   │                   │   ├── JwtPublicKeySignInternal.java
│   │   │   │                   │   ├── JwtPublicKeySignWrapper.java
│   │   │   │                   │   ├── JwtPublicKeyVerify.java
│   │   │   │                   │   ├── JwtPublicKeyVerifyInternal.java
│   │   │   │                   │   ├── JwtPublicKeyVerifyWrapper.java
│   │   │   │                   │   ├── JwtRsaSsaPkcs1Parameters.java
│   │   │   │                   │   ├── JwtRsaSsaPkcs1PrivateKey.java
│   │   │   │                   │   ├── JwtRsaSsaPkcs1ProtoSerialization.java
│   │   │   │                   │   ├── JwtRsaSsaPkcs1PublicKey.java
│   │   │   │                   │   ├── JwtRsaSsaPkcs1SignKeyManager.java
│   │   │   │                   │   ├── JwtRsaSsaPkcs1VerifyKeyManager.java
│   │   │   │                   │   ├── JwtRsaSsaPssParameters.java
│   │   │   │                   │   ├── JwtRsaSsaPssPrivateKey.java
│   │   │   │                   │   ├── JwtRsaSsaPssProtoSerialization.java
│   │   │   │                   │   ├── JwtRsaSsaPssPublicKey.java
│   │   │   │                   │   ├── JwtRsaSsaPssSignKeyManager.java
│   │   │   │                   │   ├── JwtRsaSsaPssVerifyKeyManager.java
│   │   │   │                   │   ├── JwtSignatureConfig.java
│   │   │   │                   │   ├── JwtSignatureParameters.java
│   │   │   │                   │   ├── JwtSignaturePrivateKey.java
│   │   │   │                   │   ├── JwtSignaturePublicKey.java
│   │   │   │                   │   ├── JwtValidator.java
│   │   │   │                   │   ├── RawJwt.java
│   │   │   │                   │   └── VerifiedJwt.java
│   │   │   │                   ├── keyderivation/
│   │   │   │                   │   ├── BUILD.bazel
│   │   │   │                   │   ├── KeyDerivationConfig.java
│   │   │   │                   │   ├── KeyDerivationKey.java
│   │   │   │                   │   ├── KeyDerivationParameters.java
│   │   │   │                   │   ├── KeysetDeriver.java
│   │   │   │                   │   ├── KeysetDeriverWrapper.java
│   │   │   │                   │   ├── PrfBasedKeyDerivationKey.java
│   │   │   │                   │   ├── PrfBasedKeyDerivationParameters.java
│   │   │   │                   │   └── internal/
│   │   │   │                   │       ├── BUILD.bazel
│   │   │   │                   │       ├── KeyDeriver.java
│   │   │   │                   │       ├── KeysetDeriverWrapper.java
│   │   │   │                   │       ├── PrfBasedDeriverKeyManager.java
│   │   │   │                   │       ├── PrfBasedKeyDerivationKeyProtoSerialization.java
│   │   │   │                   │       └── PrfBasedKeyDeriver.java
│   │   │   │                   ├── mac/
│   │   │   │                   │   ├── AesCmacKey.java
│   │   │   │                   │   ├── AesCmacKeyManager.java
│   │   │   │                   │   ├── AesCmacParameters.java
│   │   │   │                   │   ├── BUILD.bazel
│   │   │   │                   │   ├── ChunkedMac.java
│   │   │   │                   │   ├── ChunkedMacComputation.java
│   │   │   │                   │   ├── ChunkedMacVerification.java
│   │   │   │                   │   ├── ChunkedMacWrapper.java
│   │   │   │                   │   ├── HmacKey.java
│   │   │   │                   │   ├── HmacKeyManager.java
│   │   │   │                   │   ├── HmacParameters.java
│   │   │   │                   │   ├── MacConfig.java
│   │   │   │                   │   ├── MacFactory.java
│   │   │   │                   │   ├── MacKey.java
│   │   │   │                   │   ├── MacKeyTemplates.java
│   │   │   │                   │   ├── MacParameters.java
│   │   │   │                   │   ├── MacWrapper.java
│   │   │   │                   │   ├── PredefinedMacParameters.java
│   │   │   │                   │   └── internal/
│   │   │   │                   │       ├── AesCmacProtoSerialization.java
│   │   │   │                   │       ├── AesCmacTestUtil.java
│   │   │   │                   │       ├── AesUtil.java
│   │   │   │                   │       ├── BUILD.bazel
│   │   │   │                   │       ├── ChunkedAesCmacComputation.java
│   │   │   │                   │       ├── ChunkedAesCmacImpl.java
│   │   │   │                   │       ├── ChunkedAesCmacVerification.java
│   │   │   │                   │       ├── ChunkedHmacComputation.java
│   │   │   │                   │       ├── ChunkedHmacImpl.java
│   │   │   │                   │       ├── ChunkedHmacVerification.java
│   │   │   │                   │       ├── HmacProtoSerialization.java
│   │   │   │                   │       ├── HmacTestUtil.java
│   │   │   │                   │       ├── LegacyFullMac.java
│   │   │   │                   │       └── LegacyHmacTestKeyManager.java
│   │   │   │                   ├── monitoring/
│   │   │   │                   │   ├── BUILD.bazel
│   │   │   │                   │   ├── MonitoringAnnotations.java
│   │   │   │                   │   ├── MonitoringClient.java
│   │   │   │                   │   └── MonitoringKeysetInfo.java
│   │   │   │                   ├── prf/
│   │   │   │                   │   ├── AesCmacPrfKey.java
│   │   │   │                   │   ├── AesCmacPrfKeyManager.java
│   │   │   │                   │   ├── AesCmacPrfParameters.java
│   │   │   │                   │   ├── BUILD.bazel
│   │   │   │                   │   ├── HkdfPrfKey.java
│   │   │   │                   │   ├── HkdfPrfKeyManager.java
│   │   │   │                   │   ├── HkdfPrfParameters.java
│   │   │   │                   │   ├── HmacPrfKey.java
│   │   │   │                   │   ├── HmacPrfKeyManager.java
│   │   │   │                   │   ├── HmacPrfParameters.java
│   │   │   │                   │   ├── PredefinedPrfParameters.java
│   │   │   │                   │   ├── Prf.java
│   │   │   │                   │   ├── PrfConfig.java
│   │   │   │                   │   ├── PrfKey.java
│   │   │   │                   │   ├── PrfKeyTemplates.java
│   │   │   │                   │   ├── PrfParameters.java
│   │   │   │                   │   ├── PrfSet.java
│   │   │   │                   │   ├── PrfSetWrapper.java
│   │   │   │                   │   └── internal/
│   │   │   │                   │       ├── AesCmacPrfProtoSerialization.java
│   │   │   │                   │       ├── BUILD.bazel
│   │   │   │                   │       ├── HkdfPrfProtoSerialization.java
│   │   │   │                   │       ├── HmacPrfProtoSerialization.java
│   │   │   │                   │       ├── LegacyFullPrf.java
│   │   │   │                   │       ├── LegacyHmacPrfTestKeyManager.java
│   │   │   │                   │       └── LegacyHmacPrfTestUtil.java
│   │   │   │                   ├── signature/
│   │   │   │                   │   ├── BUILD.bazel
│   │   │   │                   │   ├── EcdsaParameters.java
│   │   │   │                   │   ├── EcdsaPrivateKey.java
│   │   │   │                   │   ├── EcdsaPublicKey.java
│   │   │   │                   │   ├── EcdsaSignKeyManager.java
│   │   │   │                   │   ├── EcdsaVerifyKeyManager.java
│   │   │   │                   │   ├── Ed25519Parameters.java
│   │   │   │                   │   ├── Ed25519PrivateKey.java
│   │   │   │                   │   ├── Ed25519PrivateKeyManager.java
│   │   │   │                   │   ├── Ed25519PublicKey.java
│   │   │   │                   │   ├── Ed25519PublicKeyManager.java
│   │   │   │                   │   ├── PredefinedSignatureParameters.java
│   │   │   │                   │   ├── PublicKeySignConfig.java
│   │   │   │                   │   ├── PublicKeySignFactory.java
│   │   │   │                   │   ├── PublicKeySignWrapper.java
│   │   │   │                   │   ├── PublicKeyVerifyConfig.java
│   │   │   │                   │   ├── PublicKeyVerifyFactory.java
│   │   │   │                   │   ├── PublicKeyVerifyWrapper.java
│   │   │   │                   │   ├── RsaSsaPkcs1Parameters.java
│   │   │   │                   │   ├── RsaSsaPkcs1PrivateKey.java
│   │   │   │                   │   ├── RsaSsaPkcs1PublicKey.java
│   │   │   │                   │   ├── RsaSsaPkcs1SignKeyManager.java
│   │   │   │                   │   ├── RsaSsaPkcs1VerifyKeyManager.java
│   │   │   │                   │   ├── RsaSsaPssParameters.java
│   │   │   │                   │   ├── RsaSsaPssPrivateKey.java
│   │   │   │                   │   ├── RsaSsaPssPublicKey.java
│   │   │   │                   │   ├── RsaSsaPssSignKeyManager.java
│   │   │   │                   │   ├── RsaSsaPssVerifyKeyManager.java
│   │   │   │                   │   ├── SignatureConfig.java
│   │   │   │                   │   ├── SignatureKeyTemplates.java
│   │   │   │                   │   ├── SignatureParameters.java
│   │   │   │                   │   ├── SignaturePemKeysetReader.java
│   │   │   │                   │   ├── SignaturePrivateKey.java
│   │   │   │                   │   ├── SignaturePublicKey.java
│   │   │   │                   │   └── internal/
│   │   │   │                   │       ├── BUILD.bazel
│   │   │   │                   │       ├── EcdsaProtoSerialization.java
│   │   │   │                   │       ├── Ed25519ProtoSerialization.java
│   │   │   │                   │       ├── LegacyFullSign.java
│   │   │   │                   │       ├── LegacyFullVerify.java
│   │   │   │                   │       ├── RsaSsaPkcs1ProtoSerialization.java
│   │   │   │                   │       ├── RsaSsaPssProtoSerialization.java
│   │   │   │                   │       ├── SigUtil.java
│   │   │   │                   │       └── testing/
│   │   │   │                   │           ├── BUILD.bazel
│   │   │   │                   │           ├── EcdsaTestUtil.java
│   │   │   │                   │           ├── Ed25519TestUtil.java
│   │   │   │                   │           ├── LegacyPublicKeySignKeyManager.java
│   │   │   │                   │           ├── LegacyPublicKeyVerifyKeyManager.java
│   │   │   │                   │           ├── RsaSsaPkcs1TestUtil.java
│   │   │   │                   │           ├── RsaSsaPssTestUtil.java
│   │   │   │                   │           └── SignatureTestVector.java
│   │   │   │                   ├── streamingaead/
│   │   │   │                   │   ├── AesCtrHmacStreamingKey.java
│   │   │   │                   │   ├── AesCtrHmacStreamingKeyManager.java
│   │   │   │                   │   ├── AesCtrHmacStreamingParameters.java
│   │   │   │                   │   ├── AesGcmHkdfStreamingKey.java
│   │   │   │                   │   ├── AesGcmHkdfStreamingKeyManager.java
│   │   │   │                   │   ├── AesGcmHkdfStreamingParameters.java
│   │   │   │                   │   ├── BUILD.bazel
│   │   │   │                   │   ├── InputStreamDecrypter.java
│   │   │   │                   │   ├── PredefinedStreamingAeadParameters.java
│   │   │   │                   │   ├── ReadableByteChannelDecrypter.java
│   │   │   │                   │   ├── SeekableByteChannelDecrypter.java
│   │   │   │                   │   ├── StreamingAeadConfig.java
│   │   │   │                   │   ├── StreamingAeadFactory.java
│   │   │   │                   │   ├── StreamingAeadHelper.java
│   │   │   │                   │   ├── StreamingAeadKey.java
│   │   │   │                   │   ├── StreamingAeadKeyTemplates.java
│   │   │   │                   │   ├── StreamingAeadParameters.java
│   │   │   │                   │   ├── StreamingAeadUtil.java
│   │   │   │                   │   ├── StreamingAeadWrapper.java
│   │   │   │                   │   └── internal/
│   │   │   │                   │       ├── AesCtrHmacStreamingProtoSerialization.java
│   │   │   │                   │       ├── AesGcmHkdfStreamingProtoSerialization.java
│   │   │   │                   │       ├── BUILD.bazel
│   │   │   │                   │       ├── LegacyAesGcmHkdfStreamingTestKeyManager.java
│   │   │   │                   │       └── LegacyFullStreamingAead.java
│   │   │   │                   ├── subtle/
│   │   │   │                   │   ├── AesCtrHmacStreaming.java
│   │   │   │                   │   ├── AesCtrJceCipher.java
│   │   │   │                   │   ├── AesEaxJce.java
│   │   │   │                   │   ├── AesGcmHkdfStreaming.java
│   │   │   │                   │   ├── AesGcmJce.java
│   │   │   │                   │   ├── AesSiv.java
│   │   │   │                   │   ├── BUILD.bazel
│   │   │   │                   │   ├── Base64.java
│   │   │   │                   │   ├── Bytes.java
│   │   │   │                   │   ├── ChaCha20.java
│   │   │   │                   │   ├── ChaCha20Poly1305.java
│   │   │   │                   │   ├── EcdsaSignJce.java
│   │   │   │                   │   ├── EcdsaVerifyJce.java
│   │   │   │                   │   ├── EciesAeadHkdfDemHelper.java
│   │   │   │                   │   ├── EciesAeadHkdfHybridDecrypt.java
│   │   │   │                   │   ├── EciesAeadHkdfHybridEncrypt.java
│   │   │   │                   │   ├── EciesHkdfRecipientKem.java
│   │   │   │                   │   ├── EciesHkdfSenderKem.java
│   │   │   │                   │   ├── Ed25519Sign.java
│   │   │   │                   │   ├── Ed25519Verify.java
│   │   │   │                   │   ├── EllipticCurves.java
│   │   │   │                   │   ├── EncryptThenAuthenticate.java
│   │   │   │                   │   ├── EngineFactory.java
│   │   │   │                   │   ├── EngineWrapper.java
│   │   │   │                   │   ├── Enums.java
│   │   │   │                   │   ├── Hex.java
│   │   │   │                   │   ├── Hkdf.java
│   │   │   │                   │   ├── IndCpaCipher.java
│   │   │   │                   │   ├── Kwp.java
│   │   │   │                   │   ├── NonceBasedStreamingAead.java
│   │   │   │                   │   ├── PemKeyType.java
│   │   │   │                   │   ├── PrfAesCmac.java
│   │   │   │                   │   ├── PrfHmacJce.java
│   │   │   │                   │   ├── PrfMac.java
│   │   │   │                   │   ├── Random.java
│   │   │   │                   │   ├── RewindableReadableByteChannel.java
│   │   │   │                   │   ├── RsaSsaPkcs1SignJce.java
│   │   │   │                   │   ├── RsaSsaPkcs1VerifyJce.java
│   │   │   │                   │   ├── RsaSsaPssSignJce.java
│   │   │   │                   │   ├── RsaSsaPssVerifyJce.java
│   │   │   │                   │   ├── SelfKeyTestValidators.java
│   │   │   │                   │   ├── StreamSegmentDecrypter.java
│   │   │   │                   │   ├── StreamSegmentEncrypter.java
│   │   │   │                   │   ├── StreamingAeadDecryptingChannel.java
│   │   │   │                   │   ├── StreamingAeadDecryptingStream.java
│   │   │   │                   │   ├── StreamingAeadEncryptingChannel.java
│   │   │   │                   │   ├── StreamingAeadEncryptingStream.java
│   │   │   │                   │   ├── StreamingAeadSeekableDecryptingChannel.java
│   │   │   │                   │   ├── SubtleUtil.java
│   │   │   │                   │   ├── Validators.java
│   │   │   │                   │   ├── X25519.java
│   │   │   │                   │   ├── XChaCha20.java
│   │   │   │                   │   ├── XChaCha20Poly1305.java
│   │   │   │                   │   └── prf/
│   │   │   │                   │       ├── BUILD.bazel
│   │   │   │                   │       ├── HkdfStreamingPrf.java
│   │   │   │                   │       ├── PrfImpl.java
│   │   │   │                   │       └── StreamingPrf.java
│   │   │   │                   ├── testing/
│   │   │   │                   │   ├── BUILD.bazel
│   │   │   │                   │   ├── FakeKmsClient.java
│   │   │   │                   │   ├── HpkeTestEncryption.java
│   │   │   │                   │   ├── HpkeTestId.java
│   │   │   │                   │   ├── HpkeTestSetup.java
│   │   │   │                   │   ├── HpkeTestUtil.java
│   │   │   │                   │   ├── HpkeTestVector.java
│   │   │   │                   │   ├── StreamingTestUtil.java
│   │   │   │                   │   ├── TestUtil.java
│   │   │   │                   │   └── WycheproofTestUtil.java
│   │   │   │                   ├── tinkkey/
│   │   │   │                   │   ├── BUILD.bazel
│   │   │   │                   │   ├── KeyAccess.java
│   │   │   │                   │   ├── KeyHandle.java
│   │   │   │                   │   ├── SecretKeyAccess.java
│   │   │   │                   │   ├── TinkKey.java
│   │   │   │                   │   └── internal/
│   │   │   │                   │       ├── BUILD.bazel
│   │   │   │                   │       ├── InternalKeyHandle.java
│   │   │   │                   │       └── ProtoKey.java
│   │   │   │                   └── util/
│   │   │   │                       ├── BUILD.bazel
│   │   │   │                       ├── Bytes.java
│   │   │   │                       ├── KeysDownloader.java
│   │   │   │                       ├── SecretBigInteger.java
│   │   │   │                       └── SecretBytes.java
│   │   │   └── resources/
│   │   │       └── META-INF/
│   │   │           └── proguard/
│   │   │               └── protobuf.pro
│   │   └── test/
│   │       ├── BUILD.bazel
│   │       └── java/
│   │           └── com/
│   │               └── google/
│   │                   └── crypto/
│   │                       └── tink/
│   │                           ├── BUILD.bazel
│   │                           ├── BinaryKeysetReaderTest.java
│   │                           ├── CleartextKeysetHandleTest.java
│   │                           ├── ConfigTest.java
│   │                           ├── ConfigurationFips140v2Test.java
│   │                           ├── ConfigurationFips140v2WithoutConscryptTest.java
│   │                           ├── ConfigurationV0Test.java
│   │                           ├── CryptoFormatTest.java
│   │                           ├── IntegrationTest.java
│   │                           ├── JsonKeysetReaderTest.java
│   │                           ├── JsonKeysetWriterTest.java
│   │                           ├── KeyTemplateTest.java
│   │                           ├── KeyTemplatesAsParametersTest.java
│   │                           ├── KeyTemplatesTest.java
│   │                           ├── KeysetHandleFullPrimitiveTest.java
│   │                           ├── KeysetHandleTest.java
│   │                           ├── KeysetManagerTest.java
│   │                           ├── LateRegistrationTest.java
│   │                           ├── LegacyKeysetSerializationTest.java
│   │                           ├── MonitoringUtilTest.java
│   │                           ├── NoSecretKeysetHandleTest.java
│   │                           ├── PemKeyTypeTest.java
│   │                           ├── RegistryConfigurationTest.java
│   │                           ├── RegistryMultithreadTest.java
│   │                           ├── RegistryTest.java
│   │                           ├── SecretKeyAccessTest.java
│   │                           ├── TinkJsonProtoKeysetFormatTest.java
│   │                           ├── TinkProtoKeysetFormatTest.java
│   │                           ├── TinkProtoParametersFormatTest.java
│   │                           ├── TinkProtoTest.java
│   │                           ├── UtilTest.java
│   │                           ├── VersionTest.java
│   │                           ├── aead/
│   │                           │   ├── AeadConfigTest.java
│   │                           │   ├── AeadFactoryTest.java
│   │                           │   ├── AeadFactoryWithoutWrapperRegisteredTest.java
│   │                           │   ├── AeadKeyTemplatesTest.java
│   │                           │   ├── AeadTest.java
│   │                           │   ├── AeadWrapperTest.java
│   │                           │   ├── AesCtrHmacAeadKeyManagerTest.java
│   │                           │   ├── AesCtrHmacAeadKeyTest.java
│   │                           │   ├── AesCtrHmacAeadParametersTest.java
│   │                           │   ├── AesEaxKeyManagerTest.java
│   │                           │   ├── AesEaxKeyTest.java
│   │                           │   ├── AesEaxParametersTest.java
│   │                           │   ├── AesGcmKeyManagerTest.java
│   │                           │   ├── AesGcmKeyTest.java
│   │                           │   ├── AesGcmParametersTest.java
│   │                           │   ├── AesGcmSivKeyManagerTest.java
│   │                           │   ├── AesGcmSivKeyTest.java
│   │                           │   ├── AesGcmSivParametersTest.java
│   │                           │   ├── BUILD.bazel
│   │                           │   ├── ChaCha20Poly1305KeyManagerTest.java
│   │                           │   ├── ChaCha20Poly1305KeyTest.java
│   │                           │   ├── ChaCha20Poly1305ParametersTest.java
│   │                           │   ├── KmsAeadKeyManagerTest.java
│   │                           │   ├── KmsEnvelopeAeadKeyManagerTest.java
│   │                           │   ├── KmsEnvelopeAeadTest.java
│   │                           │   ├── LegacyKmsAeadKeyTest.java
│   │                           │   ├── LegacyKmsAeadParametersTest.java
│   │                           │   ├── LegacyKmsAeadProtoSerializationTest.java
│   │                           │   ├── LegacyKmsEnvelopeAeadKeyTest.java
│   │                           │   ├── LegacyKmsEnvelopeAeadParametersTest.java
│   │                           │   ├── LegacyKmsEnvelopeAeadProtoSerializationTest.java
│   │                           │   ├── PredefinedAeadParametersTest.java
│   │                           │   ├── XChaCha20Poly1305KeyManagerTest.java
│   │                           │   ├── XChaCha20Poly1305KeyTest.java
│   │                           │   ├── XChaCha20Poly1305ParametersTest.java
│   │                           │   ├── internal/
│   │                           │   │   ├── AesCtrHmacAeadProtoSerializationTest.java
│   │                           │   │   ├── AesEaxProtoSerializationTest.java
│   │                           │   │   ├── AesGcmProtoSerializationTest.java
│   │                           │   │   ├── AesGcmSivProtoSerializationTest.java
│   │                           │   │   ├── BUILD.bazel
│   │                           │   │   ├── ChaCha20Poly1305JceTest.java
│   │                           │   │   ├── ChaCha20Poly1305ProtoSerializationTest.java
│   │                           │   │   ├── ChaCha20UtilTest.java
│   │                           │   │   ├── InsecureNonceAesGcmJceTest.java
│   │                           │   │   ├── InsecureNonceChaCha20Poly1305JceTest.java
│   │                           │   │   ├── InsecureNonceChaCha20Poly1305Test.java
│   │                           │   │   ├── InsecureNonceChaCha20Test.java
│   │                           │   │   ├── InsecureNonceXChaCha20Poly1305Test.java
│   │                           │   │   ├── InsecureNonceXChaCha20Test.java
│   │                           │   │   ├── LegacyAesCtrHmacTestKeyManagerTest.java
│   │                           │   │   ├── LegacyFullAeadIntegrationTest.java
│   │                           │   │   ├── LegacyFullAeadTest.java
│   │                           │   │   ├── Poly1305Test.java
│   │                           │   │   ├── XChaCha20Poly1305JceTest.java
│   │                           │   │   └── XChaCha20Poly1305ProtoSerializationTest.java
│   │                           │   └── subtle/
│   │                           │       ├── AesGcmSivTest.java
│   │                           │       └── BUILD.bazel
│   │                           ├── config/
│   │                           │   ├── BUILD.bazel
│   │                           │   ├── TinkConfigTest.java
│   │                           │   ├── TinkFipsTest.java
│   │                           │   └── internal/
│   │                           │       ├── BUILD.bazel
│   │                           │       └── TinkFipsUtilTest.java
│   │                           ├── custom/
│   │                           │   ├── BUILD.bazel
│   │                           │   └── CustomAeadKeyManagerTest.java
│   │                           ├── daead/
│   │                           │   ├── AesSivKeyManagerTest.java
│   │                           │   ├── AesSivKeyTest.java
│   │                           │   ├── AesSivParametersTest.java
│   │                           │   ├── BUILD.bazel
│   │                           │   ├── DaeadTest.java
│   │                           │   ├── DeterministicAeadConfigTest.java
│   │                           │   ├── DeterministicAeadFactoryTest.java
│   │                           │   ├── DeterministicAeadFactoryWithoutWrapperRegisteredTest.java
│   │                           │   ├── DeterministicAeadKeyTemplatesTest.java
│   │                           │   ├── DeterministicAeadWrapperTest.java
│   │                           │   ├── KeyManagerIntegrationTest.java
│   │                           │   ├── PredefinedDeterministicAeadParametersTest.java
│   │                           │   └── internal/
│   │                           │       ├── AesSivProtoSerializationTest.java
│   │                           │       ├── BUILD.bazel
│   │                           │       ├── LegacyFullDeterministicAeadTest.java
│   │                           │       └── testing/
│   │                           │           ├── BUILD.bazel
│   │                           │           └── LegacyAesSivTestKeyManagerTest.java
│   │                           ├── hybrid/
│   │                           │   ├── BUILD.bazel
│   │                           │   ├── EciesAeadHkdfHybridDecryptTest.java
│   │                           │   ├── EciesAeadHkdfHybridEncryptTest.java
│   │                           │   ├── EciesAeadHkdfPrivateKeyManagerTest.java
│   │                           │   ├── EciesParametersTest.java
│   │                           │   ├── EciesPrivateKeyTest.java
│   │                           │   ├── EciesPublicKeyTest.java
│   │                           │   ├── HpkeParametersTest.java
│   │                           │   ├── HpkePrivateKeyTest.java
│   │                           │   ├── HpkeProtoSerializationTest.java
│   │                           │   ├── HpkePublicKeyTest.java
│   │                           │   ├── HybridConfigTest.java
│   │                           │   ├── HybridDecryptFactoryTest.java
│   │                           │   ├── HybridDecryptWrapperTest.java
│   │                           │   ├── HybridEncryptDecryptFactoryWithoutWrapperRegisteredTest.java
│   │                           │   ├── HybridEncryptFactoryTest.java
│   │                           │   ├── HybridEncryptWrapperTest.java
│   │                           │   ├── HybridKeyTemplatesTest.java
│   │                           │   ├── HybridTest.java
│   │                           │   ├── KeyManagerIntegrationTest.java
│   │                           │   ├── PredefinedHybridParametersTest.java
│   │                           │   ├── internal/
│   │                           │   │   ├── AesGcmHpkeAeadTest.java
│   │                           │   │   ├── BUILD.bazel
│   │                           │   │   ├── ChaCha20Poly1305HpkeAeadTest.java
│   │                           │   │   ├── EciesProtoSerializationTest.java
│   │                           │   │   ├── HkdfHpkeKdfTest.java
│   │                           │   │   ├── HpkeContextTest.java
│   │                           │   │   ├── HpkeEncryptDecryptTest.java
│   │                           │   │   ├── HpkeKemKeyFactoryTest.java
│   │                           │   │   ├── HpkePrimitiveFactoryTest.java
│   │                           │   │   ├── HpkePrivateKeyManagerTest.java
│   │                           │   │   ├── HpkeUtilTest.java
│   │                           │   │   ├── LegacyFullHybridDecryptTest.java
│   │                           │   │   ├── LegacyFullHybridEncryptTest.java
│   │                           │   │   ├── NistCurvesHpkeKemTest.java
│   │                           │   │   ├── X25519HpkeKemPrivateKeyTest.java
│   │                           │   │   ├── X25519HpkeKemTest.java
│   │                           │   │   └── testing/
│   │                           │   │       ├── BUILD.bazel
│   │                           │   │       ├── LegacyHybridDecryptKeyManagerTest.java
│   │                           │   │       └── LegacyHybridEncryptKeyManagerTest.java
│   │                           │   └── subtle/
│   │                           │       ├── AeadOrDaeadTest.java
│   │                           │       ├── BUILD.bazel
│   │                           │       ├── RsaKemHybridDecryptTest.java
│   │                           │       ├── RsaKemHybridEncryptTest.java
│   │                           │       └── RsaKemTest.java
│   │                           ├── integration/
│   │                           │   ├── awskms/
│   │                           │   │   ├── AwsKmsAeadTest.java
│   │                           │   │   ├── AwsKmsClientTest.java
│   │                           │   │   ├── BUILD.bazel
│   │                           │   │   └── FakeAwsKmsTest.java
│   │                           │   ├── gcpkms/
│   │                           │   │   ├── BUILD.bazel
│   │                           │   │   ├── FakeCloudKmsTest.java
│   │                           │   │   ├── GcpKmsAeadTest.java
│   │                           │   │   ├── GcpKmsClientTest.java
│   │                           │   │   └── GcpKmsIntegrationTest.java
│   │                           │   └── hcvault/
│   │                           │       ├── BUILD.bazel
│   │                           │       ├── FakeHcVaultTest.java
│   │                           │       └── HcVaultAeadTest.java
│   │                           ├── internal/
│   │                           │   ├── BUILD.bazel
│   │                           │   ├── BigIntegerEncodingTest.java
│   │                           │   ├── Curve25519Test.java
│   │                           │   ├── Ed25519Test.java
│   │                           │   ├── EllipticCurvesUtilTest.java
│   │                           │   ├── EnumTypeProtoConverterTest.java
│   │                           │   ├── Field25519Test.java
│   │                           │   ├── InternalConfigurationTest.java
│   │                           │   ├── JsonParserTest.java
│   │                           │   ├── KeyManagerRegistryTest.java
│   │                           │   ├── KeyParserTest.java
│   │                           │   ├── KeySerializerTest.java
│   │                           │   ├── KeyTemplateProtoConverterTest.java
│   │                           │   ├── KeyTesterTest.java
│   │                           │   ├── LegacyKeyManagerImplTest.java
│   │                           │   ├── LegacyProtoKeyTest.java
│   │                           │   ├── LegacyProtoParametersTest.java
│   │                           │   ├── MutableKeyCreationRegistryTest.java
│   │                           │   ├── MutableKeyDerivationRegistryTest.java
│   │                           │   ├── MutableMonitoringRegistryTest.java
│   │                           │   ├── MutableParametersRegistryTest.java
│   │                           │   ├── MutablePrimitiveRegistryMultithreadTest.java
│   │                           │   ├── MutablePrimitiveRegistryTest.java
│   │                           │   ├── MutableSerializationRegistryMultithreadTest.java
│   │                           │   ├── MutableSerializationRegistryTest.java
│   │                           │   ├── OutputPrefixUtilTest.java
│   │                           │   ├── ParametersParserTest.java
│   │                           │   ├── ParametersSerializerTest.java
│   │                           │   ├── PrimitiveConstructorTest.java
│   │                           │   ├── PrimitiveRegistryTest.java
│   │                           │   ├── PrimitiveSetTest.java
│   │                           │   ├── ProtoKeySerializationTest.java
│   │                           │   ├── ProtoParametersSerializationTest.java
│   │                           │   ├── RandomTest.java
│   │                           │   ├── RandomWithoutConscryptTest.java
│   │                           │   ├── RandomWithoutInstallingConscryptTest.java
│   │                           │   ├── RegistryConfigurationTest.java
│   │                           │   ├── SerializationRegistryTest.java
│   │                           │   ├── SlowInputStreamTest.java
│   │                           │   ├── TinkBugExceptionTest.java
│   │                           │   ├── UtilTest.java
│   │                           │   └── testing/
│   │                           │       ├── AssertsTest.java
│   │                           │       ├── BUILD.bazel
│   │                           │       ├── BigIntegerTestUtilTest.java
│   │                           │       ├── FakeMonitoringClientTest.java
│   │                           │       ├── KeyWithSerializationTest.java
│   │                           │       └── ParametersWithSerializationTest.java
│   │                           ├── jwt/
│   │                           │   ├── BUILD.bazel
│   │                           │   ├── JsonUtilTest.java
│   │                           │   ├── JwkSetConverterTest.java
│   │                           │   ├── JwtEcdsaParametersTest.java
│   │                           │   ├── JwtEcdsaPrivateKeyTest.java
│   │                           │   ├── JwtEcdsaProtoSerializationTest.java
│   │                           │   ├── JwtEcdsaPublicKeyTest.java
│   │                           │   ├── JwtEcdsaSignKeyManagerTest.java
│   │                           │   ├── JwtEcdsaVerifyKeyManagerTest.java
│   │                           │   ├── JwtFormatTest.java
│   │                           │   ├── JwtHmacKeyManagerTest.java
│   │                           │   ├── JwtHmacKeyTest.java
│   │                           │   ├── JwtHmacParametersTest.java
│   │                           │   ├── JwtHmacProtoSerializationTest.java
│   │                           │   ├── JwtMacConfigTest.java
│   │                           │   ├── JwtMacWrapperTest.java
│   │                           │   ├── JwtPublicKeySignVerifyWrappersTest.java
│   │                           │   ├── JwtRsaSsaPkcs1ParametersTest.java
│   │                           │   ├── JwtRsaSsaPkcs1PrivateKeyTest.java
│   │                           │   ├── JwtRsaSsaPkcs1ProtoSerializationTest.java
│   │                           │   ├── JwtRsaSsaPkcs1PublicKeyTest.java
│   │                           │   ├── JwtRsaSsaPkcs1SignKeyManagerTest.java
│   │                           │   ├── JwtRsaSsaPssParametersTest.java
│   │                           │   ├── JwtRsaSsaPssPrivateKeyTest.java
│   │                           │   ├── JwtRsaSsaPssProtoSerializationTest.java
│   │                           │   ├── JwtRsaSsaPssPublicKeyTest.java
│   │                           │   ├── JwtRsaSsaPssSignKeyManagerTest.java
│   │                           │   ├── JwtRsaSsaPssVerifyKeyManagerTest.java
│   │                           │   ├── JwtSignatureConfigTest.java
│   │                           │   ├── JwtSignatureTest.java
│   │                           │   ├── JwtTest.java
│   │                           │   ├── JwtValidatorTest.java
│   │                           │   ├── RawJwtTest.java
│   │                           │   └── VerifiedJwtTest.java
│   │                           ├── keyderivation/
│   │                           │   ├── BUILD.bazel
│   │                           │   ├── KeyDerivationConfigTest.java
│   │                           │   ├── KeyDerivationTest.java
│   │                           │   ├── KeysetDeriverWrapperTest.java
│   │                           │   ├── PrfBasedKeyDerivationKeyTest.java
│   │                           │   ├── PrfBasedKeyDerivationParametersTest.java
│   │                           │   └── internal/
│   │                           │       ├── BUILD.bazel
│   │                           │       ├── KeysetDeriverWrapperTest.java
│   │                           │       ├── PrfBasedDeriverKeyManagerTest.java
│   │                           │       ├── PrfBasedDeriverSecondTest.java
│   │                           │       ├── PrfBasedKeyDerivationKeyProtoSerializationTest.java
│   │                           │       └── PrfBasedKeyDeriverTest.java
│   │                           ├── mac/
│   │                           │   ├── AesCmacKeyManagerTest.java
│   │                           │   ├── AesCmacKeyTest.java
│   │                           │   ├── AesCmacParametersTest.java
│   │                           │   ├── BUILD.bazel
│   │                           │   ├── ChunkedMacTest.java
│   │                           │   ├── ChunkedMacWrapperTest.java
│   │                           │   ├── HmacKeyManagerTest.java
│   │                           │   ├── HmacKeyTest.java
│   │                           │   ├── HmacParametersTest.java
│   │                           │   ├── MacConfigTest.java
│   │                           │   ├── MacFactoryTest.java
│   │                           │   ├── MacFactoryWithoutWrapperRegisteredTest.java
│   │                           │   ├── MacKeyTemplatesTest.java
│   │                           │   ├── MacTest.java
│   │                           │   ├── MacWrapperTest.java
│   │                           │   ├── PredefinedMacParametersTest.java
│   │                           │   └── internal/
│   │                           │       ├── AesCmacProtoSerializationTest.java
│   │                           │       ├── AesUtilTest.java
│   │                           │       ├── BUILD.bazel
│   │                           │       ├── ChunkedAesCmacTest.java
│   │                           │       ├── ChunkedHmacTest.java
│   │                           │       ├── HmacProtoSerializationTest.java
│   │                           │       ├── LegacyFullMacIntegrationTest.java
│   │                           │       └── LegacyFullMacTest.java
│   │                           ├── monitoring/
│   │                           │   ├── BUILD.bazel
│   │                           │   ├── MonitoringAnnotationsTest.java
│   │                           │   └── MonitoringKeysetInfoTest.java
│   │                           ├── prf/
│   │                           │   ├── AesCmacPrfKeyManagerTest.java
│   │                           │   ├── AesCmacPrfKeyTest.java
│   │                           │   ├── AesCmacPrfParametersTest.java
│   │                           │   ├── BUILD.bazel
│   │                           │   ├── HkdfPrfKeyManagerTest.java
│   │                           │   ├── HkdfPrfKeyTest.java
│   │                           │   ├── HkdfPrfParametersTest.java
│   │                           │   ├── HmacPrfKeyManagerTest.java
│   │                           │   ├── HmacPrfKeyTest.java
│   │                           │   ├── HmacPrfParametersTest.java
│   │                           │   ├── PredefinedPrfParametersTest.java
│   │                           │   ├── PrfConfigTest.java
│   │                           │   ├── PrfKeyTemplatesTest.java
│   │                           │   ├── PrfSetWrapperTest.java
│   │                           │   ├── PrfTest.java
│   │                           │   └── internal/
│   │                           │       ├── AesCmacPrfProtoSerializationTest.java
│   │                           │       ├── BUILD.bazel
│   │                           │       ├── HkdfPrfProtoSerializationTest.java
│   │                           │       ├── HmacPrfProtoSerializationTest.java
│   │                           │       ├── LegacyFullPrfIntegrationTest.java
│   │                           │       ├── LegacyFullPrfTest.java
│   │                           │       └── LegacyHmacPrfTestKeyManagerTest.java
│   │                           ├── signature/
│   │                           │   ├── BUILD.bazel
│   │                           │   ├── EcdsaParametersTest.java
│   │                           │   ├── EcdsaPrivateKeyTest.java
│   │                           │   ├── EcdsaPublicKeyTest.java
│   │                           │   ├── EcdsaSignKeyManagerTest.java
│   │                           │   ├── EcdsaVerifyKeyManagerTest.java
│   │                           │   ├── Ed25519ParametersTest.java
│   │                           │   ├── Ed25519PrivateKeyManagerTest.java
│   │                           │   ├── Ed25519PrivateKeyTest.java
│   │                           │   ├── Ed25519PublicKeyManagerTest.java
│   │                           │   ├── Ed25519PublicKeyTest.java
│   │                           │   ├── KeyConversionTest.java
│   │                           │   ├── KeyManagerIntegrationTest.java
│   │                           │   ├── PredefinedSignatureParametersTest.java
│   │                           │   ├── PublicKeySignFactoryTest.java
│   │                           │   ├── PublicKeySignVerifyFactoryWithoutWrapperRegisteredTest.java
│   │                           │   ├── PublicKeySignWrapperTest.java
│   │                           │   ├── PublicKeyVerifyFactoryTest.java
│   │                           │   ├── PublicKeyVerifyWrapperTest.java
│   │                           │   ├── RsaSsaPkcs1ParametersTest.java
│   │                           │   ├── RsaSsaPkcs1PrivateKeyTest.java
│   │                           │   ├── RsaSsaPkcs1PublicKeyTest.java
│   │                           │   ├── RsaSsaPkcs1SignKeyManagerTest.java
│   │                           │   ├── RsaSsaPkcs1VerifyKeyManagerTest.java
│   │                           │   ├── RsaSsaPssParametersTest.java
│   │                           │   ├── RsaSsaPssPrivateKeyTest.java
│   │                           │   ├── RsaSsaPssPublicKeyTest.java
│   │                           │   ├── RsaSsaPssSignKeyManagerTest.java
│   │                           │   ├── RsaSsaPssVerifyKeyManagerTest.java
│   │                           │   ├── SignatureConfigTest.java
│   │                           │   ├── SignatureKeyTemplatesTest.java
│   │                           │   ├── SignaturePemKeysetReaderTest.java
│   │                           │   ├── SignatureTest.java
│   │                           │   └── internal/
│   │                           │       ├── BUILD.bazel
│   │                           │       ├── EcdsaProtoSerializationTest.java
│   │                           │       ├── Ed25519ProtoSerializationTest.java
│   │                           │       ├── LegacyFullSignTest.java
│   │                           │       ├── LegacyFullVerifyTest.java
│   │                           │       ├── RsaSsaPkcs1ProtoSerializationTest.java
│   │                           │       ├── RsaSsaPssProtoSerializationTest.java
│   │                           │       ├── SigUtilTest.java
│   │                           │       └── testing/
│   │                           │           ├── BUILD.bazel
│   │                           │           ├── LegacyPublicKeySignKeyManagerTest.java
│   │                           │           └── LegacyPublicKeyVerifyKeyManagerTest.java
│   │                           ├── streamingaead/
│   │                           │   ├── AesCtrHmacStreamingKeyManagerTest.java
│   │                           │   ├── AesCtrHmacStreamingKeyTest.java
│   │                           │   ├── AesCtrHmacStreamingParametersTest.java
│   │                           │   ├── AesGcmHkdfStreamingKeyManagerTest.java
│   │                           │   ├── AesGcmHkdfStreamingKeyTest.java
│   │                           │   ├── AesGcmHkdfStreamingParametersTest.java
│   │                           │   ├── BUILD.bazel
│   │                           │   ├── PredefinedStreamingAeadParametersTest.java
│   │                           │   ├── StreamingAeadConfigTest.java
│   │                           │   ├── StreamingAeadFactoryTest.java
│   │                           │   ├── StreamingAeadFactoryWithoutWrapperRegisteredTest.java
│   │                           │   ├── StreamingAeadKeyTemplatesTest.java
│   │                           │   ├── StreamingAeadTest.java
│   │                           │   ├── StreamingAeadUtilTest.java
│   │                           │   ├── StreamingAeadWrapperLegacyTest.java
│   │                           │   ├── StreamingAeadWrapperTest.java
│   │                           │   └── internal/
│   │                           │       ├── AesCtrHmacStreamingProtoSerializationTest.java
│   │                           │       ├── AesGcmHkdfStreamingProtoSerializationTest.java
│   │                           │       ├── BUILD.bazel
│   │                           │       ├── LegacyAesGcmHkdfStreamingTestKeyManagerTest.java
│   │                           │       ├── LegacyFullStreamingAeadIntegrationTest.java
│   │                           │       └── LegacyFullStreamingAeadTest.java
│   │                           ├── subtle/
│   │                           │   ├── AeadThreadSafetyTest.java
│   │                           │   ├── AesCtrHmacStreamingTest.java
│   │                           │   ├── AesCtrJceCipherTest.java
│   │                           │   ├── AesEaxJceTest.java
│   │                           │   ├── AesGcmHkdfStreamingTest.java
│   │                           │   ├── AesGcmJceTest.java
│   │                           │   ├── AesSivTest.java
│   │                           │   ├── BUILD.bazel
│   │                           │   ├── Base64Test.java
│   │                           │   ├── BytesTest.java
│   │                           │   ├── ChaCha20Poly1305Test.java
│   │                           │   ├── ChaCha20Test.java
│   │                           │   ├── DaeadThreadSafetyTest.java
│   │                           │   ├── EcdsaSignJceTest.java
│   │                           │   ├── EcdsaVerifyJceTest.java
│   │                           │   ├── Ed25519SignTest.java
│   │                           │   ├── Ed25519VerifyTest.java
│   │                           │   ├── EllipticCurvesTest.java
│   │                           │   ├── EncryptThenAuthenticateTest.java
│   │                           │   ├── EngineFactoryFipsTest.java
│   │                           │   ├── EngineFactoryTest.java
│   │                           │   ├── HkdfTest.java
│   │                           │   ├── KwpTest.java
│   │                           │   ├── PemKeyTypeTest.java
│   │                           │   ├── PrfAesCmacTest.java
│   │                           │   ├── PrfHmacJceTest.java
│   │                           │   ├── PrfMacTest.java
│   │                           │   ├── RandomTest.java
│   │                           │   ├── RewindableReadableByteChannelTest.java
│   │                           │   ├── RsaSsaPkcs1SignJceTest.java
│   │                           │   ├── RsaSsaPkcs1VerifyJceTest.java
│   │                           │   ├── RsaSsaPssSignJceTest.java
│   │                           │   ├── RsaSsaPssVerifyJceTest.java
│   │                           │   ├── SelfKeyTestValidatorsTest.java
│   │                           │   ├── SignatureThreadSafetyTest.java
│   │                           │   ├── StreamingAeadThreadSafetyTest.java
│   │                           │   ├── SubtleUtilTest.java
│   │                           │   ├── ValidatorsTest.java
│   │                           │   ├── X25519Test.java
│   │                           │   ├── XChaCha20Poly1305Test.java
│   │                           │   ├── XChaCha20Test.java
│   │                           │   └── prf/
│   │                           │       ├── BUILD.bazel
│   │                           │       ├── HkdfStreamingPrfTest.java
│   │                           │       └── PrfImplTest.java
│   │                           ├── testing/
│   │                           │   ├── BUILD.bazel
│   │                           │   ├── FakeKmsClientTest.java
│   │                           │   ├── HpkeTestUtilTest.java
│   │                           │   └── TestUtilTest.java
│   │                           ├── tinkkey/
│   │                           │   ├── BUILD.bazel
│   │                           │   ├── KeyAccessTest.java
│   │                           │   ├── KeyHandleTest.java
│   │                           │   ├── SecretKeyAccessTest.java
│   │                           │   └── internal/
│   │                           │       ├── BUILD.bazel
│   │                           │       └── ProtoKeyTest.java
│   │                           └── util/
│   │                               ├── BUILD.bazel
│   │                               ├── BytesTest.java
│   │                               ├── KeysDownloaderTest.java
│   │                               ├── SecretBigIntegerTest.java
│   │                               └── SecretBytesTest.java
│   ├── src_android/
│   │   └── main/
│   │       └── java/
│   │           └── com/
│   │               └── google/
│   │                   └── crypto/
│   │                       └── tink/
│   │                           └── internal/
│   │                               ├── BUILD.bazel
│   │                               └── BuildDispatchedCode.java
│   ├── template_rule.bzl
│   ├── testdata/
│   │   ├── BUILD.bazel
│   │   ├── aws/
│   │   │   ├── BUILD.bazel
│   │   │   ├── README.md
│   │   │   ├── access_keys_bad.csv
│   │   │   ├── credentials.cred
│   │   │   ├── credentials.csv
│   │   │   ├── credentials.ini
│   │   │   ├── credentials_bad.csv
│   │   │   ├── credentials_bad.ini
│   │   │   ├── key_arn.txt
│   │   │   └── key_arn_bad.txt
│   │   ├── gcp/
│   │   │   ├── BUILD.bazel
│   │   │   ├── README.md
│   │   │   ├── credential.json
│   │   │   ├── credential_bad.json
│   │   │   ├── key_name.txt
│   │   │   └── key_name_bad.txt
│   │   ├── keysets/
│   │   │   └── BUILD.bazel
│   │   └── testvectors/
│   │       ├── BUILD.bazel
│   │       └── hpke_boringssl.json
│   ├── tink_java_deps.bzl
│   ├── tink_java_deps_init.bzl
│   ├── tink_version.bzl
│   └── tools/
│       ├── BUILD.bazel
│       ├── check_deps.bzl
│       ├── gen_java_test_rules.bzl
│       ├── gen_maven_jar_rules.bzl
│       ├── jar_jar.bzl
│       ├── java_single_jar.bzl
│       ├── javadoc.bzl
│       └── refaster/
│           ├── README.md
│           └── java/
│               └── com/
│                   └── google/
│                       ├── tink1_templates/
│                       │   └── AllChanges.java
│                       └── tinkuser/
│                           ├── TinkUser.java
│                           └── TinkUser.java_expected
├── kokoro/
│   ├── README.md
│   ├── gcp_ubuntu_per_language/
│   │   ├── cc/
│   │   │   ├── bazel/
│   │   │   │   └── run_tests.sh
│   │   │   ├── bazel_fips/
│   │   │   │   └── run_tests.sh
│   │   │   ├── cmake/
│   │   │   │   └── run_tests.sh
│   │   │   ├── cmake_openssl/
│   │   │   │   └── run_tests.sh
│   │   │   └── examples/
│   │   │       ├── cmake/
│   │   │       │   └── run_tests.sh
│   │   │       └── cmake_openssl/
│   │   │           └── run_tests.sh
│   │   ├── go/
│   │   │   ├── bazel/
│   │   │   │   └── run_tests.sh
│   │   │   └── gomod/
│   │   │       └── run_tests.sh
│   │   ├── java_src/
│   │   │   └── run_tests.sh
│   │   └── python/
│   │       └── pip/
│   │           └── run_tests.sh
│   ├── macos_external/
│   │   ├── cc/
│   │   │   ├── bazel/
│   │   │   │   └── run_tests.sh
│   │   │   ├── cmake/
│   │   │   │   └── run_tests.sh
│   │   │   └── examples/
│   │   │       └── cmake/
│   │   │           └── run_tests.sh
│   │   ├── go/
│   │   │   ├── bazel/
│   │   │   │   └── run_tests.sh
│   │   │   └── gomod/
│   │   │       └── run_tests.sh
│   │   ├── java_src/
│   │   │   └── run_tests.sh
│   │   ├── python/
│   │   │   └── pip/
│   │   │       └── run_tests.sh
│   │   └── tools/
│   │       └── run_tests.sh
│   ├── run_tests.sh
│   └── testutils/
│       ├── check_go_generated_files_up_to_date.sh
│       ├── copy_credentials.sh
│       ├── create_main_build_file.py
│       ├── install_cmake.sh
│       ├── install_go.sh
│       ├── install_openssl.sh
│       ├── install_protoc.sh
│       ├── install_python3.sh
│       ├── install_tink_via_pip.sh
│       ├── install_vault.sh
│       ├── run_bazel_tests.sh
│       ├── run_cmake_tests.sh
│       ├── run_go_mod_tests.sh
│       ├── run_hcvault_test_server.sh
│       ├── test_utils.sh
│       ├── update_android_sdk.sh
│       └── upgrade_gcc.sh
├── passing_test.sh
├── proto/
│   ├── BUILD.bazel
│   ├── CMakeLists.txt
│   ├── aes_cmac.proto
│   ├── aes_cmac_prf.proto
│   ├── aes_ctr.proto
│   ├── aes_ctr_hmac_aead.proto
│   ├── aes_ctr_hmac_streaming.proto
│   ├── aes_eax.proto
│   ├── aes_gcm.proto
│   ├── aes_gcm_hkdf_streaming.proto
│   ├── aes_gcm_siv.proto
│   ├── aes_siv.proto
│   ├── chacha20_poly1305.proto
│   ├── common.proto
│   ├── config.proto
│   ├── ecdsa.proto
│   ├── ecies_aead_hkdf.proto
│   ├── ed25519.proto
│   ├── empty.proto
│   ├── experimental/
│   │   └── pqcrypto/
│   │       ├── BUILD.bazel
│   │       ├── cecpq2_aead_hkdf.proto
│   │       ├── dilithium.proto
│   │       ├── falcon.proto
│   │       ├── slh_dsa.proto
│   │       └── sphincs.proto
│   ├── hkdf_prf.proto
│   ├── hmac.proto
│   ├── hmac_prf.proto
│   ├── hpke.proto
│   ├── jwt_ecdsa.proto
│   ├── jwt_hmac.proto
│   ├── jwt_rsa_ssa_pkcs1.proto
│   ├── jwt_rsa_ssa_pss.proto
│   ├── kms_aead.proto
│   ├── kms_envelope.proto
│   ├── prf_based_deriver.proto
│   ├── rsa_ssa_pkcs1.proto
│   ├── rsa_ssa_pss.proto
│   ├── test_proto.proto
│   ├── tink.proto
│   └── xchacha20_poly1305.proto
├── python/
│   ├── .bazelignore
│   ├── .bazelrc
│   ├── .bazelversion
│   ├── BUILD.bazel
│   ├── MANIFEST.in
│   ├── README.md
│   ├── VERSION
│   ├── WORKSPACE
│   ├── examples/
│   │   ├── .bazelrc
│   │   ├── .bazelversion
│   │   ├── BUILD.bazel
│   │   ├── WORKSPACE
│   │   ├── aead/
│   │   │   ├── BUILD.bazel
│   │   │   ├── README.md
│   │   │   ├── aead_basic.py
│   │   │   ├── aead_basic_test.py
│   │   │   ├── aead_cli.py
│   │   │   ├── aead_cli_test.sh
│   │   │   └── aead_test_keyset.json
│   │   ├── cleartext_keyset/
│   │   │   ├── BUILD.bazel
│   │   │   ├── README.md
│   │   │   ├── cleartext_keyset_cli.py
│   │   │   └── cleartext_keyset_cli_test.sh
│   │   ├── deterministic_aead/
│   │   │   ├── BUILD.bazel
│   │   │   ├── README.md
│   │   │   ├── deterministic_aead_basic.py
│   │   │   ├── deterministic_aead_basic_test.py
│   │   │   ├── deterministic_aead_cli.py
│   │   │   ├── deterministic_aead_cli_test.sh
│   │   │   └── deterministic_aead_test_keyset.json
│   │   ├── encrypted_keyset/
│   │   │   ├── BUILD.bazel
│   │   │   ├── README.md
│   │   │   ├── encrypted_keyset_cli.py
│   │   │   └── encrypted_keyset_cli_test.sh
│   │   ├── envelope_aead/
│   │   │   ├── BUILD.bazel
│   │   │   ├── README.md
│   │   │   ├── envelope_cli.py
│   │   │   └── envelope_cli_test.sh
│   │   ├── gcs/
│   │   │   ├── BUILD.bazel
│   │   │   ├── README.md
│   │   │   ├── gcs_envelope_aead_cli.py
│   │   │   └── gcs_envelope_aead_cli_test.sh
│   │   ├── hybrid/
│   │   │   ├── BUILD.bazel
│   │   │   ├── README.md
│   │   │   ├── hybrid_basic.py
│   │   │   ├── hybrid_basic_test.py
│   │   │   ├── hybrid_cli.py
│   │   │   ├── hybrid_cli_test.sh
│   │   │   ├── hybrid_test_private_keyset.json
│   │   │   └── hybrid_test_public_keyset.json
│   │   ├── jwt/
│   │   │   ├── BUILD.bazel
│   │   │   ├── README.md
│   │   │   ├── jwt_generate_public_jwk_set.py
│   │   │   ├── jwt_sign_cli.py
│   │   │   ├── jwt_signature_test.sh
│   │   │   ├── jwt_test_private_keyset.json
│   │   │   ├── jwt_test_public_keyset.json
│   │   │   └── jwt_verify_cli.py
│   │   ├── mac/
│   │   │   ├── BUILD.bazel
│   │   │   ├── README.md
│   │   │   ├── mac_basic.py
│   │   │   ├── mac_basic_test.py
│   │   │   ├── mac_cli.py
│   │   │   ├── mac_cli_test.sh
│   │   │   └── mac_test_keyset.json
│   │   ├── requirements.in
│   │   ├── requirements.txt
│   │   ├── signature/
│   │   │   ├── BUILD.bazel
│   │   │   ├── README.md
│   │   │   ├── signature_basic.py
│   │   │   ├── signature_basic_test.py
│   │   │   ├── signature_cli.py
│   │   │   ├── signature_cli_test.sh
│   │   │   ├── signature_test_private_keyset.json
│   │   │   └── signature_test_public_keyset.json
│   │   ├── streaming_aead/
│   │   │   ├── BUILD.bazel
│   │   │   ├── README.md
│   │   │   ├── streaming_aead_cli.py
│   │   │   ├── streaming_aead_cli_test.sh
│   │   │   └── streaming_aead_keyset.json
│   │   ├── testdata/
│   │   │   └── gcp/
│   │   │       ├── BUILD.bazel
│   │   │       ├── README.md
│   │   │       ├── credential.json
│   │   │       ├── credential_bad.json
│   │   │       ├── key_name.txt
│   │   │       └── key_name_bad.txt
│   │   └── walkthrough/
│   │       ├── BUILD.bazel
│   │       ├── create_keyset.py
│   │       ├── create_keyset_test.py
│   │       ├── load_cleartext_keyset.py
│   │       ├── load_cleartext_keyset_test.py
│   │       ├── load_encrypted_keyset.py
│   │       ├── load_encrypted_keyset_test.py
│   │       ├── obtain_and_use_a_primitive.py
│   │       ├── obtain_and_use_a_primitive_test.py
│   │       ├── write_cleartext_keyset.py
│   │       ├── write_cleartext_keyset_test.py
│   │       ├── write_keyset.py
│   │       └── write_keyset_test.py
│   ├── requirements.in
│   ├── requirements.txt
│   ├── requirements_all.txt
│   ├── requirements_awskms.in
│   ├── requirements_gcpkms.in
│   ├── requirements_hcvault.in
│   ├── setup.py
│   ├── testdata/
│   │   ├── aws/
│   │   │   ├── BUILD.bazel
│   │   │   ├── README.md
│   │   │   ├── access_keys_bad.csv
│   │   │   ├── credentials.cred
│   │   │   ├── credentials.csv
│   │   │   ├── credentials.ini
│   │   │   ├── credentials_bad.csv
│   │   │   ├── credentials_bad.ini
│   │   │   ├── key_arn.txt
│   │   │   └── key_arn_bad.txt
│   │   └── gcp/
│   │       ├── BUILD.bazel
│   │       ├── README.md
│   │       ├── credential.json
│   │       ├── credential_bad.json
│   │       ├── key_name.txt
│   │       └── key_name_bad.txt
│   ├── tink/
│   │   ├── BUILD.bazel
│   │   ├── __init__.py
│   │   ├── _insecure_keyset_handle.py
│   │   ├── _insecure_keyset_handle_test.py
│   │   ├── _json_proto_keyset_format.py
│   │   ├── _json_proto_keyset_format_test.py
│   │   ├── _keyset_handle.py
│   │   ├── _keyset_handle_test.py
│   │   ├── _keyset_reader.py
│   │   ├── _keyset_reader_test.py
│   │   ├── _keyset_writer.py
│   │   ├── _keyset_writer_test.py
│   │   ├── _kms_clients.py
│   │   ├── _kms_clients_test.py
│   │   ├── _proto_keyset_format.py
│   │   ├── _proto_keyset_format_test.py
│   │   ├── _secret_key_access.py
│   │   ├── aead/
│   │   │   ├── BUILD.bazel
│   │   │   ├── __init__.py
│   │   │   ├── _aead.py
│   │   │   ├── _aead_key_manager.py
│   │   │   ├── _aead_key_manager_test.py
│   │   │   ├── _aead_key_templates.py
│   │   │   ├── _aead_key_templates_test.py
│   │   │   ├── _aead_wrapper.py
│   │   │   ├── _aead_wrapper_test.py
│   │   │   ├── _kms_aead_key_manager.py
│   │   │   ├── _kms_aead_key_manager_test.py
│   │   │   ├── _kms_envelope_aead.py
│   │   │   └── _kms_envelope_aead_test.py
│   │   ├── cc/
│   │   │   ├── BUILD.bazel
│   │   │   ├── cc_hpke_config.cc
│   │   │   ├── cc_hpke_config.h
│   │   │   ├── cc_jwt_config.cc
│   │   │   ├── cc_jwt_config.h
│   │   │   ├── cc_key_manager.h
│   │   │   ├── cc_streaming_aead_wrappers.cc
│   │   │   ├── cc_streaming_aead_wrappers.h
│   │   │   ├── cc_streaming_aead_wrappers_test.cc
│   │   │   ├── cc_tink_config.cc
│   │   │   ├── cc_tink_config.h
│   │   │   ├── input_stream_adapter.cc
│   │   │   ├── input_stream_adapter.h
│   │   │   ├── input_stream_adapter_test.cc
│   │   │   ├── output_stream_adapter.cc
│   │   │   ├── output_stream_adapter.h
│   │   │   ├── output_stream_adapter_test.cc
│   │   │   ├── pybind/
│   │   │   │   ├── BUILD.bazel
│   │   │   │   ├── aead.cc
│   │   │   │   ├── aead.h
│   │   │   │   ├── cc_hpke_config.cc
│   │   │   │   ├── cc_hpke_config.h
│   │   │   │   ├── cc_jwt_config.cc
│   │   │   │   ├── cc_jwt_config.h
│   │   │   │   ├── cc_key_manager.cc
│   │   │   │   ├── cc_key_manager.h
│   │   │   │   ├── cc_key_manager_test.py
│   │   │   │   ├── cc_streaming_aead_wrappers.cc
│   │   │   │   ├── cc_streaming_aead_wrappers.h
│   │   │   │   ├── cc_tink_config.cc
│   │   │   │   ├── cc_tink_config.h
│   │   │   │   ├── cc_tink_config_test.py
│   │   │   │   ├── deterministic_aead.cc
│   │   │   │   ├── deterministic_aead.h
│   │   │   │   ├── hybrid_decrypt.cc
│   │   │   │   ├── hybrid_decrypt.h
│   │   │   │   ├── hybrid_encrypt.cc
│   │   │   │   ├── hybrid_encrypt.h
│   │   │   │   ├── import_helper.cc
│   │   │   │   ├── import_helper.h
│   │   │   │   ├── input_stream_adapter.cc
│   │   │   │   ├── input_stream_adapter.h
│   │   │   │   ├── mac.cc
│   │   │   │   ├── mac.h
│   │   │   │   ├── output_stream_adapter.cc
│   │   │   │   ├── output_stream_adapter.h
│   │   │   │   ├── prf.cc
│   │   │   │   ├── prf.h
│   │   │   │   ├── public_key_sign.cc
│   │   │   │   ├── public_key_sign.h
│   │   │   │   ├── public_key_verify.cc
│   │   │   │   ├── public_key_verify.h
│   │   │   │   ├── python_file_object_adapter.cc
│   │   │   │   ├── python_file_object_adapter.h
│   │   │   │   ├── streaming_aead.cc
│   │   │   │   ├── streaming_aead.h
│   │   │   │   ├── tink_bindings.cc
│   │   │   │   └── tink_exception.h
│   │   │   ├── python_file_object_adapter.h
│   │   │   ├── python_input_stream.cc
│   │   │   ├── python_input_stream.h
│   │   │   ├── python_input_stream_test.cc
│   │   │   ├── python_output_stream.cc
│   │   │   ├── python_output_stream.h
│   │   │   ├── python_output_stream_test.cc
│   │   │   └── test_util.h
│   │   ├── cleartext_keyset_handle.py
│   │   ├── cleartext_keyset_handle_test.py
│   │   ├── core/
│   │   │   ├── BUILD.bazel
│   │   │   ├── __init__.py
│   │   │   ├── _crypto_format.py
│   │   │   ├── _crypto_format_test.py
│   │   │   ├── _key_manager.py
│   │   │   ├── _primitive_set.py
│   │   │   ├── _primitive_set_test.py
│   │   │   ├── _primitive_wrapper.py
│   │   │   ├── _registry.py
│   │   │   ├── _registry_test.py
│   │   │   └── _tink_error.py
│   │   ├── daead/
│   │   │   ├── BUILD.bazel
│   │   │   ├── __init__.py
│   │   │   ├── _deterministic_aead.py
│   │   │   ├── _deterministic_aead_key_manager.py
│   │   │   ├── _deterministic_aead_key_manager_test.py
│   │   │   ├── _deterministic_aead_key_templates.py
│   │   │   ├── _deterministic_aead_key_templates_test.py
│   │   │   ├── _deterministic_aead_wrapper.py
│   │   │   └── _deterministic_aead_wrapper_test.py
│   │   ├── hybrid/
│   │   │   ├── BUILD.bazel
│   │   │   ├── __init__.py
│   │   │   ├── _hybrid_decrypt.py
│   │   │   ├── _hybrid_encrypt.py
│   │   │   ├── _hybrid_key_manager.py
│   │   │   ├── _hybrid_key_manager_test.py
│   │   │   ├── _hybrid_key_templates.py
│   │   │   ├── _hybrid_key_templates_test.py
│   │   │   ├── _hybrid_wrapper.py
│   │   │   └── _hybrid_wrapper_test.py
│   │   ├── integration/
│   │   │   ├── __init__.py
│   │   │   ├── awskms/
│   │   │   │   ├── BUILD.bazel
│   │   │   │   ├── __init__.py
│   │   │   │   ├── _aws_kms_client.py
│   │   │   │   ├── _aws_kms_client_test.py
│   │   │   │   └── _aws_kms_integration_test.py
│   │   │   ├── gcpkms/
│   │   │   │   ├── BUILD.bazel
│   │   │   │   ├── __init__.py
│   │   │   │   ├── _gcp_kms_aead_test.py
│   │   │   │   ├── _gcp_kms_client.py
│   │   │   │   ├── _gcp_kms_client_integration_test.py
│   │   │   │   ├── _gcp_kms_client_test.py
│   │   │   │   └── _gcp_kms_integration_test.py
│   │   │   └── hcvault/
│   │   │       ├── BUILD.bazel
│   │   │       ├── __init__.py
│   │   │       ├── _hcvault_kms_aead.py
│   │   │       ├── _hcvault_kms_aead_test.py
│   │   │       └── _hcvault_kms_integration_test.py
│   │   ├── internal/
│   │   │   ├── BUILD.bazel
│   │   │   ├── __init__.py
│   │   │   ├── big_integer_util.py
│   │   │   └── big_integer_util_test.py
│   │   ├── jwt/
│   │   │   ├── BUILD.bazel
│   │   │   ├── __init__.py
│   │   │   ├── _json_util.py
│   │   │   ├── _json_util_test.py
│   │   │   ├── _jwk_set_converter.py
│   │   │   ├── _jwk_set_converter_test.py
│   │   │   ├── _jwt_error.py
│   │   │   ├── _jwt_format.py
│   │   │   ├── _jwt_format_test.py
│   │   │   ├── _jwt_hmac_key_manager.py
│   │   │   ├── _jwt_hmac_key_manager_test.py
│   │   │   ├── _jwt_key_templates.py
│   │   │   ├── _jwt_key_templates_test.py
│   │   │   ├── _jwt_mac.py
│   │   │   ├── _jwt_mac_wrapper.py
│   │   │   ├── _jwt_mac_wrapper_test.py
│   │   │   ├── _jwt_public_key_sign.py
│   │   │   ├── _jwt_public_key_verify.py
│   │   │   ├── _jwt_signature_key_manager.py
│   │   │   ├── _jwt_signature_key_manager_test.py
│   │   │   ├── _jwt_signature_wrappers.py
│   │   │   ├── _jwt_signature_wrappers_test.py
│   │   │   ├── _jwt_validator.py
│   │   │   ├── _jwt_validator_test.py
│   │   │   ├── _raw_jwt.py
│   │   │   ├── _raw_jwt_test.py
│   │   │   ├── _verified_jwt.py
│   │   │   └── _verified_jwt_test.py
│   │   ├── mac/
│   │   │   ├── BUILD.bazel
│   │   │   ├── __init__.py
│   │   │   ├── _mac.py
│   │   │   ├── _mac_key_manager.py
│   │   │   ├── _mac_key_manager_test.py
│   │   │   ├── _mac_key_templates.py
│   │   │   ├── _mac_key_templates_test.py
│   │   │   ├── _mac_wrapper.py
│   │   │   └── _mac_wrapper_test.py
│   │   ├── prf/
│   │   │   ├── BUILD.bazel
│   │   │   ├── __init__.py
│   │   │   ├── _prf_key_manager.py
│   │   │   ├── _prf_key_manager_test.py
│   │   │   ├── _prf_key_templates.py
│   │   │   ├── _prf_set.py
│   │   │   ├── _prf_set_wrapper.py
│   │   │   └── _prf_set_wrapper_test.py
│   │   ├── proto/
│   │   │   ├── BUILD.bazel
│   │   │   ├── __init__.py
│   │   │   ├── aes_cmac.proto
│   │   │   ├── aes_cmac_prf.proto
│   │   │   ├── aes_ctr.proto
│   │   │   ├── aes_ctr_hmac_aead.proto
│   │   │   ├── aes_ctr_hmac_streaming.proto
│   │   │   ├── aes_eax.proto
│   │   │   ├── aes_gcm.proto
│   │   │   ├── aes_gcm_hkdf_streaming.proto
│   │   │   ├── aes_gcm_siv.proto
│   │   │   ├── aes_siv.proto
│   │   │   ├── chacha20_poly1305.proto
│   │   │   ├── common.proto
│   │   │   ├── config.proto
│   │   │   ├── ecdsa.proto
│   │   │   ├── ecies_aead_hkdf.proto
│   │   │   ├── ed25519.proto
│   │   │   ├── empty.proto
│   │   │   ├── hkdf_prf.proto
│   │   │   ├── hmac.proto
│   │   │   ├── hmac_prf.proto
│   │   │   ├── hpke.proto
│   │   │   ├── jwt_ecdsa.proto
│   │   │   ├── jwt_hmac.proto
│   │   │   ├── jwt_rsa_ssa_pkcs1.proto
│   │   │   ├── jwt_rsa_ssa_pss.proto
│   │   │   ├── kms_aead.proto
│   │   │   ├── kms_envelope.proto
│   │   │   ├── prf_based_deriver.proto
│   │   │   ├── rsa_ssa_pkcs1.proto
│   │   │   ├── rsa_ssa_pss.proto
│   │   │   ├── test_proto.proto
│   │   │   ├── tink.proto
│   │   │   └── xchacha20_poly1305.proto
│   │   ├── secret_key_access.py
│   │   ├── secret_key_access_import_test.py
│   │   ├── secret_key_access_test.py
│   │   ├── signature/
│   │   │   ├── BUILD.bazel
│   │   │   ├── __init__.py
│   │   │   ├── _public_key_sign.py
│   │   │   ├── _public_key_verify.py
│   │   │   ├── _signature_key_manager.py
│   │   │   ├── _signature_key_manager_test.py
│   │   │   ├── _signature_key_templates.py
│   │   │   ├── _signature_wrapper.py
│   │   │   └── _signature_wrapper_test.py
│   │   ├── streaming_aead/
│   │   │   ├── BUILD.bazel
│   │   │   ├── __init__.py
│   │   │   ├── _decrypting_stream.py
│   │   │   ├── _decrypting_stream_test.py
│   │   │   ├── _encrypting_stream.py
│   │   │   ├── _encrypting_stream_test.py
│   │   │   ├── _file_object_adapter.py
│   │   │   ├── _file_object_adapter_test.py
│   │   │   ├── _pybind11_python_file_object_adapter_test.py
│   │   │   ├── _raw_streaming_aead.py
│   │   │   ├── _rewindable_input_stream.py
│   │   │   ├── _rewindable_input_stream_test.py
│   │   │   ├── _streaming_aead.py
│   │   │   ├── _streaming_aead_key_manager.py
│   │   │   ├── _streaming_aead_key_manager_test.py
│   │   │   ├── _streaming_aead_key_templates.py
│   │   │   ├── _streaming_aead_key_templates_test.py
│   │   │   ├── _streaming_aead_test.py
│   │   │   ├── _streaming_aead_wrapper.py
│   │   │   └── _streaming_aead_wrapper_test.py
│   │   ├── testing/
│   │   │   ├── BUILD.bazel
│   │   │   ├── __init__.py
│   │   │   ├── bytes_io.py
│   │   │   ├── bytes_io_test.py
│   │   │   ├── fake_kms.py
│   │   │   ├── fake_kms_test.py
│   │   │   ├── helper.py
│   │   │   ├── helper_test.py
│   │   │   ├── keyset_builder.py
│   │   │   └── keyset_builder_test.py
│   │   ├── tink_config.py
│   │   └── tink_config_test.py
│   ├── tink_py_deps.bzl
│   ├── tink_py_deps_init.bzl
│   └── tools/
│       ├── BUILD.bazel
│       └── distribution/
│           ├── README.md
│           ├── build_linux_binary_wheels.sh
│           ├── create_release.sh
│           ├── requirements.in
│           ├── requirements.txt
│           └── test_linux_binary_wheels.sh
├── testdata/
│   ├── BUILD.bazel
│   ├── aws/
│   │   ├── BUILD.bazel
│   │   ├── README.md
│   │   ├── access_keys_bad.csv
│   │   ├── credentials.cred
│   │   ├── credentials.csv
│   │   ├── credentials.ini
│   │   ├── credentials_bad.csv
│   │   ├── credentials_bad.ini
│   │   ├── key_arn.txt
│   │   └── key_arn_bad.txt
│   ├── gcp/
│   │   ├── BUILD.bazel
│   │   ├── README.md
│   │   ├── credential.json
│   │   ├── credential_bad.json
│   │   ├── key_name.txt
│   │   └── key_name_bad.txt
│   ├── keysets/
│   │   └── BUILD.bazel
│   └── testvectors/
│       ├── BUILD.bazel
│       └── hpke_boringssl.json
├── testing/
│   └── cross_language/
│       └── testdata/
│           ├── aws/
│           │   ├── BUILD.bazel
│           │   ├── README.md
│           │   ├── access_keys_bad.csv
│           │   ├── credentials.cred
│           │   ├── credentials.csv
│           │   ├── credentials.ini
│           │   ├── credentials_bad.csv
│           │   ├── credentials_bad.ini
│           │   ├── key_arn.txt
│           │   └── key_arn_bad.txt
│           └── gcp/
│               ├── BUILD.bazel
│               ├── README.md
│               ├── credential.json
│               ├── credential_bad.json
│               ├── key_name.txt
│               └── key_name_bad.txt
├── tinkey.rb
└── tools/
    ├── .bazelrc
    ├── .bazelversion
    ├── BUILD.bazel
    ├── WORKSPACE
    ├── build_defs/
    │   └── BUILD.bazel
    ├── coverage.sh
    ├── release_tinkey.sh
    ├── requirements.txt
    └── tinkey/
        ├── BUILD.bazel
        ├── README.md
        └── src/
            ├── main/
            │   └── java/
            │       └── com/
            │           └── google/
            │               └── crypto/
            │                   └── tink/
            │                       └── tinkey/
            │                           ├── AddKeyCommand.java
            │                           ├── AddRotateOptions.java
            │                           ├── BUILD.bazel
            │                           ├── Command.java
            │                           ├── ConvertKeysetCommand.java
            │                           ├── ConvertKeysetOptions.java
            │                           ├── CreateKeysetCommand.java
            │                           ├── CreateKeysetOptions.java
            │                           ├── CreatePublicKeysetCommand.java
            │                           ├── DeleteKeyCommand.java
            │                           ├── DestroyKeyCommand.java
            │                           ├── DisableKeyCommand.java
            │                           ├── EnableKeyCommand.java
            │                           ├── HelpCommand.java
            │                           ├── InOptions.java
            │                           ├── InputStreamHandler.java
            │                           ├── KeyIdHandler.java
            │                           ├── KeyIdOptions.java
            │                           ├── KeyTemplateHandler.java
            │                           ├── KmsClientsFactory.java
            │                           ├── ListKeyTemplatesCommand.java
            │                           ├── ListKeysetCommand.java
            │                           ├── OutOptions.java
            │                           ├── OutputStreamHandler.java
            │                           ├── PromoteKeyCommand.java
            │                           ├── RotateKeysetCommand.java
            │                           ├── Tinkey.java
            │                           ├── TinkeyCommands.java
            │                           ├── TinkeyKeyTemplates.java
            │                           ├── TinkeyTestKmsClient.java
            │                           └── TinkeyUtil.java
            └── test/
                └── java/
                    └── com/
                        └── google/
                            └── crypto/
                                └── tink/
                                    └── tinkey/
                                        ├── AddKeyCommandTest.java
                                        ├── BUILD.bazel
                                        ├── ConvertKeysetCommandTest.java
                                        ├── CreateKeysetCommandTest.java
                                        ├── CreatePublicKeysetCommandTest.java
                                        ├── KmsClientsFactoryTest.java
                                        ├── RotateKeysetCommandTest.java
                                        └── TinkeyTestKmsClientTest.java
Download .txt
Showing preview only (1,072K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (11720 symbols across 1610 files)

FILE: cc/aead.h
  function namespace (line 25) | namespace crypto {

FILE: cc/aead/aead_config.cc
  type crypto (line 40) | namespace crypto {
    type tink (line 41) | namespace tink {

FILE: cc/aead/aead_config.h
  function namespace (line 24) | namespace crypto {

FILE: cc/aead/aead_config_test.cc
  type crypto (line 65) | namespace crypto {
    type tink (line 66) | namespace tink {
      class AeadConfigTest (line 80) | class AeadConfigTest : public Test {
        method SetUp (line 82) | void SetUp() override {
      function TEST_F (line 88) | TEST_F(AeadConfigTest, RegisterWorks) {
      function TEST_F (line 103) | TEST_F(AeadConfigTest, WrappersRegistered) {
      function TEST_F (line 122) | TEST_F(AeadConfigTest, RegisterNonFipsTemplates) {
      function TEST_F (line 143) | TEST_F(AeadConfigTest, RegisterFipsValidTemplates) {
      function TEST_F (line 164) | TEST_F(AeadConfigTest, RegisterFailsIfBoringCryptoNotAvailable) {
      function TEST_F (line 176) | TEST_F(AeadConfigTest, AesGcmProtoParamsSerializationRegistered) {
      function TEST_F (line 220) | TEST_F(AeadConfigTest, AesGcmProtoKeySerializationRegistered) {
      function TEST_F (line 278) | TEST_F(AeadConfigTest, AesGcmSivProtoParamsSerializationRegistered) {
      function TEST_F (line 317) | TEST_F(AeadConfigTest, AesGcmSivProtoKeySerializationRegistered) {
      function TEST_F (line 370) | TEST_F(AeadConfigTest, AesEaxProtoParamsSerializationRegistered) {
      function TEST_F (line 414) | TEST_F(AeadConfigTest, AesEaxProtoKeySerializationRegistered) {
      function TEST_F (line 473) | TEST_F(AeadConfigTest, XChaCha20Poly1305ProtoParamsSerializationRegi...
      function TEST_F (line 514) | TEST_F(AeadConfigTest, XChaCha20Poly1305ProtoKeySerializationRegiste...
      function TEST_F (line 560) | TEST_F(AeadConfigTest, AesCtrHmacAeadProtoParamsSerializationRegiste...
      function TEST_F (line 607) | TEST_F(AeadConfigTest, AesCtrHmacAeadProtoKeySerializationRegistered) {

FILE: cc/aead/aead_factory.cc
  type crypto (line 30) | namespace crypto {
    type tink (line 31) | namespace tink {

FILE: cc/aead/aead_factory.h
  function namespace (line 28) | namespace crypto {

FILE: cc/aead/aead_factory_test.cc
  type crypto (line 40) | namespace crypto {
    type tink (line 41) | namespace tink {
      class AeadFactoryTest (line 54) | class AeadFactoryTest : public ::testing::Test {
      function TEST_F (line 57) | TEST_F(AeadFactoryTest, testBasic) {
      function TEST_F (line 67) | TEST_F(AeadFactoryTest, testPrimitive) {

FILE: cc/aead/aead_key.h
  function namespace (line 24) | namespace crypto {

FILE: cc/aead/aead_key_templates.cc
  type crypto (line 41) | namespace crypto {
    type tink (line 42) | namespace tink {
      function KeyTemplate (line 46) | KeyTemplate* NewAesEaxKeyTemplate(int key_size_in_bytes, int iv_size...
      function KeyTemplate (line 58) | KeyTemplate* NewAesGcmKeyTemplate(int key_size_in_bytes,
      function KeyTemplate (line 70) | KeyTemplate* NewAesGcmSivKeyTemplate(int key_size_in_bytes) {
      function KeyTemplate (line 81) | KeyTemplate* NewAesCtrHmacAeadKeyTemplate(int aes_key_size_in_bytes,
      function KeyTemplate (line 102) | KeyTemplate* NewXChaCha20Poly1305KeyTemplate() {
      function KeyTemplate (line 113) | const KeyTemplate& AeadKeyTemplates::Aes128Eax() {
      function KeyTemplate (line 121) | const KeyTemplate& AeadKeyTemplates::Aes256Eax() {
      function KeyTemplate (line 129) | const KeyTemplate& AeadKeyTemplates::Aes128Gcm() {
      function KeyTemplate (line 136) | const KeyTemplate& AeadKeyTemplates::Aes128GcmNoPrefix() {
      function KeyTemplate (line 143) | const KeyTemplate& AeadKeyTemplates::Aes256Gcm() {
      function KeyTemplate (line 150) | const KeyTemplate& AeadKeyTemplates::Aes256GcmNoPrefix() {
      function KeyTemplate (line 157) | const KeyTemplate& AeadKeyTemplates::Aes128GcmSiv() {
      function KeyTemplate (line 164) | const KeyTemplate& AeadKeyTemplates::Aes256GcmSiv() {
      function KeyTemplate (line 171) | const KeyTemplate& AeadKeyTemplates::Aes128CtrHmacSha256() {
      function KeyTemplate (line 181) | const KeyTemplate& AeadKeyTemplates::Aes256CtrHmacSha256() {
      function KeyTemplate (line 191) | const KeyTemplate& AeadKeyTemplates::XChaCha20Poly1305() {
      function KeyTemplate (line 197) | KeyTemplate AeadKeyTemplates::KmsEnvelopeAead(absl::string_view kek_...

FILE: cc/aead/aead_key_templates.h
  function namespace (line 24) | namespace crypto {

FILE: cc/aead/aead_key_templates_test.cc
  type crypto (line 63) | namespace crypto {
    type tink (line 64) | namespace tink {
      function TEST (line 71) | TEST(AeadKeyTemplatesTest, testAesEaxKeyTemplates) {
      function TEST (line 121) | TEST(Aes128GcmNoPrefix, Basics) {
      function TEST (line 128) | TEST(Aes128GcmNoPrefix, OutputPrefixType) {
      function TEST (line 133) | TEST(Aes128GcmNoPrefix, MultipleCallsSameReference) {
      function TEST (line 138) | TEST(Aes128GcmNoPrefix, WorksWithKeyTypeManager) {
      function TEST (line 145) | TEST(Aes128GcmNoPrefix, CheckValues) {
      function TEST (line 152) | TEST(Aes256GcmNoPrefix, Basics) {
      function TEST (line 159) | TEST(Aes256GcmNoPrefix, OutputPrefixType) {
      function TEST (line 164) | TEST(Aes256GcmNoPrefix, MultipleCallsSameReference) {
      function TEST (line 169) | TEST(Aes256GcmNoPrefix, WorksWithKeyTypeManager) {
      function TEST (line 176) | TEST(Aes256GcmNoPrefix, CheckValues) {
      function TEST (line 183) | TEST(Aes256Gcm, Basics) {
      function TEST (line 190) | TEST(Aes256Gcm, OutputPrefixType) {
      function TEST (line 195) | TEST(Aes256Gcm, MultipleCallsSameReference) {
      function TEST (line 200) | TEST(Aes256Gcm, WorksWithKeyTypeManager) {
      function TEST (line 207) | TEST(Aes256Gcm, CheckValues) {
      function TEST (line 214) | TEST(Aes128Gcm, Basics) {
      function TEST (line 221) | TEST(Aes128Gcm, OutputPrefixType) {
      function TEST (line 226) | TEST(Aes128Gcm, MultipleCallsSameReference) {
      function TEST (line 231) | TEST(Aes128Gcm, WorksWithKeyTypeManager) {
      function TEST (line 238) | TEST(Aes128Gcm, CheckValues) {
      function TEST (line 245) | TEST(AeadKeyTemplatesTest, testAesGcmSivKeyTemplates) {
      function TEST (line 293) | TEST(AeadKeyTemplatesTest, testAesCtrHmacAeadKeyTemplates) {
      function TEST (line 350) | TEST(AeadKeyTemplatesTest, testXChaCha20Poly1305KeyTemplates) {
      function TEST (line 372) | TEST(AeadKeyTemplatesTest, testKmsEnvelopeAead) {
      function TEST (line 399) | TEST(AeadKeyTemplatesTest, testKmsEnvelopeAeadMultipleKeysSameKek) {

FILE: cc/aead/aead_parameters.h
  function namespace (line 22) | namespace crypto {

FILE: cc/aead/aead_wrapper.cc
  type crypto (line 37) | namespace crypto {
    type tink (line 38) | namespace tink {
      function Validate (line 45) | util::Status Validate(PrimitiveSet<Aead>* aead_set) {
      class AeadSetWrapper (line 58) | class AeadSetWrapper : public Aead {
        method AeadSetWrapper (line 60) | explicit AeadSetWrapper(

FILE: cc/aead/aead_wrapper.h
  function namespace (line 27) | namespace crypto {

FILE: cc/aead/aead_wrapper_test.cc
  type crypto (line 47) | namespace crypto {
    type tink (line 48) | namespace tink {
      function PopulateKeyInfo (line 67) | void PopulateKeyInfo(KeysetInfo::KeyInfo* key_info, uint32_t key_id,
      function KeysetInfo (line 75) | KeysetInfo CreateTestKeysetInfo() {
      function TEST (line 89) | TEST(AeadSetWrapperTest, WrapNullptr) {
      function TEST (line 98) | TEST(AeadSetWrapperTest, WrapEmpty) {
      function TEST (line 108) | TEST(AeadSetWrapperTest, Basic) {
      function TEST (line 154) | TEST(AeadSetWrapperTest, DecryptNonPrimary) {
      class AeadSetWrapperTestWithMonitoring (line 201) | class AeadSetWrapperTestWithMonitoring : public Test {
        method SetUp (line 205) | void SetUp() override {
        method TearDown (line 235) | void TearDown() override { Registry::Reset(); }
      function TEST_F (line 242) | TEST_F(AeadSetWrapperTestWithMonitoring,
      function TEST_F (line 289) | TEST_F(AeadSetWrapperTestWithMonitoring,

FILE: cc/aead/aes_ctr_hmac_aead_key.cc
  type crypto (line 34) | namespace crypto {
    type tink (line 35) | namespace tink {
      function ComputeOutputPrefix (line 38) | util::StatusOr<std::string> ComputeOutputPrefix(

FILE: cc/aead/aes_ctr_hmac_aead_key.h
  function namespace (line 32) | namespace crypto {

FILE: cc/aead/aes_ctr_hmac_aead_key_manager.cc
  type crypto (line 48) | namespace crypto {
    type tink (line 49) | namespace tink {
      function Status (line 109) | Status AesCtrHmacAeadKeyManager::ValidateKey(
      function Status (line 132) | Status AesCtrHmacAeadKeyManager::ValidateKeyFormat(

FILE: cc/aead/aes_ctr_hmac_aead_key_manager.h
  function namespace (line 37) | namespace crypto {

FILE: cc/aead/aes_ctr_hmac_aead_key_manager_test.cc
  type crypto (line 48) | namespace crypto {
    type tink (line 49) | namespace tink {
      function TEST (line 64) | TEST(AesCtrHmacAeadKeyManagerTest, Basics) {
      function TEST (line 72) | TEST(AesCtrHmacAeadKeyManagerTest, ValidateEmptyKey) {
      function AesCtrHmacAeadKey (line 77) | AesCtrHmacAeadKey CreateValidKey() {
      function TEST (line 90) | TEST(AesCtrHmacAeadKeyManagerTest, ValidKey) {
      function TEST (line 94) | TEST(AesCtrHmacAeadKeyManagerTest, AesKeySizes) {
      function TEST (line 108) | TEST(AesCtrHmacAeadKeyManagerTest, HmacKeySizes) {
      function AesCtrHmacAeadKeyFormat (line 122) | AesCtrHmacAeadKeyFormat CreateValidKeyFormat() {
      function TEST (line 134) | TEST(AesCtrHmacAeadKeyManagerTest, ValidateKeyFormat) {
      function TEST (line 141) | TEST(AesCtrHmacAeadKeyManagerTest, ValidateEmptyKeyFormat) {
      function TEST (line 147) | TEST(AesCtrHmacAeadKeyManagerTest, ValidateKeyFormatKeySizes) {
      function TEST (line 173) | TEST(AesCtrHmacAeadKeyManagerTest, ValidateKeyFormatHmacKeySizes) {
      function TEST (line 199) | TEST(AesCtrHmacAeadKeyManagerTest, CreateKey) {
      function TEST (line 219) | TEST(AesCtrHmacAeadKeyManagerTest, CreateAead) {
      function TEST (line 247) | TEST(AesCtrHmacAeadKeyManagerTest, Derive16ByteKey) {
      function TEST (line 275) | TEST(AesCtrHmacAeadKeyManagerTest, Derive32ByteKey) {
      function TEST (line 297) | TEST(AesCtrHmacAeadKeyManagerTest, DeriveKeyNotEnoughRandomnessForAe...
      function TEST (line 315) | TEST(AesCtrHmacAeadKeyManagerTest, DeriveKeyNotEnoughRandomnessForHm...

FILE: cc/aead/aes_ctr_hmac_aead_key_test.cc
  type crypto (line 31) | namespace crypto {
    type tink (line 32) | namespace tink {
      type TestCase (line 42) | struct TestCase {
      function TEST_P (line 75) | TEST_P(AesCtrHmacAeadKeyTest, BuildKeySucceeds) {
      function TEST (line 108) | TEST(AesCtrHmacAeadKeyTest, BuildKeyWithMismatchedAesKeySizeFails) {
      function TEST (line 136) | TEST(AesCtrHmacAeadKeyTest, BuildKeyWithoutSettingAParametersFails) {
      function TEST (line 151) | TEST(AesCtrHmacAeadKeyTest, BuildKeyWithoutSettingAesKeySizeFails) {
      function TEST (line 175) | TEST(AesCtrHmacAeadKeyTest, BuildKeyWithoutSettingHmacKeySizeFails) {
      function TEST (line 200) | TEST(AesCtrHmacAeadKeyTest, BuildKeyWithMismatchedHmacKeySizeFails) {
      function TEST (line 228) | TEST(AesCtrHmacAeadKeyTest, BuildNoPrefixKeyWithIdRequirementFails) {
      function TEST (line 256) | TEST(AesCtrHmacAeadKeyTest, BuildTinkKeyWithoutIdRequirementFails) {
      function TEST_P (line 282) | TEST_P(AesCtrHmacAeadKeyTest, KeyEquals) {
      function TEST (line 323) | TEST(AesCtrHmacAeadKeyTest, DifferentParametersKeysNotEqual) {
      function TEST (line 373) | TEST(AesCtrHmacAeadKeyTest, DifferentAesKeyMaterialNotEqual) {
      function TEST (line 412) | TEST(AesCtrHmacAeadKeyTest, DifferentHmacKeyMaterialNotEqual) {
      function TEST (line 451) | TEST(AesCtrHmacAeadKeyTest, DifferentIdRequirementKeysNotEqual) {

FILE: cc/aead/aes_ctr_hmac_aead_parameters.cc
  type crypto (line 29) | namespace crypto {
    type tink (line 30) | namespace tink {

FILE: cc/aead/aes_ctr_hmac_aead_parameters.h
  function namespace (line 28) | namespace tink {

FILE: cc/aead/aes_ctr_hmac_aead_parameters_test.cc
  type crypto (line 25) | namespace crypto {
    type tink (line 26) | namespace tink {
      type BuildTestCase (line 36) | struct BuildTestCase {
      function TEST_P (line 66) | TEST_P(AesCtrHmacAeadParametersTest, BuildParametersSucceeds) {
      function TEST (line 89) | TEST(AesCtrHmacAeadParametersTest, BuildWithoutSettingAesKeySizeFail...
      function TEST (line 102) | TEST(AesCtrHmacAeadParametersTest, BuildWithInvalidAesKeySizeFails) {
      function TEST (line 117) | TEST(AesCtrHmacAeadParametersTest, BuildWithoutSettingAHmacKeySizeFa...
      function TEST (line 130) | TEST(AesCtrHmacAeadParametersTest, BuildWithInvalidHmacKeySizeFails) {
      function TEST (line 145) | TEST(AesCtrHmacAeadParametersTest, BuildWithoutSettingIvSizeFails) {
      function TEST (line 158) | TEST(AesCtrHmacAeadParametersTest, BuildWithTooSmallIvSizeFails) {
      function TEST (line 172) | TEST(AesCtrHmacAeadParametersTest, BuildWithTooBigIvSizeFails) {
      function TEST (line 186) | TEST(AesCtrHmacAeadParametersTest, BuildWithoutSettingTagSizeFails) {
      function TEST (line 199) | TEST(AesCtrHmacAeadParametersTest, BuildWithTooSmallTagSizeFails) {
      function TEST (line 213) | TEST(AesCtrHmacAeadParametersTest, BuildWithTooBigTagSizeSHA1Fails) {
      function TEST (line 228) | TEST(AesCtrHmacAeadParametersTest, BuildWithTooBigTagSizeSHA224Fails) {
      function TEST (line 243) | TEST(AesCtrHmacAeadParametersTest, BuildWithTooBigTagSizeSHA256Fails) {
      function TEST (line 258) | TEST(AesCtrHmacAeadParametersTest, BuildWithTooBigTagSizeSHA384Fails) {
      function TEST (line 273) | TEST(AesCtrHmacAeadParametersTest, BuildWithTooBigTagSizeSHA512Fails) {
      function TEST (line 286) | TEST(AesCtrHmacAeadParametersTest, BuildWithoutSettingHashTypeFails) {
      function TEST (line 299) | TEST(AesCtrHmacAeadParametersTest, BuildWithInvalidHashTypeFails) {
      function TEST (line 315) | TEST(AesCtrHmacAeadParametersTest, BuildWithoutSettingVariantFails) {
      function TEST (line 328) | TEST(AesCtrHmacAeadParametersTest, BuildWithInvalidVariantFails) {
      function TEST_P (line 344) | TEST_P(AesCtrHmacAeadParametersTest, CopyConstructor) {
      function TEST_P (line 368) | TEST_P(AesCtrHmacAeadParametersTest, CopyAssignment) {
      function TEST_P (line 392) | TEST_P(AesCtrHmacAeadParametersTest, SameParametersEquals) {
      function TEST (line 422) | TEST(AesCtrHmacAeadParametersTest, DifferentAesKeySizeNotEqual) {
      function TEST (line 449) | TEST(AesCtrHmacAeadParametersTest, DifferentHmacKeySizeNotEqual) {
      function TEST (line 476) | TEST(AesCtrHmacAeadParametersTest, DifferentIvSizeNotEqual) {
      function TEST (line 503) | TEST(AesCtrHmacAeadParametersTest, DifferentTagSizeNotEqual) {
      function TEST (line 530) | TEST(AesCtrHmacAeadParametersTest, DifferentHashTypeNotEqual) {
      function TEST (line 557) | TEST(AesCtrHmacAeadParametersTest, DifferentVariantNotEqual) {

FILE: cc/aead/aes_ctr_hmac_aead_proto_serialization.cc
  type crypto (line 46) | namespace crypto {
    type tink (line 47) | namespace tink {
      function ToVariant (line 77) | util::StatusOr<AesCtrHmacAeadParameters::Variant> ToVariant(
      function ToOutputPrefixType (line 95) | util::StatusOr<OutputPrefixType> ToOutputPrefixType(
      function ToHashType (line 110) | util::StatusOr<AesCtrHmacAeadParameters::HashType> ToHashType(
      function ToProtoHashType (line 130) | util::StatusOr<HashType> ToProtoHashType(
      function GetHmacProtoParams (line 149) | util::StatusOr<HmacParams> GetHmacProtoParams(
      function ParseParameters (line 162) | util::StatusOr<AesCtrHmacAeadParameters> ParseParameters(
      function SerializeParameters (line 207) | util::StatusOr<internal::ProtoParametersSerialization> SerializePara...
      function ParseKey (line 238) | util::StatusOr<AesCtrHmacAeadKey> ParseKey(
      function SerializeKey (line 301) | util::StatusOr<internal::ProtoKeySerialization> SerializeKey(
      function AesCtrHmacAeadProtoParametersParserImpl (line 358) | AesCtrHmacAeadProtoParametersParserImpl& AesCtrHmacAeadProtoParamete...
      function AesCtrHmacAeadProtoParametersSerializerImpl (line 364) | AesCtrHmacAeadProtoParametersSerializerImpl&
      function AesCtrHmacAeadProtoKeyParserImpl (line 371) | AesCtrHmacAeadProtoKeyParserImpl& AesCtrHmacAeadProtoKeyParser() {
      function AesCtrHmacAeadProtoKeySerializerImpl (line 377) | AesCtrHmacAeadProtoKeySerializerImpl& AesCtrHmacAeadProtoKeySerializ...
      function RegisterAesCtrHmacAeadProtoSerialization (line 385) | util::Status RegisterAesCtrHmacAeadProtoSerialization() {

FILE: cc/aead/aes_ctr_hmac_aead_proto_serialization.h
  function namespace (line 22) | namespace crypto {

FILE: cc/aead/aes_ctr_hmac_aead_proto_serialization_test.cc
  type crypto (line 47) | namespace crypto {
    type tink (line 48) | namespace tink {
      type TestCase (line 74) | struct TestCase {
      class AesCtrHmacAeadProtoSerializationTest (line 87) | class AesCtrHmacAeadProtoSerializationTest : public TestWithParam<Te...
        method AesCtrHmacAeadProtoSerializationTest (line 89) | AesCtrHmacAeadProtoSerializationTest() {
      function AesCtrHmacAeadKeyFormat (line 119) | AesCtrHmacAeadKeyFormat BuildAesCtrHmacAeadKeyFormat(int aes_key_size,
      function BuildAesCtrHmacAeadKey (line 143) | google::crypto::tink::AesCtrHmacAeadKey BuildAesCtrHmacAeadKey(
      function TEST_F (line 165) | TEST_F(AesCtrHmacAeadProtoSerializationTest, RegisterTwiceSucceeds) {
      function TEST_P (line 170) | TEST_P(AesCtrHmacAeadProtoSerializationTest, ParseParameters) {
      function TEST_F (line 205) | TEST_F(AesCtrHmacAeadProtoSerializationTest,
      function TEST_F (line 226) | TEST_F(AesCtrHmacAeadProtoSerializationTest,
      function TEST_F (line 249) | TEST_F(AesCtrHmacAeadProtoSerializationTest,
      function TEST_F (line 272) | TEST_F(AesCtrHmacAeadProtoSerializationTest,
      function TEST_P (line 293) | TEST_P(AesCtrHmacAeadProtoSerializationTest, SerializeParameters) {
      function TEST_P (line 342) | TEST_P(AesCtrHmacAeadProtoSerializationTest, ParseKey) {
      function TEST_F (line 395) | TEST_F(AesCtrHmacAeadProtoSerializationTest, ParseLegacyKeyAsCrunchy) {
      function TEST_F (line 425) | TEST_F(AesCtrHmacAeadProtoSerializationTest,
      function TEST_F (line 447) | TEST_F(AesCtrHmacAeadProtoSerializationTest, ParseKeyNoSecretKeyAcce...
      function TEST_F (line 472) | TEST_F(AesCtrHmacAeadProtoSerializationTest, ParseKeyWithInvalidVers...
      function TEST_F (line 499) | TEST_F(AesCtrHmacAeadProtoSerializationTest,
      function TEST_F (line 528) | TEST_F(AesCtrHmacAeadProtoSerializationTest,
      function TEST_P (line 556) | TEST_P(AesCtrHmacAeadProtoSerializationTest, SerializeKey) {
      function TEST_F (line 616) | TEST_F(AesCtrHmacAeadProtoSerializationTest,

FILE: cc/aead/aes_eax_key.cc
  type crypto (line 34) | namespace crypto {
    type tink (line 35) | namespace tink {
      function ComputeOutputPrefix (line 38) | util::StatusOr<std::string> ComputeOutputPrefix(

FILE: cc/aead/aes_eax_key.h
  function namespace (line 32) | namespace crypto {

FILE: cc/aead/aes_eax_key_manager.h
  function namespace (line 40) | namespace crypto {

FILE: cc/aead/aes_eax_key_manager_test.cc
  type crypto (line 36) | namespace crypto {
    type tink (line 37) | namespace tink {
      function TEST (line 50) | TEST(AesEaxKeyManagerTest, Basics) {
      function TEST (line 58) | TEST(AesEaxKeyManagerTest, ValidateEmptyKey) {
      function TEST (line 62) | TEST(AesEaxKeyManagerTest, ValidateEmptyKeyFormat) {
      function TEST (line 67) | TEST(AesEaxKeyManagerTest, ValidKeyFormat) {
      function TEST (line 74) | TEST(AesEaxKeyManagerTest, ValidKeyFormatKeySize) {
      function TEST (line 90) | TEST(AesEaxKeyManagerTest, ValidKeyFormatIvSize) {
      function TEST (line 106) | TEST(AesEaxKeyManagerTest, CreateKey) {
      function TEST (line 116) | TEST(AesEaxKeyManagerTest, CreateKeyIsValid) {
      function TEST (line 125) | TEST(AesEaxKeyManagerTest, MultipleCreateCallsCreateDifferentKeys) {
      function TEST (line 137) | TEST(AesEaxKeyManagerTest, ValidKey) {
      function TEST (line 144) | TEST(AesEaxKeyManagerTest, ValidateKeyKeyLength) {
      function TEST (line 160) | TEST(AesEaxKeyManagerTest, ValidateKeyIvLength) {
      function TEST (line 176) | TEST(AesGcmKeyManagerTest, CreateAead) {

FILE: cc/aead/aes_eax_key_test.cc
  type crypto (line 31) | namespace crypto {
    type tink (line 32) | namespace tink {
      type TestCase (line 41) | struct TestCase {
      function TEST_P (line 65) | TEST_P(AesEaxKeyTest, CreateSucceeds) {
      function TEST (line 88) | TEST(AesEaxKeyTest, CreateKeyWithMismatchedKeySizeFails) {
      function TEST (line 108) | TEST(AesEaxKeyTest, CreateKeyWithInvalidIdRequirementFails) {
      function TEST_P (line 144) | TEST_P(AesEaxKeyTest, KeyEquals) {
      function TEST (line 171) | TEST(AesEaxKeyTest, DifferentParametersKeysNotEqual) {
      function TEST (line 208) | TEST(AesEaxKeyTest, DifferentSecretDataKeysNotEqual) {
      function TEST (line 237) | TEST(AesEaxKeyTest, DifferentIdRequirementKeysNotEqual) {

FILE: cc/aead/aes_eax_parameters.cc
  type crypto (line 26) | namespace crypto {
    type tink (line 27) | namespace tink {

FILE: cc/aead/aes_eax_parameters.h
  function namespace (line 25) | namespace crypto {

FILE: cc/aead/aes_eax_parameters_test.cc
  type crypto (line 25) | namespace crypto {
    type tink (line 26) | namespace tink {
      type BuildTestCase (line 35) | struct BuildTestCase {
      function TEST_P (line 59) | TEST_P(AesEaxParametersTest, BuildParametersSucceeds) {
      function TEST (line 78) | TEST(AesEaxParametersTest, BuildWithoutSettingVariantFails) {
      function TEST (line 88) | TEST(AesEaxParametersTest, BuildWithInvalidVariantFails) {
      function TEST (line 101) | TEST(AesEaxParametersTest, BuildWithoutSettingKeySizeFails) {
      function TEST (line 111) | TEST(AesEaxParametersTest, BuildWithInvalidKeySizeFails) {
      function TEST (line 167) | TEST(AesEaxParametersTest, BuildWithoutSettingIvSizeFails) {
      function TEST (line 177) | TEST(AesEaxParametersTest, BuildWithInvalidIvSizeFails) {
      function TEST (line 233) | TEST(AesEaxParametersTest, BuildWithoutSettingTagSizeFails) {
      function TEST (line 243) | TEST(AesEaxParametersTest, BuildWithInvalidTagSizeFails) {
      function TEST_P (line 265) | TEST_P(AesEaxParametersTest, CopyConstructor) {
      function TEST_P (line 285) | TEST_P(AesEaxParametersTest, CopyAssignment) {
      function TEST_P (line 305) | TEST_P(AesEaxParametersTest, SameParametersEquals) {
      function TEST (line 332) | TEST(AesEaxParametersTest, DifferentKeySizeNotEqual) {
      function TEST (line 355) | TEST(AesEaxParametersTest, DifferentIvSizeNotEqual) {
      function TEST (line 378) | TEST(AesEaxParametersTest, DifferentTagSizeNotEqual) {
      function TEST (line 401) | TEST(AesEaxParametersTest, DifferentVariantNotEqual) {

FILE: cc/aead/aes_eax_proto_serialization.cc
  type crypto (line 45) | namespace crypto {
    type tink (line 46) | namespace tink {
      function ToVariant (line 70) | util::StatusOr<AesEaxParameters::Variant> ToVariant(
      function ToOutputPrefixType (line 87) | util::StatusOr<OutputPrefixType> ToOutputPrefixType(
      function GetProtoParams (line 102) | util::StatusOr<AesEaxParams> GetProtoParams(
      function ParseParameters (line 117) | util::StatusOr<AesEaxParameters> ParseParameters(
      function SerializeParameters (line 146) | util::StatusOr<internal::ProtoParametersSerialization> SerializePara...
      function ParseKey (line 163) | util::StatusOr<AesEaxKey> ParseKey(
      function SerializeKey (line 204) | util::StatusOr<internal::ProtoKeySerialization> SerializeKey(
      function AesEaxProtoParametersParserImpl (line 235) | AesEaxProtoParametersParserImpl* AesEaxProtoParametersParser() {
      function AesEaxProtoParametersSerializerImpl (line 241) | AesEaxProtoParametersSerializerImpl* AesEaxProtoParametersSerializer...
      function AesEaxProtoKeyParserImpl (line 247) | AesEaxProtoKeyParserImpl* AesEaxProtoKeyParser() {
      function AesEaxProtoKeySerializerImpl (line 252) | AesEaxProtoKeySerializerImpl* AesEaxProtoKeySerializer() {
      function RegisterAesEaxProtoSerialization (line 259) | util::Status RegisterAesEaxProtoSerialization() {

FILE: cc/aead/aes_eax_proto_serialization.h
  function namespace (line 22) | namespace crypto {

FILE: cc/aead/aes_eax_proto_serialization_test.cc
  type crypto (line 44) | namespace crypto {
    type tink (line 45) | namespace tink {
      type TestCase (line 63) | struct TestCase {
      class AesEaxProtoSerializationTest (line 72) | class AesEaxProtoSerializationTest : public TestWithParam<TestCase> {
        method AesEaxProtoSerializationTest (line 74) | AesEaxProtoSerializationTest() {
      function TEST_F (line 79) | TEST_F(AesEaxProtoSerializationTest, RegisterTwiceSucceeds) {
      function TEST_P (line 98) | TEST_P(AesEaxProtoSerializationTest, ParseParameters) {
      function TEST_F (line 130) | TEST_F(AesEaxProtoSerializationTest,
      function TEST_F (line 149) | TEST_F(AesEaxProtoSerializationTest,
      function TEST_P (line 169) | TEST_P(AesEaxProtoSerializationTest, SerializeParameters) {
      function TEST_F (line 208) | TEST_F(AesEaxProtoSerializationTest,
      function TEST_P (line 230) | TEST_P(AesEaxProtoSerializationTest, ParseKey) {
      function TEST_F (line 275) | TEST_F(AesEaxProtoSerializationTest, ParseLegacyKeyAsCrunchy) {
      function TEST_F (line 303) | TEST_F(AesEaxProtoSerializationTest, ParseKeyWithInvalidSerializatio...
      function TEST_F (line 323) | TEST_F(AesEaxProtoSerializationTest, ParseKeyNoSecretKeyAccessFails) {
      function TEST_F (line 347) | TEST_F(AesEaxProtoSerializationTest, ParseKeyWithInvalidVersionFails) {
      function TEST_P (line 371) | TEST_P(AesEaxProtoSerializationTest, SerializeKey) {
      function TEST_F (line 419) | TEST_F(AesEaxProtoSerializationTest, SerializeKeyWithDisallowedTagSi...
      function TEST_F (line 447) | TEST_F(AesEaxProtoSerializationTest, SerializeKeyNoSecretKeyAccessFa...

FILE: cc/aead/aes_gcm_key.cc
  type crypto (line 34) | namespace crypto {
    type tink (line 35) | namespace tink {
      function ComputeOutputPrefix (line 38) | util::StatusOr<std::string> ComputeOutputPrefix(

FILE: cc/aead/aes_gcm_key.h
  function namespace (line 32) | namespace crypto {

FILE: cc/aead/aes_gcm_key_manager.h
  function namespace (line 47) | namespace crypto {

FILE: cc/aead/aes_gcm_key_manager_test.cc
  type crypto (line 42) | namespace crypto {
    type tink (line 43) | namespace tink {
      function TEST (line 57) | TEST(AesGcmKeyManagerTest, Basics) {
      function TEST (line 65) | TEST(AesGcmKeyManagerTest, ValidateEmptyKey) {
      function TEST (line 70) | TEST(AesGcmKeyManagerTest, ValidateValid16ByteKey) {
      function TEST (line 77) | TEST(AesGcmKeyManagerTest, ValidateValid32ByteKey) {
      function TEST (line 84) | TEST(AesGcmKeyManagerTest, InvalidKeySizes15Bytes) {
      function TEST (line 92) | TEST(AesGcmKeyManagerTest, InvalidKeySizes17Bytes) {
      function TEST (line 100) | TEST(AesGcmKeyManagerTest, InvalidKeySizes24Bytes) {
      function TEST (line 108) | TEST(AesGcmKeyManagerTest, InvalidKeySizes31Bytes) {
      function TEST (line 116) | TEST(AesGcmKeyManagerTest, InvalidKeySizes33Bytes) {
      function TEST (line 124) | TEST(AesGcmKeyManagerTest, ValidateKeyFormat) {
      function TEST (line 158) | TEST(AesGcmKeyManagerTest, Create16ByteKey) {
      function TEST (line 168) | TEST(AesGcmKeyManagerTest, Create32ByteKey) {
      function TEST (line 178) | TEST(AesGcmKeyManagerTest, CreateAead) {
      function TEST (line 199) | TEST(AesGcmKeyManagerTest, CreateCordAead) {
      function TEST (line 220) | TEST(AesGcmKeyManagerTest, DeriveShortKey) {
      function TEST (line 234) | TEST(AesGcmKeyManagerTest, DeriveLongKey) {
      function TEST (line 249) | TEST(AesGcmKeyManagerTest, DeriveKeyNotEnoughRandomness) {
      function TEST (line 261) | TEST(AesGcmKeyManagerTest, DeriveKeyWrongVersion) {

FILE: cc/aead/aes_gcm_key_test.cc
  type crypto (line 32) | namespace crypto {
    type tink (line 33) | namespace tink {
      type TestCase (line 44) | struct TestCase {
      function TEST_P (line 62) | TEST_P(AesGcmKeyTest, CreateSucceeds) {
      function TEST (line 87) | TEST(AesGcmKeyTest, CreateKeyWithMismatchedKeySizeFails) {
      function TEST (line 107) | TEST(AesGcmKeyTest, CreateKeyWithInvalidIdRequirementFails) {
      function TEST_P (line 139) | TEST_P(AesGcmKeyTest, GetKeyBytes) {
      function TEST_P (line 163) | TEST_P(AesGcmKeyTest, KeyEquals) {
      function TEST (line 193) | TEST(AesGcmKeyTest, DifferentVariantNotEqual) {
      function TEST (line 230) | TEST(AesGcmKeyTest, DifferentSecretDataNotEqual) {
      function TEST (line 257) | TEST(AesGcmKeyTest, DifferentIdRequirementNotEqual) {

FILE: cc/aead/aes_gcm_parameters.cc
  type crypto (line 27) | namespace crypto {
    type tink (line 28) | namespace tink {

FILE: cc/aead/aes_gcm_parameters.h
  function namespace (line 24) | namespace crypto {

FILE: cc/aead/aes_gcm_parameters_test.cc
  type crypto (line 27) | namespace crypto {
    type tink (line 28) | namespace tink {
      type BuildTestCase (line 40) | struct BuildTestCase {
      function TEST_P (line 62) | TEST_P(AesGcmParametersBuildTest, Build) {
      function TEST (line 81) | TEST(AesGcmParametersTest, BuildWithoutSettingVariantFails) {
      function TEST (line 91) | TEST(AesGcmParametersTest, BuildWithInvalidVariantFails) {
      function TEST (line 104) | TEST(AesGcmParametersTest, BuildWithoutSettingKeySizeFails) {
      function TEST (line 114) | TEST(AesGcmParametersTest, BuildWithInvalidKeySizeFails) {
      function TEST (line 165) | TEST(AesGcmParametersTest, BuildWithoutSettingIvSizeFails) {
      function TEST (line 175) | TEST(AesGcmParametersTest, BuildWithInvalidIvSizeFails) {
      function TEST (line 186) | TEST(AesGcmParametersTest, BuildWithoutSettingTagSizeFails) {
      function TEST (line 196) | TEST(AesGcmParametersTest, BuildWithInvalidTagSizeFails) {
      function TEST (line 217) | TEST(AesGcmParametersTest, CopyConstructor) {
      function TEST (line 235) | TEST(AesGcmParametersTest, CopyAssignment) {
      function TEST_P (line 263) | TEST_P(AesGcmParametersVariantTest, ParametersEquals) {
      function TEST (line 293) | TEST(AesGcmParametersTest, KeySizeNotEqual) {
      function TEST (line 316) | TEST(AesGcmParametersTest, IvSizeNotEqual) {
      function TEST (line 339) | TEST(AesGcmParametersTest, TagSizeNotEqual) {
      function TEST (line 362) | TEST(AesGcmParametersTest, VariantNotEqual) {

FILE: cc/aead/aes_gcm_proto_serialization.cc
  type crypto (line 44) | namespace crypto {
    type tink (line 45) | namespace tink {
      function ToVariant (line 67) | util::StatusOr<AesGcmParameters::Variant> ToVariant(
      function ToOutputPrefixType (line 84) | util::StatusOr<OutputPrefixType> ToOutputPrefixType(
      function ValidateParamsForProto (line 101) | util::Status ValidateParamsForProto(const AesGcmParameters& params) {
      function ParseParameters (line 115) | util::StatusOr<AesGcmParameters> ParseParameters(
      function SerializeParameters (line 147) | util::StatusOr<internal::ProtoParametersSerialization> SerializePara...
      function ParseKey (line 163) | util::StatusOr<AesGcmKey> ParseKey(
      function SerializeKey (line 205) | util::StatusOr<internal::ProtoKeySerialization> SerializeKey(
      function AesGcmProtoParametersParserImpl (line 237) | AesGcmProtoParametersParserImpl* AesGcmProtoParametersParser() {
      function AesGcmProtoParametersSerializerImpl (line 243) | AesGcmProtoParametersSerializerImpl* AesGcmProtoParametersSerializer...
      function AesGcmProtoKeyParserImpl (line 249) | AesGcmProtoKeyParserImpl* AesGcmProtoKeyParser() {
      function AesGcmProtoKeySerializerImpl (line 254) | AesGcmProtoKeySerializerImpl* AesGcmProtoKeySerializer() {
      function RegisterAesGcmProtoSerialization (line 261) | util::Status RegisterAesGcmProtoSerialization() {

FILE: cc/aead/aes_gcm_proto_serialization.h
  function namespace (line 22) | namespace crypto {

FILE: cc/aead/aes_gcm_proto_serialization_test.cc
  type crypto (line 43) | namespace crypto {
    type tink (line 44) | namespace tink {
      type TestCase (line 59) | struct TestCase {
      class AesGcmProtoSerializationTest (line 69) | class AesGcmProtoSerializationTest : public TestWithParam<TestCase> {
        method SetUp (line 71) | void SetUp() override {
      function TEST_F (line 76) | TEST_F(AesGcmProtoSerializationTest, RegisterTwiceSucceeds) {
      function TEST_P (line 95) | TEST_P(AesGcmProtoSerializationTest, ParseParameters) {
      function TEST_F (line 124) | TEST_F(AesGcmProtoSerializationTest, ParseParametersWithInvalidSeria...
      function TEST_F (line 143) | TEST_F(AesGcmProtoSerializationTest, ParseParametersWithUnkownOutput...
      function TEST_F (line 163) | TEST_F(AesGcmProtoSerializationTest, ParseParametersWithInvalidVersi...
      function TEST_P (line 183) | TEST_P(AesGcmProtoSerializationTest, SerializeParameters) {
      function TEST_F (line 220) | TEST_F(AesGcmProtoSerializationTest, SerializeParametersWithDisallow...
      function TEST_F (line 240) | TEST_F(AesGcmProtoSerializationTest, SerializeParametersWithDisallow...
      function TEST_P (line 260) | TEST_P(AesGcmProtoSerializationTest, ParseKey) {
      function TEST_F (line 303) | TEST_F(AesGcmProtoSerializationTest, ParseLegacyKeyAsCrunchy) {
      function TEST_F (line 330) | TEST_F(AesGcmProtoSerializationTest, ParseKeyWithInvalidSerializatio...
      function TEST_F (line 349) | TEST_F(AesGcmProtoSerializationTest, ParseKeyNoSecretKeyAccess) {
      function TEST_F (line 372) | TEST_F(AesGcmProtoSerializationTest, ParseKeyWithInvalidVersion) {
      function TEST_P (line 395) | TEST_P(AesGcmProtoSerializationTest, SerializeKey) {
      function TEST_F (line 442) | TEST_F(AesGcmProtoSerializationTest, SerializeKeyWithDisallowedIvSiz...
      function TEST_F (line 469) | TEST_F(AesGcmProtoSerializationTest, SerializeKeyWithDisallowedTagSi...
      function TEST_F (line 496) | TEST_F(AesGcmProtoSerializationTest, SerializeKeyNoSecretKeyAccess) {

FILE: cc/aead/aes_gcm_siv_key.cc
  type crypto (line 34) | namespace crypto {
    type tink (line 35) | namespace tink {
      function ComputeOutputPrefix (line 38) | util::StatusOr<std::string> ComputeOutputPrefix(

FILE: cc/aead/aes_gcm_siv_key.h
  function namespace (line 32) | namespace crypto {

FILE: cc/aead/aes_gcm_siv_key_manager.h
  function namespace (line 39) | namespace crypto {

FILE: cc/aead/aes_gcm_siv_key_manager_test.cc
  type crypto (line 38) | namespace crypto {
    type tink (line 39) | namespace tink {
      function TEST (line 51) | TEST(AesGcmSivKeyManagerTest, Basics) {
      function TEST (line 59) | TEST(AesGcmSivKeyManagerTest, ValidateEmptyKey) {
      function TEST (line 64) | TEST(AesGcmSivKeyManagerTest, ValidateValid16ByteKey) {
      function TEST (line 71) | TEST(AesGcmSivKeyManagerTest, ValidateValid32ByteKey) {
      function TEST (line 78) | TEST(AesGcmSivKeyManagerTest, InvalidKeySizes17Bytes) {
      function TEST (line 86) | TEST(AesGcmSivKeyManagerTest, InvalidKeySizes24Bytes) {
      function TEST (line 94) | TEST(AesGcmSivKeyManagerTest, InvalidKeySizes31Bytes) {
      function TEST (line 102) | TEST(AesGcmSivKeyManagerTest, InvalidKeySizes33Bytes) {
      function TEST (line 110) | TEST(AesGcmSivKeyManagerTest, ValidateKeyFormat) {
      function TEST (line 144) | TEST(AesGcmSivKeyManagerTest, Create16ByteKey) {
      function TEST (line 154) | TEST(AesGcmSivKeyManagerTest, Create32ByteKey) {
      function TEST (line 164) | TEST(AesGcmSivKeyManagerTest, CreateAeadFailsWithOpenSsl) {
      function TEST (line 181) | TEST(AesGcmSivKeyManagerTest, CreateAeadSucceedsWithBoringSsl) {

FILE: cc/aead/aes_gcm_siv_key_test.cc
  type crypto (line 32) | namespace crypto {
    type tink (line 33) | namespace tink {
      type TestCase (line 43) | struct TestCase {
      function TEST_P (line 61) | TEST_P(AesGcmSivKeyTest, CreateSucceeds) {
      function TEST (line 80) | TEST(AesGcmSivKeyTest, CreateKeyWithMismatchedKeySizeFails) {
      function TEST (line 96) | TEST(AesGcmSivKeyTest, CreateKeyWithInvalidIdRequirementFails) {
      function TEST_P (line 120) | TEST_P(AesGcmSivKeyTest, GetKeyBytes) {
      function TEST_P (line 138) | TEST_P(AesGcmSivKeyTest, KeyEquals) {
      function TEST (line 162) | TEST(AesGcmSivKeyTest, DifferentVariantNotEqual) {
      function TEST (line 190) | TEST(AesGcmSivKeyTest, DifferentSecretDataNotEqual) {
      function TEST (line 212) | TEST(AesGcmSivKeyTest, DifferentIdRequirementNotEqual) {

FILE: cc/aead/aes_gcm_siv_parameters.cc
  type crypto (line 27) | namespace crypto {
    type tink (line 28) | namespace tink {

FILE: cc/aead/aes_gcm_siv_parameters.h
  function namespace (line 24) | namespace crypto {

FILE: cc/aead/aes_gcm_siv_parameters_test.cc
  type crypto (line 27) | namespace crypto {
    type tink (line 28) | namespace tink {
      type TestCase (line 39) | struct TestCase {
      function TEST_P (line 56) | TEST_P(AesGcmSivParametersCreateTest, Create) {
      function TEST (line 68) | TEST(AesGcmSivParametersTest, CreateWithInvalidVariantFails) {
      function TEST (line 77) | TEST(AesGcmSivParametersTest, CreateWithInvalidKeySizeFails) {
      function TEST (line 100) | TEST(AesGcmParametersTest, CopyConstructor) {
      function TEST (line 111) | TEST(AesGcmParametersTest, CopyAssignment) {
      function TEST_P (line 131) | TEST_P(AesGcmSivParametersVariantTest, ParametersEquals) {
      function TEST (line 150) | TEST(AesGcmParametersTest, KeySizeNotEqual) {
      function TEST (line 164) | TEST(AesGcmParametersTest, VariantNotEqual) {

FILE: cc/aead/aes_gcm_siv_proto_serialization.cc
  type crypto (line 42) | namespace crypto {
    type tink (line 43) | namespace tink {
      function ToVariant (line 63) | util::StatusOr<AesGcmSivParameters::Variant> ToVariant(
      function ToOutputPrefixType (line 80) | util::StatusOr<OutputPrefixType> ToOutputPrefixType(
      function ParseParameters (line 95) | util::StatusOr<AesGcmSivParameters> ParseParameters(
      function SerializeParameters (line 122) | util::StatusOr<internal::ProtoParametersSerialization> SerializePara...
      function ParseKey (line 138) | util::StatusOr<AesGcmSivKey> ParseKey(
      function SerializeKey (line 177) | util::StatusOr<internal::ProtoKeySerialization> SerializeKey(
      function AesGcmSivProtoParametersParserImpl (line 208) | AesGcmSivProtoParametersParserImpl* AesGcmSivProtoParametersParser() {
      function AesGcmSivProtoParametersSerializerImpl (line 214) | AesGcmSivProtoParametersSerializerImpl* AesGcmSivProtoParametersSeri...
      function AesGcmSivProtoKeyParserImpl (line 220) | AesGcmSivProtoKeyParserImpl* AesGcmSivProtoKeyParser() {
      function AesGcmSivProtoKeySerializerImpl (line 225) | AesGcmSivProtoKeySerializerImpl* AesGcmSivProtoKeySerializer() {
      function RegisterAesGcmSivProtoSerialization (line 232) | util::Status RegisterAesGcmSivProtoSerialization() {

FILE: cc/aead/aes_gcm_siv_proto_serialization.h
  function namespace (line 22) | namespace crypto {

FILE: cc/aead/aes_gcm_siv_proto_serialization_test.cc
  type crypto (line 43) | namespace crypto {
    type tink (line 44) | namespace tink {
      type TestCase (line 59) | struct TestCase {
      class AesGcmSivProtoSerializationTest (line 67) | class AesGcmSivProtoSerializationTest : public TestWithParam<TestCas...
        method SetUp (line 69) | void SetUp() override {
      function TEST_F (line 74) | TEST_F(AesGcmSivProtoSerializationTest, RegisterTwiceSucceeds) {
      function TEST_P (line 91) | TEST_P(AesGcmSivProtoSerializationTest, ParseParameters) {
      function TEST_F (line 118) | TEST_F(AesGcmSivProtoSerializationTest,
      function TEST_F (line 134) | TEST_F(AesGcmSivProtoSerializationTest, ParseParametersWithUnkownOut...
      function TEST_F (line 154) | TEST_F(AesGcmSivProtoSerializationTest, ParseParametersWithInvalidVe...
      function TEST_P (line 173) | TEST_P(AesGcmSivProtoSerializationTest, SerializeParameters) {
      function TEST_P (line 205) | TEST_P(AesGcmSivProtoSerializationTest, ParseKey) {
      function TEST_F (line 243) | TEST_F(AesGcmSivProtoSerializationTest, ParseLegacyKeyAsCrunchy) {
      function TEST_F (line 271) | TEST_F(AesGcmSivProtoSerializationTest, ParseKeyWithInvalidSerializa...
      function TEST_F (line 290) | TEST_F(AesGcmSivProtoSerializationTest, ParseKeyNoSecretKeyAccess) {
      function TEST_F (line 313) | TEST_F(AesGcmSivProtoSerializationTest, ParseKeyWithInvalidVersion) {
      function TEST_P (line 336) | TEST_P(AesGcmSivProtoSerializationTest, SerializeKey) {
      function TEST_F (line 378) | TEST_F(AesGcmSivProtoSerializationTest, SerializeKeyNoSecretKeyAcces...

FILE: cc/aead/chacha20_poly1305_key.cc
  type crypto (line 34) | namespace crypto {
    type tink (line 35) | namespace tink {
      function ComputeOutputPrefix (line 38) | util::StatusOr<std::string> ComputeOutputPrefix(

FILE: cc/aead/chacha20_poly1305_key.h
  function namespace (line 32) | namespace crypto {

FILE: cc/aead/chacha20_poly1305_key_test.cc
  type crypto (line 31) | namespace crypto {
    type tink (line 32) | namespace tink {
      type TestCase (line 41) | struct TestCase {
      function TEST_P (line 58) | TEST_P(ChaCha20Poly1305KeyTest, CreateSucceeds) {
      function TEST (line 77) | TEST(ChaCha20Poly1305KeyTest, CreateKeyWithInvalidVariantFails) {
      function TEST (line 87) | TEST(ChaCha20Poly1305KeyTest, CreateKeyWithInvalidKeySizeFails) {
      function TEST (line 98) | TEST(ChaCha20Poly1305KeyTest, CreateKeyWithInvalidIdRequirementFails) {
      function TEST_P (line 113) | TEST_P(ChaCha20Poly1305KeyTest, KeyEquals) {
      function TEST (line 134) | TEST(ChaCha20Poly1305KeyTest, DifferentVariantNotEqual) {
      function TEST (line 153) | TEST(ChaCha20Poly1305KeyTest, DifferentSecretDataNotEqual) {
      function TEST (line 173) | TEST(ChaCha20Poly1305KeyTest, DifferentIdRequirementNotEqual) {

FILE: cc/aead/chacha20_poly1305_parameters.cc
  type crypto (line 26) | namespace crypto {
    type tink (line 27) | namespace tink {

FILE: cc/aead/chacha20_poly1305_parameters.h
  function namespace (line 24) | namespace crypto {

FILE: cc/aead/chacha20_poly1305_parameters_test.cc
  type crypto (line 25) | namespace crypto {
    type tink (line 26) | namespace tink {
      type TestCase (line 36) | struct TestCase {
      function TEST_P (line 52) | TEST_P(ChaCha20Poly1305ParametersTest, Create) {
      function TEST (line 63) | TEST(ChaCha20Poly1305ParametersTest, CreateWithInvalidVariantFails) {
      function TEST (line 71) | TEST(ChaCha20Poly1305ParametersTest, CopyConstructor) {
      function TEST (line 83) | TEST(ChaCha20Poly1305ParametersTest, CopyAssignment) {
      function TEST_P (line 95) | TEST_P(ChaCha20Poly1305ParametersTest, ParametersEquals) {
      function TEST (line 112) | TEST(ChaCha20Poly1305ParametersTest, DifferentVariantNotEqual) {

FILE: cc/aead/chacha20_poly1305_proto_serialization.cc
  type crypto (line 40) | namespace crypto {
    type tink (line 41) | namespace tink {
      function ToVariant (line 63) | util::StatusOr<ChaCha20Poly1305Parameters::Variant> ToVariant(
      function ToOutputPrefixType (line 81) | util::StatusOr<OutputPrefixType> ToOutputPrefixType(
      function ParseParameters (line 96) | util::StatusOr<ChaCha20Poly1305Parameters> ParseParameters(
      function SerializeParameters (line 118) | util::StatusOr<internal::ProtoParametersSerialization> SerializePara...
      function ParseKey (line 129) | util::StatusOr<ChaCha20Poly1305Key> ParseKey(
      function SerializeKey (line 164) | util::StatusOr<internal::ProtoKeySerialization> SerializeKey(
      function ChaCha20Poly1305ProtoParametersParserImpl (line 190) | ChaCha20Poly1305ProtoParametersParserImpl*
      function ChaCha20Poly1305ProtoParametersSerializerImpl (line 197) | ChaCha20Poly1305ProtoParametersSerializerImpl*
      function ChaCha20Poly1305ProtoKeyParserImpl (line 204) | ChaCha20Poly1305ProtoKeyParserImpl* ChaCha20Poly1305ProtoKeyParser() {
      function ChaCha20Poly1305ProtoKeySerializerImpl (line 210) | ChaCha20Poly1305ProtoKeySerializerImpl* ChaCha20Poly1305ProtoKeySeri...
      function RegisterChaCha20Poly1305ProtoSerialization (line 218) | util::Status RegisterChaCha20Poly1305ProtoSerialization() {

FILE: cc/aead/chacha20_poly1305_proto_serialization.h
  function namespace (line 22) | namespace crypto {

FILE: cc/aead/chacha20_poly1305_proto_serialization_test.cc
  type crypto (line 44) | namespace crypto {
    type tink (line 45) | namespace tink {
      type TestCase (line 63) | struct TestCase {
      class ChaCha20Poly1305ProtoSerializationTest (line 70) | class ChaCha20Poly1305ProtoSerializationTest : public TestWithParam<...
        method ChaCha20Poly1305ProtoSerializationTest (line 72) | ChaCha20Poly1305ProtoSerializationTest() {
      function TEST_F (line 77) | TEST_F(ChaCha20Poly1305ProtoSerializationTest, RegisterTwiceSucceeds) {
      function TEST_P (line 96) | TEST_P(ChaCha20Poly1305ProtoSerializationTest, ParseParameters) {
      function TEST_F (line 118) | TEST_F(ChaCha20Poly1305ProtoSerializationTest,
      function TEST_F (line 133) | TEST_F(ChaCha20Poly1305ProtoSerializationTest,
      function TEST_P (line 149) | TEST_P(ChaCha20Poly1305ProtoSerializationTest, SerializeParameters) {
      function TEST_P (line 178) | TEST_P(ChaCha20Poly1305ProtoSerializationTest, ParseKey) {
      function TEST_F (line 217) | TEST_F(ChaCha20Poly1305ProtoSerializationTest, ParseLegacyKeyAsCrunc...
      function TEST_F (line 246) | TEST_F(ChaCha20Poly1305ProtoSerializationTest,
      function TEST_F (line 265) | TEST_F(ChaCha20Poly1305ProtoSerializationTest, ParseKeyNoSecretKeyAc...
      function TEST_F (line 287) | TEST_F(ChaCha20Poly1305ProtoSerializationTest, ParseKeyWithInvalidVe...
      function TEST_P (line 309) | TEST_P(ChaCha20Poly1305ProtoSerializationTest, SerializeKey) {
      function TEST_F (line 349) | TEST_F(ChaCha20Poly1305ProtoSerializationTest, SerializeKeyNoSecretK...

FILE: cc/aead/config_v0.cc
  type crypto (line 23) | namespace crypto {
    type tink (line 24) | namespace tink {
      function Configuration (line 26) | const Configuration& ConfigAeadV0() {

FILE: cc/aead/config_v0.h
  function namespace (line 22) | namespace crypto {

FILE: cc/aead/config_v0_test.cc
  type crypto (line 33) | namespace crypto {
    type tink (line 34) | namespace tink {
      function TEST_P (line 57) | TEST_P(ConfigV0Test, GetPrimitive) {
      function TEST_P (line 72) | TEST_P(ConfigV0BoringSslTest, GetPrimitive) {

FILE: cc/aead/cord_aead.h
  function namespace (line 22) | namespace crypto {

FILE: cc/aead/cord_aead_wrapper.cc
  type crypto (line 31) | namespace crypto {
    type tink (line 32) | namespace tink {
      function Validate (line 36) | util::Status Validate(PrimitiveSet<CordAead>* aead_set) {
      class CordAeadSetWrapper (line 48) | class CordAeadSetWrapper : public CordAead {
        method CordAeadSetWrapper (line 50) | explicit CordAeadSetWrapper(std::unique_ptr<PrimitiveSet<CordAead>...

FILE: cc/aead/cord_aead_wrapper.h
  function namespace (line 27) | namespace crypto {

FILE: cc/aead/cord_aead_wrapper_test.cc
  type crypto (line 47) | namespace crypto {
    type tink (line 48) | namespace tink {
      function TEST (line 51) | TEST(AeadSetWrapperTest, WrapNullptr) {
      function TEST (line 60) | TEST(AeadSetWrapperTest, WrapEmpty) {
      function setup_keyset (line 69) | std::unique_ptr<PrimitiveSet<CordAead>> setup_keyset() {
      function TEST (line 89) | TEST(AeadSetWrapperTest, WrapperEncryptDecrypt) {
      function TEST (line 110) | TEST(AeadSetWrapperTest, WrapperEncryptDecryptMultipleKeys) {
      function TEST (line 153) | TEST(AeadSetWrapperTest, WrapperEncryptDecryptManyChunks) {
      function TEST (line 179) | TEST(AeadSetWrapperTest, WrapperEncryptBadDecrypt) {

FILE: cc/aead/failing_aead.cc
  type crypto (line 30) | namespace crypto {
    type tink (line 31) | namespace tink {
      class AlwaysFailAead (line 35) | class AlwaysFailAead : public Aead {
        method AlwaysFailAead (line 37) | explicit AlwaysFailAead(std::string message)
        method Encrypt (line 40) | util::StatusOr<std::string> Encrypt(
        method Decrypt (line 49) | util::StatusOr<std::string> Decrypt(
      function CreateAlwaysFailingAead (line 64) | std::unique_ptr<Aead> CreateAlwaysFailingAead(absl::string_view mess...

FILE: cc/aead/failing_aead.h
  function namespace (line 25) | namespace crypto {

FILE: cc/aead/failing_aead_test.cc
  type crypto (line 27) | namespace crypto {
    type tink (line 28) | namespace tink {
      function TEST (line 34) | TEST(AlwaysFailAead, EncryptFails) {
      function TEST (line 41) | TEST(AlwaysFailAead, EncryptFailsContainsMessage) {
      function TEST (line 51) | TEST(AlwaysFailAead, DecryptFails) {
      function TEST (line 58) | TEST(AlwaysFailAead, DecryptFailsContainsMessage) {

FILE: cc/aead/internal/aead_from_zero_copy.cc
  type crypto (line 28) | namespace crypto {
    type tink (line 29) | namespace tink {
      type internal (line 30) | namespace internal {

FILE: cc/aead/internal/aead_from_zero_copy.h
  function namespace (line 32) | namespace crypto {

FILE: cc/aead/internal/aead_from_zero_copy_test.cc
  type crypto (line 34) | namespace crypto {
    type tink (line 35) | namespace tink {
      type internal (line 36) | namespace internal {
        function TEST (line 52) | TEST(AeadFromZeroCopyTest, EncryptSucceeds) {
        function TEST (line 68) | TEST(AeadFromZeroCopyTest, EncryptFailsIfZeroCopyEncryptFails) {
        function TEST (line 80) | TEST(AeadFromZeroCopyTest, DecryptSucceeds) {
        function TEST (line 96) | TEST(AeadFromZeroCopyTest, EncryptFailsIfZeroCopyDecryptFails) {

FILE: cc/aead/internal/aead_util.cc
  type crypto (line 28) | namespace crypto {
    type tink (line 29) | namespace tink {
      type internal (line 30) | namespace internal {
        function IsSupportedKmsEnvelopeAeadDekKeyType (line 32) | bool IsSupportedKmsEnvelopeAeadDekKeyType(absl::string_view key_ty...
        function GetAesGcmCipherForKeySize (line 44) | util::StatusOr<const EVP_CIPHER *> GetAesGcmCipherForKeySize(
        function GetAesGcmAeadForKeySize (line 58) | util::StatusOr<const EVP_AEAD *> GetAesGcmAeadForKeySize(
        function GetAesGcmSivAeadCipherForKeySize (line 71) | util::StatusOr<const EVP_AEAD *> GetAesGcmSivAeadCipherForKeySize(

FILE: cc/aead/internal/aead_util.h
  function namespace (line 27) | namespace crypto {

FILE: cc/aead/internal/aead_util_test.cc
  type crypto (line 24) | namespace crypto {
    type tink (line 25) | namespace tink {
      type internal (line 26) | namespace internal {
        function TEST (line 35) | TEST(AeadUtilTest, GetAesGcmCipherForKeySize) {
        function TEST (line 48) | TEST(AeadUtilTest, SupportedKmsEnvelopeAeadDekKeyTypes) {
        function TEST (line 59) | TEST(AeadUtilTest, GetAesAeadForKeySize) {
        function TEST (line 72) | TEST(AeadUtilTest, GetAesGcmSivAeadCipherForKeySize) {

FILE: cc/aead/internal/config_v0.cc
  type crypto (line 30) | namespace crypto {
    type tink (line 31) | namespace tink {
      type internal (line 32) | namespace internal {
        function AddAeadV0 (line 34) | util::Status AddAeadV0(Configuration& config) {

FILE: cc/aead/internal/config_v0.h
  function namespace (line 23) | namespace crypto {

FILE: cc/aead/internal/config_v0_test.cc
  type crypto (line 44) | namespace crypto {
    type tink (line 45) | namespace tink {
      type internal (line 46) | namespace internal {
        function TEST (line 56) | TEST(AeadV0Test, PrimitiveWrappers) {
        function TEST (line 66) | TEST(AeadV0Test, KeyManagers) {
        function TEST_P (line 102) | TEST_P(AeadV0KeyTypesTest, GetPrimitive) {
        function TEST_P (line 122) | TEST_P(AeadV0BoringSslKeyTypesTest, GetPrimitive) {

FILE: cc/aead/internal/cord_aes_gcm_boringssl.cc
  type crypto (line 38) | namespace crypto {
    type tink (line 39) | namespace tink {
      type internal (line 40) | namespace internal {
        function SetIvAndDirection (line 48) | util::Status SetIvAndDirection(EVP_CIPHER_CTX* context, absl::stri...
        function NewContextFromPartial (line 72) | util::StatusOr<internal::SslUniquePtr<EVP_CIPHER_CTX>> NewContextF...
        function NewContext (line 107) | util::StatusOr<internal::SslUniquePtr<EVP_CIPHER_CTX>> NewContext(

FILE: cc/aead/internal/cord_aes_gcm_boringssl.h
  function namespace (line 30) | namespace crypto {

FILE: cc/aead/internal/cord_aes_gcm_boringssl_test.cc
  type crypto (line 43) | namespace crypto {
    type tink (line 44) | namespace tink {
      type internal (line 45) | namespace internal {
        class CordAesGcmBoringSslTest (line 60) | class CordAesGcmBoringSslTest : public Test {
          method SetUp (line 62) | void SetUp() override {
        function TEST_F (line 74) | TEST_F(CordAesGcmBoringSslTest, EncryptDecryptCord) {
        function TEST_F (line 86) | TEST_F(CordAesGcmBoringSslTest, ChunkyCordEncrypt) {
        function TEST_F (line 99) | TEST_F(CordAesGcmBoringSslTest, ChunkyCordDecrypt) {
        function TEST_F (line 113) | TEST_F(CordAesGcmBoringSslTest, CanDecryptWithStringAead) {
        function TEST_F (line 135) | TEST_F(CordAesGcmBoringSslTest, ModifiedCord) {
        function GetError (line 173) | static std::string GetError() {
        function WycheproofTest (line 186) | bool WycheproofTest(const rapidjson::Document& root) {
        function TEST (line 238) | TEST(CordAesGcmBoringSslWycheproofTest, TestVectors) {

FILE: cc/aead/internal/key_gen_config_v0.cc
  type crypto (line 29) | namespace crypto {
    type tink (line 30) | namespace tink {
      type internal (line 31) | namespace internal {
        function AddAeadKeyGenV0 (line 33) | util::Status AddAeadKeyGenV0(KeyGenConfiguration& config) {

FILE: cc/aead/internal/key_gen_config_v0.h
  function namespace (line 23) | namespace crypto {

FILE: cc/aead/internal/mock_zero_copy_aead.h
  function namespace (line 27) | namespace crypto {

FILE: cc/aead/internal/ssl_aead.cc
  type crypto (line 44) | namespace crypto {
    type tink (line 45) | namespace tink {
      type internal (line 46) | namespace internal {
        function UpdateCipher (line 57) | util::StatusOr<int64_t> UpdateCipher(EVP_CIPHER_CTX *context,
        class OpenSslOneShotAeadImpl (line 86) | class OpenSslOneShotAeadImpl : public SslOneShotAead {
          method OpenSslOneShotAeadImpl (line 88) | explicit OpenSslOneShotAeadImpl(const util::SecretData &key,
          method Encrypt (line 92) | util::StatusOr<int64_t> Encrypt(absl::string_view plaintext,
          method Decrypt (line 124) | util::StatusOr<int64_t> Decrypt(absl::string_view ciphertext,
          method CiphertextSize (line 162) | int64_t CiphertextSize(int64_t plaintext_length) const override {
          method PlaintextSize (line 166) | int64_t PlaintextSize(int64_t ciphertext_length) const override {
          method EncryptSensitive (line 174) | util::StatusOr<uint64_t> EncryptSensitive(absl::string_view plai...
          method DecryptSensitive (line 212) | util::StatusOr<uint64_t> DecryptSensitive(absl::string_view ciph...
          method GetContext (line 279) | util::StatusOr<internal::SslUniquePtr<EVP_CIPHER_CTX>> GetContext(
        class BoringSslOneShotAeadImpl (line 325) | class BoringSslOneShotAeadImpl : public SslOneShotAead {
          method BoringSslOneShotAeadImpl (line 327) | explicit BoringSslOneShotAeadImpl(
          method Encrypt (line 331) | util::StatusOr<int64_t> Encrypt(absl::string_view plaintext,
          method EncryptSensitive (line 359) | util::StatusOr<int64_t> EncryptSensitive(absl::string_view plain...
          method Decrypt (line 380) | util::StatusOr<int64_t> Decrypt(absl::string_view ciphertext,
          method DecryptSensitive (line 413) | util::StatusOr<int64_t> DecryptSensitive(absl::string_view ciphe...
          method CiphertextSize (line 443) | int64_t CiphertextSize(int64_t plaintext_length) const override {
          method PlaintextSize (line 447) | int64_t PlaintextSize(int64_t ciphertext_length) const override {
        function CreateAesGcmOneShotCrypter (line 463) | util::StatusOr<std::unique_ptr<SslOneShotAead>> CreateAesGcmOneSho...
        function CreateAesGcmSivOneShotCrypter (line 496) | util::StatusOr<std::unique_ptr<SslOneShotAead>> CreateAesGcmSivOne...
        function CreateXchacha20Poly1305OneShotCrypter (line 522) | util::StatusOr<std::unique_ptr<SslOneShotAead>>

FILE: cc/aead/internal/ssl_aead.h
  function namespace (line 28) | namespace crypto {

FILE: cc/aead/internal/ssl_aead_large_inputs_test.cc
  type crypto (line 45) | namespace crypto {
    type tink (line 46) | namespace tink {
      type internal (line 47) | namespace internal {
        type TestParams (line 65) | struct TestParams {
        function CipherFromName (line 74) | util::StatusOr<std::unique_ptr<SslOneShotAead>> CipherFromName(
        function TEST_P (line 92) | TEST_P(SslOneShotAeadLargeInputsTest, EncryptDecryptLargeInput) {
        function GetTestParams (line 129) | std::vector<TestParams> GetTestParams() {

FILE: cc/aead/internal/ssl_aead_test.cc
  type crypto (line 45) | namespace crypto {
    type tink (line 46) | namespace tink {
      type internal (line 47) | namespace internal {
        type CipherType (line 72) | enum CipherType {
        type SslOneShotAeadTestParams (line 78) | struct SslOneShotAeadTestParams {
        function CipherFromName (line 87) | util::StatusOr<std::unique_ptr<SslOneShotAead>> CipherFromName(
        function TEST_P (line 104) | TEST_P(SslOneShotAeadTest, CiphertextPlaintextSize) {
        function DoTestEncrypt (line 123) | void DoTestEncrypt(SslOneShotAead* aead, absl::string_view message,
        function DoTestDecrypt (line 135) | void DoTestDecrypt(SslOneShotAead* aead, absl::string_view message,
        function TEST_P (line 147) | TEST_P(SslOneShotAeadTest, EncryptDecrypt) {
        function ModifyString (line 165) | std::string ModifyString(absl::string_view input_str, int position) {
        function DoTestEncryptDecryptWithModifiedCiphertext (line 172) | void DoTestEncryptDecryptWithModifiedCiphertext(SslOneShotAead* aead,
        function TEST_P (line 216) | TEST_P(SslOneShotAeadTest, TestModification) {
        function TEST_P (line 234) | TEST_P(SslOneShotAeadTest, TestBufferClearsIfDecryptionFails) {
        function TestDecryptWithEmptyAssociatedData (line 271) | void TestDecryptWithEmptyAssociatedData(SslOneShotAead* aead,
        function DoTestWithEmptyAssociatedData (line 287) | void DoTestWithEmptyAssociatedData(SslOneShotAead* aead, absl::str...
        function TEST_P (line 302) | TEST_P(SslOneShotAeadTest, EmptyAssociatedData) {
        function DoTestEmptyMessageEncryptDecrypt (line 317) | void DoTestEmptyMessageEncryptDecrypt(
        function TEST_P (line 341) | TEST_P(SslOneShotAeadTest, EmptyMessage) {
        function TEST_P (line 354) | TEST_P(SslOneShotAeadTest, EmptyMessageAndAssociatedData) {
        function TEST_P (line 374) | TEST_P(SslOneShotAeadTest, BufferOverlapEncryptFails) {
        function TEST_P (line 395) | TEST_P(SslOneShotAeadTest, BufferOverlapDecryptFails) {
        function GetSslOneShotAeadTestParams (line 419) | std::vector<SslOneShotAeadTestParams> GetSslOneShotAeadTestParams() {
        function TEST (line 456) | TEST(SslOneShotAeadTest, AesGcmTestInvalidKeySizes) {
        function TEST (line 473) | TEST(SslOneShotAeadTest, AesGcmSivTestInvalidKeySizes) {
        function TEST (line 493) | TEST(SslOneShotAeadTest, Xchacha20Poly1305TestInvalidKeySizes) {
        function TEST (line 513) | TEST(SslOneShotAeadTest, Xchacha20Poly1305TestFipsOnly) {
        function TEST (line 527) | TEST(SslOneShotAeadTest, AesGcmTestFipsOnly) {
        function TEST (line 542) | TEST(SslOneShotAeadTest, AesGcmTestTestFipsFailWithoutBoringCrypto) {
        function TEST (line 559) | TEST(AesGcmSivBoringSslTest, AesGcmTestSivTestFipsOnly) {
        type SslOneShotAeadWycheproofTestParams (line 576) | struct SslOneShotAeadWycheproofTestParams {
        class SslOneShotAeadWycheproofTest (line 585) | class SslOneShotAeadWycheproofTest
          method SetUp (line 588) | void SetUp() override {
        function TEST_P (line 606) | TEST_P(SslOneShotAeadWycheproofTest, Encrypt) {
        function TEST_P (line 641) | TEST_P(SslOneShotAeadWycheproofTest, Decrypt) {
        function GetWycheproofTestParams (line 669) | std::vector<SslOneShotAeadWycheproofTestParams> GetWycheproofTestP...

FILE: cc/aead/internal/wycheproof_aead.cc
  type crypto (line 26) | namespace crypto {
    type tink (line 27) | namespace tink {
      type internal (line 28) | namespace internal {
        function ReadWycheproofTestVectors (line 32) | std::vector<WycheproofTestVector> ReadWycheproofTestVectors(

FILE: cc/aead/internal/wycheproof_aead.h
  function namespace (line 25) | namespace crypto {

FILE: cc/aead/internal/zero_copy_aead.h
  function namespace (line 26) | namespace crypto {

FILE: cc/aead/internal/zero_copy_aead_wrapper.cc
  type crypto (line 37) | namespace crypto {
    type tink (line 38) | namespace tink {
      type internal (line 39) | namespace internal {
        function Validate (line 46) | util::Status Validate(PrimitiveSet<ZeroCopyAead>* aead_set) {
        class ZeroCopyAeadSetWrapper (line 58) | class ZeroCopyAeadSetWrapper : public Aead {
          method ZeroCopyAeadSetWrapper (line 60) | explicit ZeroCopyAeadSetWrapper(

FILE: cc/aead/internal/zero_copy_aead_wrapper.h
  function namespace (line 28) | namespace crypto {

FILE: cc/aead/internal/zero_copy_aead_wrapper_test.cc
  type crypto (line 42) | namespace crypto {
    type tink (line 43) | namespace tink {
      type internal (line 44) | namespace internal {
        function TEST (line 67) | TEST(ZeroCopyAeadWrapperEmptyTest, Nullptr) {
        function TEST (line 74) | TEST(ZeroCopyAeadWrapperEmptyTest, Empty) {
        class ZeroCopyAeadWrapperTest (line 82) | class ZeroCopyAeadWrapperTest : public testing::Test {
          method SetUp (line 84) | void SetUp() override {
          method SetUpMockZeroCopyAead (line 104) | std::unique_ptr<MockZeroCopyAead> SetUpMockZeroCopyAead() {
        function TEST_F (line 128) | TEST_F(ZeroCopyAeadWrapperTest, EncryptDecrypt) {
        function TEST_F (line 140) | TEST_F(ZeroCopyAeadWrapperTest, EncryptMultipleKeys) {
        function TEST_F (line 176) | TEST_F(ZeroCopyAeadWrapperTest, EncryptDecryptRawKey) {
        function TEST_F (line 226) | TEST_F(ZeroCopyAeadWrapperTest, EncryptBadDecrypt) {

FILE: cc/aead/internal/zero_copy_aes_gcm_boringssl.cc
  type crypto (line 39) | namespace crypto {
    type tink (line 40) | namespace tink {
      type internal (line 41) | namespace internal {

FILE: cc/aead/internal/zero_copy_aes_gcm_boringssl.h
  function namespace (line 32) | namespace crypto {

FILE: cc/aead/internal/zero_copy_aes_gcm_boringssl_test.cc
  type crypto (line 42) | namespace crypto {
    type tink (line 43) | namespace tink {
      type internal (line 44) | namespace internal {
        class ZeroCopyAesGcmBoringSslTest (line 73) | class ZeroCopyAesGcmBoringSslTest : public testing::Test {
          method SetUp (line 75) | void SetUp() override {
        function TEST_F (line 87) | TEST_F(ZeroCopyAesGcmBoringSslTest,
        function TEST_F (line 94) | TEST_F(ZeroCopyAesGcmBoringSslTest, EncryptDecrypt) {
        function TEST_F (line 113) | TEST_F(ZeroCopyAesGcmBoringSslTest, DecryptEncodedCiphertext) {
        function TEST_F (line 123) | TEST_F(ZeroCopyAesGcmBoringSslTest, EncryptBufferTooSmall) {
        function TEST_F (line 134) | TEST_F(ZeroCopyAesGcmBoringSslTest, DecryptBufferTooSmall) {
        function TEST_F (line 145) | TEST_F(ZeroCopyAesGcmBoringSslTest, EncryptOverlappingPlaintextCip...
        function TEST_F (line 159) | TEST_F(ZeroCopyAesGcmBoringSslTest, DecryptOverlappingPlaintextCip...
        class ZeroCopyAesGcmBoringSslWycheproofTest (line 176) | class ZeroCopyAesGcmBoringSslWycheproofTest
          method SetUp (line 178) | void SetUp() override {
        function TEST_P (line 190) | TEST_P(ZeroCopyAesGcmBoringSslWycheproofTest, Decrypt) {

FILE: cc/aead/key_gen_config_v0.cc
  type crypto (line 23) | namespace crypto {
    type tink (line 24) | namespace tink {
      function KeyGenConfiguration (line 26) | const KeyGenConfiguration& KeyGenConfigAeadV0() {

FILE: cc/aead/key_gen_config_v0.h
  function namespace (line 22) | namespace crypto {

FILE: cc/aead/kms_aead_key_manager.h
  function namespace (line 39) | namespace crypto {

FILE: cc/aead/kms_aead_key_manager_test.cc
  type crypto (line 39) | namespace crypto {
    type tink (line 40) | namespace tink {
      function TEST (line 53) | TEST(KmsAeadKeyManagerTest, Basics) {
      function TEST (line 61) | TEST(KmsAeadKeyManagerTest, ValidateEmptyKey) {
      function TEST (line 66) | TEST(KmsAeadKeyManagerTest, ValidateValidKey) {
      function TEST (line 73) | TEST(KmsAeadKeyManagerTest, ValidateWrongVersion) {
      function TEST (line 80) | TEST(KmsAeadKeyManagerTest, ValidateNoUri) {
      function TEST (line 86) | TEST(KmsAeadKeyManagerTest, ValidateKeyFormatEmptyKey) {
      function TEST (line 91) | TEST(KmsAeadKeyManagerTest, ValidateKeyFormatValidKey) {
      function TEST (line 97) | TEST(KmsAeadKeyManagerTest, ValidateKeyFormatNoUri) {
      function TEST (line 102) | TEST(KmsAeadKeyManagerTest, CreateKey) {
      class KmsAeadKeyManagerCreateTest (line 110) | class KmsAeadKeyManagerCreateTest : public ::testing::Test {
        method SetUpTestSuite (line 115) | static void SetUpTestSuite() {
      function TEST_F (line 125) | TEST_F(KmsAeadKeyManagerCreateTest, CreateAead) {
      function TEST_F (line 140) | TEST_F(KmsAeadKeyManagerCreateTest, CreateAeadWrongKeyName) {
      function TEST_F (line 149) | TEST_F(KmsAeadKeyManagerCreateTest, CreateAeadWrongPrefix) {
      function TEST_F (line 158) | TEST_F(KmsAeadKeyManagerCreateTest, CreateAeadUnboundKey) {

FILE: cc/aead/kms_envelope_aead.cc
  type crypto (line 37) | namespace crypto {
    type tink (line 38) | namespace tink {
      function GetEnvelopeCiphertext (line 50) | std::string GetEnvelopeCiphertext(absl::string_view encrypted_dek,

FILE: cc/aead/kms_envelope_aead.h
  function namespace (line 30) | namespace crypto {

FILE: cc/aead/kms_envelope_aead_key_manager.cc
  type crypto (line 30) | namespace crypto {
    type tink (line 31) | namespace tink {

FILE: cc/aead/kms_envelope_aead_key_manager.h
  function namespace (line 39) | namespace crypto {
  function override (line 89) | const override {

FILE: cc/aead/kms_envelope_aead_key_manager_test.cc
  type crypto (line 48) | namespace crypto {
    type tink (line 49) | namespace tink {
      function TEST (line 64) | TEST(KmsEnvelopeAeadKeyManagerTest, Basics) {
      function TEST (line 72) | TEST(KmsEnvelopeAeadKeyManagerTest, ValidateEmptyKey) {
      function TEST (line 77) | TEST(KmsEnvelopeAeadKeyManagerTest, ValidateValidKey) {
      function TEST (line 87) | TEST(KmsEnvelopeAeadKeyManagerTest, ValidateWrongVersion) {
      function TEST (line 96) | TEST(KmsEnvelopeAeadKeyManagerTest, ValidateNoUri) {
      function TEST (line 104) | TEST(KmsEnvelopeAeadKeyManagerTest, ValidateKeyFormatEmptyKey) {
      function TEST (line 110) | TEST(KmsEnvelopeAeadKeyManagerTest, ValidateKeyFormatValidKey) {
      function TEST (line 118) | TEST(KmsEnvelopeAeadKeyManagerTest, ValidateKeyFormatNoUri) {
      function TEST (line 125) | TEST(KmsEnvelopeAeadKeyManagerTest, ValidateKeyFormatNoTemplate) {
      function TEST (line 132) | TEST(KmsEnvelopeAeadKeyManagerTest, ValidateKeyFormatInvalidDekTempl...
      function TEST (line 140) | TEST(KmsEnvelopeAeadKeyManagerTest, CreateKey) {
      class KmsEnvelopeAeadKeyManagerCreateTest (line 151) | class KmsEnvelopeAeadKeyManagerCreateTest : public ::testing::Test {
        method SetUpTestSuite (line 156) | static void SetUpTestSuite() {
      function TEST_F (line 171) | TEST_F(KmsEnvelopeAeadKeyManagerCreateTest, CreateAead) {
      function TEST_F (line 191) | TEST_F(KmsEnvelopeAeadKeyManagerCreateTest, CreateAeadWrongKeyName) {
      function TEST_F (line 202) | TEST_F(KmsEnvelopeAeadKeyManagerCreateTest, CreateAeadWrongTypeUrl) {
      function TEST_F (line 215) | TEST_F(KmsEnvelopeAeadKeyManagerCreateTest, CreateAeadWrongPrefix) {
      function TEST_F (line 226) | TEST_F(KmsEnvelopeAeadKeyManagerCreateTest, CreateAeadUnboundKey) {
      class KmsEnvelopeAeadKeyManagerDekTemplatesTest (line 246) | class KmsEnvelopeAeadKeyManagerDekTemplatesTest
        method SetUp (line 248) | void SetUp() override { ASSERT_THAT(AeadConfig::Register(), IsOk()...
      function TEST_P (line 251) | TEST_P(KmsEnvelopeAeadKeyManagerDekTemplatesTest, EncryptDecryp) {

FILE: cc/aead/kms_envelope_aead_test.cc
  type crypto (line 48) | namespace crypto {
    type tink (line 49) | namespace tink {
      class KmsEnvelopeAeadTest (line 67) | class KmsEnvelopeAeadTest : public Test {
        method SetUp (line 69) | void SetUp() override { ASSERT_THAT(AeadConfig::Register(), IsOk()...
      function TEST_F (line 72) | TEST_F(KmsEnvelopeAeadTest, EncryptDecryptSucceed) {
      function TEST_F (line 97) | TEST_F(KmsEnvelopeAeadTest, NewFailsIfReamoteAeadIsNull) {
      function TEST_F (line 104) | TEST_F(KmsEnvelopeAeadTest, NewFailsIfDekKeyManagerIsNotRegistered) {
      function TEST_F (line 113) | TEST_F(KmsEnvelopeAeadTest, NewFailsIfUsingDekTemplateOfUnsupportedK...
      function TEST_F (line 122) | TEST_F(KmsEnvelopeAeadTest, DecryptFailsWithInvalidCiphertextOrAad) {
      function TEST_F (line 166) | TEST_F(KmsEnvelopeAeadTest, DekMaintainsCorrectKeyFormat) {
      function TEST_F (line 197) | TEST_F(KmsEnvelopeAeadTest, MultipleEncryptionsProduceDifferentDeks) {
      class KmsEnvelopeAeadDekTemplatesTest (line 236) | class KmsEnvelopeAeadDekTemplatesTest
        method SetUp (line 238) | void SetUp() override { ASSERT_THAT(AeadConfig::Register(), IsOk()...
      function TEST_P (line 241) | TEST_P(KmsEnvelopeAeadDekTemplatesTest, EncryptDecrypt) {
      function GetTestTemplates (line 266) | std::vector<KeyTemplate> GetTestTemplates() {
      function TEST_F (line 285) | TEST_F(KmsEnvelopeAeadTest, PrimitiveFromTemplateAndFromNewAreCompat...

FILE: cc/aead/mock_aead.h
  function namespace (line 27) | namespace crypto {

FILE: cc/aead/xchacha20_poly1305_key.cc
  type crypto (line 34) | namespace crypto {
    type tink (line 35) | namespace tink {
      function ComputeOutputPrefix (line 38) | util::StatusOr<std::string> ComputeOutputPrefix(

FILE: cc/aead/xchacha20_poly1305_key.h
  function namespace (line 32) | namespace crypto {

FILE: cc/aead/xchacha20_poly1305_key_manager.h
  function namespace (line 42) | namespace crypto {

FILE: cc/aead/xchacha20_poly1305_key_manager_test.cc
  type crypto (line 39) | namespace crypto {
    type tink (line 40) | namespace tink {
      function TEST (line 54) | TEST(XChaCha20Poly1305KeyManagerTest, Basics) {
      function TEST (line 63) | TEST(XChaCha20Poly1305KeyManagerTest, ValidateEmptyKey) {
      function TEST (line 68) | TEST(XChaCha20Poly1305KeyManagerTest, ValidateValid32ByteKey) {
      function TEST (line 75) | TEST(XChaCha20Poly1305KeyManagerTest, ValidateInvalid16ByteKey) {
      function TEST (line 82) | TEST(XChaCha20Poly1305KeyManagerTest, ValidateInvalid31ByteKey) {
      function TEST (line 89) | TEST(XChaCha20Poly1305KeyManagerTest, ValidateInvalid33ByteKey) {
      function TEST (line 96) | TEST(XChaCha20Poly1305KeyManagerTest, ValidateInvalidVersion) {
      function TEST (line 103) | TEST(XChaCha20Poly1305KeyManagerTest, ValidateKeyFormat) {
      function TEST (line 109) | TEST(XChaCha20Poly1305KeyManagerTest, CreateKey) {
      function TEST (line 118) | TEST(XChaCha20Poly1305KeyManagerTest, DeriveKey) {
      function TEST (line 131) | TEST(XChaCha20Poly1305KeyManagerTest, DeriveKeyFromLongSeed) {
      function TEST (line 144) | TEST(XChaCha20Poly1305KeyManagerTest, DeriveKeyWithoutEnoughEntropy) {
      function TEST (line 157) | TEST(XChaCha20Poly1305KeyManagerTest, DeriveKeyWrongVersion) {
      function TEST (line 169) | TEST(XChaCha20Poly1305KeyManagerTest, CreateKeyValid) {
      function TEST (line 178) | TEST(XChaCha20Poly1305KeyManagerTest, CreateAeadFailsWithOpenSsl) {
      function TEST (line 193) | TEST(XChaCha20Poly1305KeyManagerTest, CreateAeadSucceedsWithBoringSs...

FILE: cc/aead/xchacha20_poly1305_key_test.cc
  type crypto (line 31) | namespace crypto {
    type tink (line 32) | namespace tink {
      type TestCase (line 41) | struct TestCase {
      function TEST_P (line 58) | TEST_P(XChaCha20Poly1305KeyTest, CreateSucceeds) {
      function TEST (line 77) | TEST(XChaCha20Poly1305KeyTest, CreateKeyWithInvalidVariantFails) {
      function TEST (line 87) | TEST(XChaCha20Poly1305KeyTest, CreateKeyWithInvalidKeySizeFails) {
      function TEST (line 98) | TEST(XChaCha20Poly1305KeyTest, CreateKeyWithInvalidIdRequirementFail...
      function TEST_P (line 113) | TEST_P(XChaCha20Poly1305KeyTest, KeyEquals) {
      function TEST (line 134) | TEST(XChaCha20Poly1305KeyTest, DifferentVariantNotEqual) {
      function TEST (line 153) | TEST(XChaCha20Poly1305KeyTest, DifferentSecretDataNotEqual) {
      function TEST (line 173) | TEST(XChaCha20Poly1305KeyTest, DifferentIdRequirementNotEqual) {

FILE: cc/aead/xchacha20_poly1305_parameters.cc
  type crypto (line 26) | namespace crypto {
    type tink (line 27) | namespace tink {

FILE: cc/aead/xchacha20_poly1305_parameters.h
  function namespace (line 24) | namespace crypto {

FILE: cc/aead/xchacha20_poly1305_parameters_test.cc
  type crypto (line 25) | namespace crypto {
    type tink (line 26) | namespace tink {
      type TestCase (line 36) | struct TestCase {
      function TEST_P (line 52) | TEST_P(XChaCha20Poly1305ParametersTest, Create) {
      function TEST (line 63) | TEST(XChaCha20Poly1305ParametersTest, CreateWithInvalidVariantFails) {
      function TEST (line 71) | TEST(XChaCha20Poly1305ParametersTest, CopyConstructor) {
      function TEST (line 83) | TEST(XChaCha20Poly1305ParametersTest, CopyAssignment) {
      function TEST_P (line 95) | TEST_P(XChaCha20Poly1305ParametersTest, ParametersEquals) {
      function TEST (line 112) | TEST(XChaCha20Poly1305ParametersTest, DifferentVariantNotEqual) {

FILE: cc/aead/xchacha20_poly1305_proto_serialization.cc
  type crypto (line 42) | namespace crypto {
    type tink (line 43) | namespace tink {
      function ToVariant (line 65) | util::StatusOr<XChaCha20Poly1305Parameters::Variant> ToVariant(
      function ToOutputPrefixType (line 83) | util::StatusOr<OutputPrefixType> ToOutputPrefixType(
      function ParseParameters (line 98) | util::StatusOr<XChaCha20Poly1305Parameters> ParseParameters(
      function SerializeParameters (line 124) | util::StatusOr<internal::ProtoParametersSerialization> SerializePara...
      function ParseKey (line 137) | util::StatusOr<XChaCha20Poly1305Key> ParseKey(
      function SerializeKey (line 172) | util::StatusOr<internal::ProtoKeySerialization> SerializeKey(
      function XChaCha20Poly1305ProtoParametersParserImpl (line 198) | XChaCha20Poly1305ProtoParametersParserImpl*
      function XChaCha20Poly1305ProtoParametersSerializerImpl (line 205) | XChaCha20Poly1305ProtoParametersSerializerImpl*
      function XChaCha20Poly1305ProtoKeyParserImpl (line 212) | XChaCha20Poly1305ProtoKeyParserImpl* XChaCha20Poly1305ProtoKeyParser...
      function XChaCha20Poly1305ProtoKeySerializerImpl (line 218) | XChaCha20Poly1305ProtoKeySerializerImpl* XChaCha20Poly1305ProtoKeySe...
      function RegisterXChaCha20Poly1305ProtoSerialization (line 226) | util::Status RegisterXChaCha20Poly1305ProtoSerialization() {

FILE: cc/aead/xchacha20_poly1305_proto_serialization.h
  function namespace (line 22) | namespace crypto {

FILE: cc/aead/xchacha20_poly1305_proto_serialization_test.cc
  type crypto (line 44) | namespace crypto {
    type tink (line 45) | namespace tink {
      type TestCase (line 63) | struct TestCase {
      class XChaCha20Poly1305ProtoSerializationTest (line 70) | class XChaCha20Poly1305ProtoSerializationTest : public TestWithParam...
        method SetUp (line 72) | void SetUp() override {
      function TEST_F (line 77) | TEST_F(XChaCha20Poly1305ProtoSerializationTest, RegisterTwiceSucceed...
      function TEST_P (line 96) | TEST_P(XChaCha20Poly1305ProtoSerializationTest, ParseParameters) {
      function TEST_F (line 121) | TEST_F(XChaCha20Poly1305ProtoSerializationTest,
      function TEST_F (line 139) | TEST_F(XChaCha20Poly1305ProtoSerializationTest,
      function TEST_F (line 158) | TEST_F(XChaCha20Poly1305ProtoSerializationTest,
      function TEST_P (line 177) | TEST_P(XChaCha20Poly1305ProtoSerializationTest, SerializeParameters) {
      function TEST_P (line 207) | TEST_P(XChaCha20Poly1305ProtoSerializationTest, ParseKey) {
      function TEST_F (line 246) | TEST_F(XChaCha20Poly1305ProtoSerializationTest, ParseLegacyKeyAsCrun...
      function TEST_F (line 275) | TEST_F(XChaCha20Poly1305ProtoSerializationTest,
      function TEST_F (line 294) | TEST_F(XChaCha20Poly1305ProtoSerializationTest, ParseKeyNoSecretKeyA...
      function TEST_F (line 316) | TEST_F(XChaCha20Poly1305ProtoSerializationTest, ParseKeyWithInvalidV...
      function TEST_P (line 338) | TEST_P(XChaCha20Poly1305ProtoSerializationTest, SerializeKey) {
      function TEST_F (line 378) | TEST_F(XChaCha20Poly1305ProtoSerializationTest, SerializeKeyNoSecret...

FILE: cc/big_integer.h
  function namespace (line 25) | namespace crypto {

FILE: cc/binary_keyset_reader.h
  function namespace (line 29) | namespace crypto {

FILE: cc/binary_keyset_writer.h
  function namespace (line 30) | namespace crypto {

FILE: cc/chunked_mac.h
  function namespace (line 27) | namespace crypto {

FILE: cc/cleartext_keyset_handle.h
  function namespace (line 33) | namespace crypto {

FILE: cc/config/config_util.cc
  type crypto (line 21) | namespace crypto {
    type tink (line 22) | namespace tink {
      function CreateTinkKeyTypeEntry (line 24) | google::crypto::tink::KeyTypeEntry CreateTinkKeyTypeEntry(

FILE: cc/config/config_util.h
  function namespace (line 24) | namespace crypto {

FILE: cc/config/config_util_test.cc
  type crypto (line 25) | namespace crypto {
    type tink (line 26) | namespace tink {
      function TEST (line 28) | TEST(CreateKeyTypeEntry, Simple) {

FILE: cc/config/fips_140_2.cc
  type crypto (line 42) | namespace crypto {
    type tink (line 43) | namespace tink {
      function AddMac (line 46) | util::Status AddMac(Configuration& config) {
      function AddAead (line 62) | util::Status AddAead(Configuration& config) {
      function AddPrf (line 78) | util::Status AddPrf(Configuration& config) {
      function AddSignature (line 89) | util::Status AddSignature(Configuration& config) {
      function Configuration (line 120) | const Configuration& ConfigFips140_2() {

FILE: cc/config/fips_140_2.h
  function namespace (line 22) | namespace crypto {

FILE: cc/config/fips_140_2_test.cc
  type crypto (line 49) | namespace crypto {
    type tink (line 50) | namespace tink {
      class Fips1402Test (line 57) | class Fips1402Test : public ::testing::Test {
        method TearDown (line 59) | void TearDown() override { internal::UnSetFipsRestricted(); }
      function TEST_F (line 62) | TEST_F(Fips1402Test, PrimitiveWrappers) {
      function TEST_F (line 79) | TEST_F(Fips1402Test, KeyManagers) {
      function TEST_F (line 99) | TEST_F(Fips1402Test, FailsInNonFipsMode) {
      function TEST_F (line 108) | TEST_F(Fips1402Test, NonFipsTypeNotPresent) {
      function TEST_F (line 120) | TEST_F(Fips1402Test, GetPrimitive) {

FILE: cc/config/global_registry.cc
  type crypto (line 25) | namespace crypto {
    type tink (line 26) | namespace tink {
      function Configuration (line 28) | const Configuration& ConfigGlobalRegistry() {
      function KeyGenConfiguration (line 37) | const KeyGenConfiguration& KeyGenConfigGlobalRegistry() {

FILE: cc/config/global_registry.h
  function namespace (line 23) | namespace crypto {

FILE: cc/config/global_registry_test.cc
  type crypto (line 40) | namespace crypto {
    type tink (line 41) | namespace tink {
      class FakePrimitive (line 52) | class FakePrimitive {
        method FakePrimitive (line 54) | explicit FakePrimitive(std::string s) : s_(s) {}
        method get (line 55) | std::string get() { return s_; }
      class FakeKeyTypeManager (line 61) | class FakeKeyTypeManager
        class FakePrimitiveFactory (line 64) | class FakePrimitiveFactory : public PrimitiveFactory<FakePrimitive> {
          method Create (line 66) | util::StatusOr<std::unique_ptr<FakePrimitive>> Create(
        method FakeKeyTypeManager (line 72) | FakeKeyTypeManager()
        method key_material_type (line 75) | KeyData::KeyMaterialType key_material_type() const override {
        method get_version (line 79) | uint32_t get_version() const override { return 0; }
        method ValidateKey (line 83) | util::Status ValidateKey(const AesGcmKey& key) const override {
        method ValidateKeyFormat (line 87) | util::Status ValidateKeyFormat(
        method CreateKey (line 92) | util::StatusOr<AesGcmKey> CreateKey(
        method DeriveKey (line 97) | util::StatusOr<AesGcmKey> DeriveKey(
      class FakePrimitiveWrapper (line 108) | class FakePrimitiveWrapper
        method Wrap (line 111) | util::StatusOr<std::unique_ptr<FakePrimitive>> Wrap(
      function TEST (line 119) | TEST(GlobalRegistryTest, GenerateNewKeysetHandleFromKeyGenConfig) {
      function TEST (line 139) | TEST(GlobalRegistryTest, GetPrimitiveFromConfig) {

FILE: cc/config/key_gen_fips_140_2.cc
  type crypto (line 36) | namespace crypto {
    type tink (line 37) | namespace tink {
      function AddMac (line 40) | util::Status AddMac(KeyGenConfiguration& config) {
      function AddAead (line 45) | util::Status AddAead(KeyGenConfiguration& config) {
      function AddPrf (line 55) | util::Status AddPrf(KeyGenConfiguration& config) {
      function AddSignature (line 60) | util::Status AddSignature(KeyGenConfiguration& config) {
      function KeyGenConfiguration (line 81) | const KeyGenConfiguration& KeyGenConfigFips140_2() {

FILE: cc/config/key_gen_fips_140_2.h
  function namespace (line 22) | namespace crypto {

FILE: cc/config/key_gen_fips_140_2_test.cc
  type crypto (line 38) | namespace crypto {
    type tink (line 39) | namespace tink {
      class KeyGenFips1402Test (line 45) | class KeyGenFips1402Test : public testing::Test {
        method TearDown (line 47) | void TearDown() override { internal::UnSetFipsRestricted(); }
      function TEST_F (line 50) | TEST_F(KeyGenFips1402Test, KeyManagers) {
      function TEST_F (line 71) | TEST_F(KeyGenFips1402Test, FailsInNonFipsMode) {
      function TEST_F (line 81) | TEST_F(KeyGenFips1402Test, NonFipsTypeNotPresent) {
      function TEST_F (line 94) | TEST_F(KeyGenFips1402Test, GenerateNewKeysetHandle) {

FILE: cc/config/key_gen_v0.cc
  type crypto (line 29) | namespace crypto {
    type tink (line 30) | namespace tink {
      function KeyGenConfiguration (line 32) | const KeyGenConfiguration& KeyGenConfigV0() {

FILE: cc/config/key_gen_v0.h
  function namespace (line 22) | namespace crypto {

FILE: cc/config/tink_config.cc
  type crypto (line 31) | namespace crypto {
    type tink (line 32) | namespace tink {
      function RegistryConfig (line 35) | const RegistryConfig& TinkConfig::Latest() {

FILE: cc/config/tink_config.h
  function namespace (line 25) | namespace crypto {

FILE: cc/config/tink_config_test.cc
  type crypto (line 35) | namespace crypto {
    type tink (line 36) | namespace tink {
      function TEST (line 42) | TEST(TinkConfigTest, RegisterWorks) {

FILE: cc/config/tink_fips.cc
  type crypto (line 23) | namespace crypto {
    type tink (line 24) | namespace tink {
      function IsFipsModeEnabled (line 26) | bool IsFipsModeEnabled() {
      function RestrictToFips (line 30) | crypto::tink::util::Status RestrictToFips() {

FILE: cc/config/tink_fips.h
  function namespace (line 24) | namespace crypto {

FILE: cc/config/tink_fips_test.cc
  type crypto (line 28) | namespace crypto {
    type tink (line 29) | namespace tink {
      class FipsIncompatible (line 37) | class FipsIncompatible {
      class FipsCompatibleWithBoringCrypto (line 43) | class FipsCompatibleWithBoringCrypto {
      function TEST (line 49) | TEST(TinkFipsTest, FipsEnabledWhenBuiltInFipsMode) {
      function TEST (line 58) | TEST(TinkFipsTest, FipsDisabledWhenNotBuildInFipsMode) {
      function TEST (line 67) | TEST(TinkFipsTest, CompatibilityChecksWithBoringCrypto) {
      function TEST (line 90) | TEST(TinkFipsTest, CompatibilityChecksWithoutBoringCrypto) {
      function TEST (line 114) | TEST(TinkFipsTest, FailIfRegistryNotEmpty) {

FILE: cc/config/v0.cc
  type crypto (line 30) | namespace crypto {
    type tink (line 31) | namespace tink {
      function Configuration (line 33) | const Configuration& ConfigV0() {

FILE: cc/config/v0.h
  function namespace (line 22) | namespace crypto {

FILE: cc/config/v0_test.cc
  type crypto (line 64) | namespace crypto {
    type tink (line 65) | namespace tink {
      function TEST (line 73) | TEST(V0Test, PrimitiveWrappers) {
      function TEST_P (line 99) | TEST_P(V0KeyTypesTest, KeyManagers) {
      function TEST (line 134) | TEST(V0Test, GetPrimitive) {

FILE: cc/configuration.h
  function namespace (line 23) | namespace crypto {

FILE: cc/core/big_integer.cc
  type crypto (line 24) | namespace crypto {
    type tink (line 25) | namespace tink {

FILE: cc/core/big_integer_test.cc
  type crypto (line 27) | namespace crypto {
    type tink (line 28) | namespace tink {
      function TEST (line 51) | TEST(BigIntegerTest, CreateAndGet) {
      function TEST (line 59) | TEST(BigIntegerTest, CreateAndGetPadded) {
      function TEST (line 70) | TEST(BigIntegerTest, CreateAndGetEmptyStringWorks) {
      function TEST (line 78) | TEST(BigIntegerTest, CreateAndGetNullCharactersWorks) {
      function TEST (line 86) | TEST(BigIntegerTest, Equals) {
      function TEST (line 97) | TEST(BigIntegerTest, EqualsPadded) {
      function TEST (line 107) | TEST(BigIntegerTest, NotEquals) {
      function TEST (line 130) | TEST(BigIntegerTest, NotEqualsDifferentSize) {
      function TEST (line 152) | TEST(BigIntegerTest, CopyConstructor) {
      function TEST (line 160) | TEST(BigIntegerTest, CopyAssignment) {
      function TEST (line 168) | TEST(BigIntegerTest, MoveConstructor) {
      function TEST (line 176) | TEST(BigIntegerTest, MoveAssignment) {

FILE: cc/core/binary_keyset_reader.cc
  type crypto (line 34) | namespace crypto {
    type tink (line 35) | namespace tink {

FILE: cc/core/binary_keyset_reader_test.cc
  type crypto (line 40) | namespace crypto {
    type tink (line 41) | namespace tink {
      class BinaryKeysetReaderTest (line 44) | class BinaryKeysetReaderTest : public ::testing::Test {
        method SetUp (line 46) | void SetUp() override {
      function TEST_F (line 73) | TEST_F(BinaryKeysetReaderTest, testReaderCreation) {
      function TEST_F (line 107) | TEST_F(BinaryKeysetReaderTest, testReadFromString) {
      function TEST_F (line 128) | TEST_F(BinaryKeysetReaderTest, testReadFromStream) {
      function TEST_F (line 153) | TEST_F(BinaryKeysetReaderTest, testReadEncryptedFromString) {
      function TEST_F (line 177) | TEST_F(BinaryKeysetReaderTest, testReadEncryptedFromStream) {

FILE: cc/core/binary_keyset_writer.cc
  type crypto (line 34) | namespace crypto {
    type tink (line 35) | namespace tink {
      function WriteProto (line 39) | util::Status WriteProto(const portable_proto::MessageLite& proto,

FILE: cc/core/binary_keyset_writer_test.cc
  type crypto (line 53) | namespace crypto {
    type tink (line 54) | namespace tink {
      class BinaryKeysetWriterTest (line 57) | class BinaryKeysetWriterTest : public ::testing::Test {
        method SetUp (line 59) | void SetUp() override {
      function TEST_F (line 86) | TEST_F(BinaryKeysetWriterTest, testWriterCreation) {
      function TEST_F (line 102) | TEST_F(BinaryKeysetWriterTest, testWriteKeyset) {
      function TEST_F (line 113) | TEST_F(BinaryKeysetWriterTest, testWriteEncryptedKeyset) {
      function TEST_F (line 124) | TEST_F(BinaryKeysetWriterTest, testDestinationStreamErrors) {
      function TEST_F (line 143) | TEST_F(BinaryKeysetWriterTest, EncryptedKeysetOverhead) {

FILE: cc/core/cleartext_keyset_handle.cc
  type crypto (line 39) | namespace crypto {
    type tink (line 40) | namespace tink {
      function Keyset (line 87) | const Keyset& CleartextKeysetHandle::GetKeyset(

FILE: cc/core/cleartext_keyset_handle_test.cc
  type crypto (line 42) | namespace crypto {
    type tink (line 43) | namespace tink {
      class CleartextKeysetHandleTest (line 46) | class CleartextKeysetHandleTest : public ::testing::Test {
      function TEST_F (line 50) | TEST_F(CleartextKeysetHandleTest, testRead) {
      function TEST_F (line 77) | TEST_F(CleartextKeysetHandleTest, testWrite) {

FILE: cc/core/crypto_format.cc
  type crypto (line 31) | namespace crypto {
    type tink (line 32) | namespace tink {
      function uint32_as_big_endian (line 37) | void uint32_as_big_endian(uint32_t value, char* buf) {

FILE: cc/core/crypto_format_test.cc
  type crypto (line 27) | namespace crypto {
    type tink (line 28) | namespace tink {
      function TestNonRawPrefix (line 33) | void TestNonRawPrefix(const KeysetInfo::KeyInfo& key_info, int prefi...
      class CryptoFormatTest (line 48) | class CryptoFormatTest : public ::testing::Test {
      function TEST_F (line 51) | TEST_F(CryptoFormatTest, testConstants) {
      function TEST_F (line 59) | TEST_F(CryptoFormatTest, testTinkPrefix) {
      function TEST_F (line 69) | TEST_F(CryptoFormatTest, testLegacyPrefix) {
      function TEST_F (line 79) | TEST_F(CryptoFormatTest, testCrunchyPrefix) {
      function TEST_F (line 89) | TEST_F(CryptoFormatTest, testRawPrefix) {

FILE: cc/core/ec_point_test.cc
  type crypto (line 26) | namespace crypto {
    type tink (line 27) | namespace tink {
      function TEST (line 32) | TEST(EcPointTest, Create) {
      function TEST (line 42) | TEST(EcPointTest, CopyConstructor) {
      function TEST (line 53) | TEST(EcPointTest, CopyAssignment) {
      function TEST (line 64) | TEST(EcPointTest, MoveConstructor) {
      function TEST (line 75) | TEST(EcPointTest, MoveAssignment) {
      function TEST (line 86) | TEST(EcPointTest, Equals) {
      function TEST (line 99) | TEST(EcPointTest, DifferentXNotEqual) {
      function TEST (line 113) | TEST(EcPointTest, DifferentYNotEqual) {

FILE: cc/core/json_keyset_reader.cc
  type crypto (line 41) | namespace crypto {
    type tink (line 42) | namespace tink {
      function ValidateEncryptedKeyset (line 53) | util::Status ValidateEncryptedKeyset(const rapidjson::Document& json...
      function ValidateKeysetInfo (line 64) | util::Status ValidateKeysetInfo(const rapidjson::Value& json_value) {
      function ValidateKeyInfo (line 75) | util::Status ValidateKeyInfo(const rapidjson::Value& json_value) {
      function KeyInfoFromJson (line 87) | util::StatusOr<std::unique_ptr<KeysetInfo::KeyInfo>> KeyInfoFromJson(
      function KeysetInfoFromJson (line 101) | util::StatusOr<std::unique_ptr<KeysetInfo>> KeysetInfoFromJson(
      function EncryptedKeysetFromJson (line 115) | util::StatusOr<std::unique_ptr<EncryptedKeyset>> EncryptedKeysetFrom...
      function ValidateKeyset (line 138) | util::Status ValidateKeyset(const rapidjson::Document& json_doc) {
      function ValidateKey (line 148) | util::Status ValidateKey(const rapidjson::Value& json_value) {
      function ValidateKeyData (line 159) | util::Status ValidateKeyData(const rapidjson::Value& json_value) {
      function KeyDataFromJson (line 170) | util::StatusOr<std::unique_ptr<KeyData>> KeyDataFromJson(
      function KeyFromJson (line 187) | util::StatusOr<std::unique_ptr<Keyset::Key>> KeyFromJson(
      function KeysetFromJson (line 203) | util::StatusOr<std::unique_ptr<Keyset>> KeysetFromJson(

FILE: cc/core/json_keyset_reader_test.cc
  type crypto (line 40) | namespace crypto {
    type tink (line 41) | namespace tink {
      class JsonKeysetReaderTest (line 59) | class JsonKeysetReaderTest : public ::testing::Test {
        method SetUp (line 61) | void SetUp() override {
      function TEST_F (line 147) | TEST_F(JsonKeysetReaderTest, testReaderCreation) {
      function TEST_F (line 181) | TEST_F(JsonKeysetReaderTest, testReadFromString) {
      function TEST_F (line 211) | TEST_F(JsonKeysetReaderTest, testReadFromStream) {
      function TEST_F (line 236) | TEST_F(JsonKeysetReaderTest, testReadEncryptedFromString) {
      function TEST_F (line 259) | TEST_F(JsonKeysetReaderTest, testReadEncryptedFromStream) {
      function TEST_F (line 288) | TEST_F(JsonKeysetReaderTest, ReadLargeKeyId) {
      function TEST_F (line 327) | TEST_F(JsonKeysetReaderTest, RejectsNegativeKeyIds) {
      function TEST_F (line 364) | TEST_F(JsonKeysetReaderTest, RejectsKeyIdLargerThanUint32) {
      function TEST_F (line 403) | TEST_F(JsonKeysetReaderTest, parseRecursiveJsonStringFails) {

FILE: cc/core/json_keyset_writer.cc
  type crypto (line 40) | namespace crypto {
    type tink (line 41) | namespace tink {
      function ToJson (line 53) | util::Status ToJson(const KeyData& key_data,
      function ToJson (line 74) | util::Status ToJson(const Keyset::Key& key,
      function ToJsonString (line 97) | util::StatusOr<std::string> ToJsonString(const Keyset& keyset) {
      function ToJson (line 119) | util::Status ToJson(const KeysetInfo::KeyInfo& key_info,
      function ToJson (line 141) | util::Status ToJson(const KeysetInfo& keyset_info,
      function ToJsonString (line 159) | util::StatusOr<std::string> ToJsonString(const EncryptedKeyset& keys...
      function WriteData (line 182) | util::Status WriteData(absl::string_view data, std::ostream* destina...

FILE: cc/core/json_keyset_writer_test.cc
  type crypto (line 41) | namespace crypto {
    type tink (line 42) | namespace tink {
      class JsonKeysetWriterTest (line 58) | class JsonKeysetWriterTest : public ::testing::Test {
        method SetUp (line 60) | void SetUp() override {
      function TEST_F (line 142) | TEST_F(JsonKeysetWriterTest, testWriterCreation) {
      function TEST_F (line 158) | TEST_F(JsonKeysetWriterTest, testWriteKeyset) {
      function TEST_F (line 171) | TEST_F(JsonKeysetWriterTest, testWriteAndReadKeyset) {
      function TEST_F (line 189) | TEST_F(JsonKeysetWriterTest, testWriteEncryptedKeyset) {
      function TEST_F (line 210) | TEST_F(JsonKeysetWriterTest, testWriteAndReadEncryptedKeyset) {
      function TEST_F (line 229) | TEST_F(JsonKeysetWriterTest, testDestinationStreamErrors) {
      function TEST_F (line 248) | TEST_F(JsonKeysetWriterTest, WriteLargeKeyId) {

FILE: cc/core/key_access_test.cc
  type crypto (line 22) | namespace crypto {
    type tink (line 23) | namespace tink {
      function TEST (line 26) | TEST(KeyAccessTest, PublicHasNoSecretAccess) {
      function TEST (line 31) | TEST(KeyAccessTest, SecretKeyAccessHasSecretAccess) {

FILE: cc/core/key_manager.cc
  type crypto (line 25) | namespace crypto {
    type tink (line 26) | namespace tink {
      class AlwaysFailingKeyFactory (line 29) | class AlwaysFailingKeyFactory : public KeyFactory {
        method AlwaysFailingKeyFactory (line 31) | AlwaysFailingKeyFactory() = delete;
        method AlwaysFailingKeyFactory (line 32) | explicit AlwaysFailingKeyFactory(const crypto::tink::util::Status&...
        method NewKey (line 35) | crypto::tink::util::StatusOr<std::unique_ptr<portable_proto::Messa...
        method NewKey (line 40) | crypto::tink::util::StatusOr<std::unique_ptr<portable_proto::Messa...
        method NewKeyData (line 45) | crypto::tink::util::StatusOr<std::unique_ptr<google::crypto::tink:...

FILE: cc/core/key_manager_impl.h
  function namespace (line 41) | namespace crypto {

FILE: cc/core/key_manager_impl_test.cc
  type crypto (line 39) | namespace crypto {
    type tink (line 40) | namespace tink {
      type internal (line 41) | namespace internal {
        class AeadVariant (line 58) | class AeadVariant {
          method AeadVariant (line 60) | explicit AeadVariant(std::string s) : s_(s) {}
          method get (line 62) | std::string get() { return s_; }
        class ExampleKeyTypeManager (line 68) | class ExampleKeyTypeManager : public KeyTypeManager<AesGcmKey, Aes...
          class AeadFactory (line 71) | class AeadFactory : public PrimitiveFactory<Aead> {
            method Create (line 73) | crypto::tink::util::StatusOr<std::unique_ptr<Aead>> Create(
          class AeadVariantFactory (line 81) | class AeadVariantFactory : public PrimitiveFactory<AeadVariant> {
            method Create (line 83) | crypto::tink::util::StatusOr<std::unique_ptr<AeadVariant>> Cre...
          method ExampleKeyTypeManager (line 89) | ExampleKeyTypeManager()
          method key_material_type (line 93) | google::crypto::tink::KeyData::KeyMaterialType key_material_type()
          method CreateKey (line 112) | crypto::tink::util::StatusOr<AesGcmKey> CreateKey(
        function TEST (line 124) | TEST(KeyManagerImplTest, FactoryNewKeyFromMessage) {
        function TEST (line 136) | TEST(KeyManagerImplTest, FactoryNewKeyFromStringView) {
        function TEST (line 150) | TEST(KeyManagerImplTest, FactoryNewKeyFromKeyData) {
        function TEST (line 166) | TEST(KeyManagerImplTest, FactoryNewKeyFromMessageCallsValidate) {
        function TEST (line 181) | TEST(KeyManagerImplTest, FactoryNewKeyFromStringViewCallsValidate) {
        function TEST (line 199) | TEST(KeyManagerImplTest, FactoryNewKeyFromKeyDataCallsValidate) {
        function TEST (line 216) | TEST(CreateDeriverFunctionForTest, KeyMaterialAndKeyType) {
        function TEST (line 232) | TEST(CreateDeriverFunctionForTest, UseParametersAndReturnValue) {
        function TEST (line 259) | TEST(CreateDeriverFunctionForTest, ValidateKeyFormatIsCalled) {
        function TEST (line 274) | TEST(CreateDeriverFunctionForTest, ValidateKeyIsCalled) {
        function TEST (line 292) | TEST(KeyManagerImplTest, GetPrimitiveAead) {
        function TEST (line 310) | TEST(KeyManagerImplTest, GetPrimitiveAeadVariant) {
        function TEST (line 327) | TEST(KeyManagerImplTest, GetPrimitiveFromKey) {
        function TEST (line 344) | TEST(KeyManagerImplTest, GetKeyType) {
        function TEST (line 351) | TEST(KeyManagerImplTest, GetVersion) {
        function TEST (line 359) | TEST(KeyManagerImplTest, DoesSupport) {
        function TEST (line 371) | TEST(KeyManagerImplTest, GetPrimitiveCallsValidate) {
        function TEST (line 393) | TEST(KeyManagerImplTest, GetPrimitiveFromKeyCallsValidate) {
        class NotSupported (line 419) | class NotSupported {}
        function TEST (line 420) | TEST(KeyManagerImplTest, GetPrimitiveFails) {
        class ExampleKeyTypeManagerWithoutFactory (line 437) | class ExampleKeyTypeManagerWithoutFactory
          class AeadFactory (line 440) | class AeadFactory : public PrimitiveFactory<Aead> {
            method Create (line 442) | crypto::tink::util::StatusOr<std::unique_ptr<Aead>> Create(
          class AeadVariantFactory (line 450) | class AeadVariantFactory : public PrimitiveFactory<AeadVariant> {
            method Create (line 452) | crypto::tink::util::StatusOr<std::unique_ptr<AeadVariant>> Cre...
          method ExampleKeyTypeManagerWithoutFactory (line 458) | ExampleKeyTypeManagerWithoutFactory()
          method key_material_type (line 462) | google::crypto::tink::KeyData::KeyMaterialType key_material_type()
          method get_version (line 467) | uint32_t get_version() const override { return kVersion; }
          method ValidateKey (line 471) | util::Status ValidateKey(const AesGcmKey& key) const override {
        function TEST (line 483) | TEST(KeyManagerImplTest, GetPrimitiveWithoutFactoryAead) {
        function TEST (line 501) | TEST(KeyManagerImplTest, NonexistentFactoryNewKeyFromMessage) {
        function TEST (line 512) | TEST(KeyManagerImplTest, NonexistentFactoryNewKeyFromStringView) {
        function TEST (line 526) | TEST(KeyManagerImplTest, NonexistentFactoryNewKeyFromKeyData) {
        function TEST (line 539) | TEST(CreateDeriverFunctionForTest, DeriverWithoutFactory) {

FILE: cc/core/key_manager_test.cc
  type crypto (line 27) | namespace crypto {
    type tink (line 28) | namespace tink {
      function TEST (line 34) | TEST(AlwaysFailingFactoryTest, NewKeyFromProtoLite) {
      function TEST (line 42) | TEST(AlwaysFailingFactoryTest, NewKeyFromStringView) {
      function TEST (line 49) | TEST(AlwaysFailingFactoryTest, NewKeyData) {

FILE: cc/core/key_type_manager.h
  function namespace (line 37) | namespace crypto {

FILE: cc/core/key_type_manager_test.cc
  type crypto (line 38) | namespace crypto {
    type tink (line 39) | namespace tink {
      class AeadVariant (line 50) | class AeadVariant {
        method AeadVariant (line 52) | explicit AeadVariant(std::string s) : s_(s) {}
        method get (line 54) | std::string get() { return s_; }
      class ExampleKeyTypeManager (line 60) | class ExampleKeyTypeManager : public KeyTypeManager<AesGcmKey, AesGc...
        class AeadFactory (line 63) | class AeadFactory : public PrimitiveFactory<Aead> {
          method Create (line 65) | crypto::tink::util::StatusOr<std::unique_ptr<Aead>> Create(
        class AeadVariantFactory (line 73) | class AeadVariantFactory : public PrimitiveFactory<AeadVariant> {
          method Create (line 75) | crypto::tink::util::StatusOr<std::unique_ptr<AeadVariant>> Create(
        method ExampleKeyTypeManager (line 81) | ExampleKeyTypeManager()
        method key_material_type (line 85) | google::crypto::tink::KeyData::KeyMaterialType key_material_type()
        method get_version (line 90) | uint32_t get_version() const override { return kVersion; }
        method ValidateKey (line 94) | crypto::tink::util::Status ValidateKey(const AesGcmKey& key) const...
        method ValidateKeyFormat (line 98) | crypto::tink::util::Status ValidateKeyFormat(
        method CreateKey (line 103) | crypto::tink::util::StatusOr<AesGcmKey> CreateKey(
      function TEST (line 115) | TEST(KeyManagerTest, CreateAead) {
      function TEST (line 127) | TEST(KeyManagerTest, CreateAeadVariant) {
      class NotRegistered (line 136) | class NotRegistered {}
      function TEST (line 137) | TEST(KeyManagerTest, CreateFails) {
      class ExampleKeyTypeManagerWithoutFactory (line 144) | class ExampleKeyTypeManagerWithoutFactory
        class AeadFactory (line 147) | class AeadFactory : public PrimitiveFactory<Aead> {
          method Create (line 149) | crypto::tink::util::StatusOr<std::unique_ptr<Aead>> Create(
        class AeadVariantFactory (line 157) | class AeadVariantFactory : public PrimitiveFactory<AeadVariant> {
          method Create (line 159) | crypto::tink::util::StatusOr<std::unique_ptr<AeadVariant>> Create(
        method ExampleKeyTypeManagerWithoutFactory (line 165) | ExampleKeyTypeManagerWithoutFactory()
        method key_material_type (line 169) | google::crypto::tink::KeyData::KeyMaterialType key_material_type()
        method get_version (line 174) | uint32_t get_version() const override { return kVersion; }
        method ValidateKey (line 178) | util::Status ValidateKey(const AesGcmKey& key) const override {
      function TEST (line 189) | TEST(KeyManagerWithoutFactoryTest, CreateAead) {
      function TEST (line 201) | TEST(KeyManagerWithoutFactoryTest, CreateAeadVariant) {
      function TEST (line 210) | TEST(KeyManagerWithoutFactoryTest, CreateFails) {

FILE: cc/core/keyset_handle.cc
  type crypto (line 65) | namespace crypto {
    type tink (line 66) | namespace tink {
      function Encrypt (line 70) | util::StatusOr<std::unique_ptr<EncryptedKeyset>> Encrypt(
      function Decrypt (line 81) | util::StatusOr<util::SecretProto<Keyset>> Decrypt(
      function ValidateNoSecret (line 98) | util::Status ValidateNoSecret(const Keyset& keyset) {
      function ToProtoKeySerialization (line 112) | util::StatusOr<internal::ProtoKeySerialization> ToProtoKeySerializat...
      function ExtractPublicKey (line 368) | util::StatusOr<std::unique_ptr<Keyset::Key>> ExtractPublicKey(
      function KeysetInfo (line 493) | KeysetInfo KeysetHandle::GetKeysetInfo() const {

FILE: cc/core/keyset_handle_builder.cc
  type crypto (line 44) | namespace crypto {
    type tink (line 45) | namespace tink {
      function SetBuilderEntryAttributes (line 50) | void SetBuilderEntryAttributes(KeyStatus status, bool is_primary,
      function KeysetHandleBuilder (line 123) | KeysetHandleBuilder& KeysetHandleBuilder::AddEntry(
      function KeysetHandleBuilder (line 135) | KeysetHandleBuilder& KeysetHandleBuilder::RemoveEntry(int index) {
      function KeysetHandleBuilder (line 155) | KeysetHandleBuilder& KeysetHandleBuilder::SetMonitoringAnnotations(

FILE: cc/core/keyset_handle_builder_test.cc
  type crypto (line 63) | namespace crypto {
    type tink (line 64) | namespace tink {
      class KeysetHandleBuilderTest (line 86) | class KeysetHandleBuilderTest : public Test {
        method SetUp (line 88) | void SetUp() override {
      function CreateLegacyProtoParameters (line 96) | util::StatusOr<internal::LegacyProtoParameters> CreateLegacyProtoPar...
      function TEST_F (line 105) | TEST_F(KeysetHandleBuilderTest, BuildWithSingleKey) {
      function TEST_F (line 127) | TEST_F(KeysetHandleBuilderTest, BuildWithMultipleKeys) {
      function TEST_F (line 175) | TEST_F(KeysetHandleBuilderTest, BuildCopy) {
      function TEST_F (line 226) | TEST_F(KeysetHandleBuilderTest, IsPrimary) {
      function TEST_F (line 242) | TEST_F(KeysetHandleBuilderTest, SetAndGetStatus) {
      function TEST_F (line 260) | TEST_F(KeysetHandleBuilderTest, BuildWithRandomId) {
      function TEST_F (line 290) | TEST_F(KeysetHandleBuilderTest, BuildWithRandomIdAfterFixedId) {
      function TEST_F (line 313) | TEST_F(KeysetHandleBuilderTest, BuildWithFixedIdAfterRandomIdFails) {
      function TEST_F (line 333) | TEST_F(KeysetHandleBuilderDeathTest, AddEntryToAnotherBuilderCrashes) {
      function TEST_F (line 350) | TEST_F(KeysetHandleBuilderDeathTest, ReAddEntryToSameBuilderCrashes) {
      function TEST_F (line 366) | TEST_F(KeysetHandleBuilderDeathTest,
      function TEST_F (line 384) | TEST_F(KeysetHandleBuilderTest, RemoveEntry) {
      function TEST_F (line 416) | TEST_F(KeysetHandleBuilderDeathTest, RemoveOutofRangeIndexEntryCrash...
      function TEST_F (line 435) | TEST_F(KeysetHandleBuilderTest, Size) {
      function TEST_F (line 459) | TEST_F(KeysetHandleBuilderTest, NoPrimaryFails) {
      function TEST_F (line 481) | TEST_F(KeysetHandleBuilderTest, RemovePrimaryFails) {
      function TEST_F (line 504) | TEST_F(KeysetHandleBuilderTest, AddPrimaryClearsOtherPrimary) {
      function TEST_F (line 523) | TEST_F(KeysetHandleBuilderTest, NoIdStrategySucceeds) {
      function TEST_F (line 537) | TEST_F(KeysetHandleBuilderTest, DuplicateId) {
      function TEST_F (line 556) | TEST_F(KeysetHandleBuilderTest, CreateBuilderEntryFromParams) {
      function TEST_F (line 572) | TEST_F(KeysetHandleBuilderTest, CreateBuilderEntryFromLegacyKey) {
      function TEST_F (line 600) | TEST_F(KeysetHandleBuilderTest, CreateBuilderEntryFromKey) {
      function TEST_F (line 620) | TEST_F(KeysetHandleBuilderTest,
      function TEST_F (line 659) | TEST_F(KeysetHandleBuilderTest, CreateBuilderEntryFromCopyableKey) {
      function TEST_F (line 687) | TEST_F(KeysetHandleBuilderTest, CreateBuilderEntryFromParameters) {
      function TEST_F (line 702) | TEST_F(KeysetHandleBuilderTest, CreateBuilderEntryFromCopyableParame...
      function TEST_F (line 716) | TEST_F(KeysetHandleBuilderTest, UsePrimitiveFromLegacyProtoParams) {
      function TEST_F (line 738) | TEST_F(KeysetHandleBuilderTest, UsePrimitiveFromParams) {
      function TEST_F (line 762) | TEST_F(KeysetHandleBuilderTest, UsePrimitiveFromLegacyProtoKey) {
      function TEST_F (line 801) | TEST_F(KeysetHandleBuilderTest, UsePrimitiveFromKey) {
      function TEST_F (line 829) | TEST_F(KeysetHandleBuilderTest, BuildTwiceFails) {
      function TEST_F (line 847) | TEST_F(KeysetHandleBuilderTest, UsePrimitivesFromSplitKeyset) {
      class MockAeadPrimitiveWrapper (line 900) | class MockAeadPrimitiveWrapper : public PrimitiveWrapper<Aead, Aead> {
      class FakeAeadKeyManager (line 907) | class FakeAeadKeyManager
        class AeadFactory (line 910) | class AeadFactory : public PrimitiveFactory<Aead> {
          method AeadFactory (line 912) | explicit AeadFactory(absl::string_view key_type) : key_type_(key...
          method Create (line 914) | util::StatusOr<std::unique_ptr<Aead>> Create(
        method FakeAeadKeyManager (line 923) | explicit FakeAeadKeyManager(absl::string_view key_type)
        method key_material_type (line 927) | google::crypto::tink::KeyData::KeyMaterialType key_material_type()
        method get_version (line 932) | uint32_t get_version() const override { return 0; }
        method ValidateKey (line 936) | crypto::tink::util::Status ValidateKey(const AesGcmKey& key) const...
        method ValidateKeyFormat (line 940) | crypto::tink::util::Status ValidateKeyFormat(
        method CreateKey (line 945) | crypto::tink::util::StatusOr<AesGcmKey> CreateKey(
        method DeriveKey (line 950) | crypto::tink::util::StatusOr<AesGcmKey> DeriveKey(
      function TEST_F (line 960) | TEST_F(KeysetHandleBuilderTest, BuildWithAnnotations) {

FILE: cc/core/keyset_handle_test.cc
  type crypto (line 76) | namespace crypto {
    type tink (line 77) | namespace tink {
      class KeysetHandleTest (line 107) | class KeysetHandleTest : public ::testing::Test {
        method SetUp (line 109) | void SetUp() override {
      class FakeAeadKeyManager (line 121) | class FakeAeadKeyManager
        class AeadFactory (line 124) | class AeadFactory : public PrimitiveFactory<Aead> {
          method AeadFactory (line 126) | explicit AeadFactory(absl::string_view key_type) : key_type_(key...
          method Create (line 128) | util::StatusOr<std::unique_ptr<Aead>> Create(
        method FakeAeadKeyManager (line 137) | explicit FakeAeadKeyManager(absl::string_view key_type)
        method key_material_type (line 141) | google::crypto::tink::KeyData::KeyMaterialType key_material_type()
        method get_version (line 146) | uint32_t get_version() const override { return 0; }
        method ValidateKey (line 150) | crypto::tink::util::Status ValidateKey(const AesGcmKey& key) const...
        method ValidateKeyFormat (line 154) | crypto::tink::util::Status ValidateKeyFormat(
        method CreateKey (line 159) | crypto::tink::util::StatusOr<AesGcmKey> CreateKey(
        method DeriveKey (line 164) | crypto::tink::util::StatusOr<AesGcmKey> DeriveKey(
      class MockAeadPrimitiveWrapper (line 174) | class MockAeadPrimitiveWrapper : public PrimitiveWrapper<Aead, Aead> {
      function Keyset (line 182) | Keyset GetTestKeyset() {
      function Keyset (line 194) | Keyset GetPublicTestKeyset() {
      function TEST_F (line 205) | TEST_F(KeysetHandleTest, DefaultCtor) {
      function TEST_F (line 214) | TEST_F(KeysetHandleTest, CopyCtorAndAssignment) {
      function TEST_F (line 237) | TEST_F(KeysetHandleTest, MoveCtorAndAssignment) {
      function TEST_F (line 266) | TEST_F(KeysetHandleTest, ReadEncryptedKeysetBinary) {
      function TEST_F (line 334) | TEST_F(KeysetHandleTest, ReadEncryptedWithAnnotations) {
      function TEST_F (line 383) | TEST_F(KeysetHandleTest, ReadEncryptedKeysetJson) {
      function TEST_F (line 465) | TEST_F(KeysetHandleTest, WriteEncryptedKeyset_Json) {
      function TEST_F (line 506) | TEST_F(KeysetHandleTest, ReadEncryptedKeysetWithAssociatedDataGoodKe...
      function TEST_F (line 531) | TEST_F(KeysetHandleTest, ReadEncryptedWithAssociatedDataAndAnnotatio...
      function TEST_F (line 578) | TEST_F(KeysetHandleTest, ReadEncryptedKeysetWithAssociatedDataWrongA...
      function TEST_F (line 599) | TEST_F(KeysetHandleTest, ReadEncryptedKeysetWithAssociatedDataEmptyA...
      function TEST_F (line 619) | TEST_F(KeysetHandleTest, WriteEncryptedKeysetWithAssociatedData) {
      function TEST_F (line 661) | TEST_F(KeysetHandleTest, GenerateNew) {
      function TEST_F (line 678) | TEST_F(KeysetHandleTest, GenerateNewWithBespokeConfig) {
      function TEST_F (line 692) | TEST_F(KeysetHandleTest, GenerateNewWithGlobalRegistryConfig) {
      function TEST_F (line 698) | TEST_F(KeysetHandleTest, GenerateNewWithAnnotations) {
      function TEST_F (line 746) | TEST_F(KeysetHandleTest, GenerateNewErrors) {
      function TEST_F (line 757) | TEST_F(KeysetHandleTest, UnknownPrefixIsInvalid) {
      function CompareKeyMetadata (line 765) | void CompareKeyMetadata(const Keyset::Key& expected,
      function CreateEcdsaMultiKeyset (line 772) | util::StatusOr<const Keyset> CreateEcdsaMultiKeyset() {
      function TEST_F (line 808) | TEST_F(KeysetHandleTest, GetPublicKeysetHandle) {
      function TEST_F (line 846) | TEST_F(KeysetHandleTest, GetPublicKeysetHandleErrors) {
      function TEST_F (line 886) | TEST_F(KeysetHandleTest, GetPublicKeysetHandleWithBespokeConfigSucce...
      function TEST_F (line 911) | TEST_F(KeysetHandleTest, GetPublicKeysetHandleWithBespokeConfigFails) {
      function TEST_F (line 923) | TEST_F(KeysetHandleTest,
      function TEST_F (line 944) | TEST_F(KeysetHandleTest, GetPublicKeysetHandleWithGlobalRegistryConf...
      function TEST_F (line 954) | TEST_F(KeysetHandleTest, GetPrimitive) {
      function TEST_F (line 994) | TEST_F(KeysetHandleTest, GetPrimitiveWithBespokeConfigSucceeds) {
      function TEST_F (line 1014) | TEST_F(KeysetHandleTest, GetPrimitiveWithBespokeConfigFailsIfEmpty) {
      function TEST_F (line 1028) | TEST_F(KeysetHandleTest, GetPrimitiveWithGlobalRegistryConfig) {
      function TEST_F (line 1037) | TEST_F(KeysetHandleTest, GetPrimitiveWithConfigFips1402) {
      function TEST_F (line 1049) | TEST_F(KeysetHandleTest, GetPrimitiveWithConfigFips1402FailsWithNonF...
      function TEST_F (line 1070) | TEST_F(KeysetHandleTest, GetPrimitiveNullptrKeyManager) {
      function TEST_F (line 1087) | TEST_F(KeysetHandleTest, GetPrimitiveCustomKeyManager) {
      function TEST_F (line 1109) | TEST_F(KeysetHandleTest, Copiable) {
      function TEST_F (line 1117) | TEST_F(KeysetHandleTest, ReadNoSecret) {
      function TEST_F (line 1138) | TEST_F(KeysetHandleTest, ReadNoSecretWithAnnotations) {
      function TEST_F (line 1175) | TEST_F(KeysetHandleTest, ReadNoSecretFailForTypeUnknown) {
      function TEST_F (line 1185) | TEST_F(KeysetHandleTest, ReadNoSecretFailForTypeSymmetric) {
      function TEST_F (line 1195) | TEST_F(KeysetHandleTest, ReadNoSecretFailForTypeAssymmetricPrivate) {
      function TEST_F (line 1205) | TEST_F(KeysetHandleTest, ReadNoSecretFailForHidden) {
      function TEST_F (line 1226) | TEST_F(KeysetHandleTest, ReadNoSecretFailForInvalidString) {
      function TEST_F (line 1232) | TEST_F(KeysetHandleTest, WriteNoSecret) {
      function TEST_F (line 1251) | TEST_F(KeysetHandleTest, WriteNoSecretFailForTypeUnknown) {
      function TEST_F (line 1268) | TEST_F(KeysetHandleTest, WriteNoSecretFailForTypeSymmetric) {
      function TEST_F (line 1285) | TEST_F(KeysetHandleTest, WriteNoSecretFailForTypeAssymmetricPrivate) {
      function TEST_F (line 1302) | TEST_F(KeysetHandleTest, WriteNoSecretFailForHidden) {
      function TEST_F (line 1330) | TEST_F(KeysetHandleTest, GetKeysetInfo) {
      function TEST_F (line 1361) | TEST_F(KeysetHandleTest, GetEntryFromSingleKeyKeyset) {
      function TEST_F (line 1382) | TEST_F(KeysetHandleTest, GetEntryFromMultipleKeyKeyset) {
      function TEST_F (line 1423) | TEST_F(KeysetHandleDeathTest, EntryWithIndexOutOfBoundsCrashes) {
      function TEST_F (line 1440) | TEST_F(KeysetHandleDeathTest, EntryWithUnknownStatusFails) {
      function TEST_F (line 1456) | TEST_F(KeysetHandleDeathTest, EntryWithUnprintableTypeUrlFails) {
      function TEST_F (line 1475) | TEST_F(KeysetHandleTest, GetPrimary) {
      function TEST_F (line 1498) | TEST_F(KeysetHandleDeathTest, NonexistentPrimaryFails) {
      function TEST_F (line 1512) | TEST_F(KeysetHandleDeathTest, MultiplePrimariesFail) {
      function TEST_F (line 1531) | TEST_F(KeysetHandleDeathTest, GetDisabledPrimaryFails) {

FILE: cc/core/keyset_manager.cc
  type crypto (line 35) | namespace crypto {
    type tink (line 36) | namespace tink {
      function Status (line 89) | Status KeysetManager::Enable(uint32_t key_id) {
      function Status (line 107) | Status KeysetManager::Disable(uint32_t key_id) {
      function Status (line 129) | Status KeysetManager::Delete(uint32_t key_id) {
      function Status (line 148) | Status KeysetManager::Destroy(uint32_t key_id) {
      function Status (line 172) | Status KeysetManager::SetPrimary(uint32_t key_id) {

FILE: cc/core/keyset_manager_test.cc
  type crypto (line 36) | namespace crypto {
    type tink (line 37) | namespace tink {
      class KeysetManagerTest (line 39) | class KeysetManagerTest : public ::testing::Test {
        method SetUp (line 41) | void SetUp() override {
        method TearDown (line 45) | void TearDown() override {}
      function TEST_F (line 48) | TEST_F(KeysetManagerTest, testBasicOperations) {

FILE: cc/core/kms_clients.cc
  type crypto (line 31) | namespace crypto {
    type tink (line 32) | namespace tink {
      function KmsClients (line 38) | KmsClients& KmsClients::GlobalInstance() {
      function Status (line 43) | Status KmsClients::LocalAdd(std::unique_ptr<KmsClient> kms_client) {

FILE: cc/core/kms_clients_test.cc
  type crypto (line 32) | namespace crypto {
    type tink (line 33) | namespace tink {
      function TEST (line 40) | TEST(KmsClientsTest, Empty) {
      type UriData (line 52) | struct UriData {
      function TEST (line 57) | TEST(KmsClientsTest, AddAndGet) {

FILE: cc/core/partial_key_access_token_test.cc
  type crypto (line 25) | namespace crypto {
    type tink (line 26) | namespace tink {
      function TEST (line 29) | TEST(PartialKeyAccessTokenTest, CopyConstructor) {
      function TEST (line 34) | TEST(PartialKeyAccessTokenTest, CopyAssignment) {
      function TEST (line 39) | TEST(PartialKeyAccessTokenTest, MoveConstructor) {
      function TEST (line 44) | TEST(PartialKeyAccessTokenTest, MoveAssignment) {

FILE: cc/core/primitive_set_test.cc
  type crypto (line 48) | namespace crypto {
    type tink (line 49) | namespace tink {
      class PrimitiveSetTest (line 52) | class PrimitiveSetTest : public ::testing::Test {}
      function add_primitives (line 54) | void add_primitives(PrimitiveSet<Mac>* primitive_set, int key_id_off...
      function add_primitives (line 68) | void add_primitives(PrimitiveSet<Mac>::Builder* primitive_set_builder,
      function access_primitives (line 81) | void access_primitives(PrimitiveSet<Mac>* primitive_set, int key_id_...
      function TEST_F (line 96) | TEST_F(PrimitiveSetTest, ConcurrentOperations) {
      function TEST_F (line 139) | TEST_F(PrimitiveSetTest, Basic) {
      function TEST_F (line 269) | TEST_F(PrimitiveSetTest, PrimaryKeyWithIdCollisions) {
      function TEST_F (line 345) | TEST_F(PrimitiveSetTest, DisabledKey) {
      function CreateKey (line 362) | KeysetInfo::KeyInfo CreateKey(uint32_t key_id,
      type MacIdAndTypeUrl (line 376) | struct MacIdAndTypeUrl {
      function TEST_F (line 387) | TEST_F(PrimitiveSetTest, GetAll) {
      function TEST_F (line 445) | TEST_F(PrimitiveSetTest, GetAllInKeysetOrder) {
      function TEST_F (line 496) | TEST_F(PrimitiveSetTest, LegacyConcurrentOperations) {
      function TEST_F (line 534) | TEST_F(PrimitiveSetTest, LegacyBasic) {
      function TEST_F (line 683) | TEST_F(PrimitiveSetTest, LegacyPrimaryKeyWithIdCollisions) {
      function TEST_F (line 785) | TEST_F(PrimitiveSetTest, LegacyDisabledKey) {
      function TEST_F (line 802) | TEST_F(PrimitiveSetTest, LegacyGetAll) {

FILE: cc/core/private_key_manager_impl.h
  function namespace (line 33) | namespace crypto {

FILE: cc/core/private_key_manager_impl_test.cc
  type crypto (line 41) | namespace crypto {
    type tink (line 42) | namespace tink {
      type internal (line 43) | namespace internal {
        class PrivatePrimitive (line 62) | class PrivatePrimitive {}
        class PublicPrimitive (line 63) | class PublicPrimitive {}
        class ExamplePrivateKeyTypeManager (line 67) | class ExamplePrivateKeyTypeManager
          class PrivatePrimitiveFactory (line 71) | class PrivatePrimitiveFactory : public PrimitiveFactory<PrivateP...
            method Create (line 73) | crypto::tink::util::StatusOr<std::unique_ptr<PrivatePrimitive>...
          method ExamplePrivateKeyTypeManager (line 79) | ExamplePrivateKeyTypeManager()
          method key_material_type (line 82) | google::crypto::tink::KeyData::KeyMaterialType key_material_type()
          method CreateKey (line 98) | crypto::tink::util::StatusOr<EcdsaPrivateKey> CreateKey(
          method GetPublicKey (line 107) | crypto::tink::util::StatusOr<EcdsaPublicKey> GetPublicKey(
        class TestPublicKeyTypeManager (line 117) | class TestPublicKeyTypeManager
          class PublicPrimitiveFactory (line 120) | class PublicPrimitiveFactory : public PrimitiveFactory<PublicPri...
            method Create (line 122) | crypto::tink::util::StatusOr<std::unique_ptr<PublicPrimitive>>...
          method TestPublicKeyTypeManager (line 128) | TestPublicKeyTypeManager()
          method key_material_type (line 131) | google::crypto::tink::KeyData::KeyMaterialType key_material_type()
        function TEST (line 150) | TEST(PrivateKeyManagerImplTest, FactoryNewKeyFromMessage) {
        function TEST (line 164) | TEST(PrivateKeyManagerImplTest, GetPublicKeyData) {
        function TEST (line 184) | TEST(PrivateKeyManagerImplTest, GetPublicKeyDataValidatePrivateKey) {
        function TEST (line 202) | TEST(PrivateKeyManagerImplTest, PublicKeyManagerCanHaveShortLifeti...

FILE: cc/core/private_key_type_manager.h
  function namespace (line 25) | namespace crypto {

FILE: cc/core/restricted_big_integer.cc
  type crypto (line 25) | namespace crypto {
    type tink (line 26) | namespace tink {

FILE: cc/core/restricted_big_integer_test.cc
  type crypto (line 28) | namespace crypto {
    type tink (line 29) | namespace tink {
      function TEST (line 52) | TEST(RestrictedBigIntegerTest, CreateAndGetSecret) {
      function TEST (line 62) | TEST(RestrictedBigIntegerTest, CreateAndGetSecretPadded) {
      function TEST (line 76) | TEST(RestrictedBigIntegerTest, CreateAndGetEmptyStringWorks) {
      function TEST (line 86) | TEST(RestrictedBigIntegerTest, CreateAndGetNullCharactersWorks) {
      function TEST (line 96) | TEST(RestrictedBigIntegerTest, Equals) {
      function TEST (line 109) | TEST(RestricteddBigIntegerTest, EqualsPadded) {
      function TEST (line 121) | TEST(RestrictedRestrictedBigIntegerTest, NotEquals) {
      function TEST (line 146) | TEST(RestrictedRestrictedBigIntegerTest, NotEqualsDifferentSize) {
      function TEST (line 171) | TEST(RestrictedRestrictedBigIntegerTest, CopyConstructor) {
      function TEST (line 182) | TEST(RestrictedRestrictedBigIntegerTest, CopyAssignment) {
      function TEST (line 192) | TEST(RestrictedRestrictedBigIntegerTest, MoveConstructor) {
      function TEST (line 202) | TEST(RestrictedRestrictedBigIntegerTest, MoveAssignment) {

FILE: cc/core/restricted_data.cc
  type crypto (line 27) | namespace crypto {
    type tink (line 28) | namespace tink {

FILE: cc/core/restricted_data_test.cc
  type crypto (line 28) | namespace crypto {
    type tink (line 29) | namespace tink {
      function TEST (line 35) | TEST(RestrictedDataTest, CreateAndGetSecret) {
      function TEST (line 42) | TEST(RestrictedDataTest, GenerateRandomAndSize) {
      function TEST (line 49) | TEST(RestrictedDataTest, GenerateRandomNegative) {
      function TEST (line 55) | TEST(RestrictedDataTest, Equals) {
      function TEST (line 66) | TEST(RestrictedDataTest, NotEquals) {
      function TEST (line 80) | TEST(RestrictedDataTest, CopyConstructor) {
      function TEST (line 89) | TEST(RestrictedDataTest, CopyAssignment) {
      function TEST (line 98) | TEST(RestrictedDataTest, MoveConstructor) {
      function TEST (line 107) | TEST(RestrictedDataTest, MoveAssignment) {

FILE: cc/core/template_util.h
  function namespace (line 25) | namespace crypto {

FILE: cc/core/template_util_test.cc
  type crypto (line 19) | namespace crypto {
    type tink (line 20) | namespace tink {
      type internal (line 21) | namespace internal {
        class C0 (line 24) | class C0 {}
        class C1 (line 25) | class C1 {}
        class C2 (line 26) | class C2 {}
        class C3 (line 27) | class C3 {}
        class C4 (line 28) | class C4 {}

FILE: cc/core/version.cc
  type crypto (line 19) | namespace crypto {
    type tink (line 20) | namespace tink {

FILE: cc/core/version_test.cc
  type crypto (line 25) | namespace crypto {
    type tink (line 26) | namespace tink {
      function TEST (line 32) | TEST(VersionTest, VersionHasCorrectFormat) {

FILE: cc/crypto_format.h
  function namespace (line 28) | namespace crypto {

FILE: cc/daead/aes_siv_key.cc
  type crypto (line 34) | namespace crypto {
    type tink (line 35) | namespace tink {
      function ComputeOutputPrefix (line 38) | util::StatusOr<std::string> ComputeOutputPrefix(

FILE: cc/daead/aes_siv_key.h
  function namespace (line 32) | namespace crypto {

FILE: cc/daead/aes_siv_key_manager.h
  function namespace (line 43) | namespace crypto {

FILE: cc/daead/aes_siv_key_manager_test.cc
  type crypto (line 36) | namespace crypto {
    type tink (line 37) | namespace tink {
      function TEST (line 51) | TEST(AesSivKeyManagerTest, Basics) {
      function TEST (line 59) | TEST(AesSivKeyManagerTest, ValidateEmptyKey) {
      function TEST (line 63) | TEST(AesSivKeyManagerTest, ValidateEmptyKeyFormat) {
      function TEST (line 68) | TEST(AesSivKeyManagerTest, ValidKeyFormat) {
      function TEST (line 74) | TEST(AesSivKeyManagerTest, ValidateKeyFormatWithWrongSizes) {
      function TEST (line 89) | TEST(AesSivKeyManagerTest, CreateKey) {
      function TEST (line 98) | TEST(AesSivKeyManagerTest, CreateKeyIsValid) {
      function TEST (line 106) | TEST(AesSivKeyManagerTest, MultipleCreateCallsCreateDifferentKeys) {
      function TEST (line 117) | TEST(AesSivKeyManagerTest, DeriveKey) {
      function TEST (line 130) | TEST(AesSivKeyManagerTest, DeriveKeyFromLongSeed) {
      function TEST (line 145) | TEST(AesSivKeyManagerTest, DeriveKeyWithoutEnoughEntropy) {
      function TEST (line 156) | TEST(AesSivKeyManagerTest, DeriveKeyWrongVersion) {
      function TEST (line 168) | TEST(AesSivKeyManagerTest, ValidateKey) {
      function TEST (line 175) | TEST(AesSivKeyManagerTest, ValidateKeyStringLength) {
      function TEST (line 188) | TEST(AesSivKeyManagerTest, ValidateKeyVersion) {
      function TEST (line 195) | TEST(AesSivKeyManagerTest, GetPrimitive) {

FILE: cc/daead/aes_siv_key_test.cc
  type crypto (line 32) | namespace crypto {
    type tink (line 33) | namespace tink {
      type TestCase (line 43) | struct TestCase {
      function TEST_P (line 61) | TEST_P(AesSivKeyTest, CreateSucceeds) {
      function TEST (line 80) | TEST(AesSivKeyTest, CreateKeyWithMismatchedKeySizeFails) {
      function TEST (line 95) | TEST(AesSivKeyTest, CreateKeyWithInvalidIdRequirementFails) {
      function TEST_P (line 117) | TEST_P(AesSivKeyTest, GetKeyBytes) {
      function TEST_P (line 134) | TEST_P(AesSivKeyTest, KeyEquals) {
      function TEST (line 158) | TEST(AesSivKeyTest, DifferentVariantNotEqual) {
      function TEST (line 185) | TEST(AesSivKeyTest, DifferentSecretDataNotEqual) {
      function TEST (line 207) | TEST(AesSivKeyTest, DifferentIdRequirementNotEqual) {

FILE: cc/daead/aes_siv_parameters.cc
  type crypto (line 27) | namespace crypto {
    type tink (line 28) | namespace tink {

FILE: cc/daead/aes_siv_parameters.h
  function namespace (line 24) | namespace crypto {

FILE: cc/daead/aes_siv_parameters_test.cc
  type crypto (line 27) | namespace crypto {
    type tink (line 28) | namespace tink {
      type CreateTestCase (line 39) | struct CreateTestCase {
      function TEST_P (line 56) | TEST_P(AesSivParametersBuildTest, Create) {
      function TEST (line 68) | TEST(AesSivParametersTest, CreateWithInvalidVariantFails) {
      function TEST (line 77) | TEST(AesSivParametersTest, CreateWithInvalidKeySizeFails) {
      function TEST (line 104) | TEST(AesSivParametersTest, CopyConstructor) {
      function TEST (line 115) | TEST(AesSivParametersTest, CopyAssignment) {
      function TEST_P (line 136) | TEST_P(AesSivParametersVariantTest, ParametersEquals) {
      function TEST (line 155) | TEST(AesSivParametersTest, KeySizeNotEqual) {
      function TEST (line 168) | TEST(AesSivParametersTest, VariantNotEqual) {

FILE: cc/daead/aes_siv_proto_serialization.cc
  type crypto (line 42) | namespace crypto {
    type tink (line 43) | namespace tink {
      function ToVariant (line 63) | util::StatusOr<AesSivParameters::Variant> ToVariant(
      function ToOutputPrefixType (line 80) | util::StatusOr<OutputPrefixType> ToOutputPrefixType(
      function ParseParameters (line 95) | util::StatusOr<AesSivParameters> ParseParameters(
      function SerializeParameters (line 120) | util::StatusOr<internal::ProtoParametersSerialization> SerializePara...
      function ParseKey (line 133) | util::StatusOr<AesSivKey> ParseKey(
      function SerializeKey (line 168) | util::StatusOr<internal::ProtoKeySerialization> SerializeKey(
      function AesSivProtoParametersParserImpl (line 194) | AesSivProtoParametersParserImpl* AesSivProtoParametersParser() {
      function AesSivProtoParametersSerializerImpl (line 200) | AesSivProtoParametersSerializerImpl* AesSivProtoParametersSerializer...
      function AesSivProtoKeyParserImpl (line 206) | AesSivProtoKeyParserImpl* AesSivProtoKeyParser() {
      function AesSivProtoKeySerializerImpl (line 211) | AesSivProtoKeySerializerImpl* AesSivProtoKeySerializer() {
      function RegisterAesSivProtoSerialization (line 218) | util::Status RegisterAesSivProtoSerialization() {

FILE: cc/daead/aes_siv_proto_serialization.h
  function namespace (line 22) | namespace crypto {

FILE: cc/daead/aes_siv_proto_serialization_test.cc
  type crypto (line 43) | namespace crypto {
    type tink (line 44) | namespace tink {
      type TestCase (line 59) | struct TestCase {
      class AesSivProtoSerializationTest (line 67) | class AesSivProtoSerializationTest : public TestWithParam<TestCase> {
        method SetUp (line 69) | void SetUp() override {
      function TEST_F (line 74) | TEST_F(AesSivProtoSerializationTest, RegisterTwiceSucceeds) {
      function TEST_P (line 92) | TEST_P(AesSivProtoSerializationTest, ParseParameters) {
      function TEST_F (line 119) | TEST_F(AesSivProtoSerializationTest, ParseParametersWithInvalidSeria...
      function TEST_F (line 138) | TEST_F(AesSivProtoSerializationTest, ParseParametersWithUnkownOutput...
      function TEST_F (line 158) | TEST_F(AesSivProtoSerializationTest, ParseParametersWithInvalidVersi...
      function TEST_P (line 177) | TEST_P(AesSivProtoSerializationTest, SerializeParameters) {
      function TEST_P (line 209) | TEST_P(AesSivProtoSerializationTest, ParseKey) {
      function TEST_F (line 247) | TEST_F(AesSivProtoSerializationTest, ParseLegacyKeyAsCrunchy) {
      function TEST_F (line 274) | TEST_F(AesSivProtoSerializationTest, ParseKeyWithInvalidSerializatio...
      function TEST_F (line 293) | TEST_F(AesSivProtoSerializationTest, ParseKeyNoSecretKeyAccess) {
      function TEST_F (line 316) | TEST_F(AesSivProtoSerializationTest, ParseKeyWithInvalidVersion) {
      function TEST_P (line 339) | TEST_P(AesSivProtoSerializationTest, SerializeKey) {
      function TEST_F (line 381) | TEST_F(AesSivProtoSerializationTest, SerializeKeyNoSecretKeyAccess) {

FILE: cc/daead/config_v0.cc
  type crypto (line 23) | namespace crypto {
    type tink (line 24) | namespace tink {
      function Configuration (line 26) | const Configuration& ConfigDeterministicAeadV0() {

FILE: cc/daead/config_v0.h
  function namespace (line 22) | namespace crypto {

FILE: cc/daead/config_v0_test.cc
  type crypto (line 32) | namespace crypto {
    type tink (line 33) | namespace tink {
      function TEST (line 39) | TEST(ConfigV0Test, GetPrimitive) {

FILE: cc/daead/deterministic_aead_config.cc
  type crypto (line 27) | namespace crypto {
    type tink (line 28) | namespace tink {

FILE: cc/daead/deterministic_aead_config.h
  function namespace (line 24) | namespace crypto {

FILE: cc/daead/deterministic_aead_config_test.cc
  type crypto (line 54) | namespace crypto {
    type tink (line 55) | namespace tink {
      class DeterministicAeadConfigTest (line 65) | class DeterministicAeadConfigTest : public ::testing::Test {
        method SetUp (line 67) | void SetUp() override {
      function TEST_F (line 73) | TEST_F(DeterministicAeadConfigTest, Basic) {
      function TEST_F (line 91) | TEST_F(DeterministicAeadConfigTest, WrappersRegistered) {
      function TEST_F (line 129) | TEST_F(DeterministicAeadConfigTest, RegisterFipsValidTemplates) {
      function TEST_F (line 148) | TEST_F(DeterministicAeadConfigTest, AesSivProtoParamsSerializationRe...
      function TEST_F (line 187) | TEST_F(DeterministicAeadConfigTest, AesSivProtoKeySerializationRegis...

FILE: cc/daead/deterministic_aead_factory.cc
  type crypto (line 29) | namespace crypto {
    type tink (line 30) | namespace tink {

FILE: cc/daead/deterministic_aead_factory.h
  function namespace (line 28) | namespace crypto {

FILE: cc/daead/deterministic_aead_factory_test.cc
  type crypto (line 34) | namespace crypto {
    type tink (line 35) | namespace tink {
      class DeterministicAeadFactoryTest (line 47) | class DeterministicAeadFactoryTest : public ::testing::Test {}
      function TEST_F (line 49) | TEST_F(DeterministicAeadFactoryTest, testBasic) {
      function TEST_F (line 59) | TEST_F(DeterministicAeadFactoryTest, testPrimitive) {

FILE: cc/daead/deterministic_aead_key.h
  function namespace (line 24) | namespace crypto {

FILE: cc/daead/deterministic_aead_key_templates.cc
  type crypto (line 27) | namespace crypto {
    type tink (line 28) | namespace tink {
      function KeyTemplate (line 32) | KeyTemplate* NewAesSivKeyTemplate(int key_size_in_bytes) {
      function KeyTemplate (line 46) | const KeyTemplate& DeterministicAeadKeyTemplates::Aes256Siv() {

FILE: cc/daead/deterministic_aead_key_templates.h
  function namespace (line 22) | namespace crypto {

FILE: cc/daead/deterministic_aead_key_templates_test.cc
  type crypto (line 33) | namespace crypto {
    type tink (line 34) | namespace tink {
      function TEST (line 37) | TEST(DeterministicAeadKeyTemplatesTest, testAesSivKeyTemplates) {

FILE: cc/daead/deterministic_aead_parameters.h
  function namespace (line 22) | namespace crypto {

FILE: cc/daead/deterministic_aead_wrapper.cc
  type crypto (line 36) | namespace crypto {
    type tink (line 37) | namespace tink {
      function Validate (line 45) | util::Status Validate(PrimitiveSet<DeterministicAead>* daead_set) {
      class DeterministicAeadSetWrapper (line 57) | class  DeterministicAeadSetWrapper : public DeterministicAead {
        method DeterministicAeadSetWrapper (line 59) | explicit DeterministicAeadSetWrapper(

FILE: cc/daead/deterministic_aead_wrapper.h
  function namespace (line 29) | namespace crypto {

FILE: cc/daead/deterministic_aead_wrapper_test.cc
  type crypto (line 60) | namespace crypto {
    type tink (line 61) | namespace tink {
      class DeterministicAeadSetWrapperTest (line 64) | class DeterministicAeadSetWrapperTest : public ::testing::Test {
        method SetUp (line 66) | void SetUp() override {
        method TearDown (line 68) | void TearDown() override {
      function TEST_F (line 72) | TEST_F(DeterministicAeadSetWrapperTest, testBasic) {
      function PopulateKeyInfo (line 166) | KeysetInfo::KeyInfo PopulateKeyInfo(uint32_t key_id,
      function KeysetInfo (line 177) | KeysetInfo CreateTestKeysetInfo() {
      class DeterministicAeadSetWrapperWithMonitoringTest (line 192) | class DeterministicAeadSetWrapperWithMonitoringTest : public Test {
        method SetUp (line 196) | void SetUp() override {
      function TEST_F (line 238) | TEST_F(DeterministicAeadSetWrapperWithMonitoringTest,
      function TEST_F (line 283) | TEST_F(DeterministicAeadSetWrapperWithMonitoringTest,
      function TEST_F (line 337) | TEST_F(DeterministicAeadSetWrapperWithMonitoringTest,
      function TEST_F (line 381) | TEST_F(DeterministicAeadSetWrapperWithMonitoringTest,

FILE: cc/daead/failing_daead.cc
  type crypto (line 30) | namespace crypto {
    type tink (line 31) | namespace tink {
      class AlwaysFailDeterministicAead (line 35) | class AlwaysFailDeterministicAead : public DeterministicAead {
        method AlwaysFailDeterministicAead (line 37) | explicit AlwaysFailDeterministicAead(std::string message)
        method EncryptDeterministically (line 40) | util::StatusOr<std::string> EncryptDeterministically(
        method DecryptDeterministically (line 50) | util::StatusOr<std::string> DecryptDeterministically(
      function CreateAlwaysFailingDeterministicAead (line 66) | std::unique_ptr<DeterministicAead> CreateAlwaysFailingDeterministicA...

FILE: cc/daead/failing_daead.h
  function namespace (line 25) | namespace crypto {

FILE: cc/daead/failing_daead_test.cc
  type crypto (line 27) | namespace crypto {
    type tink (line 28) | namespace tink {
      function TEST (line 34) | TEST(AlwaysFailDeterministicAead, EncryptFails) {
      function TEST (line 44) | TEST(AlwaysFailDeterministicAead, EncryptFailsContainsMessage) {
      function TEST (line 55) | TEST(AlwaysFailDeterministicAead, DecryptFails) {
      function TEST (line 65) | TEST(AlwaysFailDeterministicAead, DecryptFailsContainsMessage) {

FILE: cc/daead/internal/config_v0.cc
  type crypto (line 26) | namespace crypto {
    type tink (line 27) | namespace tink {
      type internal (line 28) | namespace internal {
        function AddDeterministicAeadV0 (line 30) | util::Status AddDeterministicAeadV0(Configuration& config) {

FILE: cc/daead/internal/config_v0.h
  function namespace (line 23) | namespace crypto {

FILE: cc/daead/internal/config_v0_test.cc
  type crypto (line 39) | namespace crypto {
    type tink (line 40) | namespace tink {
      type internal (line 41) | namespace internal {
        function TEST (line 47) | TEST(DeterministicAeadV0Test, PrimitiveWrapper) {
        function TEST (line 57) | TEST(DeterministicAeadV0Test, KeyManager) {
        function TEST (line 75) | TEST(DeterministicAeadV0Test, GetPrimitive) {

FILE: cc/daead/internal/key_gen_config_v0.cc
  type crypto (line 25) | namespace crypto {
    type tink (line 26) | namespace tink {
      type internal (line 27) | namespace internal {
        function AddDeterministicAeadKeyGenV0 (line 29) | util::Status AddDeterministicAeadKeyGenV0(KeyGenConfiguration& con...

FILE: cc/daead/internal/key_gen_config_v0.h
  function namespace (line 23) | namespace crypto {

FILE: cc/daead/key_gen_config_v0.cc
  type crypto (line 23) | namespace crypto {
    type tink (line 24) | namespace tink {
      function KeyGenConfiguration (line 26) | const KeyGenConfiguration& KeyGenConfigDeterministicAeadV0() {

FILE: cc/daead/key_gen_config_v0.h
  function namespace (line 22) | namespace crypto {

FILE: cc/daead/subtle/aead_or_daead.cc
  type crypto (line 30) | namespace crypto {
    type tink (line 31) | namespace tink {
      type subtle (line 32) | namespace subtle {
        type EncryptFunctor (line 36) | struct EncryptFunctor {
        type DecryptFunctor (line 50) | struct DecryptFunctor {

FILE: cc/daead/subtle/aead_or_daead.h
  function namespace (line 30) | namespace crypto {

FILE: cc/daead/subtle/aead_or_daead_test.cc
  type crypto (line 34) | namespace crypto {
    type tink (line 35) | namespace tink {
      type subtle (line 36) | namespace subtle {
        function EncryptThenDecrypt (line 44) | crypto::tink::util::Status EncryptThenDecrypt(
        function TEST (line 60) | TEST(AeadOrDaead, testWithAeadPrimitive) {
        function TEST (line 68) | TEST(AeadOrDaead, testWithDeterministicAeadPrimitive) {

FILE: cc/deterministic_aead.h
  function namespace (line 25) | namespace crypto {

FILE: cc/ec_point.h
  function namespace (line 22) | namespace crypto {

FILE: cc/examples/aead/aead_cli.cc
  function ValidateParams (line 52) | void ValidateParams() {
  type tink_cc_examples (line 68) | namespace tink_cc_examples {
    function Status (line 71) | Status AeadCli(absl::string_view mode, const std::string& keyset_filen...
  function main (line 114) | int main(int argc, char** argv) {

FILE: cc/examples/daead/deterministic_aead_cli.cc
  function ValidateParams (line 52) | void ValidateParams() {
  type tink_cc_examples (line 68) | namespace tink_cc_examples {
    function Status (line 71) | Status DeterministicAeadCli(absl::string_view mode,
  function main (line 115) | int main(int argc, char** argv) {

FILE: cc/examples/digital_signatures/digital_signatures_cli.cc
  function ValidateParams (line 51) | void ValidateParams() {
  type tink_cc_examples (line 68) | namespace tink_cc_examples {
    function Status (line 71) | Status DigitalSignatureCli(absl::string_view mode,
  function main (line 117) | int main(int argc, char** argv) {

FILE: cc/examples/hybrid_encryption/hybrid_cli.cc
  function ValidateParams (line 56) | void ValidateParams() {
  type tink_cc_examples (line 72) | namespace tink_cc_examples {
    function Status (line 74) | Status HybridCli(absl::string_view mode, const std::string& keyset_fil...
  function main (line 133) | int main(int argc, char** argv) {

FILE: cc/examples/jwt/jwt_generate_public_jwk_set.cc
  function ValidateParams (line 44) | void ValidateParams() {
  type tink_cc_examples (line 55) | namespace tink_cc_examples {
    function Status (line 57) | Status JwtGeneratePublicJwkSet(const std::string& public_keyset_filename,
  function main (line 75) | int main(int argc, char** argv) {

FILE: cc/examples/jwt/jwt_sign.cc
  function ValidateParams (line 51) | void ValidateParams() {
  type tink_cc_examples (line 64) | namespace tink_cc_examples {
    function Status (line 67) | Status JwtSign(const std::string& keyset_filename, absl::string_view a...
  function main (line 96) | int main(int argc, char** argv) {

FILE: cc/examples/jwt/jwt_verify.cc
  function ValidateParams (line 50) | void ValidateParams() {
  type tink_cc_examples (line 63) | namespace tink_cc_examples {
    function Status (line 66) | Status JwtVerify(const std::string& jwk_set_filename,
  function main (line 97) | int main(int argc, char** argv) {

FILE: cc/examples/key_derivation/key_derivation_cli.cc
  function ValidateParams (line 52) | void ValidateParams() {
  function Status (line 64) | Status VerifyDerivedAeadKeyset(const KeysetHandle& handle) {
  type tink_cc_examples (line 90) | namespace tink_cc_examples {
    function Status (line 92) | Status KeyDerivationCli(const std::string& keyset_filename,
  function main (line 129) | int main(int argc, char** argv) {

FILE: cc/examples/mac/mac_cli.cc
  function ValidateParams (line 55) | void ValidateParams() {
  type tink_cc_examples (line 71) | namespace tink_cc_examples {
    function Status (line 74) | Status MacCli(absl::string_view mode, const std::string keyset_filename,
  function main (line 121) | int main(int argc, char** argv) {

FILE: cc/examples/util/util.cc
  type tink_cc_examples (line 38) | namespace tink_cc_examples {
    function GetJsonKeysetReader (line 50) | StatusOr<std::unique_ptr<KeysetReader>> GetJsonKeysetReader(
    function GetJsonKeysetWriter (line 57) | StatusOr<std::unique_ptr<JsonKeysetWriter>> GetJsonKeysetWriter(
    function ReadJsonCleartextKeyset (line 66) | StatusOr<std::unique_ptr<KeysetHandle>> ReadJsonCleartextKeyset(
    function Status (line 74) | Status WriteJsonCleartextKeyset(const std::string& filename,
    function ReadFile (line 83) | StatusOr<std::string> ReadFile(const std::string& filename) {
    function Status (line 95) | Status WriteToFile(const std::string& data_to_write,

FILE: cc/examples/util/util.h
  function namespace (line 26) | namespace tink_cc_examples {

FILE: cc/examples/walkthrough/create_keyset.cc
  type tink_walkthrough (line 28) | namespace tink_walkthrough {
    function CreateAead128GcmKeyset (line 38) | StatusOr<std::unique_ptr<KeysetHandle>> CreateAead128GcmKeyset() {

FILE: cc/examples/walkthrough/create_keyset.h
  function namespace (line 24) | namespace tink_walkthrough {

FILE: cc/examples/walkthrough/create_keyset_test.cc
  type tink_walkthrough (line 33) | namespace tink_walkthrough {
    class CreateAead128GcmKeysetTest (line 42) | class CreateAead128GcmKeysetTest : public Test {
      method TearDown (line 44) | void TearDown() override { crypto::tink::Registry::Reset(); }
    function TEST_F (line 47) | TEST_F(CreateAead128GcmKeysetTest,
    function TEST_F (line 52) | TEST_F(CreateAead128GcmKeysetTest, CreateAead128GcmKeysetSucceeds) {

FILE: cc/examples/walkthrough/load_cleartext_keyset.cc
  type tink_walkthrough (line 31) | namespace tink_walkthrough {
    function LoadKeyset (line 44) | StatusOr<std::unique_ptr<crypto::tink::KeysetHandle>> LoadKeyset(

FILE: cc/examples/walkthrough/load_cleartext_keyset.h
  function namespace (line 25) | namespace tink_walkthrough {

FILE: cc/examples/walkthrough/load_cleartext_keyset_test.cc
  type tink_walkthrough (line 33) | namespace tink_walkthrough {
    function TEST (line 57) | TEST(LoadKeysetTest, LoadKeysetFailsWithInvalidKeyset) {
    function TEST (line 62) | TEST(LoadKeysetTest, LoadKeysetSucceeds) {

FILE: cc/examples/walkthrough/load_encrypted_keyset.cc
  type tink_walkthrough (line 33) | namespace tink_walkthrough {
    function LoadKeyset (line 51) | StatusOr<std::unique_ptr<KeysetHandle>> LoadKeyset(

FILE: cc/examples/walkthrough/load_encrypted_keyset.h
  function namespace (line 26) | namespace tink_walkthrough {

FILE: cc/examples/walkthrough/load_encrypted_keyset_test.cc
  type tink_walkthrough (line 41) | namespace tink_walkthrough {
    class LoadKeysetTest (line 92) | class LoadKeysetTest : public Test {
      method SetUp (line 94) | void SetUp() override {
    function TEST_F (line 99) | TEST_F(LoadKeysetTest, LoadKeysetFailsWhenInvalidKeyset) {
    function TEST_F (line 111) | TEST_F(LoadKeysetTest, LoadKeysetSucceeds) {

FILE: cc/examples/walkthrough/obtain_and_use_a_primitive.cc
  type tink_walkthrough (line 31) | namespace tink_walkthrough {
    function AeadEncrypt (line 43) | StatusOr<std::string> AeadEncrypt(const KeysetHandle& keyset_handle,
    function AeadDecrypt (line 62) | StatusOr<std::string> AeadDecrypt(const KeysetHandle& keyset_handle,

FILE: cc/examples/walkthrough/obtain_and_use_a_primitive.h
  function namespace (line 26) | namespace tink_walkthrough {

FILE: cc/examples/walkthrough/obtain_and_use_a_primitive_test.cc
  type tink_walkthrough (line 33) | namespace tink_walkthrough {
    function TEST (line 57) | TEST(LoadKeysetTest, EncryptDecrypt) {

FILE: cc/examples/walkthrough/test_util.cc
  type tink_walkthrough (line 30) | namespace tink_walkthrough {

FILE: cc/examples/walkthrough/test_util.h
  function namespace (line 28) | namespace tink_walkthrough {

FILE: cc/examples/walkthrough/write_cleartext_keyset.cc
  type tink_walkthrough (line 30) | namespace tink_walkthrough {
    function WriteKeyset (line 46) | crypto::tink::util::Status WriteKeyset(

FILE: cc/examples/walkthrough/write_cleartext_keyset.h
  function namespace (line 25) | namespace tink_walkthrough {

FILE: cc/examples/walkthrough/write_cleartext_keyset_test.cc
  type tink_walkthrough (line 35) | namespace tink_walkthrough {
    function TEST (line 60) | TEST(WriteCleartextKeysetTest, WriteKeysetSerializesCorrectly) {

FILE: cc/examples/walkthrough/write_keyset.cc
  type tink_walkthrough (line 34) | namespace tink_walkthrough {
    function WriteEncryptedKeyset (line 46) | crypto::tink::util::Status WriteEncryptedKeyset(

FILE: cc/examples/walkthrough/write_keyset.h
  function namespace (line 26) | namespace tink_walkthrough {

FILE: cc/examples/walkthrough/write_keyset_test.cc
  type tink_walkthrough (line 42) | namespace tink_walkthrough {
    class WriteKeysetTest (line 86) | class WriteKeysetTest : public testing::Test {
      method SetUp (line 88) | void SetUp() override {
    function TEST_F (line 93) | TEST_F(WriteKeysetTest, WriteEncryptedKeysetFailsWithNullOutputStream) {
    function TEST_F (line 109) | TEST_F(WriteKeysetTest, WriteEncryptedKeysetFailsWhenStreamFails) {
    function TEST_F (line 126) | TEST_F(WriteKeysetTest, WriteEncryptedKeysetWithValidInputs) {

FILE: cc/experimental/pqcrypto/kem/cecpq2_aead_hkdf_dem_helper.cc
  type crypto (line 41) | namespace crypto {
    type tink (line 42) | namespace tink {
      class Cecpq2AeadHkdfDemHelperImpl (line 51) | class Cecpq2AeadHkdfDemHelperImpl : public Cecpq2AeadHkdfDemHelper {
        method Cecpq2AeadHkdfDemHelperImpl (line 53) | explicit Cecpq2AeadHkdfDemHelperImpl(
        method GetAeadOrDaead (line 57) | crypto::tink::util::StatusOr<
        method GetKeyMaterialSize (line 78) | crypto::tink::util::StatusOr<uint32_t> GetKeyMaterialSize() const ...

FILE: cc/experimental/pqcrypto/kem/cecpq2_aead_hkdf_dem_helper.h
  function namespace (line 30) | namespace crypto {

FILE: cc/experimental/pqcrypto/kem/cecpq2_aead_hkdf_dem_helper_test.cc
  type crypto (line 43) | namespace crypto {
    type tink (line 44) | namespace tink {
      function EncryptThenDecrypt (line 54) | crypto::tink::util::Status EncryptThenDecrypt(
      function TEST (line 69) | TEST(Cecpq2AeadHkdfDemHelperTest, InvalidKey) {
      function TEST (line 78) | TEST(Cecpq2AeadHkdfDemHelperTest, DemHelperWithAesGcmKeyType) {
      function TEST (line 106) | TEST(Cecpq2AeadHkdfDemHelperTest, DemHelperWithAesSivKeyType) {
      function TEST (line 136) | TEST(Cecpq2AeadHkdfDemHelperTest, DemHelperWithXchacha20Poly1305KeyT...
      function TEST (line 163) | TEST(Cecpq2AeadHkdfDemHelperTest, DemHelperKeyMaterialXChacha20Poly1...
      function TEST (line 183) | TEST(Cecpq2AeadHkdfDemHelperTest, DemHelperKeyMaterialAesGcm) {
      function TEST (line 203) | TEST(Cecpq2AeadHkdfDemHelperTest, DemHelperKeyMaterialAesSiv) {

FILE: cc/experimental/pqcrypto/kem/cecpq2_aead_hkdf_private_key_manager.cc
  type crypto (line 41) | namespace crypto {
    type tink (line 42) | namespace tink {
      function Status (line 50) | Status Cecpq2AeadHkdfPrivateKeyManager::ValidateKeyFormat(
      function Status (line 93) | Status Cecpq2AeadHkdfPrivateKeyManager::ValidateKey(

FILE: cc/experimental/pqcrypto/kem/cecpq2_aead_hkdf_private_key_manager.h
  function namespace (line 38) | namespace crypto {

FILE: cc/experimental/pqcrypto/kem/cecpq2_aead_hkdf_private_key_manager_test.cc
  type crypto (line 41) | namespace crypto {
    type tink (line 42) | namespace tink {
      function TEST (line 59) | TEST(Cecpq2AeadHkdfPrivateKeyManagerTest, Basics) {
      function TEST (line 68) | TEST(Cecpq2AeadHkdfPrivateKeyManagerTest, ValidateEmptyKey) {
      function Cecpq2AeadHkdfKeyFormat (line 74) | Cecpq2AeadHkdfKeyFormat CreateValidKeyFormat() {
      function TEST (line 86) | TEST(Cecpq2AeadHkdfPrivateKeyManagerTest, ValidateKeyFormat) {
      function TEST (line 92) | TEST(Cecpq2AeadHkdfPrivateKeyManagerTest, ValidateKeyFormatNoPoint) {
      function TEST (line 100) | TEST(Cecpq2AeadHkdfPrivateKeyManagerTest, ValidateKeyFormatNoDem) {
      function TEST (line 107) | TEST(Cecpq2AeadHkdfPrivateKeyManagerTest, ValidateKeyFormatNoKemCurv...
      function TEST (line 115) | TEST(Cecpq2AeadHkdfPrivateKeyManagerTest, ValidateKeyFormatNoKemHash) {
      function TEST (line 123) | TEST(Cecpq2AeadHkdfPrivateKeyManagerTest, CreateKey) {
      function Cecpq2AeadHkdfPrivateKey (line 148) | Cecpq2AeadHkdfPrivateKey CreateValidKey() {
      function TEST (line 154) | TEST(Cecpq2AeadHkdfPrivateKeyManagerTest, ValidateKeyEmpty) {
      function TEST (line 160) | TEST(Cecpq2AeadHkdfPrivateKeyManagerTest, ValidateKey) {
      function TEST (line 165) | TEST(Cecpq2AeadHkdfPrivateKeyManagerTest, ValidateKeyWrongVersion) {
      function TEST (line 172) | TEST(Cecpq2AeadHkdfPrivateKeyManagerTest, ValidateKeyNoPoint) {
      function TEST (line 182) | TEST(Cecpq2AeadHkdfPrivateKeyManagerTest, ValidateKeyNoDem) {
      function TEST (line 192) | TEST(Cecpq2AeadHkdfPrivateKeyManagerTest, ValidateKeyNoKemCurve) {
      function TEST (line 202) | TEST(Cecpq2AeadHkdfPrivateKeyManagerTest, ValidateKeyNoKemHash) {
      function TEST (line 212) | TEST(Cecpq2AeadHkdfPrivateKeyManagerTest, GetPublicKey) {
      function TEST (line 236) | TEST(Cecpq2AeadHkdfPrivateKeyManagerTest, Create) {
      function TEST (line 262) | TEST(Cecpq2AeadHkdfPrivateKeyManagerTest, CreateDifferentKey) {
      function TEST (line 288) | TEST(Cecpq2AeadHkdfPrivateKeyManagerTest, ValidatePrivateKeyVersion) {

FILE: cc/experimental/pqcrypto/kem/cecpq2_aead_hkdf_public_key_manager.cc
  type crypto (line 32) | namespace crypto {
    type tink (line 33) | namespace tink {
      function Status (line 42) | Status Cecpq2AeadHkdfPublicKeyManager::ValidateParams(
      function Status (line 71) | Status Cecpq2AeadHkdfPublicKeyManager::ValidateKey(

FILE: cc/experimental/pqcrypto/kem/cecpq2_aead_hkdf_public_key_manager.h
  function namespace (line 38) | namespace crypto {

FILE: cc/experimental/pqcrypto/kem/cecpq2_aead_hkdf_public_key_manager_test.cc
  type crypto (line 36) | namespace crypto {
    type tink (line 37) | namespace tink {
      function TEST (line 52) | TEST(Cecpq2AeadHkdfPublicKeyManagerTest, Basics) {
      function TEST (line 61) | TEST(Cecpq2AeadHkdfPublicKeyManagerTest, ValidateEmptyKey) {
      function Cecpq2AeadHkdfPublicKey (line 67) | Cecpq2AeadHkdfPublicKey CreatePublicKey() {
      function TEST (line 83) | TEST(Cecpq2AeadHkdfPublicKeyManagerTest, ValidateParams) {
      function TEST (line 89) | TEST(Cecpq2AeadHkdfPublicKeyManagerTest, ValidateKeyNoPoint) {
      function TEST (line 97) | TEST(Cecpq2AeadHkdfPublicKeyManagerTest, ValidateKeyNoDem) {
      function TEST (line 104) | TEST(Cecpq2AeadHkdfPublicKeyManagerTest, ValidateKeyNoKemCurve) {
      function TEST (line 111) | TEST(Cecpq2AeadHkdfPublicKeyManagerTest, ValidateKeyNoKemHash) {
      function TEST (line 118) | TEST(Cecpq2AeadHkdfPublicKeyManagerTest, ValidateGeneratedKey) {
      function TEST (line 123) | TEST(Cecpq2AeadHkdfPublicKeyManagerTest, ValidatePublicKeyVersion) {

FILE: cc/experimental/pqcrypto/kem/cecpq2_hybrid_config.cc
  type crypto (line 29) | namespace crypto {
    type tink (line 30) | namespace tink {
      function Cecpq2HybridConfigRegister (line 32) | util::Status Cecpq2HybridConfigRegister() {

FILE: cc/experimental/pqcrypto/kem/cecpq2_hybrid_config.h
  function namespace (line 23) | namespace crypto {

FILE: cc/experimental/pqcrypto/kem/cecpq2_hybrid_config_test.cc
  type crypto (line 43) | namespace crypto {
    type tink (line 44) | namespace tink {
      class Cecpq2HybridConfigTest (line 52) | class Cecpq2HybridConfigTest : public ::testing::Test {
        method SetUp (line 54) | void SetUp() override { Registry::Reset(); }
      function TEST_F (line 57) | TEST_F(Cecpq2HybridConfigTest, Basic) {
      function TEST_F (line 83) | TEST_F(Cecpq2HybridConfigTest, EncryptWrapperRegistered) {
      function TEST_F (line 118) | TEST_F(Cecpq2HybridConfigTest, DecryptWrapperRegistered) {

FILE: cc/experimental/pqcrypto/kem/cecpq2_hybrid_key_templates.cc
  type crypto (line 28) | namespace crypto {
    type tink (line 29) | namespace tink {
      function KeyTemplate (line 38) | KeyTemplate* NewCecpq2AeadHkdfKeyTemplate(EllipticCurveType curve_type,
      function KeyTemplate (line 63) | const KeyTemplate& Cecpq2HybridKeyTemplateX25519HkdfHmacSha256Aes256...
      function KeyTemplate (line 72) | const KeyTemplate&

FILE: cc/experimental/pqcrypto/kem/cecpq2_hybrid_key_templates.h
  function namespace (line 22) | namespace crypto {

FILE: cc/experimental/pqcrypto/kem/cecpq2_hybrid_key_templates_test.cc
  type crypto (line 26) | namespace crypto {
    type tink (line 27) | namespace tink {
      class Cecpq2HybridKeyTemplatesTest (line 34) | class Cecpq2HybridKeyTemplatesTest : public ::testing::Test {
        method SetUpTestSuite (line 36) | static void SetUpTestSuite() {
      function TEST_F (line 42) | TEST_F(Cecpq2HybridKeyTemplatesTest,
      function TEST_F (line 52) | TEST_F(Cecpq2HybridKeyTemplatesTest,
      function TEST_F (line 62) | TEST_F(Cecpq2HybridKeyTemplatesTest,
      function TEST_F (line 72) | TEST_F(Cecpq2HybridKeyTemplatesTest,
      function TEST_F (line 85) | TEST_F(Cecpq2HybridKeyTemplatesTest,
      function TEST_F (line 99) | TEST_F(Cecpq2HybridKeyTemplatesTest,

FILE: cc/experimental/pqcrypto/kem/subtle/cecpq2_aead_hkdf_hybrid_decrypt.cc
  type crypto (line 40) | namespace crypto {
    type tink (line 41) | namespace tink {
      function Validate (line 44) | util::Status Validate(

FILE: cc/experimental/pqcrypto/kem/subtle/cecpq2_aead_hkdf_hybrid_decrypt.h
  function namespace (line 32) | namespace crypto {

FILE: cc/experimental/pqcrypto/kem/subtle/cecpq2_aead_hkdf_hybrid_decrypt_test.cc
  type crypto (line 65) | namespace crypto {
    type tink (line 66) | namespace tink {
      class Cecpq2AeadHkdfHybridDecryptTest (line 69) | class Cecpq2AeadHkdfHybridDecryptTest : public ::testing::Test {
        type CommonHybridKeyParams (line 71) | struct CommonHybridKeyParams {
        method GetCommonHybridKeyParamsList (line 77) | std::vector<CommonHybridKeyParams> GetCommonHybridKeyParamsList() {
        method CheckKeyValidity (line 94) | util::Status CheckKeyValidity(
      function CreateValidKey (line 186) | google::crypto::tink::Cecpq2AeadHkdfPrivateKey CreateValidKey() {
      function TEST_F (line 235) | TEST_F(Cecpq2AeadHkdfHybridDecryptTest, ValidKey) {
      function TEST_F (line 241) | TEST_F(Cecpq2AeadHkdfHybridDecryptTest, InvalidKeyNoFieldsSet) {
      function TEST_F (line 249) | TEST_F(Cecpq2AeadHkdfHybridDecryptTest, InvalidKeyX25519PrivKeyField...
      function TEST_F (line 258) | TEST_F(Cecpq2AeadHkdfHybridDecryptTest, InvalidKeyX25519PubKeyFieldM...
      function TEST_F (line 267) | TEST_F(Cecpq2AeadHkdfHybridDecryptTest, InvalidKeyHrssPrivKeyFieldMi...
      function TEST_F (line 276) | TEST_F(Cecpq2AeadHkdfHybridDecryptTest, InvalidKeyHrssPubKeyFieldMis...
      function TEST_F (line 285) | TEST_F(Cecpq2AeadHkdfHybridDecryptTest, InvalidKeyWrongEcType) {
      function TEST_F (line 298) | TEST_F(Cecpq2AeadHkdfHybridDecryptTest, InvalidKeyUnsupportedDem) {
      function TEST_F (line 319) | TEST_F(Cecpq2AeadHkdfHybridDecryptTest, AesGcmHybridDecryption) {
      function TEST_F (line 378) | TEST_F(Cecpq2AeadHkdfHybridDecryptTest, XChaCha20Poly1305HybridDecry...
      function TEST_F (line 435) | TEST_F(Cecpq2AeadHkdfHybridDecryptTest, AesSivHybridDecryption) {

FILE: cc/experimental/pqcrypto/kem/subtle/cecpq2_aead_hkdf_hybrid_encrypt.cc
  type crypto (line 38) | namespace crypto {
    type tink (line 39) | namespace tink {
      function Validate (line 43) | util::Status Validate(

FILE: cc/experimental/pqcrypto/kem/subtle/cecpq2_aead_hkdf_hybrid_encrypt.h
  function namespace (line 32) | namespace crypto {

FILE: cc/experimental/pqcrypto/kem/subtle/cecpq2_aead_hkdf_hybrid_encrypt_test.cc
  type crypto (line 51) | namespace crypto {
    type tink (line 52) | namespace tink {
      function CreateValidKey (line 55) | google::crypto::tink::Cecpq2AeadHkdfPublicKey CreateValidKey() {
      function TEST (line 74) | TEST(Cecpq2AeadHkdfHybridEncryptTest, ValidKey) {
      function TEST (line 80) | TEST(Cecpq2AeadHkdfHybridEncryptTest, InvalidKeyNoFieldSet) {
      function TEST (line 88) | TEST(Cecpq2AeadHkdfHybridEncryptTest, InvalidKeySomeFieldsSet) {
      function TEST (line 97) | TEST(Cecpq2AeadHkdfHybridEncryptTest, InvalidKeyUnsupportedEcType) {
      function TEST (line 107) | TEST(Cecpq2AeadHkdfHybridEncryptTest, InvalidKeyUnsupportedDemKeyTyp...
      function TEST (line 123) | TEST(Cecpq2AeadHkdfHybridEncryptTest, Basic) {

FILE: cc/experimental/pqcrypto/kem/subtle/cecpq2_hkdf_recipient_kem_boringssl.cc
  type crypto (line 40) | namespace crypto {
    type tink (line 41) | namespace tink {
      type subtle (line 42) | namespace subtle {
        type HRSS_private_key (line 113) | struct HRSS_private_key
        type HRSS_private_key (line 114) | struct HRSS_private_key
        type HRSS_public_key (line 115) | struct HRSS_public_key

FILE: cc/experimental/pqcrypto/kem/subtle/cecpq2_hkdf_recipient_kem_boringssl.h
  function namespace (line 33) | namespace crypto {

FILE: cc/experimental/pqcrypto/kem/subtle/cecpq2_hkdf_recipient_kem_boringssl_test.cc
  type crypto (line 38) | namespace crypto {
    type tink (line 39) | namespace tink {
      type subtle (line 40) | namespace subtle {
        function TEST (line 129) | TEST(Cecpq2HkdfRecipientKemBoringSslTest, TestUnknownCurve) {
        function TEST (line 152) | TEST(Cecpq2HkdfRecipientKemBoringSslTest, TestUnsupportedCurve) {
        function TEST (line 174) | TEST(Cecpq2HkdfRecipientKemBoringSslTest, TestNotPostQuantumSecure...
        function TEST (line 203) | TEST(Cecpq2HkdfRecipientKemBoringSslTest, TestRecipientFlowSuccess) {
        function TEST (line 232) | TEST(Cecpq2HkdfRecipientKemBoringSslTest, TestRecipientFlowFailure) {

FILE: cc/experimental/pqcrypto/kem/subtle/cecpq2_hkdf_sender_kem_boringssl.cc
  type crypto (line 40) | namespace crypto {
    type tink (line 41) | namespace tink {
      type subtle (line 42) | namespace subtle {
        type HRSS_public_key (line 143) | struct HRSS_public_key

FILE: cc/experimental/pqcrypto/kem/subtle/cecpq2_hkdf_sender_kem_boringssl.h
  function namespace (line 34) | namespace crypto {

FILE: cc/experimental/pqcrypto/kem/subtle/cecpq2_hkdf_sender_kem_boringssl_test.cc
  type crypto (line 46) | namespace crypto {
    type tink (line 47) | namespace tink {
      type subtle (line 48) | namespace subtle {
        function TEST (line 54) | TEST(Cecpq2HkdfSenderKemBoringSslTest, TestUnknownCurve) {
        function TEST (line 80) | TEST(Cecpq2HkdfSenderKemBoringSslTest, TestUnsupportedCurve) {
        function TEST (line 104) | TEST(Cecpq2HkdfSenderKemBoringSslTest, TestNotPostQuantumSecureKey...
        function TEST (line 140) | TEST(Cecpq2HkdfSenderKemBoringSslTest, TestGenerateKey) {
        function TEST (line 178) | TEST(Cecpq2HkdfSenderKemBoringSslTest, TestSenderRecipientFullFlow...
        function TEST (line 235) | TEST(Cecpq2HkdfSenderKemBoringSslTest, TestFullFlowErasedCallersPu...
        function TEST (line 295) | TEST(Cecpq2HkdfSenderKemBoringSslTest, TestSenderRecipientFullFlow...

FILE: cc/experimental/pqcrypto/kem/subtle/cecpq2_subtle_boringssl_util.cc
  type crypto (line 30) | namespace crypto {
    type tink (line 31) | namespace tink {
      type pqc (line 32) | namespace pqc {
        function GenerateHrssKeyPair (line 34) | crypto::tink::util::StatusOr<crypto::tink::pqc::HrssKeyPair>
        function GenerateCecpq2Keypair (line 58) | crypto::tink::util::StatusOr<crypto::tink::pqc::Cecpq2KeyPair>

FILE: cc/experimental/pqcrypto/kem/subtle/cecpq2_subtle_boringssl_util.h
  function namespace (line 27) | namespace crypto {

FILE: cc/experimental/pqcrypto/kem/subtle/cecpq2_subtle_boringssl_util_test.cc
  type crypto (line 29) | namespace crypto {
    type tink (line 30) | namespace tink {
      type pqc (line 31) | namespace pqc {
        function TEST (line 108) | TEST(CreatesNewCecpq2KeyPairTest, GeneratesDifferentKeysEveryTime) {
        function TEST (line 130) | TEST(CreatesNewCecpq2KeyPairTest, SuccessfullHrssKeyGen) {

FILE: cc/experimental/pqcrypto/kem/util/test_util.cc
  type crypto (line 39) | namespace crypto {
    type tink (line 40) | namespace tink {
      type test (line 41) | namespace test {
        function GetCecpq2AeadHkdfTestKey (line 43) | google::crypto::tink::Cecpq2AeadHkdfPrivateKey GetCecpq2AeadHkdfTe...
        function GetCecpq2AesGcmHkdfTestKey (line 80) | google::crypto::tink::Cecpq2AeadHkdfPrivateKey GetCecpq2AesGcmHkdf...
        function GetCecpq2AesCtrHmacHkdfTestKey (line 98) | google::crypto::tink::Cecpq2AeadHkdfPrivateKey GetCecpq2AesCtrHmac...
        function GetCecpq2XChaCha20Poly1305HkdfTestKey (line 130) | google::crypto::tink::Cecpq2AeadHkdfPrivateKey

FILE: cc/experimental/pqcrypto/kem/util/test_util.h
  function namespace (line 24) | namespace crypto {

FILE: cc/experimental/pqcrypto/kem/util/test_util_test.cc
  type crypto (line 35) | namespace crypto {
    type tink (line 36) | namespace tink {
      type CommonHybridKeyParams (line 43) | struct CommonHybridKeyParams {
      function GetCommonHybridKeyParamsList (line 49) | std::vector<CommonHybridKeyParams> GetCommonHybridKeyParamsList() {
      function TEST (line 65) | TEST(TestUtilTest, GetCecpq2AeadHkdfTestKeyBasics) {
      function TEST (line 80) | TEST(TestUtilTest, GetCecpq2AesGcmHkdfTestKeyBasics) {
      function TEST (line 96) | TEST(TestUtilTest, GetCecpq2AesCtrHmacHkdfTestKeyBasics) {
      function TEST (line 121) | TEST(TestUtilTest, GetCecpq2XChaCha20Poly1305HkdfTestKeyBasics) {

FILE: cc/experimental/pqcrypto/signature/dilithium_key_template.cc
  type crypto (line 35) | namespace crypto {
    type tink (line 36) | namespace tink {
      function KeyTemplate (line 46) | KeyTemplate* NewDilithiumKeyTemplate(int32_t key_size,

FILE: cc/experimental/pqcrypto/signature/dilithium_key_template.h
  function namespace (line 22) | namespace crypto {

FILE: cc/experimental/pqcrypto/signature/dilithium_key_template_test.cc
  type crypto (line 45) | namespace crypto {
    type tink (line 46) | namespace tink {
      type DilithiumKeyTemplateTestCase (line 57) | struct DilithiumKeyTemplateTestCase {
      function TEST_P (line 67) | TEST_P(DilithiumKeyTemplateTest, CheckDilithiumInitialization) {
      function TEST_P (line 76) | TEST_P(DilithiumKeyTemplateTest, ValidateKeyFormat) {
      function TEST_P (line 88) | TEST_P(DilithiumKeyTemplateTest, SameReference) {
      function TEST_P (line 95) | TEST_P(DilithiumKeyTemplateTest, KeyManagerCompatibility) {

FILE: cc/experimental/pqcrypto/signature/dilithium_sign_key_manager.cc
  type crypto (line 45) | namespace crypto {
    type tink (line 46) | namespace tink {
      function Status (line 98) | Status DilithiumSignKeyManager::ValidateKey(
      function Status (line 112) | Status DilithiumSignKeyManager::ValidateKeyFormat(

FILE: cc/experimental/pqcrypto/signature/dilithium_sign_key_manager.h
  function namespace (line 38) | namespace crypto {
  function override (line 78) | const override {

FILE: cc/experimental/pqcrypto/signature/dilithium_sign_key_manager_test.cc
  type crypto (line 49) | namespace crypto {
    type tink (line 50) | namespace tink {
      type DilithiumTestCase (line 67) | struct DilithiumTestCase {
      function CreateValidKeyFormat (line 77) | StatusOr<DilithiumKeyFormat> CreateValidKeyFormat(
      function TEST (line 87) | TEST(DilithiumSignKeyManagerTest, Basic) {
      function TEST_P (line 95) | TEST_P(DilithiumSignKeyManagerTest, ValidateKeyFormat) {
      function TEST_P (line 105) | TEST_P(DilithiumSignKeyManagerTest, PrivateKeyWrongVersion) {
      function TEST_P (line 120) | TEST_P(DilithiumSignKeyManagerTest, CreateKey) {
      function TEST_P (line 138) | TEST_P(DilithiumSignKeyManagerTest, CreateKeyValid) {
      function TEST_P (line 151) | TEST_P(DilithiumSignKeyManagerTest, CreateKeyAlwaysNew) {
      function TEST_P (line 169) | TEST_P(DilithiumSignKeyManagerTest, GetPublicKey) {
      function TEST_P (line 190) | TEST_P(DilithiumSignKeyManagerTest, Create) {
      function TEST_P (line 220) | TEST_P(DilithiumSignKeyManagerTest, CreateDifferentKey) {

FILE: cc/experimental/pqcrypto/signature/dilithium_verify_key_manager.cc
  type crypto (line 43) | namespace crypto {
    type tink (line 44) | namespace tink {
      function Status (line 67) | Status DilithiumVerifyKeyManager::ValidateKey(
      function Status (line 81) | Status DilithiumVerifyKeyManager::ValidateParams(

FILE: cc/experimental/pqcrypto/signature/dilithium_verify_key_manager.h
  function namespace (line 39) | namespace crypto {

FILE: cc/experimental/pqcrypto/signature/dilithium_verify_key_manager_test.cc
  type crypto (line 50) | namespace crypto {
    type tink (line 51) | namespace tink {
      type DilithiumTestCase (line 67) | struct DilithiumTestCase {
      function CreateValidPrivateKey (line 77) | StatusOr<DilithiumPrivateKey> CreateValidPrivateKey(
      function CreateValidPublicKey (line 88) | StatusOr<DilithiumPublicKey> CreateValidPublicKey(
      function TEST (line 97) | TEST(DilithiumVerifyKeyManagerTest, Basics) {
      function TEST (line 105) | TEST(DilithiumVerifyKeyManagerTest, ValidateEmptyKey) {
      function TEST_P (line 110) | TEST_P(DilithiumVerifyKeyManagerTest, InvalidParams) {
      function TEST_P (line 121) | TEST_P(DilithiumVerifyKeyManagerTest, PublicKeyValid) {
      function TEST_P (line 131) | TEST_P(DilithiumVerifyKeyManagerTest, PublicKeyWrongVersion) {
      function TEST_P (line 143) | TEST_P(DilithiumVerifyKeyManagerTest, PublicKeyWrongKeyLength) {
      function TEST_P (line 158) | TEST_P(DilithiumVerifyKeyManagerTest, Create) {
      function TEST_P (line 189) | TEST_P(DilithiumVerifyKeyManagerTest, CreateDifferentPublicKey) {

FILE: cc/experimental/pqcrypto/signature/falcon_key_template.cc
  type crypto (line 29) | namespace crypto {
    type tink (line 30) | namespace tink {
      function NewFalconKeyTemplate (line 38) | std::unique_ptr<KeyTemplate> NewFalconKeyTemplate(int32_t key_size) {

FILE: cc/experimental/pqcrypto/signature/falcon_key_template.h
  function namespace (line 22) | namespace crypto {

FILE: cc/experimental/pqcrypto/signature/falcon_key_template_test.cc
  type crypto (line 37) | namespace crypto {
    type tink (line 38) | namespace tink {
      type FalconTestCase (line 47) | struct FalconTestCase {
      function TEST_P (line 55) | TEST_P(FalconKeyTemplateTest, CheckKeyTemplateValid) {
      function TEST_P (line 69) | TEST_P(FalconKeyTemplateTest, SameReference) {
      function TEST_P (line 76) | TEST_P(FalconKeyTemplateTest, KeyManagerCompatibility) {

FILE: cc/experimental/pqcrypto/signature/falcon_sign_key_manager.cc
  type crypto (line 36) | namespace crypto {
    type tink (line 37) | namespace tink {
      function Status (line 84) | Status FalconSignKeyManager::ValidateKey(const FalconPrivateKey& key...
      function Status (line 98) | Status FalconSignKeyManager::ValidateKeyFormat(

FILE: cc/experimental/pqcrypto/signature/falcon_sign_key_manager.h
  function namespace (line 38) | namespace crypto {
  function override (line 78) | const override {

FILE: cc/experimental/pqcrypto/signature/falcon_sign_key_manager_test.cc
  type crypto (line 39) | namespace crypto {
    type tink (line 40) | namespace tink {
      type FalconTestCase (line 53) | struct FalconTestCase {
      function CreateValidKeyFormat (line 62) | StatusOr<FalconKeyFormat> CreateValidKeyFormat(int32_t private_key_s...
      function TEST (line 69) | TEST(FalconSignKeyManagerTest, Basic) {
      function TEST_P (line 77) | TEST_P(FalconSignKeyManagerTest, ValidKeyFormat) {
      function TEST (line 87) | TEST(FalconSignKeyManagerTest, InvalidKeyFormat) {
      function TEST_P (line 95) | TEST_P(FalconSignKeyManagerTest, CreateKeyValid) {
      function TEST_P (line 112) | TEST_P(FalconSignKeyManagerTest, PrivateKeyWrongVersion) {
      function TEST_P (line 127) | TEST_P(FalconSignKeyManagerTest, CreateKeyAlwaysNew) {
      function TEST_P (line 145) | TEST_P(FalconSignKeyManagerTest, GetPublicKey) {
      function TEST_P (line 165) | TEST_P(FalconSignKeyManagerTest, CreateValid) {
      function TEST_P (line 195) | TEST_P(FalconSignKeyManagerTest, CreateBadPublicKey) {

FILE: cc/experimental/pqcrypto/signature/falcon_verify_key_manager.cc
  type crypto (line 35) | namespace crypto {
    type tink (line 36) | namespace tink {
      function Status (line 56) | Status FalconVerifyKeyManager::ValidateKey(const FalconPublicKey& ke...

FILE: cc/experimental/pqcrypto/signature/falcon_verify_key_manager.h
  function namespace (line 39) | namespace crypto {

FILE: cc/experimental/pqcrypto/signature/falcon_verify_key_manager_test.cc
  type crypto (line 40) | namespace crypto {
    type tink (line 41) | namespace tink {
      type FalconTestCase (line 53) | struct FalconTestCase {
      function CreateValidPrivateKey (line 62) | StatusOr<FalconPrivateKey> CreateValidPrivateKey(int32_t private_key...
      function CreateValidPublicKey (line 70) | StatusOr<FalconPublicKey> CreateValidPublicKey(int32_t private_key_s...
      function TEST (line 78) | TEST(FalconVerifyKeyManagerTest, Basics) {
      function TEST (line 86) | TEST(FalconVerifyKeyManagerTest, ValidateEmptyKey) {
      function TEST_P (line 91) | TEST_P(FalconVerifyKeyManagerTest, PublicKeyValid) {
      function TEST_P (line 101) | TEST_P(FalconVerifyKeyManagerTest, PublicKeyWrongVersion) {
      function TEST_P (line 112) | TEST_P(FalconVerifyKeyManagerTest, Create) {
      function TEST_P (line 141) | TEST_P(FalconVerifyKeyManagerTest, CreateInvalidPublicKey) {
      function TEST_P (line 160) | TEST_P(FalconVerifyKeyManagerTest, CreateDifferentPublicKey) {

FILE: cc/experimental/pqcrypto/signature/signature_config.cc
  type crypto (line 34) | namespace crypto {
    type tink (line 35) | namespace tink {
      function PqSignatureConfigRegister (line 37) | util::Status PqSignatureConfigRegister() {

FILE: cc/experimental/pqcrypto/signature/signature_config.h
  function namespace (line 22) | namespace crypto {

FILE: cc/experimental/pqcrypto/signature/signature_config_test.cc
  type crypto (line 35) | namespace crypto {
    type tink (line 36) | namespace tink {
      class PcqSignatureConfigTest (line 42) | class PcqSignatureConfigTest : public ::testing::Test {
        method SetUp (line 44) | void SetUp() override { Registry::Reset(); }
      function TEST_F (line 47) | TEST_F(PcqSignatureConfigTest, CheckDilithium) {
      function TEST_F (line 71) | TEST_F(PcqSignatureConfigTest, CheckSphincs) {
      function TEST_F (line 95) | TEST_F(PcqSignatureConfigTest, CheckFalcon) {

FILE: cc/experimental/pqcrypto/signature/signature_config_util_test.cc
  type crypto (line 40) | namespace crypto {
    type tink (line 41) | namespace tink {
      class PcqSignatureConfigTest (line 48) | class PcqSignatureConfigTest : public ::testing::Test {
        method SetUp (line 50) | void SetUp() override { Registry::Reset(); }
      function TEST_F (line 53) | TEST_F(PcqSignatureConfigTest, CheckStatus) {
      function TEST_F (line 63) | TEST_F(PcqSignatureConfigTest, PublicKeySignWrapperRegistered) {
      function TEST_F (line 99) | TEST_F(PcqSignatureConfigTest, PublicKeyVerifyWrapperRegistered) {

FILE: cc/experimental/pqcrypto/signature/slh_dsa_parameters.cc
  type crypto (line 24) | namespace crypto {
    type tink (line 25) | namespace tink {

FILE: cc/experimental/pqcrypto/signature/slh_dsa_parameters.h
  function class (line 32) | class SlhDsaParameters : public SignatureParameters {

FILE: cc/experimental/pqcrypto/signature/slh_dsa_parameters_test.cc
  type crypto (line 25) | namespace crypto {
    type tink (line 26) | namespace tink {
      type VariantTestCase (line 36) | struct VariantTestCase {
      function TEST_P (line 50) | TEST_P(SlhDsaParametersTest, CreateSlhDsa128Sha2SmallSignatureWorks) {
      function TEST (line 66) | TEST(SlhDsaParametersTest, CreateWithInvalidVariantFails) {
      function TEST (line 77) | TEST(SlhDsaParametersTest, CreateWithInvalidHashTypeFails) {
      function TEST (line 88) | TEST(SlhDsaParametersTest, CreateWithUnsupportedHashTypeFails) {
      function TEST (line 98) | TEST(SlhDsaParametersTest, CreateWithInvalidSignatureTypeFails) {
      function TEST (line 109) | TEST(SlhDsaParametersTest, CreateWithUnsupportedSignatureTypeFails) {
      function TEST (line 119) | TEST(SlhDsaParametersTest, CreateWithInvalidKeySizeFails) {
      function TEST (line 129) | TEST(SlhDsaParametersTest, CreateWithUnsupportedKeySizeFails) {
      function TEST (line 139) | TEST(SlhDsaParametersTest, CopyConstructor) {
      function TEST (line 157) | TEST(SlhDsaParametersTest, CopyAssignment) {
      function TEST_P (line 174) | TEST_P(SlhDsaParametersTest, ParametersEquals) {
      function TEST (line 193) | TEST(SlhDsaParametersTest, DifferentVariantNotEqual) {

FILE: cc/experimental/pqcrypto/signature/slh_dsa_private_key.cc
  type crypto (line 36) | namespace crypto {
    type tink (line 37) | namespace tink {

FILE: cc/experimental/pqcrypto/signature/slh_dsa_private_key.h
  function namespace (line 27) | namespace crypto {

FILE: cc/experimental/pqcrypto/signature/slh_dsa_private_key_test.cc
  type crypto (line 38) | namespace crypto {
    type tink (line 39) | namespace tink {
      type TestCase (line 49) | struct TestCase {
      function TEST_P (line 65) | TEST_P(SlhDsaPrivateKeyTest, CreateSucceeds) {
      function TEST (line 101) | TEST(SlhDsaPrivateKeyTest, CreateWithInvalidPrivateKeyLengthFails) {
      function TEST (line 125) | TEST(SlhDsaPrivateKeyTest, CreateWithMismatchedPairFails) {
      function TEST (line 161) | TEST(SlhDsaPrivateKeyTest, CreateWithModifiedPrivateKeyFails) {
      function TEST_P (line 196) | TEST_P(SlhDsaPrivateKeyTest, KeyEquals) {
      function TEST (line 234) | TEST(SlhDsaPrivateKeyTest, DifferentPublicKeyNotEqual) {

FILE: cc/experimental/pqcrypto/signature/slh_dsa_proto_serialization.cc
  type crypto (line 41) | namespace crypto {
    type tink (line 42) | namespace tink {
      function ToVariant (line 74) | util::StatusOr<SlhDsaParameters::Variant> ToVariant(
      function ToOutputPrefixType (line 87) | util::StatusOr<OutputPrefixType> ToOutputPrefixType(
      function ToHashType (line 100) | util::StatusOr<SlhDsaParameters::HashType> ToHashType(
      function ToProtoHashType (line 113) | util::StatusOr<SlhDsaHashType> ToProtoHashType(
      function ToSignatureType (line 126) | util::StatusOr<SlhDsaParameters::SignatureType> ToSignatureType(
      function ToProtoSignatureType (line 140) | util::StatusOr<SlhDsaSignatureType> ToProtoSignatureType(
      function ToParameters (line 153) | util::StatusOr<SlhDsaParameters> ToParameters(
      function FromParameters (line 177) | util::StatusOr<SlhDsaParams> FromParameters(
      function ParseParameters (line 200) | util::StatusOr<SlhDsaParameters> ParseParameters(
      function ParsePublicKey (line 227) | util::StatusOr<SlhDsaPublicKey> ParsePublicKey(
      function ParsePrivateKey (line 258) | util::StatusOr<SlhDsaPrivateKey> ParsePrivateKey(
      function SerializeParameters (line 298) | util::StatusOr<internal::ProtoParametersSerialization> SerializePara...
      function SerializePublicKey (line 319) | util::StatusOr<internal::ProtoKeySerialization> SerializePublicKey(
      function SerializePrivateKey (line 344) | util::StatusOr<internal::ProtoKeySerialization> SerializePrivateKey(
      function SlhDsaProtoParametersParserImpl (line 386) | SlhDsaProtoParametersParserImpl& SlhDsaProtoParametersParser() {
      function SlhDsaProtoParametersSerializerImpl (line 392) | SlhDsaProtoParametersSerializerImpl& SlhDsaProtoParametersSerializer...
      function SlhDsaProtoPublicKeyParserImpl (line 398) | SlhDsaProtoPublicKeyParserImpl& SlhDsaProtoPublicKeyParser() {
      function SlhDsaProtoPublicKeySerializerImpl (line 404) | SlhDsaProtoPublicKeySerializerImpl& SlhDsaProtoPublicKeySerializer() {
      function SlhDsaProtoPrivateKeyParserImpl (line 410) | SlhDsaProtoPrivateKeyParserImpl& SlhDsaProtoPrivateKeyParser() {
      function SlhDsaProtoPrivateKeySerializerImpl (line 416) | SlhDsaProtoPrivateKeySerializerImpl& SlhDsaProtoPrivateKeySerializer...
      function RegisterSlhDsaProtoSerialization (line 424) | util::Status RegisterSlhDsaProtoSerialization() {

FILE: cc/experimental/pqcrypto/signature/slh_dsa_proto_serialization.h
  function namespace (line 22) | namespace crypto {

FILE: cc/experimental/pqcrypto/signature/slh_dsa_proto_serialization_test.cc
  type crypto (line 49) | namespace crypto {
    type tink (line 50) | namespace tink {
      type TestCase (line 74) | struct TestCase {
      class SlhDsaProtoSerializationTest (line 81) | class SlhDsaProtoSerializationTest : public TestWithParam<TestCase> {
        method SlhDsaProtoSerializationTest (line 83) | SlhDsaProtoSerializationTest() {
      function TEST_F (line 88) | TEST_F(SlhDsaProtoSerializationTest, RegisterTwiceSucceeds) {
      function TEST_P (line 102) | TEST_P(SlhDsaProtoSerializationTest,
      function TEST_F (line 137) | TEST_F(SlhDsaProtoSerializationTest,
      function TEST_F (line 153) | TEST_F(SlhDsaProtoSerializationTest, ParseParametersWithInvalidVersi...
      function TEST_F (line 177) | TEST_F(SlhDsaProtoSerializationTest,
      function TEST_F (line 197) | TEST_F(SlhDsaProtoSerializationTest,
      function TEST_F (line 222) | TEST_F(SlhDsaProtoSerializationTest, ParseParametersWithUnkownSigTyp...
      function TEST_F (line 247) | TEST_F(SlhDsaProtoSerializationTest, ParseParametersWithUnkownHashTy...
      function TEST_P (line 271) | TEST_P(SlhDsaProtoSerializationTest,
      function TEST_P (line 308) | TEST_P(SlhDsaProtoSerializationTest, ParsePublicKeyWorks) {
      function TEST_F (line 353) | TEST_F(SlhDsaProtoSerializationTest,
      function TEST_F (line 375) | TEST_F(SlhDsaProtoSerializationTest, ParsePublicKeyWithInvalidVersio...
      function TEST_P (line 406) | TEST_P(SlhDsaProtoSerializationTest, SerializePublicKeyWorks) {
      function TEST_P (line 454) | TEST_P(SlhDsaProtoSerializationTest, ParsePrivateKeyWorks) {
      function TEST_F (line 520) | TEST_F(SlhDsaProtoSerializationTest, ParsePrivateKeyWithInvalidSeria...
      function TEST_F (line 541) | TEST_F(SlhDsaProtoSerializationTest, ParsePrivateKeyWithInvalidVersi...
      function TEST_F (line 585) | TEST_F(SlhDsaProtoSerializationTest, ParsePrivateKeyNoSecretKeyAcces...
      function TEST_P (line 627) | TEST_P(SlhDsaProtoSerializationTest, SerializePrivateKey) {
      function TEST_F (line 692) | TEST_F(SlhDsaProtoSerializationTest, SerializePrivateKeyNoSecretKeyA...

FILE: cc/experimental/pqcrypto/signature/slh_dsa_public_key.cc
  type crypto (line 33) | namespace crypto {
    type tink (line 34) | namespace tink {
      function ComputeOutputPrefix (line 37) | util::StatusOr<std::string> ComputeOutputPrefix(

FILE: cc/experimental/pqcrypto/signature/slh_dsa_public_key.h
  function namespace (line 31) | namespace crypto {

FILE: cc/experimental/pqcrypto/signature/slh_dsa_public_key_test.cc
  type crypto (line 31) | namespace crypto {
    type tink (line 32) | namespace tink {
      type TestCase (line 42) | struct TestCase {
      function TEST_P (line 58) | TEST_P(SlhDsaPublicKeyTest, CreatePublicKeyWorks) {
      function TEST (line 79) | TEST(SlhDsaPublicKeyTest, CreateWithInvalidPublicKeyLengthFails) {
      function TEST (line 96) | TEST(SlhDsaPublicKeyTest, CreateKeyWithNoIdRequirementWithTinkParams...
      function TEST (line 114) | TEST(SlhDsaPublicKeyTest, CreateKeyWithIdRequirementWithNoPrefixPara...
      function TEST_P (line 133) | TEST_P(SlhDsaPublicKeyTest, PublicKeyEquals) {
      function TEST (line 159) | TEST(SlhDsaPublicKeyTest, DifferentPublicKeyBytesNotEqual) {
      function TEST (line 185) | TEST(SlhDsaPublicKeyTest, DifferentIdRequirementNotEqual) {

FILE: cc/experimental/pqcrypto/signature/sphincs_key_template.cc
  type crypto (line 65) | namespace crypto {
    type tink (line 66) | namespace tink {
      function KeyTemplate (line 78) | KeyTemplate* NewSphincsKeyTemplate(int32_t private_key_size,

FILE: cc/experimental/pqcrypto/signature/sphincs_key_template.h
  function namespace (line 22) | namespace crypto {

FILE: cc/experimental/pqcrypto/signature/sphincs_key_template_test.cc
  type crypto (line 75) | namespace crypto {
    type tink (line 76) | namespace tink {
      type SphincsTestCase (line 89) | struct SphincsTestCase {
      function TEST_P (line 100) | TEST_P(SphincsKeyTemplateTest, CheckKeyTemplateValid) {
      function TEST_P (line 117) | TEST_P(SphincsKeyTemplateTest, SameReference) {
      function TEST_P (line 124) | TEST_P(SphincsKeyTemplateTest, KeyManagerCompatibility) {

FILE: cc/experimental/pqcrypto/signature/sphincs_sign_key_manager.cc
  type crypto (line 38) | namespace crypto {
    type tink (line 39) | namespace tink {
      function Status (line 102) | Status SphincsSignKeyManager::ValidateKey(const SphincsPrivateKey& k...
      function Status (line 116) | Status SphincsSignKeyManager::ValidateKeyFormat(

FILE: cc/experimental/pqcrypto/signature/sphincs_sign_key_manager.h
  function namespace (line 38) | namespace crypto {
  function override (line 78) | const override {

FILE: cc/experimental/pqcrypto/signature/sphincs_sign_key_manager_test.cc
  type crypto (line 80) | namespace crypto {
    type tink (line 81) | namespace tink {
      type SphincsTestCase (line 100) | struct SphincsTestCase {
      function CreateValidKeyFormat (line 112) | StatusOr<SphincsKeyFormat> CreateValidKeyFormat(int32_t private_key_...
      function TEST (line 126) | TEST(SphincsSignKeyManagerTest, Basic) {
      function TEST_P (line 134) | TEST_P(SphincsSignKeyManagerTest, ValidKeyFormat) {
      function TEST (line 145) | TEST(SphincsSignKeyManagerTest, InvalidKeyFormat) {
      function TEST_P (line 156) | TEST_P(SphincsSignKeyManagerTest, CreateKeyValid) {
      function TEST_P (line 174) | TEST_P(SphincsSignKeyManagerTest, PrivateKeyWrongVersion) {
      function TEST (line 190) | TEST(SphincsSignKeyManagerTest, CreateKeyInvalidParams) {
      function TEST_P (line 202) | TEST_P(SphincsSignKeyManagerTest, CreateKeyAlwaysNew) {
      function TEST_P (line 221) | TEST_P(SphincsSignKeyManagerTest, GetPublicKey) {
      function TEST_P (line 243) | TEST_P(SphincsSignKeyManagerTest, CreateValid) {
      function TEST_P (line 279) | TEST_P(SphincsSignKeyManagerTest, CreateBadPublicKey) {

FILE: cc/experimental/pqcrypto/signature/sphincs_verify_key_manager.cc
  type crypto (line 36) | namespace crypto {
    type tink (line 37) | namespace tink {
      function Status (line 64) | Status SphincsVerifyKeyManager::ValidateKey(const SphincsPublicKey& ...
      function Status (line 78) | Status SphincsVerifyKeyManager::ValidateParams(

FILE: cc/experimental/pqcrypto/signature/sphincs_verify_key_manager.h
  function namespace (line 39) | namespace crypto {

FILE: cc/experimental/pqcrypto/signature/sphincs_verify_key_manager_test.cc
  type crypto (line 80) | namespace crypto {
    type tink (line 81) | namespace tink {
      type SphincsTestCase (line 98) | struct SphincsTestCase {
      function CreateValidPrivateKey (line 110) | StatusOr<SphincsPrivateKey> CreateValidPrivateKey(int32_t private_ke...
      function CreateValidPublicKey (line 125) | StatusOr<SphincsPublicKey> CreateValidPublicKey(int32_t private_key_...
      function TEST (line 136) | TEST(SphincsVerifyKeyManagerTest, Basics) {
      function TEST (line 144) | TEST(SphincsVerifyKeyManagerTest, ValidateEmptyKey) {
      function TEST_P (line 149) | TEST_P(SphincsVerifyKeyManagerTest, InvalidParam) {
      function TEST_P (line 162) | TEST_P(SphincsVerifyKeyManagerTest, PublicKeyValid) {
      function TEST (line 173) | TEST(SphincsVerifyKeyManagerTest, PublicKeyInvalidParams) {
      function TEST_P (line 181) | TEST_P(SphincsVerifyKeyManagerTest, PublicKeyWrongVersion) {
      function TEST_P (line 193) | TEST_P(SphincsVerifyKeyManagerTest, Create) {
      function TEST_P (line 229) | TEST_P(SphincsVerifyKeyManagerTest, CreateInvalidPublicKey) {
      function TEST_P (line 249) | TEST_P(SphincsVerifyKeyManagerTest, CreateDifferentPublicKey) {

FILE: cc/experimental/pqcrypto/signature/subtle/dilithium_avx2_sign.cc
  type crypto (line 46) | namespace crypto {
    type tink (line 47) | namespace tink {
      type subtle (line 48) | namespace subtle {

FILE: cc/experimental/pqcrypto/signature/subtle/dilithium_avx2_sign.h
  function namespace (line 31) | namespace crypto {

FILE: cc/experimental/pqcrypto/signature/subtle/dilithium_avx2_sign_test.cc
  type crypto (line 47) | namespace crypto {
    type tink (line 48) | namespace tink {
      type subtle (line 49) | namespace subtle {
        type DilithiumTestCase (line 52) | struct DilithiumTestCase {
        function TEST (line 65) | TEST(DilithiumAvx2SignTest, InvalidPrivateKeys) {
        function TEST_P (line 88) | TEST_P(DilithiumAvx2SignTest, SignatureLength) {
        function TEST_P (line 118) | TEST_P(DilithiumAvx2SignTest, Determinism) {
        function TEST_P (line 163) | TEST_P(DilithiumAvx2SignTest, FipsMode) {

FILE: cc/experimental/pqcrypto/signature/subtle/dilithium_avx2_verify.cc
  type crypto (line 46) | namespace crypto {
    type tink (line 47) | namespace tink {
      type subtle (line 48) | namespace subtle {

FILE: cc/experimental/pqcrypto/signature/subtle/dilithium_avx2_verify.h
  function namespace (line 30) | namespace crypto {

FILE: cc/experimental/pqcrypto/signature/subtle/dilithium_avx2_verify_test.cc
  type crypto (line 51) | namespace crypto {
    type tink (line 52) | namespace tink {
      type subtle (line 53) | namespace subtle {
        type DilithiumTestCase (line 56) | struct DilithiumTestCase {
        function TEST (line 68) | TEST(DilithiumAvx2VerifyTest, InvalidPublicKeys) {
        function TEST_P (line 97) | TEST_P(DilithiumAvx2VerifyTest, BasicSignVerify) {
        function TEST_P (line 132) | TEST_P(DilithiumAvx2VerifyTest, FailsWithWrongMessage) {
        function TEST_P (line 167) | TEST_P(DilithiumAvx2VerifyTest, FailsWithWrongSignature) {
        function TEST_P (line 203) | TEST_P(DilithiumAvx2VerifyTest, FailsWithByteFlipped) {
        function TEST_P (line 241) | TEST_P(DilithiumAvx2VerifyTest, FipsMode) {
        type TestVector (line 260) | struct TestVector {
        function TEST (line 268) | TEST(DilithiumAvx2VerifyTest, Vectors) {
        function TEST (line 879) | TEST(DilithiumAvx2VerifyTest, AesVectors) {

FILE: cc/experimental/pqcrypto/signature/subtle/dilithium_key.cc
  type crypto (line 40) | namespace crypto {
    type tink (line 41) | namespace tink {
      type subtle (line 42) | namespace subtle {
        function DilithiumSeedExpansion (line 162) | const DilithiumSeedExpansion& DilithiumPrivateKeyPqclean::GetSeedE...
        function DilithiumSeedExpansion (line 178) | const DilithiumSeedExpansion& DilithiumPublicKeyPqclean::GetSeedEx...

FILE: cc/experimental/pqcrypto/signature/subtle/dilithium_key.h
  function namespace (line 32) | namespace subtle {

FILE: cc/experimental/pqcrypto/signature/subtle/dilithium_key_test.cc
  type crypto (line 40) | namespace crypto {
    type tink (line 41) | namespace tink {
      type subtle (line 42) | namespace subtle {
        type DilithiumTestCase (line 47) | struct DilithiumTestCase {
        function TEST_P (line 56) | TEST_P(DilithiumKeyTest, DilithiumKeysLength) {
        function TEST_P (line 72) | TEST_P(DilithiumKeyTest, DifferentContent) {

FILE: cc/experimental/pqcrypto/signature/subtle/falcon_sign.cc
  type crypto (line 41) | namespace crypto {
    type tink (line 42) | namespace tink {
      type subtle (line 43) | namespace subtle {

FILE: cc/experimental/pqcrypto/signature/subtle/falcon_sign.h
  function namespace (line 31) | namespace crypto {

FILE: cc/experimental/pqcrypto/signature/subtle/falcon_sign_test.cc
  type crypto (line 40) | namespace crypto {
    type tink (line 41) | namespace tink {
      type subtle (line 42) | namespace subtle {
        type FalconTestCase (line 47) | struct FalconTestCase {
        function TEST_P (line 55) | TEST_P(FalconSignTest, ValidSignatureLength) {
        function TEST_P (line 82) | TEST_P(FalconSignTest, NonDeterminism) {
        function TEST_P (line 118) | TEST_P(FalconSignTest, FipsMode) {

FILE: cc/experimental/pqcrypto/signature/subtle/falcon_subtle_utils.cc
  type crypto (line 37) | namespace crypto {
    type tink (line 38) | namespace tink {
      type subtle (line 39) | namespace subtle {
        function GenerateFalconKeyPair (line 63) | crypto::tink::util::StatusOr<FalconKeyPair> GenerateFalconKeyPair(
        function ValidateFalconPrivateKeySize (line 115) | crypto::tink::util::Status ValidateFalconPrivateKeySize(int32_t ke...
        function ValidateFalconPublicKeySize (line 129) | crypto::tink::util::Status ValidateFalconPublicKeySize(int32_t key...

FILE: cc/experimental/pqcrypto/signature/subtle/falcon_subtle_utils.h
  function namespace (line 31) | namespace crypto {

FILE: cc/experimental/pqcrypto/signature/subtle/falcon_subtle_utils_test.cc
  type crypto (line 33) | namespace crypto {
    type tink (line 34) | namespace tink {
      type subtle (line 35) | namespace subtle {
        type FalconTestCase (line 41) | struct FalconTestCase {
        function TEST_P (line 49) | TEST_P(FalconUtilsTest, FalconKeyGeneration) {
        function TEST_P (line 64) | TEST_P(FalconUtilsTest, DifferentContent) {
        function TEST (line 77) | TEST(FalconUtilsTest, ValidPrivateKeySize) {
        function TEST (line 82) | TEST(FalconUtilsTest, InvalidPrivateKeySize) {
        function TEST (line 94) | TEST(FalconUtilsTest, ValidPublicKeySize) {
        function TEST (line 99) | TEST(FalconUtilsTest, InvalidPublicKeySize) {
        function TEST (line 111) | TEST(FalconUtilsTest, InvalidPrivateKey) {
        function TEST (line 120) | TEST(FalconUtilsTest, InvalidPubliceKey) {

FILE: cc/experimental/pqcrypto/signature/subtle/falcon_verify.cc
  type crypto (line 40) | namespace crypto {
    type tink (line 41) | namespace tink {
      type subtle (line 42) | namespace subtle {

FILE: cc/experimental/pqcrypto/signature/subtle/falcon_verify.h
  function namespace (line 32) | namespace crypto {

FILE: cc/experimental/pqcrypto/signature/subtle/falcon_verify_test.cc
  type crypto (line 44) | namespace crypto {
    type tink (line 45) | namespace tink {
      type subtle (line 46) | namespace subtle {
        type FalconTestCase (line 53) | struct FalconTestCase {
        function TEST_P (line 61) | TEST_P(FalconVerifyTest, BasicSignVerify) {
        function TEST_P (line 93) | TEST_P(FalconVerifyTest, FailsWithWrongSignature) {
        function TEST_P (line 126) | TEST_P(FalconVerifyTest, FailsWithWrongMessage) {
        function TEST_P (line 158) | TEST_P(FalconVerifyTest, FailsWithBytesFlipped) {
        function TEST_P (line 193) | TEST_P(FalconVerifyTest, FipsMode) {

FILE: cc/experimental/pqcrypto/signature/subtle/sphincs_helper_pqclean.cc
  type crypto (line 69) | namespace crypto {
    type tink (line 70) | namespace tink {
      type subtle (line 71) | namespace subtle {
        class SphincsHaraka128FRobustPqclean (line 73) | class SphincsHaraka128FRobustPqclean : public SphincsHelperPqclean {
          method SphincsHaraka128FRobustPqclean (line 75) | SphincsHaraka128FRobustPqclean()
          method Sign (line 82) | int Sign(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t ...
          method Verify (line 88) | int Verify(const uint8_t *sig, size_t siglen, const uint8_t *m, ...
          method Keygen (line 94) | int Keygen(uint8_t *pk, uint8_t *sk) const override {
        class SphincsHaraka128SRobustPqclean (line 99) | class SphincsHaraka128SRobustPqclean : public SphincsHelperPqclean {
          method SphincsHaraka128SRobustPqclean (line 101) | SphincsHaraka128SRobustPqclean()
          method Sign (line 108) | int Sign(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t ...
          method Verify (line 114) | int Verify(const uint8_t *sig, size_t siglen, const uint8_t *m, ...
          method Keygen (line 120) | int Keygen(uint8_t *pk, uint8_t *sk) const override {
        class SphincsHaraka128FSimplePqclean (line 125) | class SphincsHaraka128FSimplePqclean : public SphincsHelperPqclean {
          method SphincsHaraka128FSimplePqclean (line 127) | SphincsHaraka128FSimplePqclean()
          method Sign (line 134) | int Sign(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t ...
          method Verify (line 140) | int Verify(const uint8_t *sig, size_t siglen, const uint8_t *m, ...
          method Keygen (line 146) | int Keygen(uint8_t *pk, uint8_t *sk) const override {
        class SphincsHaraka128SSimplePqclean (line 151) | class SphincsHaraka128SSimplePqclean : public SphincsHelperPqclean {
          method SphincsHaraka128SSimplePqclean (line 153) | SphincsHaraka128SSimplePqclean()
          method Sign (line 160) | int Sign(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t ...
          method Verify (line 166) | int Verify(const uint8_t *sig, size_t siglen, const uint8_t *m, ...
          method Keygen (line 172) | int Keygen(uint8_t *pk, uint8_t *sk) const override {
        class SphincsHaraka192FRobustPqclean (line 177) | class SphincsHaraka192FRobustPqclean : public SphincsHelperPqclean {
          method SphincsHaraka192FRobustPqclean (line 179) | SphincsHaraka192FRobustPqclean()
          method Sign (line 186) | int Sign(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t ...
          method Verify (line 192) | int Verify(const uint8_t *sig, size_t siglen, const uint8_t *m, ...
          method Keygen (line 198) | int Keygen(uint8_t *pk, uint8_t *sk) const override {
        class SphincsHaraka192SRobustPqclean (line 203) | class SphincsHaraka192SRobustPqclean : public SphincsHelperPqclean {
          method SphincsHaraka192SRobustPqclean (line 205) | SphincsHaraka192SRobustPqclean()
          method Sign (line 212) | int Sign(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t ...
          method Verify (line 218) | int Verify(const uint8_t *sig, size_t siglen, const uint8_t *m, ...
          method Keygen (line 224) | int Keygen(uint8_t *pk, uint8_t *sk) const override {
        class SphincsHaraka192FSimplePqclean (line 229) | class SphincsHaraka192FSimplePqclean : public SphincsHelperPqclean {
          method SphincsHaraka192FSimplePqclean (line 231) | SphincsHaraka192FSimplePqclean()
          method Sign (line 238) | int Sign(uint8_t *sig, size_t *siglen, const uint8_t *m, size_t ...
          method Verify (line 244) | int Verify(const uint8_t *sig, size_t siglen, const uint8_t *m, ...
          method Keygen (line 2
Copy disabled (too large) Download .json
Condensed preview — 3712 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (19,409K chars).
[
  {
    "path": ".bazelversion",
    "chars": 6,
    "preview": "6.4.0\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.md",
    "chars": 1808,
    "preview": "---\nname: Bug report\nabout: Create a report to help us improve Tink\n\n---\n\n> **NOTE**: **Tink moved to github.com/tink-cr"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "chars": 28,
    "preview": "blank_issues_enabled: false\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.md",
    "chars": 1869,
    "preview": "---\nname: Feature request\nabout: Suggest an idea for Tink\n\n---\n\n> **NOTE**: **Tink moved to github.com/tink-crypto!**\n>\n"
  },
  {
    "path": ".github/workflows/codeql-analysis.yml",
    "chars": 2681,
    "preview": "# For most projects, this workflow file will not need changing; you simply need\n# to commit it to your repository.\n#\n# Y"
  },
  {
    "path": ".gitignore",
    "chars": 165,
    "preview": ".DS_Store\nbazel-*\n*.swp\n*~\n**/target\n.idea\n*.iml\n*.tulsiconf-user\ntulsi-*\ntulsigen-*\n*.iml\n.gradle\n**/local.properties\n*"
  },
  {
    "path": "BUILD.bazel",
    "chars": 442,
    "preview": "# Description:\n#   Tink (https://github.com/google/tink) is a small crypto library that\n#   provides a safe, simple, agi"
  },
  {
    "path": "CMakeLists.txt",
    "chars": 1653,
    "preview": "cmake_minimum_required(VERSION 3.13)\nproject(Tink VERSION 2.1.2 LANGUAGES CXX)\n\nlist(APPEND CMAKE_MODULE_PATH \"${CMAKE_C"
  },
  {
    "path": "LICENSE",
    "chars": 11358,
    "preview": "\n                                 Apache License\n                           Version 2.0, January 2004\n                  "
  },
  {
    "path": "README.md",
    "chars": 5890,
    "preview": "# Tink\n\n> **NOTE**: **Tink moved to github.com/tink-crypto and this repo is no longer\n> active!**\n>\n> As planned, we hav"
  },
  {
    "path": "cc/.bazelignore",
    "chars": 145,
    "preview": "# Ignore AWS-KMS and Cloud KMS integrations which are in thier own WORKSPACEs.\nintegration/awskms\nintegration/gcpkms\n# I"
  },
  {
    "path": "cc/.bazelrc",
    "chars": 472,
    "preview": "# Enables automatic per-platform configs.\ncommon --enable_platform_specific_config\n# Minumum C++ version. Override it bu"
  },
  {
    "path": "cc/.bazelversion",
    "chars": 6,
    "preview": "6.4.0\n"
  },
  {
    "path": "cc/BUILD.bazel",
    "chars": 34101,
    "preview": "load(\"//:template_rule.bzl\", \"template_rule\")\nload(\"//:tink_version.bzl\", \"TINK_VERSION_LABEL\")\n\npackage(default_visibil"
  },
  {
    "path": "cc/CMakeLists.txt",
    "chars": 25436,
    "preview": "add_subdirectory(aead)\nadd_subdirectory(config)\nadd_subdirectory(daead)\nadd_subdirectory(hybrid)\nadd_subdirectory(intern"
  },
  {
    "path": "cc/WORKSPACE",
    "chars": 395,
    "preview": "workspace(name = \"tink_cc\")\n\n# Use this repository if you want to build the FIPS module for BoringSSL\n# local_repository"
  },
  {
    "path": "cc/aead/BUILD.bazel",
    "chars": 44297,
    "preview": "package(default_visibility = [\"//:__subpackages__\"])\n\nlicenses([\"notice\"])\n\ncc_library(\n    name = \"aead_wrapper\",\n    s"
  },
  {
    "path": "cc/aead/CMakeLists.txt",
    "chars": 34722,
    "preview": "tink_module(aead)\n\nadd_subdirectory(internal)\n\ntink_cc_library(\n  NAME aead_wrapper\n  SRCS\n    aead_wrapper.cc\n    aead_"
  },
  {
    "path": "cc/aead/aead_config.cc",
    "chars": 3702,
    "preview": "// Copyright 2017 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/aead_config.h",
    "chars": 1526,
    "preview": "// Copyright 2017 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use t"
  },
  {
    "path": "cc/aead/aead_config_test.cc",
    "chars": 27090,
    "preview": "// Copyright 2017 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use t"
  },
  {
    "path": "cc/aead/aead_factory.cc",
    "chars": 1954,
    "preview": "// Copyright 2017 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use t"
  },
  {
    "path": "cc/aead/aead_factory.h",
    "chars": 2426,
    "preview": "// Copyright 2017 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use t"
  },
  {
    "path": "cc/aead/aead_factory_test.cc",
    "chars": 4993,
    "preview": "// Copyright 2017 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/aead_key.h",
    "chars": 1721,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/aead_key_templates.cc",
    "chars": 7553,
    "preview": "// Copyright 2018 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use t"
  },
  {
    "path": "cc/aead/aead_key_templates.h",
    "chars": 5871,
    "preview": "// Copyright 2018 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use t"
  },
  {
    "path": "cc/aead/aead_key_templates_test.cc",
    "chars": 17953,
    "preview": "// Copyright 2018 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/aead_parameters.h",
    "chars": 1043,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/aead_wrapper.cc",
    "chars": 7330,
    "preview": "// Copyright 2017 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use t"
  },
  {
    "path": "cc/aead/aead_wrapper.h",
    "chars": 1654,
    "preview": "// Copyright 2017 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use t"
  },
  {
    "path": "cc/aead/aead_wrapper_test.cc",
    "chars": 14029,
    "preview": "// Copyright 2017 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use t"
  },
  {
    "path": "cc/aead/aes_ctr_hmac_aead_key.cc",
    "chars": 5472,
    "preview": "// Copyright 2024 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/aes_ctr_hmac_aead_key.h",
    "chars": 3920,
    "preview": "// Copyright 2024 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/aes_ctr_hmac_aead_key_manager.cc",
    "chars": 8735,
    "preview": "// Copyright 2017 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use t"
  },
  {
    "path": "cc/aead/aes_ctr_hmac_aead_key_manager.h",
    "chars": 3072,
    "preview": "// Copyright 2017 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/aes_ctr_hmac_aead_key_manager_test.cc",
    "chars": 13098,
    "preview": "// Copyright 2017 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use t"
  },
  {
    "path": "cc/aead/aes_ctr_hmac_aead_key_test.cc",
    "chars": 19371,
    "preview": "// Copyright 2024 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/aes_ctr_hmac_aead_parameters.cc",
    "chars": 6189,
    "preview": "// Copyright 2024 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/aes_ctr_hmac_aead_parameters.h",
    "chars": 5675,
    "preview": "// Copyright 2024 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/aes_ctr_hmac_aead_parameters_test.cc",
    "chars": 23695,
    "preview": "// Copyright 2024 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/aes_ctr_hmac_aead_proto_serialization.cc",
    "chars": 15546,
    "preview": "// Copyright 2024 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/aes_ctr_hmac_aead_proto_serialization.h",
    "chars": 1128,
    "preview": "// Copyright 2024 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/aes_ctr_hmac_aead_proto_serialization_test.cc",
    "chars": 27818,
    "preview": "// Copyright 2024 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/aes_eax_key.cc",
    "chars": 4009,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/aes_eax_key.h",
    "chars": 2843,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/aes_eax_key_manager.h",
    "chars": 4328,
    "preview": "// Copyright 2018 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/aes_eax_key_manager_test.cc",
    "chars": 6321,
    "preview": "// Copyright 2018 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/aes_eax_key_test.cc",
    "chars": 9393,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/aes_eax_parameters.cc",
    "chars": 4036,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/aes_eax_parameters.h",
    "chars": 4372,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/aes_eax_parameters_test.cc",
    "chars": 15355,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/aes_eax_proto_serialization.cc",
    "chars": 10573,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/aes_eax_proto_serialization.h",
    "chars": 1077,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/aes_eax_proto_serialization_test.cc",
    "chars": 18958,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/aes_gcm_key.cc",
    "chars": 3992,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/aes_gcm_key.h",
    "chars": 2843,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/aes_gcm_key_manager.h",
    "chars": 5345,
    "preview": "// Copyright 2017 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/aes_gcm_key_manager_test.cc",
    "chars": 8767,
    "preview": "// Copyright 2017 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/aes_gcm_key_test.cc",
    "chars": 9839,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/aes_gcm_parameters.cc",
    "chars": 3374,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/aes_gcm_parameters.h",
    "chars": 3429,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/aes_gcm_parameters_test.cc",
    "chars": 13884,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/aes_gcm_proto_serialization.cc",
    "chars": 10539,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/aes_gcm_proto_serialization.h",
    "chars": 1077,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/aes_gcm_proto_serialization_test.cc",
    "chars": 21094,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/aes_gcm_siv_key.cc",
    "chars": 3913,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/aes_gcm_siv_key.h",
    "chars": 2811,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/aes_gcm_siv_key_manager.h",
    "chars": 3261,
    "preview": "// Copyright 2019 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use t"
  },
  {
    "path": "cc/aead/aes_gcm_siv_key_manager_test.cc",
    "chars": 6704,
    "preview": "// Copyright 2019 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/aes_gcm_siv_key_test.cc",
    "chars": 8482,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/aes_gcm_siv_parameters.cc",
    "chars": 2225,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/aes_gcm_siv_parameters.h",
    "chars": 2632,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/aes_gcm_siv_parameters_test.cc",
    "chars": 6758,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/aes_gcm_siv_proto_serialization.cc",
    "chars": 9363,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/aes_gcm_siv_proto_serialization.h",
    "chars": 1096,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/aes_gcm_siv_proto_serialization_test.cc",
    "chars": 16672,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/chacha20_poly1305_key.cc",
    "chars": 4193,
    "preview": "// Copyright 2024 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/chacha20_poly1305_key.h",
    "chars": 2986,
    "preview": "// Copyright 2024 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/chacha20_poly1305_key_test.cc",
    "chars": 7291,
    "preview": "// Copyright 2024 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/chacha20_poly1305_parameters.cc",
    "chars": 1703,
    "preview": "// Copyright 2024 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/chacha20_poly1305_parameters.h",
    "chars": 2500,
    "preview": "// Copyright 2024 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/chacha20_poly1305_parameters_test.cc",
    "chars": 4580,
    "preview": "// Copyright 2024 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/chacha20_poly1305_proto_serialization.cc",
    "chars": 9310,
    "preview": "// Copyright 2024 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/chacha20_poly1305_proto_serialization.h",
    "chars": 1130,
    "preview": "// Copyright 2024 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/chacha20_poly1305_proto_serialization_test.cc",
    "chars": 15549,
    "preview": "// Copyright 2024 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/config_v0.cc",
    "chars": 1123,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/config_v0.h",
    "chars": 1003,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/config_v0_test.cc",
    "chars": 3356,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/cord_aead.h",
    "chars": 2663,
    "preview": "// Copyright 2020 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/cord_aead_wrapper.cc",
    "chars": 4109,
    "preview": "// Copyright 2020 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/cord_aead_wrapper.h",
    "chars": 1719,
    "preview": "// Copyright 2020 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/cord_aead_wrapper_test.cc",
    "chars": 7183,
    "preview": "// Copyright 2020 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/failing_aead.cc",
    "chars": 2086,
    "preview": "// Copyright 2022 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/failing_aead.h",
    "chars": 1163,
    "preview": "// Copyright 2022 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/failing_aead_test.cc",
    "chars": 2269,
    "preview": "// Copyright 2022 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/internal/BUILD.bazel",
    "chars": 10441,
    "preview": "package(default_visibility = [\"//:__subpackages__\"])\n\nlicenses([\"notice\"])\n\ncc_library(\n    name = \"aead_util\",\n    srcs"
  },
  {
    "path": "cc/aead/internal/CMakeLists.txt",
    "chars": 7384,
    "preview": "tink_module(aead::internal)\n\ntink_cc_library(\n  NAME aead_util\n  SRCS\n    aead_util.cc\n    aead_util.h\n  DEPS\n    absl::"
  },
  {
    "path": "cc/aead/internal/aead_from_zero_copy.cc",
    "chars": 2152,
    "preview": "// Copyright 2021 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/internal/aead_from_zero_copy.h",
    "chars": 2004,
    "preview": "// Copyright 2021 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/internal/aead_from_zero_copy_test.cc",
    "chars": 4373,
    "preview": "// Copyright 2021 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/internal/aead_util.cc",
    "chars": 2828,
    "preview": "// Copyright 2021 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/internal/aead_util.h",
    "chars": 1749,
    "preview": "// Copyright 2021 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/internal/aead_util_test.cc",
    "chars": 2773,
    "preview": "// Copyright 2021 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/internal/config_v0.cc",
    "chars": 2184,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/internal/config_v0.h",
    "chars": 1140,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/internal/config_v0_test.cc",
    "chars": 5492,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/internal/cord_aes_gcm_boringssl.cc",
    "chars": 11998,
    "preview": "// Copyright 2020 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/internal/cord_aes_gcm_boringssl.h",
    "chars": 2020,
    "preview": "// Copyright 2020 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/internal/cord_aes_gcm_boringssl_test.cc",
    "chars": 9330,
    "preview": "// Copyright 2020 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/internal/key_gen_config_v0.cc",
    "chars": 2180,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/internal/key_gen_config_v0.h",
    "chars": 1152,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/internal/mock_zero_copy_aead.h",
    "chars": 1888,
    "preview": "// Copyright 2021 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/internal/ssl_aead.cc",
    "chars": 21981,
    "preview": "// Copyright 2021 Google LLC.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use t"
  },
  {
    "path": "cc/aead/internal/ssl_aead.h",
    "chars": 3351,
    "preview": "// Copyright 2021 Google LLC.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use t"
  },
  {
    "path": "cc/aead/internal/ssl_aead_large_inputs_test.cc",
    "chars": 6003,
    "preview": "// Copyright 2021 Google LLC.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use t"
  },
  {
    "path": "cc/aead/internal/ssl_aead_test.cc",
    "chars": 27717,
    "preview": "// Copyright 2021 Google LLC.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use t"
  },
  {
    "path": "cc/aead/internal/wycheproof_aead.cc",
    "chars": 1984,
    "preview": "// Copyright 2021 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/internal/wycheproof_aead.h",
    "chars": 1483,
    "preview": "// Copyright 2021 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/internal/zero_copy_aead.h",
    "chars": 3497,
    "preview": "// Copyright 2021 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/internal/zero_copy_aead_wrapper.cc",
    "chars": 5573,
    "preview": "// Copyright 2021 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/internal/zero_copy_aead_wrapper.h",
    "chars": 1888,
    "preview": "// Copyright 2021 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/internal/zero_copy_aead_wrapper_test.cc",
    "chars": 9168,
    "preview": "// Copyright 2021 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/internal/zero_copy_aes_gcm_boringssl.cc",
    "chars": 4857,
    "preview": "// Copyright 2021 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/internal/zero_copy_aes_gcm_boringssl.h",
    "chars": 2104,
    "preview": "// Copyright 2021 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/internal/zero_copy_aes_gcm_boringssl_test.cc",
    "chars": 8810,
    "preview": "// Copyright 2021 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/key_gen_config_v0.cc",
    "chars": 1183,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/key_gen_config_v0.h",
    "chars": 1047,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/kms_aead_key_manager.h",
    "chars": 3506,
    "preview": "// Copyright 2019 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/kms_aead_key_manager_test.cc",
    "chars": 5398,
    "preview": "// Copyright 2019 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/kms_envelope_aead.cc",
    "chars": 5376,
    "preview": "// Copyright 2019 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/kms_envelope_aead.h",
    "chars": 2643,
    "preview": "// Copyright 2019 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/kms_envelope_aead_key_manager.cc",
    "chars": 1677,
    "preview": "// Copyright 2019 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/kms_envelope_aead_key_manager.h",
    "chars": 3715,
    "preview": "// Copyright 2019 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/kms_envelope_aead_key_manager_test.cc",
    "chars": 10923,
    "preview": "// Copyright 2019 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/kms_envelope_aead_test.cc",
    "chars": 13672,
    "preview": "// Copyright 2019 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/mock_aead.h",
    "chars": 1366,
    "preview": "// Copyright 2020 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/subtle/BUILD.bazel",
    "chars": 21,
    "preview": "licenses([\"notice\"])\n"
  },
  {
    "path": "cc/aead/subtle/CMakeLists.txt",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "cc/aead/xchacha20_poly1305_key.cc",
    "chars": 4212,
    "preview": "// Copyright 2024 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/xchacha20_poly1305_key.h",
    "chars": 3011,
    "preview": "// Copyright 2024 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/xchacha20_poly1305_key_manager.h",
    "chars": 4844,
    "preview": "// Copyright 2018 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use t"
  },
  {
    "path": "cc/aead/xchacha20_poly1305_key_manager_test.cc",
    "chars": 7680,
    "preview": "// Copyright 2019 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/xchacha20_poly1305_key_test.cc",
    "chars": 7342,
    "preview": "// Copyright 2024 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/xchacha20_poly1305_parameters.cc",
    "chars": 1711,
    "preview": "// Copyright 2024 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/xchacha20_poly1305_parameters.h",
    "chars": 2523,
    "preview": "// Copyright 2024 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/xchacha20_poly1305_parameters_test.cc",
    "chars": 4618,
    "preview": "// Copyright 2024 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/xchacha20_poly1305_proto_serialization.cc",
    "chars": 9619,
    "preview": "// Copyright 2024 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/xchacha20_poly1305_proto_serialization.h",
    "chars": 1135,
    "preview": "// Copyright 2024 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead/xchacha20_poly1305_proto_serialization_test.cc",
    "chars": 16618,
    "preview": "// Copyright 2024 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/aead.h",
    "chars": 2222,
    "preview": "// Copyright 2017 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use t"
  },
  {
    "path": "cc/aead_config.h",
    "chars": 820,
    "preview": "// Copyright 2017 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use t"
  },
  {
    "path": "cc/aead_factory.h",
    "chars": 824,
    "preview": "// Copyright 2017 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use t"
  },
  {
    "path": "cc/aead_key_templates.h",
    "chars": 848,
    "preview": "// Copyright 2018 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use t"
  },
  {
    "path": "cc/big_integer.h",
    "chars": 1965,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/binary_keyset_reader.h",
    "chars": 1922,
    "preview": "// Copyright 2017 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use t"
  },
  {
    "path": "cc/binary_keyset_writer.h",
    "chars": 1879,
    "preview": "// Copyright 2018 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use t"
  },
  {
    "path": "cc/chunked_mac.h",
    "chars": 3770,
    "preview": "// Copyright 2022 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/cleartext_keyset_handle.h",
    "chars": 2397,
    "preview": "// Copyright 2017 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use t"
  },
  {
    "path": "cc/config/BUILD.bazel",
    "chars": 10159,
    "preview": "load(\"@bazel_skylib//rules:common_settings.bzl\", \"bool_flag\")\n\npackage(default_visibility = [\"//:__subpackages__\"])\n\nlic"
  },
  {
    "path": "cc/config/CMakeLists.txt",
    "chars": 8309,
    "preview": "tink_module(config)\n\nadd_subdirectory(internal)\n\ntink_cc_library(\n  NAME tink_config\n  SRCS\n    tink_config.cc\n    tink_"
  },
  {
    "path": "cc/config/config_util.cc",
    "chars": 1406,
    "preview": "// Copyright 2019 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/config/config_util.h",
    "chars": 1138,
    "preview": "// Copyright 2019 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/config/config_util_test.cc",
    "chars": 1394,
    "preview": "// Copyright 2019 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/config/fips_140_2.cc",
    "chars": 4515,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/config/fips_140_2.h",
    "chars": 1214,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/config/fips_140_2_test.cc",
    "chars": 4999,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/config/global_registry.cc",
    "chars": 1576,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/config/global_registry.h",
    "chars": 1160,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/config/global_registry_test.cc",
    "chars": 5305,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/config/internal/BUILD.bazel",
    "chars": 75,
    "preview": "package(default_visibility = [\"//:__subpackages__\"])\n\nlicenses([\"notice\"])\n"
  },
  {
    "path": "cc/config/internal/CMakeLists.txt",
    "chars": 30,
    "preview": "tink_module(config::internal)\n"
  },
  {
    "path": "cc/config/key_gen_fips_140_2.cc",
    "chars": 3388,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/config/key_gen_fips_140_2.h",
    "chars": 1199,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/config/key_gen_fips_140_2_test.cc",
    "chars": 3724,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/config/key_gen_v0.cc",
    "chars": 1816,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/config/key_gen_v0.h",
    "chars": 1023,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/config/tink_config.cc",
    "chars": 1733,
    "preview": "// Copyright 2017 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use t"
  },
  {
    "path": "cc/config/tink_config.h",
    "chars": 1787,
    "preview": "// Copyright 2017 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use t"
  },
  {
    "path": "cc/config/tink_config_test.cc",
    "chars": 1750,
    "preview": "// Copyright 2017 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use t"
  },
  {
    "path": "cc/config/tink_fips.cc",
    "chars": 1092,
    "preview": "// Copyright 2020 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/config/tink_fips.h",
    "chars": 1422,
    "preview": "// Copyright 2020 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/config/tink_fips_test.cc",
    "chars": 3992,
    "preview": "// Copyright 2021 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/config/v0.cc",
    "chars": 1718,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/config/v0.h",
    "chars": 994,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/config/v0_test.cc",
    "chars": 6063,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/configuration.h",
    "chars": 1711,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/core/big_integer.cc",
    "chars": 1333,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/core/big_integer_test.cc",
    "chars": 7500,
    "preview": "// Copyright 2023 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/core/binary_keyset_reader.cc",
    "chars": 2585,
    "preview": "// Copyright 2017 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use t"
  },
  {
    "path": "cc/core/binary_keyset_reader_test.cc",
    "chars": 8135,
    "preview": "// Copyright 2017 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use t"
  },
  {
    "path": "cc/core/binary_keyset_writer.cc",
    "chars": 2329,
    "preview": "// Copyright 2018 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use t"
  },
  {
    "path": "cc/core/binary_keyset_writer_test.cc",
    "chars": 6875,
    "preview": "// Copyright 2018 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use t"
  },
  {
    "path": "cc/core/cleartext_keyset_handle.cc",
    "chars": 3075,
    "preview": "// Copyright 2017 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use t"
  },
  {
    "path": "cc/core/cleartext_keyset_handle_test.cc",
    "chars": 3360,
    "preview": "// Copyright 2017 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use t"
  },
  {
    "path": "cc/core/crypto_format.cc",
    "chars": 2798,
    "preview": "// Copyright 2017 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use t"
  },
  {
    "path": "cc/core/crypto_format_test.cc",
    "chars": 3279,
    "preview": "// Copyright 2017 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use t"
  },
  {
    "path": "cc/core/ec_point_test.cc",
    "chars": 3675,
    "preview": "// Copyright 2024 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use th"
  },
  {
    "path": "cc/core/json_keyset_reader.cc",
    "chars": 10966,
    "preview": "// Copyright 2017 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use t"
  },
  {
    "path": "cc/core/json_keyset_reader_test.cc",
    "chars": 15203,
    "preview": "// Copyright 2017 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use t"
  }
]

// ... and 3512 more files (download for full content)

About this extraction

This page contains the full source code of the tink-crypto/tink GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 3712 files (39.5 MB), approximately 4.8M tokens, and a symbol index with 11720 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!