1a8e1175bSopenharmony_ci/**
2a8e1175bSopenharmony_ci * \file doc_encdec.h
3a8e1175bSopenharmony_ci *
4a8e1175bSopenharmony_ci * \brief Encryption/decryption module documentation file.
5a8e1175bSopenharmony_ci */
6a8e1175bSopenharmony_ci/*
7a8e1175bSopenharmony_ci *
8a8e1175bSopenharmony_ci *  Copyright The Mbed TLS Contributors
9a8e1175bSopenharmony_ci *  SPDX-License-Identifier: Apache-2.0
10a8e1175bSopenharmony_ci *
11a8e1175bSopenharmony_ci *  Licensed under the Apache License, Version 2.0 (the "License"); you may
12a8e1175bSopenharmony_ci *  not use this file except in compliance with the License.
13a8e1175bSopenharmony_ci *  You may obtain a copy of the License at
14a8e1175bSopenharmony_ci *
15a8e1175bSopenharmony_ci *  http://www.apache.org/licenses/LICENSE-2.0
16a8e1175bSopenharmony_ci *
17a8e1175bSopenharmony_ci *  Unless required by applicable law or agreed to in writing, software
18a8e1175bSopenharmony_ci *  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
19a8e1175bSopenharmony_ci *  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20a8e1175bSopenharmony_ci *  See the License for the specific language governing permissions and
21a8e1175bSopenharmony_ci *  limitations under the License.
22a8e1175bSopenharmony_ci */
23a8e1175bSopenharmony_ci
24a8e1175bSopenharmony_ci/**
25a8e1175bSopenharmony_ci * @addtogroup encdec_module Encryption/decryption module
26a8e1175bSopenharmony_ci *
27a8e1175bSopenharmony_ci * The Encryption/decryption module provides encryption/decryption functions.
28a8e1175bSopenharmony_ci * One can differentiate between symmetric and asymmetric algorithms; the
29a8e1175bSopenharmony_ci * symmetric ones are mostly used for message confidentiality and the asymmetric
30a8e1175bSopenharmony_ci * ones for key exchange and message integrity.
31a8e1175bSopenharmony_ci * Some symmetric algorithms provide different block cipher modes, mainly
32a8e1175bSopenharmony_ci * Electronic Code Book (ECB) which is used for short (64-bit) messages and
33a8e1175bSopenharmony_ci * Cipher Block Chaining (CBC) which provides the structure needed for longer
34a8e1175bSopenharmony_ci * messages. In addition the Cipher Feedback Mode (CFB-128) stream cipher mode,
35a8e1175bSopenharmony_ci * Counter mode (CTR) and Galois Counter Mode (GCM) are implemented for
36a8e1175bSopenharmony_ci * specific algorithms.
37a8e1175bSopenharmony_ci *
38a8e1175bSopenharmony_ci * All symmetric encryption algorithms are accessible via the generic cipher layer
39a8e1175bSopenharmony_ci * (see \c mbedtls_cipher_setup()).
40a8e1175bSopenharmony_ci *
41a8e1175bSopenharmony_ci * The asymmetric encryption algorithms are accessible via the generic public
42a8e1175bSopenharmony_ci * key layer (see \c mbedtls_pk_init()).
43a8e1175bSopenharmony_ci *
44a8e1175bSopenharmony_ci * The following algorithms are provided:
45a8e1175bSopenharmony_ci * - Symmetric:
46a8e1175bSopenharmony_ci *   - AES (see \c mbedtls_aes_crypt_ecb(), \c mbedtls_aes_crypt_cbc(), \c mbedtls_aes_crypt_cfb128() and
47a8e1175bSopenharmony_ci *     \c mbedtls_aes_crypt_ctr()).
48a8e1175bSopenharmony_ci *   - Camellia (see \c mbedtls_camellia_crypt_ecb(), \c mbedtls_camellia_crypt_cbc(),
49a8e1175bSopenharmony_ci *     \c mbedtls_camellia_crypt_cfb128() and \c mbedtls_camellia_crypt_ctr()).
50a8e1175bSopenharmony_ci *   - DES/3DES (see \c mbedtls_des_crypt_ecb(), \c mbedtls_des_crypt_cbc(), \c mbedtls_des3_crypt_ecb()
51a8e1175bSopenharmony_ci *     and \c mbedtls_des3_crypt_cbc()).
52a8e1175bSopenharmony_ci *   - GCM (AES-GCM and CAMELLIA-GCM) (see \c mbedtls_gcm_init())
53a8e1175bSopenharmony_ci * - Asymmetric:
54a8e1175bSopenharmony_ci *   - Diffie-Hellman-Merkle (see \c mbedtls_dhm_read_public(), \c mbedtls_dhm_make_public()
55a8e1175bSopenharmony_ci *     and \c mbedtls_dhm_calc_secret()).
56a8e1175bSopenharmony_ci *   - RSA (see \c mbedtls_rsa_public() and \c mbedtls_rsa_private()).
57a8e1175bSopenharmony_ci *   - Elliptic Curves over GF(p) (see \c mbedtls_ecp_point_init()).
58a8e1175bSopenharmony_ci *   - Elliptic Curve Digital Signature Algorithm (ECDSA) (see \c mbedtls_ecdsa_init()).
59a8e1175bSopenharmony_ci *   - Elliptic Curve Diffie Hellman (ECDH) (see \c mbedtls_ecdh_init()).
60a8e1175bSopenharmony_ci *
61a8e1175bSopenharmony_ci * This module provides encryption/decryption which can be used to provide
62a8e1175bSopenharmony_ci * secrecy.
63a8e1175bSopenharmony_ci *
64a8e1175bSopenharmony_ci * It also provides asymmetric key functions which can be used for
65a8e1175bSopenharmony_ci * confidentiality, integrity, authentication and non-repudiation.
66a8e1175bSopenharmony_ci */
67