aboutsummaryrefslogtreecommitdiff
path: root/lib/sec_library/include/sec_crypto_des.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sec_library/include/sec_crypto_des.h')
-rwxr-xr-xlib/sec_library/include/sec_crypto_des.h205
1 files changed, 205 insertions, 0 deletions
diff --git a/lib/sec_library/include/sec_crypto_des.h b/lib/sec_library/include/sec_crypto_des.h
new file mode 100755
index 00000000..0b077412
--- /dev/null
+++ b/lib/sec_library/include/sec_crypto_des.h
@@ -0,0 +1,205 @@
+/*
+ * Copyright (C) 2017-2022 Alibaba Group Holding Limited
+ */
+/******************************************************************************
+ * @file sec_crypt0_des.h
+ * @brief Header File for DES
+ * @version V1.0
+ * @date 24. Oct 2022
+ * @model des
+ ******************************************************************************/
+#ifndef _SC_DES_H_
+#define _SC_DES_H_
+
+#include "sec_include_config.h"
+#include <stdint.h>
+#include "sec_crypto_errcode.h"
+
+#ifdef CONFIG_SYSTEM_SECURE
+#ifdef SEC_LIB_VERSION
+#include <drv/des.h>
+#else
+#include "des.h"
+#endif
+#endif
+
+#ifdef CONFIG_SEC_CRYPTO_DES_SW
+#include "crypto_des.h"
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+\brief DES data transfer mode config
+*/
+typedef enum {
+ SC_DES_SLAVE_MODE = 0U, ///< slave mode
+ SC_DES_DMA_MODE, ///< dma mode
+} sc_des_trans_mode_t;
+
+/**
+\brief DES key-len-bits type
+*/
+typedef enum {
+ SC_DES_KEY_LEN_BITS_64 = 0U, ///< 64 Data bits
+ SC_DES_KEY_LEN_BITS_128, ///< 128 Data bits
+ SC_TDES_KEY_LEN_BITS_192, ///< 192 Data bits
+} sc_des_key_bits_t;
+
+/**
+\brief DES Ctrl Block
+*/
+typedef struct {
+#ifdef CONFIG_SYSTEM_SECURE
+#ifdef CONFIG_CSI_V1
+ des_handle_t handle;
+ unsigned char key[32];
+ unsigned int key_len;
+#endif
+#ifdef CONFIG_CSI_V2
+ csi_des_t csi_des;
+ //unsigned char sc_ctx[SC_DES_CTX_SIZE];
+#endif
+#endif
+#if defined(CONFIG_TEE_CA)
+ unsigned char key[32];
+ unsigned int key_len;
+#endif
+#if defined(CONFIG_SEC_CRYPTO_DES_SW)
+ sc_mbedtls_des_context des_ctx;
+#endif
+ //void *ctx;
+} sc_des_t;
+
+// Function documentation
+/**
+ \brief Initialize DES Interface. Initializes the resources needed for the DES interface
+ \param[in] des operate handle
+ \param[in] idx device id
+ \return error code \ref uint32_t
+*/
+uint32_t sc_des_init(sc_des_t *des, uint32_t idx);
+
+/**
+ \brief De-initialize DES Interface. stops operation and releases the software resources used by the interface
+ \param[in] des handle to operate
+ \return None
+*/
+void sc_des_uninit(sc_des_t *des);
+
+/**
+ \brief Set encrypt key
+ \param[in] des handle to operate
+ \param[in] key Pointer to the key buf
+ \param[in] key_len Pointer to \ref sc_des_key_bits_t
+ \return error code \ref uint32_t
+*/
+uint32_t sc_des_set_encrypt_key(sc_des_t *des, void *key, sc_des_key_bits_t key_len);
+
+/**
+ \brief Set decrypt key
+ \param[in] des handle to operate
+ \param[in] key Pointer to the key buf
+ \param[in] key_len Pointer to \ref sc_des_key_bits_t
+ \return error code \ref uint32_t
+*/
+uint32_t sc_des_set_decrypt_key(sc_des_t *des, void *key, sc_des_key_bits_t key_len);
+
+/**
+ \brief Des ecb encrypt
+ \param[in] des handle to operate
+ \param[in] in Pointer to the Source data
+ \param[out] out Pointer to the Result data
+ \param[in] size the Source data size
+ \return error code \ref uint32_t
+*/
+uint32_t sc_des_ecb_encrypt(sc_des_t *des, void *in, void *out, uint32_t size);
+
+/**
+ \brief Des ecb decrypt
+ \param[in] des handle to operate
+ \param[in] in Pointer to the Source data
+ \param[out] out Pointer to the Result data
+ \param[in] size the Source data size
+ \return error code \ref uint32_t
+*/
+uint32_t sc_des_ecb_decrypt(sc_des_t *des, void *in, void *out, uint32_t size);
+
+/**
+ \brief Des cbc encrypt
+ \param[in] des handle to operate
+ \param[in] in Pointer to the Source data
+ \param[out] out Pointer to the Result data
+ \param[in] size the Source data size
+ \param[in] iv init vector
+ \return error code \ref uint32_t
+*/
+uint32_t sc_des_cbc_encrypt(sc_des_t *des, void *in, void *out, uint32_t size, void *iv);
+
+/**
+ \brief Des cbc decrypt
+ \param[in] des handle to operate
+ \param[in] in Pointer to the Source data
+ \param[out] out Pointer to the Result data
+ \param[in] size the Source data size
+ \param[in] iv init vector
+ \return error code \ref uint32_t
+*/
+uint32_t sc_des_cbc_decrypt(sc_des_t *des, void *in, void *out, uint32_t size, void *iv);
+
+/**
+ \brief TDes ecb encrypt
+ \param[in] des handle to operate
+ \param[in] in Pointer to the Source data
+ \param[out] out Pointer to the Result data
+ \param[in] size the Source data size
+ \return error code \ref uint32_t
+*/
+uint32_t sc_tdes_ecb_encrypt(sc_des_t *des, void *in, void *out, uint32_t size);
+
+/**
+ \brief TDes ecb decrypt
+ \param[in] des handle to operate
+ \param[in] in Pointer to the Source data
+ \param[out] out Pointer to the Result data
+ \param[in] size the Source data size
+ \return error code \ref uint32_t
+*/
+uint32_t sc_tdes_ecb_decrypt(sc_des_t *des, void *in, void *out, uint32_t size);
+
+/**
+ \brief TDes cbc encrypt
+ \param[in] des handle to operate
+ \param[in] in Pointer to the Source data
+ \param[out] out Pointer to the Result data
+ \param[in] size the Source data size
+ \param[in] iv init vector
+ \return error code \ref uint32_t
+*/
+uint32_t sc_tdes_cbc_encrypt(sc_des_t *des, void *in, void *out, uint32_t size, void *iv);
+
+/**
+ \brief TDes cbc decrypt
+ \param[in] des handle to operate
+ \param[in] in Pointer to the Source data
+ \param[out] out Pointer to the Result data
+ \param[in] size the Source data size
+ \param[in] iv init vector
+ \return error code \ref uint32_t
+*/
+uint32_t sc_tdes_cbc_decrypt(sc_des_t *des, void *in, void *out, uint32_t size, void *iv);
+
+/**
+ \brief Config DES mode dma or slave
+ \param[in] mode \ref sc_des_trans_mode_t
+ \return None
+*/
+void sc_des_trans_config(sc_des_t *des, sc_des_trans_mode_t mode) ;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SC_DES_H_ */