${my_src_crypto_dbg}
)
set(src_list_decrypt_lib
oem_porting.c
sdk_porting.c
authref.c
auth.c
${my_src_crypto}
#set(src_list_auth_dev
g.c
#)
add_definitions(-fpic)
#add_library(authd static ${src_list_auth_dev})
add_library(authoal static ${src_list_decrypt_lib})
add_executable(eaidkauth ${src_list_encrypt_bin})
工程結構如下:

引入完成之後我們就可以開始aes代碼編寫。
3、aes代碼編寫
authref.h 頭檔案代碼如下:
#ifndef __authref_h__
#define __authref_h__
#include <assert.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#undef debug
#define aes_key_size 48
#define aes_iv_len 16
#ifdef __cplusplus
extern "c" {
#endif
// aes加密
// aes_key -- 最長48位元組
// iv -- 最長16位元組
// plaintext -- 待加密文本
// ciphertext -- 加密得到的文本
// len -- len should be 16*n bytes
// return – 0 for ok, else for error
int aes_cbc_encryp(uint8_t aes_key, uint8_t iv, uint8_t plaintext, uint8_t ciphertext, uint32_t len);
// aes解密
// ciphertext -- 待解密的文本
// plaintext -- 解密好的文本
int aes_cbc_decryp(uint8_t aes_key, uint8_t iv, uint8_t ciphertext, uint8_t plaintext, uint32_t len);
}
#endif //__authref_h__
authref.c 代碼如下:?
#include "authref.h"
#include "mbedtls/entropy.h"
#include "mbedtls/ctr_drbg.h"
#include "mbedtls/aes.h"
//len should be 16*n bytes
int aes_cbc_encryp(uint8_t aes_key, uint8_t iv, uint8_t plaintext, uint8_t ciphertext, uint32_t len) {
int i;
int blk = (len + 15) >> 4;
mbedtls_aes_context aes_ctx;
mbedtls_aes_init(&aes_ctx);
//setkey_dec
mbedtls_aes_setkey_enc(&aes_ctx, aes_key, 256);
for (i = 0; i < blk; ++i) {
mbedtls_aes_crypt_cbc(&aes_ctx, mbedtls_aes_encrypt, 16, iv, plaintext + (i 16), ciphertext + (i 16));
mbedtls_aes_free(&aes_ctx);
return 0; //ok
int aes_cbc_decryp(uint8_t aes_key, uint8_t iv, uint8_t ciphertext, uint8_t plaintext, uint32_t len) {
mbedtls_aes_setkey_dec(&aes_ctx, aes_key, 256);
mbedtls_aes_crypt_cbc(&aes_ctx, mbedtls_aes_decrypt, 16, iv, ciphertext + (i 16), plaintext + (i 16));