Пример #1
0
int8_t tls_ccm_data_encrypt(uint8_t *data_ptr, uint16_t data_length, const uint8_t *key_expansion, const uint8_t *nonce, uint8_t type, bool server)
{
    ccm_globals_t * ccm_ptr = tls_ccm_init(key_expansion, nonce, server, AES_CCM_ENCRYPT);
    if (!ccm_ptr) {
        return -1;
    }
    uint8_t adata[13];
    ccm_ptr->data_len = data_length;
    ccm_ptr->data_ptr  = data_ptr;
    ccm_ptr->mic = (ccm_ptr->data_ptr + ccm_ptr->data_len);
    tls_set_adata(ccm_ptr,adata, nonce, type);
    return ccm_process_run(ccm_ptr);
}
Пример #2
0
int8_t tls_ccm_data_decrypt(uint8_t *data_ptr, uint16_t data_length, const uint8_t *key_expansion, uint8_t type, bool server)
{

    if (data_length <= 16) {
        return -1;
    }
    ccm_globals_t *ccm_ptr = tls_ccm_init(key_expansion, data_ptr, server, AES_CCM_DECRYPT);
    if (!ccm_ptr) {
        return -1;
    }

    uint8_t adata[13];
    ccm_ptr->data_len = data_length - 16;

    tls_set_adata(ccm_ptr, adata, data_ptr, type);
    ccm_ptr->data_ptr  = data_ptr + 8;
    ccm_ptr->mic = (ccm_ptr->data_ptr + ccm_ptr->data_len);

    return ccm_process_run(ccm_ptr);
}
Пример #3
0
int8_t pana_ccm_data_crypt(uint8_t *ptr, uint16_t len, uint8_t operation_type, uint32_t message_seq, sec_suite_t *suite)
{
    uint8_t *explict_ptr;
    uint8_t *key_ptr = 0;
    ccm_globals_t ccm_ptr;
    key_ptr = suite->pana_session.pana_PAA_enc_key;

    //Here Comes AES Decrypt
    if (!ccm_sec_init(&ccm_ptr, AES_SECURITY_LEVEL_ENC, key_ptr, operation_type, 3)) {
        return -1;
    }

    explict_ptr = ccm_ptr.exp_nonce;
    //Set IV
    explict_ptr = common_write_32_bit(suite->pana_session.pana_key_id, explict_ptr);
    //SET EXP 4 octest Session ID, 4 Octet Pana SQN number
    explict_ptr = common_write_32_bit(suite->pana_session.session_id, explict_ptr);
    explict_ptr = common_write_32_bit(message_seq, explict_ptr);
    ccm_ptr.data_len = len;
    ccm_ptr.data_ptr  = ptr;
    return ccm_process_run(&ccm_ptr);
}