Skip to content

Commit 9618b8d

Browse files
authored
Rebase Crypto Test fixtures (#27)
Adds ability to change crypto library RNG function, which lets test cases manually set IV, generated keys; Removes logic from sec ctxs that explicitly checks for a test fixture IV
1 parent 7527bd5 commit 9618b8d

9 files changed

Lines changed: 125 additions & 74 deletions

src/BSLConfig.h.in

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,6 @@ const char * bsl_version(void);
9393
*/
9494
#cmakedefine HAVE_CLOCK_GETTIME
9595

96-
9796
#ifdef __cplusplus
9897
} // extern C
9998
#endif

src/CryptoInterface.h

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,14 @@ typedef struct BSL_Cipher_s
123123
size_t block_size;
124124
} BSL_Cipher_t;
125125

126+
/**
127+
* Function pointer def for random bytestring generator
128+
* @param buf buffer to fill with random bytes
129+
* @param len size of random buffer
130+
* @return 1 if success, 0 if failure
131+
*/
132+
typedef int (*BSL_Crypto_RandBytesFn)(unsigned char *buf, int len);
133+
126134
/** Initialize the crypto subsystem.
127135
* This must be called once per process.
128136
*/
@@ -133,6 +141,13 @@ void BSL_CryptoInit(void);
133141
*/
134142
void BSL_CryptoDeinit(void);
135143

144+
/**
145+
* Set RNG generator to be used by crypto library
146+
* @param[in] rand_gen_fn random bytes generation function.
147+
* @warning Intended to be used only for testing. Providing an alternative RNG may break FIPS-140 compatibility
148+
*/
149+
void BSL_Crypto_SetRngGenerator(BSL_Crypto_RandBytesFn rand_gen_fn);
150+
136151
/**
137152
* Initialize HMAC context resources and set private key and SHA variant
138153
* @param[in,out] hmac_ctx pointer to hmac context struct to init and set

src/crypto/CryptoInterface.c

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,9 @@ static int BSLB_CryptoKey_Deinit(BSLB_CryptoKey_t *key)
5757
DICT_DEF2(BSLB_CryptoKeyDict, string_t, STRING_OPLIST, BSLB_CryptoKey_t, M_OPL_BSLB_CryptoKey_t())
5858
/// @endcond
5959

60+
/// Random bytes generator
61+
static BSL_Crypto_RandBytesFn rand_bytes_generator;
62+
6063
/// Crypto key registry
6164
static BSLB_CryptoKeyDict_t StaticKeyRegistry;
6265
static pthread_mutex_t StaticCryptoMutex = PTHREAD_MUTEX_INITIALIZER;
@@ -65,13 +68,19 @@ static pthread_mutex_t StaticCryptoMutex = PTHREAD_MUTEX_INITIALIZER;
6568
void BSL_CryptoInit(void)
6669
{
6770
BSLB_CryptoKeyDict_init(StaticKeyRegistry);
71+
rand_bytes_generator = RAND_bytes;
6872
}
6973

7074
void BSL_CryptoDeinit(void)
7175
{
7276
BSLB_CryptoKeyDict_clear(StaticKeyRegistry);
7377
}
7478

79+
void BSL_Crypto_SetRngGenerator(BSL_Crypto_RandBytesFn rand_gen_fn)
80+
{
81+
rand_bytes_generator = rand_gen_fn;
82+
}
83+
7584
int BSL_Crypto_UnwrapKey(BSL_Data_t *unwrapped_key_output, BSL_Data_t wrapped_key_plaintext, const char *key_id,
7685
size_t aes_variant)
7786
{
@@ -118,7 +127,7 @@ int BSL_Crypto_UnwrapKey(BSL_Data_t *unwrapped_key_output, BSL_Data_t wrapped_ke
118127
return 0;
119128
}
120129

121-
int BSL_Crypto_WrapKey(BSL_Data_t *wrapped_key, BSL_Data_t cek, const char *content_key_id, size_t aes_variant)
130+
int BSL_Crypto_WrapKey(BSL_Data_t *wrapped_key, BSL_Data_t cek, const char *kek_id, size_t aes_variant)
122131
{
123132
const EVP_CIPHER *cipher = (aes_variant == BSL_CRYPTO_AES_128) ? EVP_aes_128_wrap() : EVP_aes_256_wrap();
124133
EVP_CIPHER_CTX *ctx = EVP_CIPHER_CTX_new();
@@ -134,22 +143,20 @@ int BSL_Crypto_WrapKey(BSL_Data_t *wrapped_key, BSL_Data_t cek, const char *cont
134143
size_t keylen = 64;
135144

136145
// TODO(bvb) replace w error checking
137-
BSL_LOG_INFO("Content key ID = %lu", cek);
138-
int got_crypto_key = BSLB_Crypto_GetRegistryKey(content_key_id, (const uint8_t **)&key, &keylen);
146+
int got_crypto_key = BSLB_Crypto_GetRegistryKey(kek_id, (const uint8_t **)&key, &keylen);
147+
139148
assert(got_crypto_key == 0);
140149
assert(keylen > 0);
141150

142-
int enc_result = EVP_EncryptInit_ex(ctx, cipher, NULL, cek.ptr, NULL);
151+
int enc_result = EVP_EncryptInit_ex(ctx, cipher, NULL, key, NULL);
143152
if (!enc_result)
144153
{
145154
EVP_CIPHER_CTX_free(ctx);
146155
return -1;
147156
}
148157

149158
int len = (int)wrapped_key->len;
150-
if (!EVP_EncryptUpdate(ctx, wrapped_key->ptr, &len,
151-
// (int*)&wrapped_key->len,
152-
key, (int)keylen))
159+
if (!EVP_EncryptUpdate(ctx, (unsigned char *)wrapped_key->ptr, &len, cek.ptr, cek.len))
153160
{
154161
EVP_CIPHER_CTX_free(ctx);
155162
return -2;
@@ -413,9 +420,9 @@ int BSL_Crypto_GenKey(uint8_t *key_buffer, size_t key_length)
413420
CHK_ARG_EXPR(key_length == 16 || key_length == 32);
414421

415422
int key_length_int = (int)key_length;
416-
if (RAND_bytes(key_buffer, key_length_int) != 1)
423+
if (rand_bytes_generator(key_buffer, key_length_int) != 1)
417424
{
418-
OPENSSL_cleanse(key_buffer, key_length_int);
425+
memset(key_buffer, 0, key_length_int);
419426
return -2;
420427
}
421428

@@ -431,7 +438,7 @@ int BSL_Crypto_GenIV(void *buf, int size)
431438
}
432439

433440
memset(buf, 0, size);
434-
CHK_PROPERTY(RAND_bytes((unsigned char *)buf, size) == 1);
441+
CHK_PROPERTY(rand_bytes_generator((unsigned char *)buf, size) == 1);
435442
return 0;
436443
}
437444

src/security_context/BCB_AES_GCM.c

Lines changed: 17 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -236,25 +236,15 @@ int BSLX_BCB_Encrypt(BSLX_BCB_t *bcb_context)
236236
bool is_aes128 = bcb_context->aes_variant == RFC9173_BCB_AES_VARIANT_A128GCM;
237237
BSL_CryptoCipherAESVariant_e aes_mode = is_aes128 ? BSL_CRYPTO_AES_128 : BSL_CRYPTO_AES_256;
238238

239-
// The IV is already defined if being populated from a test
240-
// Normally, this won't be the case, so we check here.
241-
// If it is empty, then generate a random IV.
242-
if (bcb_context->iv.len == 0)
243-
{
244-
// https://www.rfc-editor.org/rfc/rfc9173.html#name-initialization-vector-iv
245-
// "A value of 12 bytes SHOULD be used unless local security policy requires a different length"
246-
BSL_Data_InitBuffer(&bcb_context->iv, RFC9173_BCB_DEFAULT_IV_LEN);
247-
void *iv_ptr = bcb_context->iv.ptr;
248-
const size_t iv_len = bcb_context->iv.len;
249-
if (BSL_SUCCESS != BSL_Crypto_GenIV(iv_ptr, iv_len))
250-
{
251-
BSL_LOG_ERR("Failed to generate IV");
252-
return BSL_ERR_SECURITY_CONTEXT_FAILED;
253-
}
254-
}
255-
else
239+
// https://www.rfc-editor.org/rfc/rfc9173.html#name-initialization-vector-iv
240+
// "A value of 12 bytes SHOULD be used unless local security policy requires a different length"
241+
BSL_Data_InitBuffer(&bcb_context->iv, RFC9173_BCB_DEFAULT_IV_LEN);
242+
void *iv_ptr = bcb_context->iv.ptr;
243+
const size_t iv_len = bcb_context->iv.len;
244+
if (BSL_SUCCESS != BSL_Crypto_GenIV(iv_ptr, iv_len))
256245
{
257-
BSL_LOG_WARNING("Using test-harness IV");
246+
BSL_LOG_ERR("Failed to generate IV");
247+
return BSL_ERR_SECURITY_CONTEXT_FAILED;
258248
}
259249

260250
BSL_Data_t content_enc_key = { 0 };
@@ -283,23 +273,17 @@ int BSLX_BCB_Encrypt(BSLX_BCB_t *bcb_context)
283273
}
284274
else
285275
{
286-
if (bcb_context->test_content_enc_key.len > 0)
276+
// FIXME the key bytes shouldn't be copied outside of crypto library.
277+
// possible alternative:
278+
// GenKey should instead return a keyid and add generated key to registry
279+
const size_t keysize = is_aes128 ? 16 : 32;
280+
BSL_LOG_DEBUG("Generating %lu bit AES key", keysize * 8);
281+
if (BSL_SUCCESS != BSL_Crypto_GenKey(content_enc_key.ptr, keysize))
287282
{
288-
ASSERT_PROPERTY(content_enc_key.len >= bcb_context->test_content_enc_key.len);
289-
BSL_LOG_WARNING("Using CEK from test parameter");
290-
memcpy(content_enc_key.ptr, bcb_context->test_content_enc_key.ptr, bcb_context->test_content_enc_key.len);
291-
content_enc_key.len = bcb_context->test_content_enc_key.len;
292-
}
293-
else
294-
{
295-
const size_t keysize = is_aes128 ? 16 : 32;
296-
BSL_LOG_DEBUG("Generating %lu bit AES key", keysize * 8);
297-
if (BSL_SUCCESS != BSL_Crypto_GenKey(content_enc_key.ptr, keysize))
298-
{
299-
BSL_LOG_ERR("Failed to generate AES key");
300-
goto error;
301-
}
283+
BSL_LOG_ERR("Failed to generate AES key");
284+
goto error;
302285
}
286+
content_enc_key.len = keysize;
303287

304288
if (BSL_SUCCESS != BSL_Data_InitBuffer(&bcb_context->wrapped_key, BSLX_MAX_KEYLEN))
305289
{
@@ -478,25 +462,12 @@ int BSLX_BCB_GetParams(const BSL_BundleRef_t *bundle, BSLX_BCB_t *bcb_context, c
478462
BSL_LOG_DEBUG("Param[%lu]: KEY_ID value = %s", param_id, bcb_context->key_id);
479463
break;
480464
}
481-
case BSL_SECPARAM_TYPE_INT_FIXED_KEY:
482-
{
483-
BSL_LOG_DEBUG("BCB using fixed key from test harness");
484-
BSL_SecParam_GetAsBytestr(param, &bcb_context->test_content_enc_key);
485-
break;
486-
}
487465
case BSL_SECPARAM_TYPE_AUTH_TAG:
488466
{
489467
BSL_LOG_DEBUG("Parsing auth tag");
490468
BSL_SecParam_GetAsBytestr(param, &bcb_context->authtag);
491469
break;
492470
}
493-
case BSL_SECPARAM_TYPE_IV:
494-
{
495-
// If we need to pass in an IV for testing purposes.
496-
BSL_LOG_DEBUG("Param[%lu]: USE TEST INITIALIZATION VECTOR", param_id);
497-
BSL_SecParam_GetAsBytestr(param, &bcb_context->iv);
498-
break;
499-
}
500471
case BSL_SECPARAM_TYPE_INT_USE_WRAPPED_KEY:
501472
{
502473
const uint64_t arg_val = BSL_SecParam_GetAsUInt64(param);
@@ -584,9 +555,6 @@ static void BSLX_BCB_Deinit(BSLX_BCB_t *bcb_context)
584555
BSL_Data_Deinit(&bcb_context->debugstr);
585556
BSL_Data_Deinit(&bcb_context->authtag);
586557
BSL_Data_Deinit(&bcb_context->iv);
587-
BSL_Data_Deinit(&bcb_context->test_content_enc_key);
588-
BSL_Data_Deinit(&bcb_context->test_init_vector);
589-
BSL_Data_Deinit(&bcb_context->test_key_enc_key);
590558
BSL_Data_Deinit(&bcb_context->wrapped_key);
591559
memset(bcb_context, 0, sizeof(*bcb_context));
592560
}

src/security_context/DefaultSecContext_Private.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,9 +93,6 @@ typedef struct BSLX_BCB_s
9393
BSL_Data_t authtag;
9494
BSL_Data_t iv;
9595
BSL_Data_t wrapped_key;
96-
BSL_Data_t test_content_enc_key;
97-
BSL_Data_t test_init_vector;
98-
BSL_Data_t test_key_enc_key;
9996
BSL_Data_t btsd_replacement;
10097
BSL_Data_t debugstr;
10198
BSL_Data_t aad;

test/bsl_test_utils.c

Lines changed: 65 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@ void BSL_TestUtils_InitBCB_Appendix2(BCBTestContext *context, BSL_SecRole_e role
6161
quick_data(context->auth_tag, ApxA2_AuthTag);
6262
quick_data(context->wrapped_key, ApxA2_WrappedKey);
6363
quick_data(context->key_enc_key, ApxA2_KeyEncKey);
64-
quick_data(context->content_enc_key, ApxA2_ContentEncKey);
6564

6665
BSL_SecParam_InitInt64(&context->param_scope_flags, RFC9173_BCB_SECPARAM_AADSCOPE, 0);
6766
BSL_SecParam_InitStr(&context->param_test_key_id, BSL_SECPARAM_TYPE_KEY_ID, RFC9173_EXAMPLE_A2_KEY);
@@ -70,8 +69,6 @@ void BSL_TestUtils_InitBCB_Appendix2(BCBTestContext *context, BSL_SecRole_e role
7069
BSL_SecParam_InitBytestr(&context->param_init_vec, RFC9173_BCB_SECPARAM_IV, context->init_vector);
7170
BSL_SecParam_InitBytestr(&context->param_auth_tag, BSL_SECPARAM_TYPE_AUTH_TAG, context->auth_tag);
7271
BSL_SecParam_InitBytestr(&context->param_wrapped_key, RFC9173_BCB_SECPARAM_WRAPPEDKEY, context->wrapped_key);
73-
BSL_SecParam_InitBytestr(&context->param_content_enc_key, BSL_SECPARAM_TYPE_INT_FIXED_KEY,
74-
context->content_enc_key);
7572

7673
BSL_SecOper_Init(&context->sec_oper, 2, 1, 2, BSL_SECBLOCKTYPE_BCB, role, BSL_POLICYACTION_NOTHING);
7774

@@ -81,8 +78,6 @@ void BSL_TestUtils_InitBCB_Appendix2(BCBTestContext *context, BSL_SecRole_e role
8178
BSL_SecOper_AppendParam(&context->sec_oper, &context->param_scope_flags);
8279
if (role != BSL_SECROLE_SOURCE)
8380
BSL_SecOper_AppendParam(&context->sec_oper, &context->param_auth_tag);
84-
if (role == BSL_SECROLE_SOURCE)
85-
BSL_SecOper_AppendParam(&context->sec_oper, &context->param_content_enc_key);
8681
BSL_SecOper_AppendParam(&context->sec_oper, &context->param_test_key_id);
8782
}
8883

@@ -102,6 +97,71 @@ BSL_SecurityResponseSet_t *BSL_TestUtils_MallocEmptyPolicyResponse(void)
10297
return calloc(BSL_SecurityResponseSet_Sizeof(), 1);
10398
}
10499

100+
int rfc9173_byte_gen_fn_a1(unsigned char *buf, int len)
101+
{
102+
if (len == 12) // IV
103+
{
104+
uint8_t iv[] = { 0x54, 0x77, 0x65, 0x6c, 0x76, 0x65, 0x31, 0x32, 0x31, 0x32, 0x31, 0x32 };
105+
memcpy(buf, iv, 12);
106+
}
107+
else // A1 KEY
108+
{
109+
uint8_t rfc9173A1_key[] = { 0x1a, 0x2b, 0x1a, 0x2b, 0x1a, 0x2b, 0x1a, 0x2b,
110+
0x1a, 0x2b, 0x1a, 0x2b, 0x1a, 0x2b, 0x1a, 0x2b };
111+
memcpy(buf, rfc9173A1_key, len);
112+
}
113+
return 1;
114+
}
115+
116+
int rfc9173_byte_gen_fn_a2_kek(unsigned char *buf, int len)
117+
{
118+
if (len == 12) // IV
119+
{
120+
uint8_t iv[] = { 0x54, 0x77, 0x65, 0x6c, 0x76, 0x65, 0x31, 0x32, 0x31, 0x32, 0x31, 0x32 };
121+
memcpy(buf, iv, 12);
122+
}
123+
else // A2 KEY
124+
{
125+
uint8_t rfc9173A2_key[] = { 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
126+
0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70 };
127+
memcpy(buf, rfc9173A2_key, len);
128+
}
129+
return 1;
130+
}
131+
132+
int rfc9173_byte_gen_fn_a2_cek(unsigned char *buf, int len)
133+
{
134+
if (len == 12) // IV
135+
{
136+
uint8_t iv[] = { 0x54, 0x77, 0x65, 0x6c, 0x76, 0x65, 0x31, 0x32, 0x31, 0x32, 0x31, 0x32 };
137+
memcpy(buf, iv, 12);
138+
}
139+
else // A3 KEY
140+
{
141+
uint8_t rfc9173A3_key[] = { 0x71, 0x77, 0x65, 0x72, 0x74, 0x79, 0x75, 0x69,
142+
0x6f, 0x70, 0x61, 0x73, 0x64, 0x66, 0x67, 0x68 };
143+
memcpy(buf, rfc9173A3_key, len);
144+
}
145+
return 1;
146+
}
147+
148+
int rfc9173_byte_gen_fn_a4(unsigned char *buf, int len)
149+
{
150+
if (len == 12) // IV
151+
{
152+
uint8_t iv[] = { 0x54, 0x77, 0x65, 0x6c, 0x76, 0x65, 0x31, 0x32, 0x31, 0x32, 0x31, 0x32 };
153+
memcpy(buf, iv, 12);
154+
}
155+
else // A4 KEY
156+
{
157+
uint8_t rfc9173A4_key[] = { 0x71, 0x77, 0x65, 0x72, 0x74, 0x79, 0x75, 0x69, 0x6f, 0x70, 0x61,
158+
0x73, 0x64, 0x66, 0x67, 0x68, 0x71, 0x77, 0x65, 0x72, 0x74, 0x79,
159+
0x75, 0x69, 0x6f, 0x70, 0x61, 0x73, 0x64, 0x66, 0x67, 0x68 };
160+
memcpy(buf, rfc9173A4_key, len);
161+
}
162+
return 1;
163+
}
164+
105165
void BSL_TestUtils_SetupDefaultSecurityContext(BSL_LibCtx_t *bsl_lib)
106166
{
107167
assert(bsl_lib != NULL);

test/bsl_test_utils.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -333,4 +333,9 @@ int BSL_TestUtils_EncodeBase16(string_t output, const BSL_Data_t *input, bool up
333333
*/
334334
int BSL_TestUtils_DecodeBase16(BSL_Data_t *output, const string_t input);
335335

336+
int rfc9173_byte_gen_fn_a1(unsigned char *buf, int len);
337+
int rfc9173_byte_gen_fn_a2_kek(unsigned char *buf, int len);
338+
int rfc9173_byte_gen_fn_a2_cek(unsigned char *buf, int len);
339+
int rfc9173_byte_gen_fn_a4(unsigned char *buf, int len);
340+
336341
#endif

test/test_BackendSecurityContext.c

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,7 @@ void test_SecurityContext_BIB_Acceptor(void)
252252
// See RFC: https://www.rfc-editor.org/rfc/rfc9173.html#name-example-3-security-blocks-f
253253
void test_RFC9173_AppendixA_Example3_Acceptor(void)
254254
{
255+
BSL_Crypto_SetRngGenerator(rfc9173_byte_gen_fn_a4);
255256
const char *final_bundle = ("9f88070000820282010282028202018202820201820018281a000f4240850b0300"
256257
"00585c8200020101820282030082820105820300828182015820cac6ce8e4c5dae57"
257258
"988b757e49a6dd1431dc04763541b2845098265bc817241b81820158203ed614c0d9"
@@ -383,6 +384,7 @@ void test_RFC9173_AppendixA_Example3_Source(void)
383384

384385
void test_RFC9173_AppendixA_Example4_Acceptor(void)
385386
{
387+
BSL_Crypto_SetRngGenerator(rfc9173_byte_gen_fn_a4);
386388
// See: https://www.rfc-editor.org/rfc/rfc9173.html#appendix-A.4.5
387389
const char *final_bundle = ("9f88070000820282010282028202018202820201820018281a000f4240850b0300"
388390
"005846438ed6208eb1c1ffb94d952175167df0902902064a2983910c4fb2340790bf"
@@ -469,6 +471,7 @@ void test_RFC9173_AppendixA_Example4_Acceptor(void)
469471

470472
void test_RFC9173_AppendixA_Example4_Source(void)
471473
{
474+
BSL_Crypto_SetRngGenerator(rfc9173_byte_gen_fn_a4);
472475
const char *original_bundle = ("9f88070000820282010282028202018202820201820018281a000f424085010100"
473476
"005823526561647920746f2067656e657261746520612033322d6279746520706179"
474477
"6c6f6164ff");
@@ -498,25 +501,19 @@ void test_RFC9173_AppendixA_Example4_Source(void)
498501
BSL_SecParam_InitInt64(&bcb_scope, RFC9173_BCB_SECPARAM_AADSCOPE, 0x07);
499502
BSL_SecParam_t aes_variant = { 0 };
500503
BSL_SecParam_InitInt64(&aes_variant, RFC9173_BCB_SECPARAM_AESVARIANT, RFC9173_BCB_AES_VARIANT_A256GCM);
501-
uint8_t iv[] = { 0x54, 0x77, 0x65, 0x6c, 0x76, 0x65, 0x31, 0x32, 0x31, 0x32, 0x31, 0x32 };
502-
BSL_Data_t iv_data = { .len = sizeof(iv), .ptr = iv };
503-
BSL_SecParam_t init_vec = { 0 };
504-
BSL_SecParam_InitBytestr(&init_vec, BSL_SECPARAM_TYPE_IV, iv_data);
505504

506505
BSL_SecOper_t bcb_op_tgt_payload = { 0 };
507506
BSL_SecOper_Init(&bcb_op_tgt_payload, 2, 1, 3, BSL_SECBLOCKTYPE_BCB, BSL_SECROLE_SOURCE,
508507
BSL_POLICYACTION_DROP_BLOCK);
509508
BSL_SecOper_AppendParam(&bcb_op_tgt_payload, &bcb_param_key);
510509
BSL_SecOper_AppendParam(&bcb_op_tgt_payload, &aes_variant);
511510
BSL_SecOper_AppendParam(&bcb_op_tgt_payload, &bcb_scope);
512-
BSL_SecOper_AppendParam(&bcb_op_tgt_payload, &init_vec);
513511

514512
BSL_SecOper_t bcb_op_tgt_bib = { 0 };
515513
BSL_SecOper_Init(&bcb_op_tgt_bib, 2, 2, 3, BSL_SECBLOCKTYPE_BCB, BSL_SECROLE_SOURCE, BSL_POLICYACTION_DROP_BLOCK);
516514
BSL_SecOper_AppendParam(&bcb_op_tgt_bib, &bcb_param_key);
517515
BSL_SecOper_AppendParam(&bcb_op_tgt_bib, &aes_variant);
518516
BSL_SecOper_AppendParam(&bcb_op_tgt_bib, &bcb_scope);
519-
BSL_SecOper_AppendParam(&bcb_op_tgt_bib, &init_vec);
520517

521518
BSL_SecurityActionSet_t *malloced_actionset = calloc(1, BSL_SecurityActionSet_Sizeof());
522519
BSL_SecurityActionSet_Init(malloced_actionset);

0 commit comments

Comments
 (0)