build: W600-SDK importiert, Firmware-Build und Hello am EVK
Docker-Build mit gcc-arm-none-eabi 4.9-2014q4 (statt Homebrew-Cask) verwendet, Dockerfile/tools/docker.sh dafür aus Task 13 vorgezogen. cmake/sdk.cmake schont gcc 4.9 (kennt -fcommon/-Wno-error=... nicht). Zwei zusätzliche SDK-Stubs (EarlyInit, pre_gpio_config) in src/sys/sdk_stubs.c ergänzt, siehe sdk/PATCHES.md.
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
/**
|
||||
* @file wm_crypto.h
|
||||
*
|
||||
* @brief crypto driver module
|
||||
*
|
||||
* @author dave
|
||||
*
|
||||
* Copyright (c) 2014 Winner Microelectronics Co., Ltd.
|
||||
*/
|
||||
#ifndef WM_CRYPTO_H
|
||||
#define WM_CRYPTO_H
|
||||
|
||||
/**
|
||||
* @brief Encrypt plain data by 128 AES crypto
|
||||
* @param[in] key the key for encryption
|
||||
* @param[in] iv the IV value for encryption
|
||||
* @param[in] data where the plain data stored
|
||||
* @param[in] data_len length of the plain data to be encrypted
|
||||
* @retval 0 finish Encryption successfully
|
||||
* @retval -1 Error
|
||||
* @note Encrypted data will be placed into the plain @data area
|
||||
*
|
||||
*/
|
||||
int aes_128_cbc_encrypt (const u8 *key, const u8 *iv, u8 *data, size_t data_len) ;
|
||||
|
||||
/**
|
||||
* @brief Decrypt data by 128 AES crypto
|
||||
* @param[in] key the key for encryption
|
||||
* @param[in] iv the IV value for encryption
|
||||
* @param[in] data where the plain data stored
|
||||
* @param[in] data_len length of the plain data to be decrypted
|
||||
* @retval 0 finish Decryption successfully
|
||||
* @retval -1 Error
|
||||
* @note plain data will be placed into the encrypted @data area
|
||||
*
|
||||
*/
|
||||
int aes_128_cbc_decrypt(const u8 *key, const u8 *iv, u8 *data,
|
||||
size_t data_len);
|
||||
|
||||
/**
|
||||
* @brief XOR RC4 stream to given data with skip-stream-start
|
||||
* @param[in] key RC4 key
|
||||
* @param[in] keylen RC4 key length
|
||||
* @param[in] data data to be XOR'ed with RC4 stream
|
||||
* @param[in] data_len length of the plain data to be encrypted
|
||||
* @retval 0 finish Encryption/Decryption successfully
|
||||
* @retval -1 Error
|
||||
* @note this function should be used for Encryption & Decryption both For the Encryption, the plain @data
|
||||
* will be replaced by the encrypted output, and vice versa;
|
||||
*/
|
||||
int rc4(const u8 *key, size_t keylen, u8 *data, size_t data_len);
|
||||
|
||||
|
||||
/**
|
||||
* @brief MD5 hash for data vector
|
||||
* @param[in] addr Pointers to the data area
|
||||
* @param[in] len Lengths of the data block
|
||||
* @param[in] mac Buffer for the hash (16 bytes)
|
||||
* @retval 0 finish caculation successfully
|
||||
* @retval -1 Error
|
||||
* @note
|
||||
*/
|
||||
int md5(const u8 *addr, int len, u8 *mac);
|
||||
|
||||
/**
|
||||
* @brief HMAC-MD5 over data buffer (RFC 2104)
|
||||
* @param[in] key Key for HMAC operations
|
||||
* @param[in] keylen Length of the key in bytes
|
||||
* @param[in] data data to be caculated
|
||||
* @param[in] data_len Lengths of the data block
|
||||
* @param[in] mac Buffer for the hash (16 bytes)
|
||||
* @retval 0 finish caculation successfully
|
||||
* @retval -1 Error
|
||||
* @note
|
||||
*/
|
||||
int hmac_md5(const u8 *key, size_t key_len, const u8 *data, size_t data_len, u8 *mac);
|
||||
|
||||
/**
|
||||
* @brief SHA1 hash for data vector
|
||||
* @param[in] addr Pointers to the data area
|
||||
* @param[in] len Lengths of the data block
|
||||
* @param[in] mac Buffer for the hash (16 bytes)
|
||||
* @retval 0 finish caculation successfully
|
||||
* @retval -1 Error
|
||||
* @note
|
||||
*/
|
||||
|
||||
int sha1(const u8 *addr, int len, u8 *mac);
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user