diff options
author | jsing <> | 2014-10-18 16:13:16 +0000 |
---|---|---|
committer | jsing <> | 2014-10-18 16:13:16 +0000 |
commit | c7ab256a26b40c83b42c202488c01636a208c01c (patch) | |
tree | 0ec0407532b236ff11b9134f214f8db715d84e63 /src/lib/libssl/d1_pkt.c | |
parent | dd127b6b5a62ebd88f0cbb2e6d7d749d20363a16 (diff) | |
download | openbsd-c7ab256a26b40c83b42c202488c01636a208c01c.tar.gz openbsd-c7ab256a26b40c83b42c202488c01636a208c01c.tar.bz2 openbsd-c7ab256a26b40c83b42c202488c01636a208c01c.zip |
Use arc4random_buf() instead of RAND_bytes() or RAND_pseudo_bytes().
arc4random provides high quality pseudo-random numbers, hence there is no
need to differentiate between "strong" and "pseudo". Furthermore, the
arc4random_buf() function is guaranteed to succeed, which avoids the need
to check for and handle failure, simplifying the code.
It is worth noting that a number of the replaced RAND_bytes() and
RAND_pseudo_bytes() calls were missing return value checks and these
functions can fail for a number of reasons (at least in OpenSSL -
thankfully they were converted to wrappers around arc4random_buf() some
time ago in LibreSSL).
ok beck@ deraadt@ miod@
Diffstat (limited to 'src/lib/libssl/d1_pkt.c')
-rw-r--r-- | src/lib/libssl/d1_pkt.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/src/lib/libssl/d1_pkt.c b/src/lib/libssl/d1_pkt.c index 7b0d67bf15..6f3ee26217 100644 --- a/src/lib/libssl/d1_pkt.c +++ b/src/lib/libssl/d1_pkt.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: d1_pkt.c,v 1.34 2014/08/07 20:02:23 miod Exp $ */ | 1 | /* $OpenBSD: d1_pkt.c,v 1.35 2014/10/18 16:13:16 jsing Exp $ */ |
2 | /* | 2 | /* |
3 | * DTLS implementation written by Nagendra Modadugu | 3 | * DTLS implementation written by Nagendra Modadugu |
4 | * (nagendra@cs.stanford.edu) for the OpenSSL project 2005. | 4 | * (nagendra@cs.stanford.edu) for the OpenSSL project 2005. |
@@ -119,7 +119,6 @@ | |||
119 | #include "ssl_locl.h" | 119 | #include "ssl_locl.h" |
120 | #include <openssl/evp.h> | 120 | #include <openssl/evp.h> |
121 | #include <openssl/buffer.h> | 121 | #include <openssl/buffer.h> |
122 | #include <openssl/rand.h> | ||
123 | 122 | ||
124 | #include "pqueue.h" | 123 | #include "pqueue.h" |
125 | 124 | ||
@@ -1380,7 +1379,7 @@ do_dtls1_write(SSL *s, int type, const unsigned char *buf, unsigned int len) | |||
1380 | /* ssl3_enc can only have an error on read */ | 1379 | /* ssl3_enc can only have an error on read */ |
1381 | if (bs) /* bs != 0 in case of CBC */ | 1380 | if (bs) /* bs != 0 in case of CBC */ |
1382 | { | 1381 | { |
1383 | RAND_pseudo_bytes(p, bs); | 1382 | arc4random_buf(p, bs); |
1384 | /* master IV and last CBC residue stand for | 1383 | /* master IV and last CBC residue stand for |
1385 | * the rest of randomness */ | 1384 | * the rest of randomness */ |
1386 | wr->length += bs; | 1385 | wr->length += bs; |