Searched refs:drbg (Results 1 - 5 of 5) sorted by relevance

/linux-4.1.27/crypto/
H A Ddrbg.c100 #include <crypto/drbg.h>
225 * @drbg DRBG handle
232 static bool drbg_fips_continuous_test(struct drbg_state *drbg, drbg_fips_continuous_test() argument
238 if (drbg->test_data) drbg_fips_continuous_test()
243 if (!drbg->fips_primed) { drbg_fips_continuous_test()
245 memcpy(drbg->prev, buf, drbg_blocklen(drbg)); drbg_fips_continuous_test()
246 drbg->fips_primed = true; drbg_fips_continuous_test()
250 ret = memcmp(drbg->prev, buf, drbg_blocklen(drbg)); drbg_fips_continuous_test()
253 memcpy(drbg->prev, buf, drbg_blocklen(drbg)); 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, drbg_ctr_bcc() argument
309 drbg_string_fill(&data, out, drbg_blocklen(drbg)); drbg_ctr_bcc()
318 if (drbg_blocklen(drbg) == cnt) { list_for_each_entry()
320 ret = drbg_kcapi_sym(drbg, key, out, &data); list_for_each_entry()
332 ret = drbg_kcapi_sym(drbg, key, out, &data);
343 * start: drbg->scratchpad
344 * length: drbg_statelen(drbg) + drbg_blocklen(drbg)
351 * start: drbg->scratchpad +
352 * drbg_statelen(drbg) + drbg_blocklen(drbg)
353 * length: drbg_statelen(drbg)
357 * start: df_data + drbg_statelen(drbg)
358 * length: drbg_blocklen(drbg)
360 * start: pad + drbg_blocklen(drbg)
361 * length: drbg_blocklen(drbg)
363 * start: iv + drbg_blocklen(drbg)
364 * length: drbg_satelen(drbg) + drbg_blocklen(drbg)
366 * on. BCC operates blockwise. drbg_statelen(drbg)
372 * Therefore, add drbg_blocklen(drbg) to cover all
377 static int drbg_ctr_df(struct drbg_state *drbg, drbg_ctr_df() argument
386 unsigned char *pad = df_data + drbg_statelen(drbg); drbg_ctr_df()
387 unsigned char *iv = pad + drbg_blocklen(drbg); drbg_ctr_df()
388 unsigned char *temp = iv + drbg_blocklen(drbg); drbg_ctr_df()
404 memset(pad, 0, drbg_blocklen(drbg)); drbg_ctr_df()
405 memset(iv, 0, drbg_blocklen(drbg)); drbg_ctr_df()
422 padlen = (inputlen + sizeof(L_N) + 1) % (drbg_blocklen(drbg)); drbg_ctr_df()
425 padlen = drbg_blocklen(drbg) - padlen; drbg_ctr_df()
435 drbg_string_fill(&S1, iv, drbg_blocklen(drbg)); drbg_ctr_df()
444 while (templen < (drbg_keylen(drbg) + (drbg_blocklen(drbg)))) { drbg_ctr_df()
452 ret = drbg_ctr_bcc(drbg, temp + templen, K, &bcc_list); drbg_ctr_df()
457 templen += drbg_blocklen(drbg); drbg_ctr_df()
461 X = temp + (drbg_keylen(drbg)); drbg_ctr_df()
462 drbg_string_fill(&cipherin, X, drbg_blocklen(drbg)); drbg_ctr_df()
474 ret = drbg_kcapi_sym(drbg, temp, X, &cipherin); drbg_ctr_df()
477 blocklen = (drbg_blocklen(drbg) < drbg_ctr_df()
479 drbg_blocklen(drbg) : drbg_ctr_df()
489 memset(iv, 0, drbg_blocklen(drbg)); drbg_ctr_df()
490 memset(temp, 0, drbg_statelen(drbg)); drbg_ctr_df()
491 memset(pad, 0, drbg_blocklen(drbg)); drbg_ctr_df()
510 static int drbg_ctr_update(struct drbg_state *drbg, struct list_head *seed, drbg_ctr_update() argument
515 unsigned char *temp = drbg->scratchpad; drbg_ctr_update()
516 unsigned char *df_data = drbg->scratchpad + drbg_statelen(drbg) + drbg_ctr_update()
517 drbg_blocklen(drbg); drbg_ctr_update()
523 memset(df_data, 0, drbg_statelen(drbg)); drbg_ctr_update()
527 ret = drbg_ctr_df(drbg, df_data, drbg_statelen(drbg), seed); drbg_ctr_update()
532 drbg_string_fill(&cipherin, drbg->V, drbg_blocklen(drbg)); drbg_ctr_update()
537 while (len < (drbg_statelen(drbg))) { drbg_ctr_update()
539 crypto_inc(drbg->V, drbg_blocklen(drbg)); drbg_ctr_update()
542 ret = drbg_kcapi_sym(drbg, drbg->C, temp + len, &cipherin); drbg_ctr_update()
546 len += drbg_blocklen(drbg); drbg_ctr_update()
552 for (len = 0; len < drbg_statelen(drbg); len++) { drbg_ctr_update()
558 memcpy(drbg->C, temp, drbg_keylen(drbg)); drbg_ctr_update()
560 memcpy(drbg->V, temp + drbg_keylen(drbg), drbg_blocklen(drbg)); drbg_ctr_update()
564 memset(temp, 0, drbg_statelen(drbg) + drbg_blocklen(drbg)); drbg_ctr_update()
566 memset(df_data, 0, drbg_statelen(drbg)); drbg_ctr_update()
575 static int drbg_ctr_generate(struct drbg_state *drbg, drbg_ctr_generate() argument
585 ret = drbg_ctr_update(drbg, addtl, 2); drbg_ctr_generate()
591 crypto_inc(drbg->V, drbg_blocklen(drbg)); drbg_ctr_generate()
592 drbg_string_fill(&data, drbg->V, drbg_blocklen(drbg)); drbg_ctr_generate()
596 ret = drbg_kcapi_sym(drbg, drbg->C, drbg->scratchpad, &data); drbg_ctr_generate()
601 outlen = (drbg_blocklen(drbg) < (buflen - len)) ? drbg_ctr_generate()
602 drbg_blocklen(drbg) : (buflen - len); drbg_ctr_generate()
603 if (!drbg_fips_continuous_test(drbg, drbg->scratchpad)) { drbg_ctr_generate()
605 crypto_inc(drbg->V, drbg_blocklen(drbg)); drbg_ctr_generate()
609 memcpy(buf + len, drbg->scratchpad, outlen); drbg_ctr_generate()
613 crypto_inc(drbg->V, drbg_blocklen(drbg)); drbg_ctr_generate()
617 ret = drbg_ctr_update(drbg, NULL, 3); drbg_ctr_generate()
622 memset(drbg->scratchpad, 0, drbg_blocklen(drbg)); 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, drbg_hmac_update() argument
668 memset(drbg->V, 1, drbg_statelen(drbg)); drbg_hmac_update()
670 drbg_string_fill(&seed1, drbg->V, drbg_statelen(drbg)); drbg_hmac_update()
679 drbg_string_fill(&vdata, drbg->V, drbg_statelen(drbg)); drbg_hmac_update()
688 ret = drbg_kcapi_hash(drbg, drbg->C, drbg->C, &seedlist); drbg_hmac_update()
693 ret = drbg_kcapi_hash(drbg, drbg->C, drbg->V, &vdatalist); drbg_hmac_update()
706 static int drbg_hmac_generate(struct drbg_state *drbg, drbg_hmac_generate() argument
718 ret = drbg_hmac_update(drbg, addtl, 1); drbg_hmac_generate()
723 drbg_string_fill(&data, drbg->V, drbg_statelen(drbg)); drbg_hmac_generate()
728 ret = drbg_kcapi_hash(drbg, drbg->C, drbg->V, &datalist); drbg_hmac_generate()
731 outlen = (drbg_blocklen(drbg) < (buflen - len)) ? drbg_hmac_generate()
732 drbg_blocklen(drbg) : (buflen - len); drbg_hmac_generate()
733 if (!drbg_fips_continuous_test(drbg, drbg->V)) drbg_hmac_generate()
737 memcpy(buf + len, drbg->V, outlen); drbg_hmac_generate()
743 ret = drbg_hmac_update(drbg, addtl, 1); drbg_hmac_generate()
745 ret = drbg_hmac_update(drbg, NULL, 1); drbg_hmac_generate()
811 * start: drbg->scratchpad
812 * length: drbg_statelen(drbg)
814 * start: drbg->scratchpad + drbg_statelen(drbg)
815 * length: drbg_blocklen(drbg)
823 static int drbg_hash_df(struct drbg_state *drbg, drbg_hash_df() argument
830 unsigned char *tmp = drbg->scratchpad + drbg_statelen(drbg); drbg_hash_df()
845 ret = drbg_kcapi_hash(drbg, NULL, tmp, entropylist); drbg_hash_df()
850 blocklen = (drbg_blocklen(drbg) < (outlen - len)) ? drbg_hash_df()
851 drbg_blocklen(drbg) : (outlen - len); drbg_hash_df()
857 memset(tmp, 0, drbg_blocklen(drbg)); drbg_hash_df()
862 static int drbg_hash_update(struct drbg_state *drbg, struct list_head *seed, drbg_hash_update() argument
869 unsigned char *V = drbg->scratchpad; drbg_hash_update()
877 memcpy(V, drbg->V, drbg_statelen(drbg)); drbg_hash_update()
880 drbg_string_fill(&data2, V, drbg_statelen(drbg)); drbg_hash_update()
886 ret = drbg_hash_df(drbg, drbg->V, drbg_statelen(drbg), &datalist); drbg_hash_update()
894 drbg_string_fill(&data2, drbg->V, drbg_statelen(drbg)); drbg_hash_update()
897 ret = drbg_hash_df(drbg, drbg->C, drbg_statelen(drbg), &datalist2); drbg_hash_update()
900 memset(drbg->scratchpad, 0, drbg_statelen(drbg)); drbg_hash_update()
905 static int drbg_hash_process_addtl(struct drbg_state *drbg, drbg_hash_process_addtl() argument
919 drbg_string_fill(&data2, drbg->V, drbg_statelen(drbg)); drbg_hash_process_addtl()
923 ret = drbg_kcapi_hash(drbg, NULL, drbg->scratchpad, &datalist); drbg_hash_process_addtl()
928 drbg_add_buf(drbg->V, drbg_statelen(drbg), drbg_hash_process_addtl()
929 drbg->scratchpad, drbg_blocklen(drbg)); drbg_hash_process_addtl()
932 memset(drbg->scratchpad, 0, drbg_blocklen(drbg)); drbg_hash_process_addtl()
937 static int drbg_hash_hashgen(struct drbg_state *drbg, drbg_hash_hashgen() argument
943 unsigned char *src = drbg->scratchpad; drbg_hash_hashgen()
944 unsigned char *dst = drbg->scratchpad + drbg_statelen(drbg); drbg_hash_hashgen()
949 memcpy(src, drbg->V, drbg_statelen(drbg)); drbg_hash_hashgen()
951 drbg_string_fill(&data, src, drbg_statelen(drbg)); drbg_hash_hashgen()
956 ret = drbg_kcapi_hash(drbg, NULL, dst, &datalist); drbg_hash_hashgen()
961 outlen = (drbg_blocklen(drbg) < (buflen - len)) ? drbg_hash_hashgen()
962 drbg_blocklen(drbg) : (buflen - len); drbg_hash_hashgen()
963 if (!drbg_fips_continuous_test(drbg, dst)) { drbg_hash_hashgen()
964 crypto_inc(src, drbg_statelen(drbg)); drbg_hash_hashgen()
972 crypto_inc(src, drbg_statelen(drbg)); drbg_hash_hashgen()
976 memset(drbg->scratchpad, 0, drbg_hash_hashgen()
977 (drbg_statelen(drbg) + drbg_blocklen(drbg))); drbg_hash_hashgen()
982 static int drbg_hash_generate(struct drbg_state *drbg, drbg_hash_generate() argument
997 ret = drbg_hash_process_addtl(drbg, addtl); drbg_hash_generate()
1001 len = drbg_hash_hashgen(drbg, buf, buflen); drbg_hash_generate()
1007 drbg_string_fill(&data2, drbg->V, drbg_statelen(drbg)); drbg_hash_generate()
1009 ret = drbg_kcapi_hash(drbg, NULL, drbg->scratchpad, &datalist); drbg_hash_generate()
1016 drbg_add_buf(drbg->V, drbg_statelen(drbg), drbg_hash_generate()
1017 drbg->scratchpad, drbg_blocklen(drbg)); drbg_hash_generate()
1018 drbg_add_buf(drbg->V, drbg_statelen(drbg), drbg_hash_generate()
1019 drbg->C, drbg_statelen(drbg)); drbg_hash_generate()
1020 u.req_int = cpu_to_be64(drbg->reseed_ctr); drbg_hash_generate()
1021 drbg_add_buf(drbg->V, drbg_statelen(drbg), u.req, 8); drbg_hash_generate()
1024 memset(drbg->scratchpad, 0, drbg_blocklen(drbg)); drbg_hash_generate()
1047 * @drbg: DRBG state struct
1055 static int drbg_seed(struct drbg_state *drbg, struct drbg_string *pers, drbg_seed() argument
1065 if (pers && pers->len > (drbg_max_addtl(drbg))) { drbg_seed()
1071 if (drbg->test_data && drbg->test_data->testentropy) { drbg_seed()
1072 drbg_string_fill(&data1, drbg->test_data->testentropy->buf, drbg_seed()
1073 drbg->test_data->testentropy->len); drbg_seed()
1084 entropylen = drbg_sec_strength(drbg->core->flags); drbg_seed()
1110 memset(drbg->V, 0, drbg_statelen(drbg)); drbg_seed()
1111 memset(drbg->C, 0, drbg_statelen(drbg)); drbg_seed()
1114 ret = drbg->d_ops->update(drbg, &seedlist, reseed); drbg_seed()
1118 drbg->seeded = true; drbg_seed()
1120 drbg->reseed_ctr = 1; drbg_seed()
1128 static inline void drbg_dealloc_state(struct drbg_state *drbg) drbg_dealloc_state() argument
1130 if (!drbg) drbg_dealloc_state()
1132 kzfree(drbg->V); drbg_dealloc_state()
1133 drbg->V = NULL; drbg_dealloc_state()
1134 kzfree(drbg->C); drbg_dealloc_state()
1135 drbg->C = NULL; drbg_dealloc_state()
1136 kzfree(drbg->scratchpad); drbg_dealloc_state()
1137 drbg->scratchpad = NULL; drbg_dealloc_state()
1138 drbg->reseed_ctr = 0; drbg_dealloc_state()
1140 kzfree(drbg->prev); drbg_dealloc_state()
1141 drbg->prev = NULL; drbg_dealloc_state()
1142 drbg->fips_primed = false; drbg_dealloc_state()
1150 static inline int drbg_alloc_state(struct drbg_state *drbg) drbg_alloc_state() argument
1155 drbg->V = kmalloc(drbg_statelen(drbg), GFP_KERNEL); drbg_alloc_state()
1156 if (!drbg->V) drbg_alloc_state()
1158 drbg->C = kmalloc(drbg_statelen(drbg), GFP_KERNEL); drbg_alloc_state()
1159 if (!drbg->C) drbg_alloc_state()
1162 drbg->prev = kmalloc(drbg_blocklen(drbg), GFP_KERNEL); drbg_alloc_state()
1163 if (!drbg->prev) drbg_alloc_state()
1165 drbg->fips_primed = false; drbg_alloc_state()
1168 if (drbg->core->flags & DRBG_HMAC) drbg_alloc_state()
1170 else if (drbg->core->flags & DRBG_CTR) drbg_alloc_state()
1171 sb_size = drbg_statelen(drbg) + drbg_blocklen(drbg) + /* temp */ drbg_alloc_state()
1172 drbg_statelen(drbg) + /* df_data */ drbg_alloc_state()
1173 drbg_blocklen(drbg) + /* pad */ drbg_alloc_state()
1174 drbg_blocklen(drbg) + /* iv */ drbg_alloc_state()
1175 drbg_statelen(drbg) + drbg_blocklen(drbg); /* temp */ drbg_alloc_state()
1177 sb_size = drbg_statelen(drbg) + drbg_blocklen(drbg); drbg_alloc_state()
1180 drbg->scratchpad = kzalloc(sb_size, GFP_KERNEL); drbg_alloc_state()
1181 if (!drbg->scratchpad) drbg_alloc_state()
1184 spin_lock_init(&drbg->drbg_lock); drbg_alloc_state()
1188 drbg_dealloc_state(drbg); drbg_alloc_state()
1195 * the updated state of the shadow copy into original drbg state. This way,
1196 * only the read and write operations of the original drbg state must be
1222 static int drbg_make_shadow(struct drbg_state *drbg, struct drbg_state **shadow) drbg_make_shadow() argument
1232 tmp->core = drbg->core; drbg_make_shadow()
1233 tmp->d_ops = drbg->d_ops; drbg_make_shadow()
1239 spin_lock_bh(&drbg->drbg_lock); drbg_make_shadow()
1240 drbg_copy_drbg(drbg, tmp); drbg_make_shadow()
1242 tmp->test_data = drbg->test_data; drbg_make_shadow()
1243 spin_unlock_bh(&drbg->drbg_lock); drbg_make_shadow()
1252 static void drbg_restore_shadow(struct drbg_state *drbg, drbg_restore_shadow() argument
1257 spin_lock_bh(&drbg->drbg_lock); drbg_restore_shadow()
1258 drbg_copy_drbg(tmp, drbg); drbg_restore_shadow()
1259 spin_unlock_bh(&drbg->drbg_lock); drbg_restore_shadow()
1273 * @drbg DRBG state handle
1285 static int drbg_generate(struct drbg_state *drbg, drbg_generate() argument
1307 len = drbg_make_shadow(drbg, &shadow); drbg_generate()
1346 drbg->pr ? "true" : "false", drbg_generate()
1347 drbg->seeded ? "seeded" : "unseeded"); drbg_generate()
1363 if (!drbg->test_data) { drbg_generate()
1397 if (drbg->core->flags & DRBG_HMAC) drbg_generate()
1400 else if (drbg->core->flags & DRBG_CTR) drbg_generate()
1412 drbg_uninstantiate(drbg); drbg_generate()
1429 drbg_restore_shadow(drbg, &shadow); drbg_generate()
1441 static int drbg_generate_long(struct drbg_state *drbg, drbg_generate_long() argument
1450 slice = ((buflen - len) / drbg_max_request_bytes(drbg)); drbg_generate_long()
1451 chunk = slice ? drbg_max_request_bytes(drbg) : (buflen - len); drbg_generate_long()
1452 tmplen = drbg_generate(drbg, buf + len, chunk, addtl); drbg_generate_long()
1465 * @drbg memory of state -- if NULL, new memory is allocated
1477 static int drbg_instantiate(struct drbg_state *drbg, struct drbg_string *pers, drbg_instantiate() argument
1484 drbg->core = &drbg_cores[coreref]; drbg_instantiate()
1485 drbg->pr = pr; drbg_instantiate()
1486 drbg->seeded = false; drbg_instantiate()
1487 switch (drbg->core->flags & DRBG_TYPE_MASK) { drbg_instantiate()
1490 drbg->d_ops = &drbg_hmac_ops; drbg_instantiate()
1495 drbg->d_ops = &drbg_hash_ops; drbg_instantiate()
1500 drbg->d_ops = &drbg_ctr_ops; drbg_instantiate()
1511 * and the flag is copied into drbg->flags -- drbg_instantiate()
1517 ret = drbg_alloc_state(drbg); drbg_instantiate()
1522 if (drbg->d_ops->crypto_init(drbg)) drbg_instantiate()
1524 ret = drbg_seed(drbg, pers, false); drbg_instantiate()
1525 drbg->d_ops->crypto_fini(drbg); drbg_instantiate()
1532 drbg_dealloc_state(drbg); drbg_instantiate()
1540 * @drbg DRBG state handle
1545 static int drbg_uninstantiate(struct drbg_state *drbg) drbg_uninstantiate() argument
1547 spin_lock_bh(&drbg->drbg_lock); drbg_uninstantiate()
1548 drbg_dealloc_state(drbg); drbg_uninstantiate()
1550 spin_unlock_bh(&drbg->drbg_lock); drbg_uninstantiate()
1557 * @drbg DRBG state handle
1560 static inline void drbg_set_testdata(struct drbg_state *drbg, drbg_set_testdata() argument
1565 spin_lock_bh(&drbg->drbg_lock); drbg_set_testdata()
1566 drbg->test_data = test_data; drbg_set_testdata()
1567 spin_unlock_bh(&drbg->drbg_lock); drbg_set_testdata()
1580 static int drbg_init_hash_kernel(struct drbg_state *drbg) drbg_init_hash_kernel() argument
1585 tfm = crypto_alloc_shash(drbg->core->backend_cra_name, 0, 0); drbg_init_hash_kernel()
1590 BUG_ON(drbg_blocklen(drbg) != crypto_shash_digestsize(tfm)); drbg_init_hash_kernel()
1600 drbg->priv_data = sdesc; drbg_init_hash_kernel()
1604 static int drbg_fini_hash_kernel(struct drbg_state *drbg) drbg_fini_hash_kernel() argument
1606 struct sdesc *sdesc = (struct sdesc *)drbg->priv_data; drbg_fini_hash_kernel()
1611 drbg->priv_data = NULL; drbg_fini_hash_kernel()
1615 static int drbg_kcapi_hash(struct drbg_state *drbg, const unsigned char *key, drbg_kcapi_hash() argument
1618 struct sdesc *sdesc = (struct sdesc *)drbg->priv_data; drbg_kcapi_hash()
1622 crypto_shash_setkey(sdesc->shash.tfm, key, drbg_statelen(drbg)); drbg_kcapi_hash()
1631 static int drbg_init_sym_kernel(struct drbg_state *drbg) drbg_init_sym_kernel() argument
1636 tfm = crypto_alloc_cipher(drbg->core->backend_cra_name, 0, 0); drbg_init_sym_kernel()
1641 BUG_ON(drbg_blocklen(drbg) != crypto_cipher_blocksize(tfm)); drbg_init_sym_kernel()
1642 drbg->priv_data = tfm; drbg_init_sym_kernel()
1646 static int drbg_fini_sym_kernel(struct drbg_state *drbg) drbg_fini_sym_kernel() argument
1649 (struct crypto_cipher *)drbg->priv_data; drbg_fini_sym_kernel()
1652 drbg->priv_data = NULL; drbg_fini_sym_kernel()
1656 static int drbg_kcapi_sym(struct drbg_state *drbg, const unsigned char *key, drbg_kcapi_sym() argument
1660 (struct crypto_cipher *)drbg->priv_data; drbg_kcapi_sym()
1662 crypto_cipher_setkey(tfm, key, (drbg_keylen(drbg))); drbg_kcapi_sym()
1664 BUG_ON(in->len < drbg_blocklen(drbg)); drbg_kcapi_sym()
1716 struct drbg_state *drbg = crypto_tfm_ctx(tfm); drbg_kcapi_init() local
1725 return drbg_instantiate(drbg, NULL, coreref, pr); drbg_kcapi_init()
1748 struct drbg_state *drbg = crypto_rng_ctx(tfm); drbg_kcapi_random() local
1750 return drbg_generate_long(drbg, rdata, dlen, NULL); drbg_kcapi_random()
1757 drbg_set_testdata(drbg, data->test_data); drbg_kcapi_random()
1760 return drbg_generate_long(drbg, data->outbuf, data->outlen, drbg_kcapi_random()
1773 struct drbg_state *drbg = crypto_rng_ctx(tfm); drbg_kcapi_reset() local
1779 drbg_uninstantiate(drbg); drbg_kcapi_reset()
1784 return drbg_instantiate(drbg, &seed_string, coreref, pr); drbg_kcapi_reset()
1789 return drbg_instantiate(drbg, NULL, coreref, pr); drbg_kcapi_reset()
1790 drbg_set_testdata(drbg, data->test_data); drbg_kcapi_reset()
1794 return drbg_instantiate(drbg, &seed_string, coreref, pr); drbg_kcapi_reset()
1818 struct drbg_state *drbg = NULL; drbg_healthcheck_sanity() local
1838 drbg = kzalloc(sizeof(struct drbg_state), GFP_KERNEL); drbg_healthcheck_sanity()
1839 if (!drbg) drbg_healthcheck_sanity()
1851 ret = drbg_instantiate(drbg, NULL, coreref, pr); drbg_healthcheck_sanity()
1856 max_addtllen = drbg_max_addtl(drbg); drbg_healthcheck_sanity()
1857 max_request_bytes = drbg_max_request_bytes(drbg); drbg_healthcheck_sanity()
1860 len = drbg_generate(drbg, buf, OUTBUFLEN, &addtl); drbg_healthcheck_sanity()
1863 len = drbg_generate(drbg, buf, (max_request_bytes + 1), NULL); drbg_healthcheck_sanity()
1865 drbg_uninstantiate(drbg); drbg_healthcheck_sanity()
1868 ret = drbg_instantiate(drbg, &addtl, coreref, pr); drbg_healthcheck_sanity()
1876 drbg_uninstantiate(drbg); drbg_healthcheck_sanity()
1878 kzfree(drbg); drbg_healthcheck_sanity()
H A DMakefile96 obj-$(CONFIG_CRYPTO_DRBG) += drbg.o
H A Dtestmgr.c30 #include <crypto/drbg.h>
130 struct drbg_test_suite drbg; member in union:alg_test_desc::__anon3263
1738 printk(KERN_ERR "alg: drbg: could not allocate DRNG handle for " drbg_cavs_test()
1749 printk(KERN_ERR "alg: drbg: Failed to reset rng\n"); drbg_cavs_test()
1763 printk(KERN_ERR "alg: drbg: could not obtain random data for " drbg_cavs_test()
1778 printk(KERN_ERR "alg: drbg: could not obtain random data for " drbg_cavs_test()
1798 struct drbg_testvec *template = desc->suite.drbg.vecs; alg_test_drbg()
1799 unsigned int tcount = desc->suite.drbg.count; alg_test_drbg()
1807 printk(KERN_ERR "alg: drbg: Test %d failed for %s\n", alg_test_drbg()
2564 .drbg = {
2574 .drbg = {
2584 .drbg = {
2602 .drbg = {
2626 .drbg = {
2645 .drbg = {
2668 .drbg = {
2691 .drbg = {
H A Dtestmgr.h20804 * http://csrc.nist.gov/groups/STM/cavp/documents/drbg/drbgtestvectors.zip
21244 * http://csrc.nist.gov/groups/STM/cavp/documents/drbg/drbgtestvectors.zip
/linux-4.1.27/include/crypto/
H A Ddrbg.h92 int (*update)(struct drbg_state *drbg, struct list_head *seed,
94 int (*generate)(struct drbg_state *drbg,
97 int (*crypto_init)(struct drbg_state *drbg);
98 int (*crypto_fini)(struct drbg_state *drbg);
127 static inline __u8 drbg_statelen(struct drbg_state *drbg) drbg_statelen() argument
129 if (drbg && drbg->core) drbg_statelen()
130 return drbg->core->statelen; drbg_statelen()
134 static inline __u8 drbg_blocklen(struct drbg_state *drbg) drbg_blocklen() argument
136 if (drbg && drbg->core) drbg_blocklen()
137 return drbg->core->blocklen_bytes; drbg_blocklen()
141 static inline __u8 drbg_keylen(struct drbg_state *drbg) drbg_keylen() argument
143 if (drbg && drbg->core) drbg_keylen()
144 return (drbg->core->statelen - drbg->core->blocklen_bytes); drbg_keylen()
148 static inline size_t drbg_max_request_bytes(struct drbg_state *drbg) drbg_max_request_bytes() argument
154 static inline size_t drbg_max_addtl(struct drbg_state *drbg) drbg_max_addtl() argument
169 static inline size_t drbg_max_requests(struct drbg_state *drbg) drbg_max_requests() argument

Completed in 264 milliseconds