use an authenticated-encryption mode, like GCM, which effectively combines encryption and (some type of) MAC internally. Most authenticated modes today, including GCM, also support 'additional' or 'associated' data that is authenticated but not encrypted, and as a result are calledAEAD, but yo...
}// Get tag (MAC)//if(!EVP_CIPHER_CTX_ctrl(pState, EVP_CTRL_AEAD_GET_TAG, SGX_AESGCM_MAC_SIZE, mac)) {break; } ret = SGX_SUCCESS; }while(1);//In case of error, clear output MAC buffer.//if(ret != SGX_SUCCESS) { memset_s(mac, SGX_AESGCM_MAC_SIZE,0, SGX_AESGCM_MAC...
EVP_CIPHER_CTX_ctrl(pState, EVP_CTRL_AEAD_GET_TAG, SGX_AESGCM_MAC_SIZE, mac)) { break; } ret = SGX_SUCCESS; } while (1); //In case of error, clear output MAC buffer. // if (ret != SGX_SUCCESS) { memset_s(mac, SGX_AESGCM_MAC_SIZE, 0, SGX_AESGCM_MAC_SIZE); } ...
}// Get tag (MAC)//if(!EVP_CIPHER_CTX_ctrl(pState, EVP_CTRL_AEAD_GET_TAG, SGX_AESGCM_MAC_SIZE, mac)) {break; } ret = SGX_SUCCESS; }while(1);//In case of error, clear output MAC buffer.//if(ret != SGX_SUCCESS) { memset_s(mac, SGX_AESGCM_MAC_SIZE,0, SGX_AESGCM_MAC...
static bool aes_decrypt(void *dst, const void *src, size_t len, const struct enckey *enckey, const struct iv *iv) { EVP_CIPHER_CTX evpctx; int outlen; /* Counter mode allows parallelism in future. */ if (EVP_DecryptInit(&evpctx, EVP_aes_128_ctr(), memche...
*/ { const EVP_CIPHER *cipher = EVP_get_cipherbynid (nid); if (cipher) { if (cipher_kt_mode_cbc(cipher) #ifdef ENABLE_OFB_CFB_MODE || cipher_kt_mode_ofb_cfb(cipher) #endif #ifdef HAVE_AEAD_CIPHER_MODES || cipher_kt_mode_aead(cipher) #endif ) { const char *var_key_size =...
示例11: cipher_kt_mode_aead ▲点赞 1▼ boolcipher_kt_mode_aead(constcipher_kt_t*cipher){#ifdefHAVE_AEAD_CIPHER_MODESif(cipher) {switch(EVP_CIPHER_nid(cipher)) {caseNID_aes_128_gcm:caseNID_aes_192_gcm:caseNID_aes_256_gcm:#ifdefNID_chacha20_poly1305caseNID_chacha20_poly1305:#endifret...
EVP_BytesToKey(EVP_aes_256_cfb(),EVP_sha256(),NULL,bfr,len,1,key,iv); EVP_EncryptInit_ex(etx,EVP_aes_256_cfb(),NULL,key,iv); len=ilen;if(!EVP_EncryptUpdate(etx,out,&len,in,ilen))gotoerr3; rem=ilen-len;if(!EVP_EncryptFinal_ex(etx,out+len,&rem))gotoerr3; ...
{ case 16: aes_cipher = EVP_aes_128_ecb(); break; case 24: aes_cipher = EVP_aes_192_ecb(); break; case 32: aes_cipher = EVP_aes_256_ecb(); break; default: return 0; } c->aes_ctx = malloc(sizeof(EVP_CIPHER_CTX)); if (c->aes_ctx == NULL) return 0...
debug_print(srtp_mod_aes_gcm,"setting iv: %s", v128_hex_string((v128_t*)iv));if(!EVP_CIPHER_CTX_ctrl(c->ctx, EVP_CTRL_GCM_SET_IVLEN,12,0)) {return(srtp_err_status_init_fail); }if(!EVP_CipherInit_ex(c->ctx,NULL,NULL,NULL, iv, ...