]> git.ipfire.org Git - thirdparty/ldns.git/commitdiff
random init function
authorMiek Gieben <miekg@NLnetLabs.nl>
Thu, 1 Sep 2005 14:28:29 +0000 (14:28 +0000)
committerMiek Gieben <miekg@NLnetLabs.nl>
Thu, 1 Sep 2005 14:28:29 +0000 (14:28 +0000)
dnssec.c
keygen.c
ldns/dnssec.h

index 7340ff02bffb6a53df22bbe41a461a729d166bf8..3a63984cf7b14786b79e0f2bd8e6d1005f737ae4 100644 (file)
--- a/dnssec.c
+++ b/dnssec.c
@@ -1579,3 +1579,28 @@ ldns_zone_sign(ldns_zone *zone, ldns_key_list *key_list, ldns_key_list *key_sign
        
 }
 
+/* Init the random source
+ * apps must call this 
+ */
+ldns_status ldns_init_random(uint16_t num) {
+       FILE *rand;
+       uint8_t *buf;
+
+       buf = LDNS_XMALLOC(uint8_t, num);
+       if (!buf) {
+               return LDNS_STATUS_ERR;;
+       }
+
+       if ((rand = fopen("r", "/dev/random")) == NULL) {
+               LDNS_FREE(buf);
+               return LDNS_STATUS_ERR;
+       }
+       if ((fread(buf, sizeof(uint8_t), (size_t)num, rand) != num)) {
+               LDNS_FREE(buf);
+               fclose(rand);
+               return LDNS_STATUS_ERR;
+       }
+       LDNS_FREE(buf);
+       RAND_seed((const void *)buf, (int)num);
+       return LDNS_STATUS_OK;
+}
index 0559b4abd44bb401205d37f915601aa4eaac8d20..9daa0515740b62260d3c3538a7e61cdf750b4185 100644 (file)
--- a/keygen.c
+++ b/keygen.c
@@ -99,6 +99,8 @@ main(int argc, char *argv[])
                exit(EXIT_FAILURE);
        } 
 
+       ldns_random_init(1000); /* init the random engine */
+
        /* create an rdf from the domain name */
        domain = ldns_dname_new_frm_str(argv[0]);
 
index eea0f723585dd3fa7edb4499c9a7651215cf2b19..f4a2c60c42e45715057e2da8dd5d7938c2133394 100644 (file)
@@ -181,5 +181,6 @@ ldns_status ldns_pkt_verify(ldns_pkt *p, ldns_rr_type t, ldns_rdf *o, ldns_rr_li
  */
 ldns_zone *ldns_zone_sign(ldns_zone *zone, ldns_key_list *key_list, ldns_key_list *key_signing_key_list);
  
+ldns_status ldns_init_random(uint16_t num);
 
 #endif /* _LDNS_DNSSEC_H_ */