blob: cb2be7fd19e00caeccdc5e711a6231b0156e77cd [file] [log] [blame]
Gilles Peskine7a894f22019-11-26 16:06:46 +01001/**
2 * \file psa/crypto_compat.h
3 *
4 * \brief PSA cryptography module: Backward compatibility aliases
5 *
Gilles Peskine0168f2f2019-11-29 12:22:32 +01006 * This header declares alternative names for macro and functions.
7 * New application code should not use these names.
8 * These names may be removed in a future version of Mbed Crypto.
9 *
Gilles Peskine7a894f22019-11-26 16:06:46 +010010 * \note This file may not be included directly. Applications must
11 * include psa/crypto.h.
12 */
13/*
14 * Copyright (C) 2019, ARM Limited, All Rights Reserved
15 * SPDX-License-Identifier: Apache-2.0
16 *
17 * Licensed under the Apache License, Version 2.0 (the "License"); you may
18 * not use this file except in compliance with the License.
19 * You may obtain a copy of the License at
20 *
21 * http://www.apache.org/licenses/LICENSE-2.0
22 *
23 * Unless required by applicable law or agreed to in writing, software
24 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
25 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
26 * See the License for the specific language governing permissions and
27 * limitations under the License.
28 *
29 * This file is part of mbed TLS (https://tls.mbed.org)
30 */
31
32#ifndef PSA_CRYPTO_COMPAT_H
33#define PSA_CRYPTO_COMPAT_H
34
Gilles Peskine7a894f22019-11-26 16:06:46 +010035#ifdef __cplusplus
36extern "C" {
37#endif
38
Gilles Peskine7b0ab6d2019-11-26 16:32:12 +010039#if !defined(MBEDTLS_DEPRECATED_REMOVED)
40
Gilles Peskine0168f2f2019-11-29 12:22:32 +010041/*
42 * Mechanism for declaring deprecated values
43 */
Gilles Peskine7b0ab6d2019-11-26 16:32:12 +010044#if defined(MBEDTLS_DEPRECATED_WARNING) && !defined(MBEDTLS_PSA_DEPRECATED)
45#define MBEDTLS_PSA_DEPRECATED __attribute__((deprecated))
46#else
47#define MBEDTLS_PSA_DEPRECATED
48#endif
49
Gilles Peskine41510942019-11-26 16:10:58 +010050typedef MBEDTLS_PSA_DEPRECATED size_t mbedtls_deprecated_size_t;
Gilles Peskine7b0ab6d2019-11-26 16:32:12 +010051typedef MBEDTLS_PSA_DEPRECATED psa_status_t mbedtls_deprecated_psa_status_t;
Gilles Peskine41510942019-11-26 16:10:58 +010052typedef MBEDTLS_PSA_DEPRECATED psa_key_usage_t mbedtls_deprecated_psa_key_usage_t;
Paul Elliott8ff510a2020-06-02 17:19:28 +010053typedef MBEDTLS_PSA_DEPRECATED psa_ecc_family_t mbedtls_deprecated_psa_ecc_family_t;
Paul Elliott75e27032020-06-03 15:17:39 +010054typedef MBEDTLS_PSA_DEPRECATED psa_dh_family_t mbedtls_deprecated_psa_dh_family_t;
Paul Elliott8ff510a2020-06-02 17:19:28 +010055typedef MBEDTLS_PSA_DEPRECATED psa_ecc_family_t psa_ecc_curve_t;
Paul Elliott75e27032020-06-03 15:17:39 +010056typedef MBEDTLS_PSA_DEPRECATED psa_dh_family_t psa_dh_group_t;
Paul Elliott8ff510a2020-06-02 17:19:28 +010057
58#define PSA_KEY_TYPE_GET_CURVE PSA_KEY_TYPE_ECC_GET_FAMILY
Paul Elliott75e27032020-06-03 15:17:39 +010059#define PSA_KEY_TYPE_GET_GROUP PSA_KEY_TYPE_DH_GET_FAMILY
Gilles Peskine7b0ab6d2019-11-26 16:32:12 +010060
61#define MBEDTLS_DEPRECATED_CONSTANT( type, value ) \
62 ( (mbedtls_deprecated_##type) ( value ) )
63
Gilles Peskine7a894f22019-11-26 16:06:46 +010064/*
Gilles Peskine0168f2f2019-11-29 12:22:32 +010065 * Deprecated PSA Crypto error code definitions (PSA Crypto API <= 1.0 beta2)
Gilles Peskine7a894f22019-11-26 16:06:46 +010066 */
Gilles Peskine7a894f22019-11-26 16:06:46 +010067#define PSA_ERROR_UNKNOWN_ERROR \
Gilles Peskine7b0ab6d2019-11-26 16:32:12 +010068 MBEDTLS_DEPRECATED_CONSTANT( psa_status_t, PSA_ERROR_GENERIC_ERROR )
Gilles Peskine7a894f22019-11-26 16:06:46 +010069#define PSA_ERROR_OCCUPIED_SLOT \
Gilles Peskine7b0ab6d2019-11-26 16:32:12 +010070 MBEDTLS_DEPRECATED_CONSTANT( psa_status_t, PSA_ERROR_ALREADY_EXISTS )
Gilles Peskine7a894f22019-11-26 16:06:46 +010071#define PSA_ERROR_EMPTY_SLOT \
Gilles Peskine7b0ab6d2019-11-26 16:32:12 +010072 MBEDTLS_DEPRECATED_CONSTANT( psa_status_t, PSA_ERROR_DOES_NOT_EXIST )
Gilles Peskine7a894f22019-11-26 16:06:46 +010073#define PSA_ERROR_INSUFFICIENT_CAPACITY \
Gilles Peskine7b0ab6d2019-11-26 16:32:12 +010074 MBEDTLS_DEPRECATED_CONSTANT( psa_status_t, PSA_ERROR_INSUFFICIENT_DATA )
Gilles Peskine7a894f22019-11-26 16:06:46 +010075#define PSA_ERROR_TAMPERING_DETECTED \
Gilles Peskine7b0ab6d2019-11-26 16:32:12 +010076 MBEDTLS_DEPRECATED_CONSTANT( psa_status_t, PSA_ERROR_CORRUPTION_DETECTED )
77
Gilles Peskine41510942019-11-26 16:10:58 +010078/*
Gilles Peskine0168f2f2019-11-29 12:22:32 +010079 * Deprecated PSA Crypto numerical encodings (PSA Crypto API <= 1.0 beta3)
Gilles Peskine41510942019-11-26 16:10:58 +010080 */
81#define PSA_KEY_USAGE_SIGN \
82 MBEDTLS_DEPRECATED_CONSTANT( psa_key_usage_t, PSA_KEY_USAGE_SIGN_HASH )
83#define PSA_KEY_USAGE_VERIFY \
84 MBEDTLS_DEPRECATED_CONSTANT( psa_key_usage_t, PSA_KEY_USAGE_VERIFY_HASH )
85
86/*
Gilles Peskine0168f2f2019-11-29 12:22:32 +010087 * Deprecated PSA Crypto size calculation macros (PSA Crypto API <= 1.0 beta3)
Gilles Peskine41510942019-11-26 16:10:58 +010088 */
89#define PSA_ASYMMETRIC_SIGNATURE_MAX_SIZE \
90 MBEDTLS_DEPRECATED_CONSTANT( size_t, PSA_SIGNATURE_MAX_SIZE )
91#define PSA_ASYMMETRIC_SIGN_OUTPUT_SIZE( key_type, key_bits, alg ) \
92 MBEDTLS_DEPRECATED_CONSTANT( size_t, PSA_SIGN_OUTPUT_SIZE( key_type, key_bits, alg ) )
93
94/*
Gilles Peskine0168f2f2019-11-29 12:22:32 +010095 * Deprecated PSA Crypto function names (PSA Crypto API <= 1.0 beta3)
Gilles Peskine41510942019-11-26 16:10:58 +010096 */
Soby Mathew0a4270d2020-02-10 15:20:39 +000097MBEDTLS_PSA_DEPRECATED static inline psa_status_t psa_asymmetric_sign( psa_key_handle_t key,
98 psa_algorithm_t alg,
99 const uint8_t *hash,
100 size_t hash_length,
101 uint8_t *signature,
102 size_t signature_size,
103 size_t *signature_length )
104{
105 return psa_sign_hash( key, alg, hash, hash_length, signature, signature_size, signature_length );
106}
107
108MBEDTLS_PSA_DEPRECATED static inline psa_status_t psa_asymmetric_verify( psa_key_handle_t key,
109 psa_algorithm_t alg,
110 const uint8_t *hash,
111 size_t hash_length,
112 const uint8_t *signature,
113 size_t signature_length )
114{
115 return psa_verify_hash( key, alg, hash, hash_length, signature, signature_length );
116}
117
118
Gilles Peskine41510942019-11-26 16:10:58 +0100119
Gilles Peskine7b0ab6d2019-11-26 16:32:12 +0100120#endif /* MBEDTLS_DEPRECATED_REMOVED */
Gilles Peskine7a894f22019-11-26 16:06:46 +0100121
Gilles Peskine45c29ce2019-12-03 17:56:11 +0100122/*
Paul Elliott75e27032020-06-03 15:17:39 +0100123 * Size-specific elliptic curve families.
Gilles Peskine45c29ce2019-12-03 17:56:11 +0100124 */
Gilles Peskineb87b7192019-12-04 16:24:10 +0100125#define PSA_ECC_CURVE_SECP160K1 \
Paul Elliott8ff510a2020-06-02 17:19:28 +0100126 MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECP_K1 )
Gilles Peskineb87b7192019-12-04 16:24:10 +0100127#define PSA_ECC_CURVE_SECP192K1 \
Paul Elliott8ff510a2020-06-02 17:19:28 +0100128 MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECP_K1 )
Gilles Peskineb87b7192019-12-04 16:24:10 +0100129#define PSA_ECC_CURVE_SECP224K1 \
Paul Elliott8ff510a2020-06-02 17:19:28 +0100130 MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECP_K1 )
Gilles Peskineb87b7192019-12-04 16:24:10 +0100131#define PSA_ECC_CURVE_SECP256K1 \
Paul Elliott8ff510a2020-06-02 17:19:28 +0100132 MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECP_K1 )
Gilles Peskineb87b7192019-12-04 16:24:10 +0100133#define PSA_ECC_CURVE_SECP160R1 \
Paul Elliott8ff510a2020-06-02 17:19:28 +0100134 MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECP_R1 )
Gilles Peskineb87b7192019-12-04 16:24:10 +0100135#define PSA_ECC_CURVE_SECP192R1 \
Paul Elliott8ff510a2020-06-02 17:19:28 +0100136 MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECP_R1 )
Gilles Peskineb87b7192019-12-04 16:24:10 +0100137#define PSA_ECC_CURVE_SECP224R1 \
Paul Elliott8ff510a2020-06-02 17:19:28 +0100138 MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECP_R1 )
Gilles Peskineb87b7192019-12-04 16:24:10 +0100139#define PSA_ECC_CURVE_SECP256R1 \
Paul Elliott8ff510a2020-06-02 17:19:28 +0100140 MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECP_R1 )
Gilles Peskineb87b7192019-12-04 16:24:10 +0100141#define PSA_ECC_CURVE_SECP384R1 \
Paul Elliott8ff510a2020-06-02 17:19:28 +0100142 MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECP_R1 )
Gilles Peskineb87b7192019-12-04 16:24:10 +0100143#define PSA_ECC_CURVE_SECP521R1 \
Paul Elliott8ff510a2020-06-02 17:19:28 +0100144 MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECP_R1 )
Gilles Peskineb87b7192019-12-04 16:24:10 +0100145#define PSA_ECC_CURVE_SECP160R2 \
Paul Elliott8ff510a2020-06-02 17:19:28 +0100146 MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECP_R2 )
Gilles Peskineb87b7192019-12-04 16:24:10 +0100147#define PSA_ECC_CURVE_SECT163K1 \
Paul Elliott8ff510a2020-06-02 17:19:28 +0100148 MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECT_K1 )
Gilles Peskineb87b7192019-12-04 16:24:10 +0100149#define PSA_ECC_CURVE_SECT233K1 \
Paul Elliott8ff510a2020-06-02 17:19:28 +0100150 MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECT_K1 )
Gilles Peskineb87b7192019-12-04 16:24:10 +0100151#define PSA_ECC_CURVE_SECT239K1 \
Paul Elliott8ff510a2020-06-02 17:19:28 +0100152 MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECT_K1 )
Gilles Peskineb87b7192019-12-04 16:24:10 +0100153#define PSA_ECC_CURVE_SECT283K1 \
Paul Elliott8ff510a2020-06-02 17:19:28 +0100154 MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECT_K1 )
Gilles Peskineb87b7192019-12-04 16:24:10 +0100155#define PSA_ECC_CURVE_SECT409K1 \
Paul Elliott8ff510a2020-06-02 17:19:28 +0100156 MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECT_K1 )
Gilles Peskineb87b7192019-12-04 16:24:10 +0100157#define PSA_ECC_CURVE_SECT571K1 \
Paul Elliott8ff510a2020-06-02 17:19:28 +0100158 MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECT_K1 )
Gilles Peskineb87b7192019-12-04 16:24:10 +0100159#define PSA_ECC_CURVE_SECT163R1 \
Paul Elliott8ff510a2020-06-02 17:19:28 +0100160 MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECT_R1 )
Gilles Peskineb87b7192019-12-04 16:24:10 +0100161#define PSA_ECC_CURVE_SECT193R1 \
Paul Elliott8ff510a2020-06-02 17:19:28 +0100162 MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECT_R1 )
Gilles Peskineb87b7192019-12-04 16:24:10 +0100163#define PSA_ECC_CURVE_SECT233R1 \
Paul Elliott8ff510a2020-06-02 17:19:28 +0100164 MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECT_R1 )
Gilles Peskineb87b7192019-12-04 16:24:10 +0100165#define PSA_ECC_CURVE_SECT283R1 \
Paul Elliott8ff510a2020-06-02 17:19:28 +0100166 MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECT_R1 )
Gilles Peskineb87b7192019-12-04 16:24:10 +0100167#define PSA_ECC_CURVE_SECT409R1 \
Paul Elliott8ff510a2020-06-02 17:19:28 +0100168 MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECT_R1 )
Gilles Peskineb87b7192019-12-04 16:24:10 +0100169#define PSA_ECC_CURVE_SECT571R1 \
Paul Elliott8ff510a2020-06-02 17:19:28 +0100170 MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECT_R1 )
Gilles Peskineb87b7192019-12-04 16:24:10 +0100171#define PSA_ECC_CURVE_SECT163R2 \
Paul Elliott8ff510a2020-06-02 17:19:28 +0100172 MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECT_R2 )
Gilles Peskineb87b7192019-12-04 16:24:10 +0100173#define PSA_ECC_CURVE_SECT193R2 \
Paul Elliott8ff510a2020-06-02 17:19:28 +0100174 MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECT_R2 )
Gilles Peskineb87b7192019-12-04 16:24:10 +0100175#define PSA_ECC_CURVE_BRAINPOOL_P256R1 \
Paul Elliott8ff510a2020-06-02 17:19:28 +0100176 MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_BRAINPOOL_P_R1 )
Gilles Peskineb87b7192019-12-04 16:24:10 +0100177#define PSA_ECC_CURVE_BRAINPOOL_P384R1 \
Paul Elliott8ff510a2020-06-02 17:19:28 +0100178 MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_BRAINPOOL_P_R1 )
Gilles Peskineb87b7192019-12-04 16:24:10 +0100179#define PSA_ECC_CURVE_BRAINPOOL_P512R1 \
Paul Elliott8ff510a2020-06-02 17:19:28 +0100180 MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_BRAINPOOL_P_R1 )
Gilles Peskineb87b7192019-12-04 16:24:10 +0100181#define PSA_ECC_CURVE_CURVE25519 \
Paul Elliott8ff510a2020-06-02 17:19:28 +0100182 MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_MONTGOMERY )
Gilles Peskineb87b7192019-12-04 16:24:10 +0100183#define PSA_ECC_CURVE_CURVE448 \
Paul Elliott8ff510a2020-06-02 17:19:28 +0100184 MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_MONTGOMERY )
185
186/*
187 * Curves that changed name due to PSA specification.
188 */
189#define PSA_ECC_CURVE_SECP_K1 \
190 MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECP_K1 )
191#define PSA_ECC_CURVE_SECP_R1 \
192 MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECP_R1 )
193#define PSA_ECC_CURVE_SECP_R2 \
194 MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECP_R2 )
195#define PSA_ECC_CURVE_SECT_K1 \
196 MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECT_K1 )
197#define PSA_ECC_CURVE_SECT_R1 \
198 MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECT_R1 )
199#define PSA_ECC_CURVE_SECT_R2 \
200 MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_SECT_R2 )
201#define PSA_ECC_CURVE_BRAINPOOL_P_R1 \
202 MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_BRAINPOOL_P_R1 )
203#define PSA_ECC_CURVE_MONTGOMERY \
204 MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_family_t, PSA_ECC_FAMILY_MONTGOMERY )
Gilles Peskine45c29ce2019-12-03 17:56:11 +0100205
Paul Elliott75e27032020-06-03 15:17:39 +0100206/*
207 * Finite-field Diffie-Hellman families.
208 */
Gilles Peskineb87b7192019-12-04 16:24:10 +0100209#define PSA_DH_GROUP_FFDHE2048 \
Paul Elliott75e27032020-06-03 15:17:39 +0100210 MBEDTLS_DEPRECATED_CONSTANT( psa_dh_family_t, PSA_DH_FAMILY_RFC7919 )
Gilles Peskineb87b7192019-12-04 16:24:10 +0100211#define PSA_DH_GROUP_FFDHE3072 \
Paul Elliott75e27032020-06-03 15:17:39 +0100212 MBEDTLS_DEPRECATED_CONSTANT( psa_dh_family_t, PSA_DH_FAMILY_RFC7919 )
Gilles Peskineb87b7192019-12-04 16:24:10 +0100213#define PSA_DH_GROUP_FFDHE4096 \
Paul Elliott75e27032020-06-03 15:17:39 +0100214 MBEDTLS_DEPRECATED_CONSTANT( psa_dh_family_t, PSA_DH_FAMILY_RFC7919 )
Gilles Peskineb87b7192019-12-04 16:24:10 +0100215#define PSA_DH_GROUP_FFDHE6144 \
Paul Elliott75e27032020-06-03 15:17:39 +0100216 MBEDTLS_DEPRECATED_CONSTANT( psa_dh_family_t, PSA_DH_FAMILY_RFC7919 )
Gilles Peskineb87b7192019-12-04 16:24:10 +0100217#define PSA_DH_GROUP_FFDHE8192 \
Paul Elliott75e27032020-06-03 15:17:39 +0100218 MBEDTLS_DEPRECATED_CONSTANT( psa_dh_family_t, PSA_DH_FAMILY_RFC7919 )
219
220/*
221 * Diffie-Hellman families that changed name due to PSA specification.
222 */
223#define PSA_DH_GROUP_RFC7919 \
224 MBEDTLS_DEPRECATED_CONSTANT( psa_dh_family_t, PSA_DH_FAMILY_RFC7919 )
225#define PSA_DH_GROUP_CUSTOM \
226 MBEDTLS_DEPRECATED_CONSTANT( psa_dh_family_t, PSA_DH_FAMILY_CUSTOM )
Gilles Peskine45c29ce2019-12-03 17:56:11 +0100227
Gilles Peskine7a894f22019-11-26 16:06:46 +0100228#ifdef __cplusplus
229}
230#endif
231
232#endif /* PSA_CRYPTO_COMPAT_H */