Lines Matching refs:drbg
232 static bool drbg_fips_continuous_test(struct drbg_state *drbg, in drbg_fips_continuous_test() argument
238 if (drbg->test_data) in drbg_fips_continuous_test()
243 if (!drbg->fips_primed) { in drbg_fips_continuous_test()
245 memcpy(drbg->prev, buf, drbg_blocklen(drbg)); in drbg_fips_continuous_test()
246 drbg->fips_primed = true; in drbg_fips_continuous_test()
250 ret = memcmp(drbg->prev, buf, drbg_blocklen(drbg)); in drbg_fips_continuous_test()
253 memcpy(drbg->prev, buf, drbg_blocklen(drbg)); in drbg_fips_continuous_test()
294 static int drbg_kcapi_sym(struct drbg_state *drbg, const unsigned char *key,
296 static int drbg_init_sym_kernel(struct drbg_state *drbg);
297 static int drbg_fini_sym_kernel(struct drbg_state *drbg);
300 static int drbg_ctr_bcc(struct drbg_state *drbg, in drbg_ctr_bcc() argument
309 drbg_string_fill(&data, out, drbg_blocklen(drbg)); in drbg_ctr_bcc()
318 if (drbg_blocklen(drbg) == cnt) { in drbg_ctr_bcc()
320 ret = drbg_kcapi_sym(drbg, key, out, &data); in drbg_ctr_bcc()
332 ret = drbg_kcapi_sym(drbg, key, out, &data); in drbg_ctr_bcc()
377 static int drbg_ctr_df(struct drbg_state *drbg, in drbg_ctr_df() argument
386 unsigned char *pad = df_data + drbg_statelen(drbg); in drbg_ctr_df()
387 unsigned char *iv = pad + drbg_blocklen(drbg); in drbg_ctr_df()
388 unsigned char *temp = iv + drbg_blocklen(drbg); in drbg_ctr_df()
404 memset(pad, 0, drbg_blocklen(drbg)); in drbg_ctr_df()
405 memset(iv, 0, drbg_blocklen(drbg)); in drbg_ctr_df()
422 padlen = (inputlen + sizeof(L_N) + 1) % (drbg_blocklen(drbg)); in drbg_ctr_df()
425 padlen = drbg_blocklen(drbg) - padlen; in drbg_ctr_df()
435 drbg_string_fill(&S1, iv, drbg_blocklen(drbg)); in drbg_ctr_df()
444 while (templen < (drbg_keylen(drbg) + (drbg_blocklen(drbg)))) { in drbg_ctr_df()
452 ret = drbg_ctr_bcc(drbg, temp + templen, K, &bcc_list); in drbg_ctr_df()
457 templen += drbg_blocklen(drbg); in drbg_ctr_df()
461 X = temp + (drbg_keylen(drbg)); in drbg_ctr_df()
462 drbg_string_fill(&cipherin, X, drbg_blocklen(drbg)); in drbg_ctr_df()
474 ret = drbg_kcapi_sym(drbg, temp, X, &cipherin); in drbg_ctr_df()
477 blocklen = (drbg_blocklen(drbg) < in drbg_ctr_df()
479 drbg_blocklen(drbg) : in drbg_ctr_df()
489 memset(iv, 0, drbg_blocklen(drbg)); in drbg_ctr_df()
490 memset(temp, 0, drbg_statelen(drbg)); in drbg_ctr_df()
491 memset(pad, 0, drbg_blocklen(drbg)); in drbg_ctr_df()
510 static int drbg_ctr_update(struct drbg_state *drbg, struct list_head *seed, in drbg_ctr_update() argument
515 unsigned char *temp = drbg->scratchpad; in drbg_ctr_update()
516 unsigned char *df_data = drbg->scratchpad + drbg_statelen(drbg) + in drbg_ctr_update()
517 drbg_blocklen(drbg); in drbg_ctr_update()
523 memset(df_data, 0, drbg_statelen(drbg)); in drbg_ctr_update()
527 ret = drbg_ctr_df(drbg, df_data, drbg_statelen(drbg), seed); in drbg_ctr_update()
532 drbg_string_fill(&cipherin, drbg->V, drbg_blocklen(drbg)); in drbg_ctr_update()
537 while (len < (drbg_statelen(drbg))) { in drbg_ctr_update()
539 crypto_inc(drbg->V, drbg_blocklen(drbg)); in drbg_ctr_update()
542 ret = drbg_kcapi_sym(drbg, drbg->C, temp + len, &cipherin); in drbg_ctr_update()
546 len += drbg_blocklen(drbg); in drbg_ctr_update()
552 for (len = 0; len < drbg_statelen(drbg); len++) { in drbg_ctr_update()
558 memcpy(drbg->C, temp, drbg_keylen(drbg)); in drbg_ctr_update()
560 memcpy(drbg->V, temp + drbg_keylen(drbg), drbg_blocklen(drbg)); in drbg_ctr_update()
564 memset(temp, 0, drbg_statelen(drbg) + drbg_blocklen(drbg)); in drbg_ctr_update()
566 memset(df_data, 0, drbg_statelen(drbg)); in drbg_ctr_update()
575 static int drbg_ctr_generate(struct drbg_state *drbg, in drbg_ctr_generate() argument
585 ret = drbg_ctr_update(drbg, addtl, 2); in drbg_ctr_generate()
591 crypto_inc(drbg->V, drbg_blocklen(drbg)); in drbg_ctr_generate()
592 drbg_string_fill(&data, drbg->V, drbg_blocklen(drbg)); in drbg_ctr_generate()
596 ret = drbg_kcapi_sym(drbg, drbg->C, drbg->scratchpad, &data); in drbg_ctr_generate()
601 outlen = (drbg_blocklen(drbg) < (buflen - len)) ? in drbg_ctr_generate()
602 drbg_blocklen(drbg) : (buflen - len); in drbg_ctr_generate()
603 if (!drbg_fips_continuous_test(drbg, drbg->scratchpad)) { in drbg_ctr_generate()
605 crypto_inc(drbg->V, drbg_blocklen(drbg)); in drbg_ctr_generate()
609 memcpy(buf + len, drbg->scratchpad, outlen); in drbg_ctr_generate()
613 crypto_inc(drbg->V, drbg_blocklen(drbg)); in drbg_ctr_generate()
617 ret = drbg_ctr_update(drbg, NULL, 3); in drbg_ctr_generate()
622 memset(drbg->scratchpad, 0, drbg_blocklen(drbg)); in drbg_ctr_generate()
639 static int drbg_kcapi_hash(struct drbg_state *drbg, const unsigned char *key,
641 static int drbg_init_hash_kernel(struct drbg_state *drbg);
642 static int drbg_fini_hash_kernel(struct drbg_state *drbg);
657 static int drbg_hmac_update(struct drbg_state *drbg, struct list_head *seed, in drbg_hmac_update() argument
668 memset(drbg->V, 1, drbg_statelen(drbg)); in drbg_hmac_update()
670 drbg_string_fill(&seed1, drbg->V, drbg_statelen(drbg)); in drbg_hmac_update()
679 drbg_string_fill(&vdata, drbg->V, drbg_statelen(drbg)); in drbg_hmac_update()
688 ret = drbg_kcapi_hash(drbg, drbg->C, drbg->C, &seedlist); in drbg_hmac_update()
693 ret = drbg_kcapi_hash(drbg, drbg->C, drbg->V, &vdatalist); in drbg_hmac_update()
706 static int drbg_hmac_generate(struct drbg_state *drbg, in drbg_hmac_generate() argument
718 ret = drbg_hmac_update(drbg, addtl, 1); in drbg_hmac_generate()
723 drbg_string_fill(&data, drbg->V, drbg_statelen(drbg)); in drbg_hmac_generate()
728 ret = drbg_kcapi_hash(drbg, drbg->C, drbg->V, &datalist); in drbg_hmac_generate()
731 outlen = (drbg_blocklen(drbg) < (buflen - len)) ? in drbg_hmac_generate()
732 drbg_blocklen(drbg) : (buflen - len); in drbg_hmac_generate()
733 if (!drbg_fips_continuous_test(drbg, drbg->V)) in drbg_hmac_generate()
737 memcpy(buf + len, drbg->V, outlen); in drbg_hmac_generate()
743 ret = drbg_hmac_update(drbg, addtl, 1); in drbg_hmac_generate()
745 ret = drbg_hmac_update(drbg, NULL, 1); in drbg_hmac_generate()
823 static int drbg_hash_df(struct drbg_state *drbg, in drbg_hash_df() argument
830 unsigned char *tmp = drbg->scratchpad + drbg_statelen(drbg); in drbg_hash_df()
845 ret = drbg_kcapi_hash(drbg, NULL, tmp, entropylist); in drbg_hash_df()
850 blocklen = (drbg_blocklen(drbg) < (outlen - len)) ? in drbg_hash_df()
851 drbg_blocklen(drbg) : (outlen - len); in drbg_hash_df()
857 memset(tmp, 0, drbg_blocklen(drbg)); in drbg_hash_df()
862 static int drbg_hash_update(struct drbg_state *drbg, struct list_head *seed, in drbg_hash_update() argument
869 unsigned char *V = drbg->scratchpad; in drbg_hash_update()
877 memcpy(V, drbg->V, drbg_statelen(drbg)); in drbg_hash_update()
880 drbg_string_fill(&data2, V, drbg_statelen(drbg)); in drbg_hash_update()
886 ret = drbg_hash_df(drbg, drbg->V, drbg_statelen(drbg), &datalist); in drbg_hash_update()
894 drbg_string_fill(&data2, drbg->V, drbg_statelen(drbg)); in drbg_hash_update()
897 ret = drbg_hash_df(drbg, drbg->C, drbg_statelen(drbg), &datalist2); in drbg_hash_update()
900 memset(drbg->scratchpad, 0, drbg_statelen(drbg)); in drbg_hash_update()
905 static int drbg_hash_process_addtl(struct drbg_state *drbg, in drbg_hash_process_addtl() argument
919 drbg_string_fill(&data2, drbg->V, drbg_statelen(drbg)); in drbg_hash_process_addtl()
923 ret = drbg_kcapi_hash(drbg, NULL, drbg->scratchpad, &datalist); in drbg_hash_process_addtl()
928 drbg_add_buf(drbg->V, drbg_statelen(drbg), in drbg_hash_process_addtl()
929 drbg->scratchpad, drbg_blocklen(drbg)); in drbg_hash_process_addtl()
932 memset(drbg->scratchpad, 0, drbg_blocklen(drbg)); in drbg_hash_process_addtl()
937 static int drbg_hash_hashgen(struct drbg_state *drbg, in drbg_hash_hashgen() argument
943 unsigned char *src = drbg->scratchpad; in drbg_hash_hashgen()
944 unsigned char *dst = drbg->scratchpad + drbg_statelen(drbg); in drbg_hash_hashgen()
949 memcpy(src, drbg->V, drbg_statelen(drbg)); in drbg_hash_hashgen()
951 drbg_string_fill(&data, src, drbg_statelen(drbg)); in drbg_hash_hashgen()
956 ret = drbg_kcapi_hash(drbg, NULL, dst, &datalist); in drbg_hash_hashgen()
961 outlen = (drbg_blocklen(drbg) < (buflen - len)) ? in drbg_hash_hashgen()
962 drbg_blocklen(drbg) : (buflen - len); in drbg_hash_hashgen()
963 if (!drbg_fips_continuous_test(drbg, dst)) { in drbg_hash_hashgen()
964 crypto_inc(src, drbg_statelen(drbg)); in drbg_hash_hashgen()
972 crypto_inc(src, drbg_statelen(drbg)); in drbg_hash_hashgen()
976 memset(drbg->scratchpad, 0, in drbg_hash_hashgen()
977 (drbg_statelen(drbg) + drbg_blocklen(drbg))); in drbg_hash_hashgen()
982 static int drbg_hash_generate(struct drbg_state *drbg, in drbg_hash_generate() argument
997 ret = drbg_hash_process_addtl(drbg, addtl); in drbg_hash_generate()
1001 len = drbg_hash_hashgen(drbg, buf, buflen); in drbg_hash_generate()
1007 drbg_string_fill(&data2, drbg->V, drbg_statelen(drbg)); in drbg_hash_generate()
1009 ret = drbg_kcapi_hash(drbg, NULL, drbg->scratchpad, &datalist); in drbg_hash_generate()
1016 drbg_add_buf(drbg->V, drbg_statelen(drbg), in drbg_hash_generate()
1017 drbg->scratchpad, drbg_blocklen(drbg)); in drbg_hash_generate()
1018 drbg_add_buf(drbg->V, drbg_statelen(drbg), in drbg_hash_generate()
1019 drbg->C, drbg_statelen(drbg)); in drbg_hash_generate()
1020 u.req_int = cpu_to_be64(drbg->reseed_ctr); in drbg_hash_generate()
1021 drbg_add_buf(drbg->V, drbg_statelen(drbg), u.req, 8); in drbg_hash_generate()
1024 memset(drbg->scratchpad, 0, drbg_blocklen(drbg)); in drbg_hash_generate()
1055 static int drbg_seed(struct drbg_state *drbg, struct drbg_string *pers, in drbg_seed() argument
1065 if (pers && pers->len > (drbg_max_addtl(drbg))) { in drbg_seed()
1071 if (drbg->test_data && drbg->test_data->testentropy) { in drbg_seed()
1072 drbg_string_fill(&data1, drbg->test_data->testentropy->buf, in drbg_seed()
1073 drbg->test_data->testentropy->len); in drbg_seed()
1084 entropylen = drbg_sec_strength(drbg->core->flags); in drbg_seed()
1110 memset(drbg->V, 0, drbg_statelen(drbg)); in drbg_seed()
1111 memset(drbg->C, 0, drbg_statelen(drbg)); in drbg_seed()
1114 ret = drbg->d_ops->update(drbg, &seedlist, reseed); in drbg_seed()
1118 drbg->seeded = true; in drbg_seed()
1120 drbg->reseed_ctr = 1; in drbg_seed()
1128 static inline void drbg_dealloc_state(struct drbg_state *drbg) in drbg_dealloc_state() argument
1130 if (!drbg) in drbg_dealloc_state()
1132 kzfree(drbg->V); in drbg_dealloc_state()
1133 drbg->V = NULL; in drbg_dealloc_state()
1134 kzfree(drbg->C); in drbg_dealloc_state()
1135 drbg->C = NULL; in drbg_dealloc_state()
1136 kzfree(drbg->scratchpad); in drbg_dealloc_state()
1137 drbg->scratchpad = NULL; in drbg_dealloc_state()
1138 drbg->reseed_ctr = 0; in drbg_dealloc_state()
1140 kzfree(drbg->prev); in drbg_dealloc_state()
1141 drbg->prev = NULL; in drbg_dealloc_state()
1142 drbg->fips_primed = false; in drbg_dealloc_state()
1150 static inline int drbg_alloc_state(struct drbg_state *drbg) in drbg_alloc_state() argument
1155 drbg->V = kmalloc(drbg_statelen(drbg), GFP_KERNEL); in drbg_alloc_state()
1156 if (!drbg->V) in drbg_alloc_state()
1158 drbg->C = kmalloc(drbg_statelen(drbg), GFP_KERNEL); in drbg_alloc_state()
1159 if (!drbg->C) in drbg_alloc_state()
1162 drbg->prev = kmalloc(drbg_blocklen(drbg), GFP_KERNEL); in drbg_alloc_state()
1163 if (!drbg->prev) in drbg_alloc_state()
1165 drbg->fips_primed = false; in drbg_alloc_state()
1168 if (drbg->core->flags & DRBG_HMAC) in drbg_alloc_state()
1170 else if (drbg->core->flags & DRBG_CTR) in drbg_alloc_state()
1171 sb_size = drbg_statelen(drbg) + drbg_blocklen(drbg) + /* temp */ in drbg_alloc_state()
1172 drbg_statelen(drbg) + /* df_data */ in drbg_alloc_state()
1173 drbg_blocklen(drbg) + /* pad */ in drbg_alloc_state()
1174 drbg_blocklen(drbg) + /* iv */ in drbg_alloc_state()
1175 drbg_statelen(drbg) + drbg_blocklen(drbg); /* temp */ in drbg_alloc_state()
1177 sb_size = drbg_statelen(drbg) + drbg_blocklen(drbg); in drbg_alloc_state()
1180 drbg->scratchpad = kzalloc(sb_size, GFP_KERNEL); in drbg_alloc_state()
1181 if (!drbg->scratchpad) in drbg_alloc_state()
1184 spin_lock_init(&drbg->drbg_lock); in drbg_alloc_state()
1188 drbg_dealloc_state(drbg); in drbg_alloc_state()
1222 static int drbg_make_shadow(struct drbg_state *drbg, struct drbg_state **shadow) in drbg_make_shadow() argument
1232 tmp->core = drbg->core; in drbg_make_shadow()
1233 tmp->d_ops = drbg->d_ops; in drbg_make_shadow()
1239 spin_lock_bh(&drbg->drbg_lock); in drbg_make_shadow()
1240 drbg_copy_drbg(drbg, tmp); in drbg_make_shadow()
1242 tmp->test_data = drbg->test_data; in drbg_make_shadow()
1243 spin_unlock_bh(&drbg->drbg_lock); in drbg_make_shadow()
1252 static void drbg_restore_shadow(struct drbg_state *drbg, in drbg_restore_shadow() argument
1257 spin_lock_bh(&drbg->drbg_lock); in drbg_restore_shadow()
1258 drbg_copy_drbg(tmp, drbg); in drbg_restore_shadow()
1259 spin_unlock_bh(&drbg->drbg_lock); in drbg_restore_shadow()
1285 static int drbg_generate(struct drbg_state *drbg, in drbg_generate() argument
1307 len = drbg_make_shadow(drbg, &shadow); in drbg_generate()
1346 drbg->pr ? "true" : "false", in drbg_generate()
1347 drbg->seeded ? "seeded" : "unseeded"); in drbg_generate()
1363 if (!drbg->test_data) { in drbg_generate()
1397 if (drbg->core->flags & DRBG_HMAC) in drbg_generate()
1400 else if (drbg->core->flags & DRBG_CTR) in drbg_generate()
1412 drbg_uninstantiate(drbg); in drbg_generate()
1429 drbg_restore_shadow(drbg, &shadow); in drbg_generate()
1441 static int drbg_generate_long(struct drbg_state *drbg, in drbg_generate_long() argument
1450 slice = ((buflen - len) / drbg_max_request_bytes(drbg)); in drbg_generate_long()
1451 chunk = slice ? drbg_max_request_bytes(drbg) : (buflen - len); in drbg_generate_long()
1452 tmplen = drbg_generate(drbg, buf + len, chunk, addtl); in drbg_generate_long()
1477 static int drbg_instantiate(struct drbg_state *drbg, struct drbg_string *pers, in drbg_instantiate() argument
1484 drbg->core = &drbg_cores[coreref]; in drbg_instantiate()
1485 drbg->pr = pr; in drbg_instantiate()
1486 drbg->seeded = false; in drbg_instantiate()
1487 switch (drbg->core->flags & DRBG_TYPE_MASK) { in drbg_instantiate()
1490 drbg->d_ops = &drbg_hmac_ops; in drbg_instantiate()
1495 drbg->d_ops = &drbg_hash_ops; in drbg_instantiate()
1500 drbg->d_ops = &drbg_ctr_ops; in drbg_instantiate()
1517 ret = drbg_alloc_state(drbg); in drbg_instantiate()
1522 if (drbg->d_ops->crypto_init(drbg)) in drbg_instantiate()
1524 ret = drbg_seed(drbg, pers, false); in drbg_instantiate()
1525 drbg->d_ops->crypto_fini(drbg); in drbg_instantiate()
1532 drbg_dealloc_state(drbg); in drbg_instantiate()
1545 static int drbg_uninstantiate(struct drbg_state *drbg) in drbg_uninstantiate() argument
1547 spin_lock_bh(&drbg->drbg_lock); in drbg_uninstantiate()
1548 drbg_dealloc_state(drbg); in drbg_uninstantiate()
1550 spin_unlock_bh(&drbg->drbg_lock); in drbg_uninstantiate()
1560 static inline void drbg_set_testdata(struct drbg_state *drbg, in drbg_set_testdata() argument
1565 spin_lock_bh(&drbg->drbg_lock); in drbg_set_testdata()
1566 drbg->test_data = test_data; in drbg_set_testdata()
1567 spin_unlock_bh(&drbg->drbg_lock); in drbg_set_testdata()
1580 static int drbg_init_hash_kernel(struct drbg_state *drbg) in drbg_init_hash_kernel() argument
1585 tfm = crypto_alloc_shash(drbg->core->backend_cra_name, 0, 0); in drbg_init_hash_kernel()
1590 BUG_ON(drbg_blocklen(drbg) != crypto_shash_digestsize(tfm)); in drbg_init_hash_kernel()
1600 drbg->priv_data = sdesc; in drbg_init_hash_kernel()
1604 static int drbg_fini_hash_kernel(struct drbg_state *drbg) in drbg_fini_hash_kernel() argument
1606 struct sdesc *sdesc = (struct sdesc *)drbg->priv_data; in drbg_fini_hash_kernel()
1611 drbg->priv_data = NULL; in drbg_fini_hash_kernel()
1615 static int drbg_kcapi_hash(struct drbg_state *drbg, const unsigned char *key, in drbg_kcapi_hash() argument
1618 struct sdesc *sdesc = (struct sdesc *)drbg->priv_data; in drbg_kcapi_hash()
1622 crypto_shash_setkey(sdesc->shash.tfm, key, drbg_statelen(drbg)); in drbg_kcapi_hash()
1631 static int drbg_init_sym_kernel(struct drbg_state *drbg) in drbg_init_sym_kernel() argument
1636 tfm = crypto_alloc_cipher(drbg->core->backend_cra_name, 0, 0); in drbg_init_sym_kernel()
1641 BUG_ON(drbg_blocklen(drbg) != crypto_cipher_blocksize(tfm)); in drbg_init_sym_kernel()
1642 drbg->priv_data = tfm; in drbg_init_sym_kernel()
1646 static int drbg_fini_sym_kernel(struct drbg_state *drbg) in drbg_fini_sym_kernel() argument
1649 (struct crypto_cipher *)drbg->priv_data; in drbg_fini_sym_kernel()
1652 drbg->priv_data = NULL; in drbg_fini_sym_kernel()
1656 static int drbg_kcapi_sym(struct drbg_state *drbg, const unsigned char *key, in drbg_kcapi_sym() argument
1660 (struct crypto_cipher *)drbg->priv_data; in drbg_kcapi_sym()
1662 crypto_cipher_setkey(tfm, key, (drbg_keylen(drbg))); in drbg_kcapi_sym()
1664 BUG_ON(in->len < drbg_blocklen(drbg)); in drbg_kcapi_sym()
1716 struct drbg_state *drbg = crypto_tfm_ctx(tfm); in drbg_kcapi_init() local
1725 return drbg_instantiate(drbg, NULL, coreref, pr); in drbg_kcapi_init()
1748 struct drbg_state *drbg = crypto_rng_ctx(tfm); in drbg_kcapi_random() local
1750 return drbg_generate_long(drbg, rdata, dlen, NULL); in drbg_kcapi_random()
1757 drbg_set_testdata(drbg, data->test_data); in drbg_kcapi_random()
1760 return drbg_generate_long(drbg, data->outbuf, data->outlen, in drbg_kcapi_random()
1773 struct drbg_state *drbg = crypto_rng_ctx(tfm); in drbg_kcapi_reset() local
1779 drbg_uninstantiate(drbg); in drbg_kcapi_reset()
1784 return drbg_instantiate(drbg, &seed_string, coreref, pr); in drbg_kcapi_reset()
1789 return drbg_instantiate(drbg, NULL, coreref, pr); in drbg_kcapi_reset()
1790 drbg_set_testdata(drbg, data->test_data); in drbg_kcapi_reset()
1794 return drbg_instantiate(drbg, &seed_string, coreref, pr); in drbg_kcapi_reset()
1818 struct drbg_state *drbg = NULL; in drbg_healthcheck_sanity() local
1838 drbg = kzalloc(sizeof(struct drbg_state), GFP_KERNEL); in drbg_healthcheck_sanity()
1839 if (!drbg) in drbg_healthcheck_sanity()
1851 ret = drbg_instantiate(drbg, NULL, coreref, pr); in drbg_healthcheck_sanity()
1856 max_addtllen = drbg_max_addtl(drbg); in drbg_healthcheck_sanity()
1857 max_request_bytes = drbg_max_request_bytes(drbg); in drbg_healthcheck_sanity()
1860 len = drbg_generate(drbg, buf, OUTBUFLEN, &addtl); in drbg_healthcheck_sanity()
1863 len = drbg_generate(drbg, buf, (max_request_bytes + 1), NULL); in drbg_healthcheck_sanity()
1865 drbg_uninstantiate(drbg); in drbg_healthcheck_sanity()
1868 ret = drbg_instantiate(drbg, &addtl, coreref, pr); in drbg_healthcheck_sanity()
1876 drbg_uninstantiate(drbg); in drbg_healthcheck_sanity()
1878 kzfree(drbg); in drbg_healthcheck_sanity()