]> git.sur5r.net Git - freertos/blob - FreeRTOS-Labs/Source/mbedtls/include/mbedtls/pkcs5.h
Add the Labs projects provided in the V10.2.1_191129 zip file.
[freertos] / FreeRTOS-Labs / Source / mbedtls / include / mbedtls / pkcs5.h
1 /**\r
2  * \file pkcs5.h\r
3  *\r
4  * \brief PKCS#5 functions\r
5  *\r
6  * \author Mathias Olsson <mathias@kompetensum.com>\r
7  */\r
8 /*\r
9  *  Copyright (C) 2006-2015, ARM Limited, All Rights Reserved\r
10  *  SPDX-License-Identifier: Apache-2.0\r
11  *\r
12  *  Licensed under the Apache License, Version 2.0 (the "License"); you may\r
13  *  not use this file except in compliance with the License.\r
14  *  You may obtain a copy of the License at\r
15  *\r
16  *  http://www.apache.org/licenses/LICENSE-2.0\r
17  *\r
18  *  Unless required by applicable law or agreed to in writing, software\r
19  *  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT\r
20  *  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
21  *  See the License for the specific language governing permissions and\r
22  *  limitations under the License.\r
23  *\r
24  *  This file is part of mbed TLS (https://tls.mbed.org)\r
25  */\r
26 #ifndef MBEDTLS_PKCS5_H\r
27 #define MBEDTLS_PKCS5_H\r
28 \r
29 #if !defined(MBEDTLS_CONFIG_FILE)\r
30 #include "config.h"\r
31 #else\r
32 #include MBEDTLS_CONFIG_FILE\r
33 #endif\r
34 \r
35 #include "asn1.h"\r
36 #include "md.h"\r
37 \r
38 #include <stddef.h>\r
39 #include <stdint.h>\r
40 \r
41 #define MBEDTLS_ERR_PKCS5_BAD_INPUT_DATA                  -0x2f80  /**< Bad input parameters to function. */\r
42 #define MBEDTLS_ERR_PKCS5_INVALID_FORMAT                  -0x2f00  /**< Unexpected ASN.1 data. */\r
43 #define MBEDTLS_ERR_PKCS5_FEATURE_UNAVAILABLE             -0x2e80  /**< Requested encryption or digest alg not available. */\r
44 #define MBEDTLS_ERR_PKCS5_PASSWORD_MISMATCH               -0x2e00  /**< Given private key password does not allow for correct decryption. */\r
45 \r
46 #define MBEDTLS_PKCS5_DECRYPT      0\r
47 #define MBEDTLS_PKCS5_ENCRYPT      1\r
48 \r
49 #ifdef __cplusplus\r
50 extern "C" {\r
51 #endif\r
52 \r
53 #if defined(MBEDTLS_ASN1_PARSE_C)\r
54 \r
55 /**\r
56  * \brief          PKCS#5 PBES2 function\r
57  *\r
58  * \param pbe_params the ASN.1 algorithm parameters\r
59  * \param mode       either MBEDTLS_PKCS5_DECRYPT or MBEDTLS_PKCS5_ENCRYPT\r
60  * \param pwd        password to use when generating key\r
61  * \param pwdlen     length of password\r
62  * \param data       data to process\r
63  * \param datalen    length of data\r
64  * \param output     output buffer\r
65  *\r
66  * \returns        0 on success, or a MBEDTLS_ERR_XXX code if verification fails.\r
67  */\r
68 int mbedtls_pkcs5_pbes2( const mbedtls_asn1_buf *pbe_params, int mode,\r
69                  const unsigned char *pwd,  size_t pwdlen,\r
70                  const unsigned char *data, size_t datalen,\r
71                  unsigned char *output );\r
72 \r
73 #endif /* MBEDTLS_ASN1_PARSE_C */\r
74 \r
75 /**\r
76  * \brief          PKCS#5 PBKDF2 using HMAC\r
77  *\r
78  * \param ctx      Generic HMAC context\r
79  * \param password Password to use when generating key\r
80  * \param plen     Length of password\r
81  * \param salt     Salt to use when generating key\r
82  * \param slen     Length of salt\r
83  * \param iteration_count       Iteration count\r
84  * \param key_length            Length of generated key in bytes\r
85  * \param output   Generated key. Must be at least as big as key_length\r
86  *\r
87  * \returns        0 on success, or a MBEDTLS_ERR_XXX code if verification fails.\r
88  */\r
89 int mbedtls_pkcs5_pbkdf2_hmac( mbedtls_md_context_t *ctx, const unsigned char *password,\r
90                        size_t plen, const unsigned char *salt, size_t slen,\r
91                        unsigned int iteration_count,\r
92                        uint32_t key_length, unsigned char *output );\r
93 \r
94 #if defined(MBEDTLS_SELF_TEST)\r
95 \r
96 /**\r
97  * \brief          Checkup routine\r
98  *\r
99  * \return         0 if successful, or 1 if the test failed\r
100  */\r
101 int mbedtls_pkcs5_self_test( int verbose );\r
102 \r
103 #endif /* MBEDTLS_SELF_TEST */\r
104 \r
105 #ifdef __cplusplus\r
106 }\r
107 #endif\r
108 \r
109 #endif /* pkcs5.h */\r