version 1.3, 2020/05/21 08:20:25 |
version 1.3.6.1, 2021/05/13 00:47:22 |
Line 84 prng_get_entropy_file(SHA512_CTX *ctx) |
|
Line 84 prng_get_entropy_file(SHA512_CTX *ctx) |
|
uint8_t digest[SHA1_DIGEST_LENGTH]; |
uint8_t digest[SHA1_DIGEST_LENGTH]; |
rndsave_t *rndsave; |
rndsave_t *rndsave; |
SHA1_CTX sig; |
SHA1_CTX sig; |
|
size_t count = 0; |
|
|
biml = |
biml = |
(struct btinfo_modulelist *)prng_lookup_bootinfo(BTINFO_MODULELIST); |
(struct btinfo_modulelist *)prng_lookup_bootinfo(BTINFO_MODULELIST); |
Line 98 prng_get_entropy_file(SHA512_CTX *ctx) |
|
Line 99 prng_get_entropy_file(SHA512_CTX *ctx) |
|
continue; |
continue; |
} |
} |
if (bi->len != sizeof(rndsave_t)) { |
if (bi->len != sizeof(rndsave_t)) { |
fatal("rndsave_t size mismatch"); |
print_state(STATE_WARNING, |
|
"size mismatch in entropy file"); |
|
continue; |
} |
} |
rndsave = (rndsave_t *)(vaddr_t)bi->base; |
rndsave = (rndsave_t *)(vaddr_t)bi->base; |
|
|
Line 109 prng_get_entropy_file(SHA512_CTX *ctx) |
|
Line 112 prng_get_entropy_file(SHA512_CTX *ctx) |
|
SHA1Update(&sig, rndsave->data, sizeof(rndsave->data)); |
SHA1Update(&sig, rndsave->data, sizeof(rndsave->data)); |
SHA1Final(digest, &sig); |
SHA1Final(digest, &sig); |
if (memcmp(digest, rndsave->digest, sizeof(digest))) { |
if (memcmp(digest, rndsave->digest, sizeof(digest))) { |
fatal("bad SHA1 checksum"); |
print_state(STATE_WARNING, |
|
"bad SHA1 checksum in entropy file"); |
|
continue; |
} |
} |
|
|
SHA512_Update(ctx, rndsave->data, sizeof(rndsave->data)); |
SHA512_Update(ctx, rndsave->data, sizeof(rndsave->data)); |
|
count++; |
} |
} |
|
if (count == 0) |
|
print_state(STATE_WARNING, "No entropy file could be loaded"); |
} |
} |
|
|
/* |
/* |
|
|
cpuid(0x01, 0x00, descs); |
cpuid(0x01, 0x00, descs); |
has_rdrand = (descs[2] & CPUID2_RDRAND) != 0; |
has_rdrand = (descs[2] & CPUID2_RDRAND) != 0; |
} |
} |
|
if (!has_rdseed && !has_rdrand) |
|
print_state(STATE_WARNING, "No CPU entropy feature detected"); |
|
|
SHA512_Init(&ctx); |
SHA512_Init(&ctx); |
prng_get_entropy_file(&ctx); |
prng_get_entropy_file(&ctx); |