]> git.sur5r.net Git - freertos/blob - FreeRTOS-Labs/Source/mbedtls/include/mbedtls/pk_internal.h
Add the Labs projects provided in the V10.2.1_191129 zip file.
[freertos] / FreeRTOS-Labs / Source / mbedtls / include / mbedtls / pk_internal.h
1 /**\r
2  * \file pk_internal.h\r
3  *\r
4  * \brief Public Key abstraction layer: wrapper functions\r
5  */\r
6 /*\r
7  *  Copyright (C) 2006-2015, ARM Limited, All Rights Reserved\r
8  *  SPDX-License-Identifier: Apache-2.0\r
9  *\r
10  *  Licensed under the Apache License, Version 2.0 (the "License"); you may\r
11  *  not use this file except in compliance with the License.\r
12  *  You may obtain a copy of the License at\r
13  *\r
14  *  http://www.apache.org/licenses/LICENSE-2.0\r
15  *\r
16  *  Unless required by applicable law or agreed to in writing, software\r
17  *  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT\r
18  *  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
19  *  See the License for the specific language governing permissions and\r
20  *  limitations under the License.\r
21  *\r
22  *  This file is part of mbed TLS (https://tls.mbed.org)\r
23  */\r
24 \r
25 #ifndef MBEDTLS_PK_WRAP_H\r
26 #define MBEDTLS_PK_WRAP_H\r
27 \r
28 #if !defined(MBEDTLS_CONFIG_FILE)\r
29 #include "config.h"\r
30 #else\r
31 #include MBEDTLS_CONFIG_FILE\r
32 #endif\r
33 \r
34 #include "pk.h"\r
35 \r
36 struct mbedtls_pk_info_t\r
37 {\r
38     /** Public key type */\r
39     mbedtls_pk_type_t type;\r
40 \r
41     /** Type name */\r
42     const char *name;\r
43 \r
44     /** Get key size in bits */\r
45     size_t (*get_bitlen)( const void * );\r
46 \r
47     /** Tell if the context implements this type (e.g. ECKEY can do ECDSA) */\r
48     int (*can_do)( mbedtls_pk_type_t type );\r
49 \r
50     /** Verify signature */\r
51     int (*verify_func)( void *ctx, mbedtls_md_type_t md_alg,\r
52                         const unsigned char *hash, size_t hash_len,\r
53                         const unsigned char *sig, size_t sig_len );\r
54 \r
55     /** Make signature */\r
56     int (*sign_func)( void *ctx, mbedtls_md_type_t md_alg,\r
57                       const unsigned char *hash, size_t hash_len,\r
58                       unsigned char *sig, size_t *sig_len,\r
59                       int (*f_rng)(void *, unsigned char *, size_t),\r
60                       void *p_rng );\r
61 \r
62 #if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE)\r
63     /** Verify signature (restartable) */\r
64     int (*verify_rs_func)( void *ctx, mbedtls_md_type_t md_alg,\r
65                            const unsigned char *hash, size_t hash_len,\r
66                            const unsigned char *sig, size_t sig_len,\r
67                            void *rs_ctx );\r
68 \r
69     /** Make signature (restartable) */\r
70     int (*sign_rs_func)( void *ctx, mbedtls_md_type_t md_alg,\r
71                          const unsigned char *hash, size_t hash_len,\r
72                          unsigned char *sig, size_t *sig_len,\r
73                          int (*f_rng)(void *, unsigned char *, size_t),\r
74                          void *p_rng, void *rs_ctx );\r
75 #endif /* MBEDTLS_ECDSA_C && MBEDTLS_ECP_RESTARTABLE */\r
76 \r
77     /** Decrypt message */\r
78     int (*decrypt_func)( void *ctx, const unsigned char *input, size_t ilen,\r
79                          unsigned char *output, size_t *olen, size_t osize,\r
80                          int (*f_rng)(void *, unsigned char *, size_t),\r
81                          void *p_rng );\r
82 \r
83     /** Encrypt message */\r
84     int (*encrypt_func)( void *ctx, const unsigned char *input, size_t ilen,\r
85                          unsigned char *output, size_t *olen, size_t osize,\r
86                          int (*f_rng)(void *, unsigned char *, size_t),\r
87                          void *p_rng );\r
88 \r
89     /** Check public-private key pair */\r
90     int (*check_pair_func)( const void *pub, const void *prv );\r
91 \r
92     /** Allocate a new context */\r
93     void * (*ctx_alloc_func)( void );\r
94 \r
95     /** Free the given context */\r
96     void (*ctx_free_func)( void *ctx );\r
97 \r
98 #if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE)\r
99     /** Allocate the restart context */\r
100     void * (*rs_alloc_func)( void );\r
101 \r
102     /** Free the restart context */\r
103     void (*rs_free_func)( void *rs_ctx );\r
104 #endif /* MBEDTLS_ECDSA_C && MBEDTLS_ECP_RESTARTABLE */\r
105 \r
106     /** Interface with the debug module */\r
107     void (*debug_func)( const void *ctx, mbedtls_pk_debug_item *items );\r
108 \r
109 };\r
110 #if defined(MBEDTLS_PK_RSA_ALT_SUPPORT)\r
111 /* Container for RSA-alt */\r
112 typedef struct\r
113 {\r
114     void *key;\r
115     mbedtls_pk_rsa_alt_decrypt_func decrypt_func;\r
116     mbedtls_pk_rsa_alt_sign_func sign_func;\r
117     mbedtls_pk_rsa_alt_key_len_func key_len_func;\r
118 } mbedtls_rsa_alt_context;\r
119 #endif\r
120 \r
121 #if defined(MBEDTLS_RSA_C)\r
122 extern const mbedtls_pk_info_t mbedtls_rsa_info;\r
123 #endif\r
124 \r
125 #if defined(MBEDTLS_ECP_C)\r
126 extern const mbedtls_pk_info_t mbedtls_eckey_info;\r
127 extern const mbedtls_pk_info_t mbedtls_eckeydh_info;\r
128 #endif\r
129 \r
130 #if defined(MBEDTLS_ECDSA_C)\r
131 extern const mbedtls_pk_info_t mbedtls_ecdsa_info;\r
132 #endif\r
133 \r
134 #if defined(MBEDTLS_PK_RSA_ALT_SUPPORT)\r
135 extern const mbedtls_pk_info_t mbedtls_rsa_alt_info;\r
136 #endif\r
137 \r
138 #if defined(MBEDTLS_USE_PSA_CRYPTO)\r
139 extern const mbedtls_pk_info_t mbedtls_pk_opaque_info;\r
140 #endif\r
141 \r
142 #endif /* MBEDTLS_PK_WRAP_H */\r