[BACK]Return to prng.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / arch / amd64 / stand / prekern

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/sys/arch/amd64/stand/prekern/prng.c between version 1.3 and 1.3.6.1

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");
 }  }
   
 /*  /*
Line 164  prng_init(void)
Line 172  prng_init(void)
                 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);

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.3.6.1

CVSweb <webmaster@jp.NetBSD.org>