1 
2 /*
3  * Copyright (c) 2022, Texas Instruments Incorporated
4  * All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  *
10  * *  Redistributions of source code must retain the above copyright
11  *    notice, this list of conditions and the following disclaimer.
12  *
13  * *  Redistributions in binary form must reproduce the above copyright
14  *    notice, this list of conditions and the following disclaimer in the
15  *    documentation and/or other materials provided with the distribution.
16  *
17  * *  Neither the name of Texas Instruments Incorporated nor the names of
18  *    its contributors may be used to endorse or promote products derived
19  *    from this software without specific prior written permission.
20  *
21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
23  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
24  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
25  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
26  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
27  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
28  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
29  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
30  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
31  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32  */
33 
34 #ifndef ti_drivers_CryptoKeyKeyStore_PSA_init__include
35 #define ti_drivers_CryptoKeyKeyStore_PSA_init__include
36 
37 #include <ti/drivers/cryptoutils/cryptokey/CryptoKey.h>
38 #include <ti/drivers/cryptoutils/cryptokey/CryptoKeyKeyStore_PSA.h>
39 
40 #ifdef __cplusplus
41 extern "C" {
42 #endif
43 
44 /*!
45  *  @brief Initializes a CryptoKey type
46  *
47  *  @param [in]     keyHandle       Pointer to a CryptoKey which will be initialized
48  *                                  to type CryptoKey_KEYSTORE
49  *                                  and ready for use
50  *  @param [in]     keyID           Key ID of the key in Key Store
51  *
52  *  @param [in]     keyLength       Length of keying material in bytes
53  *  @param [in]     keyAttributes   Pointer to the attributes for KeyStore key,
54  *                                  use NULL if CryptoKey structure will not
55  *                                  be used to generate keys
56  *
57  *  @return Returns a status code from CryptoKey.h
58  */
59 int_fast16_t KeyStore_PSA_initKey(CryptoKey *keyHandle,
60                                   KeyStore_PSA_KeyFileId keyID,
61                                   size_t keyLength,
62                                   void *keyAttributes);
63 
64 /*!
65  *  @brief Initializes a Blank CryptoKey type
66  *
67  *  @param [in]     keyHandle       Pointer to a CryptoKey which will be initialized
68  *                                  to type CryptoKey_BLANK_KEYSTORE
69  *                                  and ready for use
70  *  @param [in]     keyID           Key ID of the key in Key Store
71  *
72  *  @param [in]     keyLength       Length of keying material in bytes
73  *  @param [in]     keyAttributes   Pointer to the attributes for KeyStore key,
74  *                                  use NULL if CryptoKey structure will not
75  *                                  be used to generate keys
76  *
77  *  @return Returns a status code from CryptoKey.h
78  */
79 int_fast16_t KeyStore_PSA_initBlankKey(CryptoKey *keyHandle,
80                                        KeyStore_PSA_KeyFileId keyID,
81                                        size_t keyLength,
82                                        void *keyAttributes);
83 
84 #ifdef __cplusplus
85 }
86 #endif
87 
88 #endif /* ti_drivers_KeyStore_PSA_init__include */