summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortedu <>2014-04-18 13:13:50 +0000
committertedu <>2014-04-18 13:13:50 +0000
commit8a0112534d8764e81ead87d96bc29f9f7087f881 (patch)
tree3f62b1628accfdce9ddeab64a2c1094f94641297
parentc28759e489ff78d60b33248f7658689125bd0492 (diff)
downloadopenbsd-8a0112534d8764e81ead87d96bc29f9f7087f881.tar.gz
openbsd-8a0112534d8764e81ead87d96bc29f9f7087f881.tar.bz2
openbsd-8a0112534d8764e81ead87d96bc29f9f7087f881.zip
egd support is too dangerous to leave where somebody might find it.
ok deraadt.
-rw-r--r--src/lib/libcrypto/crypto/Makefile4
-rw-r--r--src/lib/libcrypto/rand/rand.h3
-rw-r--r--src/lib/libcrypto/rand/rand_egd.c110
-rw-r--r--src/lib/libssl/src/apps/app_rand.c18
-rw-r--r--src/lib/libssl/src/crypto/rand/rand.h3
-rw-r--r--src/lib/libssl/src/crypto/rand/rand_egd.c110
6 files changed, 4 insertions, 244 deletions
diff --git a/src/lib/libcrypto/crypto/Makefile b/src/lib/libcrypto/crypto/Makefile
index 3063963569..2b642dc25d 100644
--- a/src/lib/libcrypto/crypto/Makefile
+++ b/src/lib/libcrypto/crypto/Makefile
@@ -1,4 +1,4 @@
1# $OpenBSD: Makefile,v 1.22 2014/04/17 22:06:19 miod Exp $ 1# $OpenBSD: Makefile,v 1.23 2014/04/18 13:13:50 tedu Exp $
2 2
3LIB= crypto 3LIB= crypto
4 4
@@ -207,7 +207,7 @@ SRCS+= pk7_mime.c bio_pk7.c
207SRCS+= pqueue.c 207SRCS+= pqueue.c
208 208
209# rand/ 209# rand/
210SRCS+= rc4_rand.c randfile.c rand_lib.c rand_err.c rand_egd.c 210SRCS+= rc4_rand.c randfile.c rand_lib.c rand_err.c
211SRCS+= rand_unix.c 211SRCS+= rand_unix.c
212 212
213# rc2/ 213# rc2/
diff --git a/src/lib/libcrypto/rand/rand.h b/src/lib/libcrypto/rand/rand.h
index e65b4b2e35..07de8cb7c4 100644
--- a/src/lib/libcrypto/rand/rand.h
+++ b/src/lib/libcrypto/rand/rand.h
@@ -95,9 +95,6 @@ int RAND_load_file(const char *file,long max_bytes);
95int RAND_write_file(const char *file); 95int RAND_write_file(const char *file);
96const char *RAND_file_name(char *file,size_t num); 96const char *RAND_file_name(char *file,size_t num);
97int RAND_status(void); 97int RAND_status(void);
98int RAND_query_egd_bytes(const char *path, unsigned char *buf, int bytes);
99int RAND_egd(const char *path);
100int RAND_egd_bytes(const char *path,int bytes);
101int RAND_poll(void); 98int RAND_poll(void);
102 99
103/* BEGIN ERROR CODES */ 100/* BEGIN ERROR CODES */
diff --git a/src/lib/libcrypto/rand/rand_egd.c b/src/lib/libcrypto/rand/rand_egd.c
deleted file mode 100644
index a78aa90c46..0000000000
--- a/src/lib/libcrypto/rand/rand_egd.c
+++ /dev/null
@@ -1,110 +0,0 @@
1/* crypto/rand/rand_egd.c */
2/* Written by Ulf Moeller and Lutz Jaenicke for the OpenSSL project. */
3/* ====================================================================
4 * Copyright (c) 1998-2000 The OpenSSL Project. All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 *
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 *
13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in
15 * the documentation and/or other materials provided with the
16 * distribution.
17 *
18 * 3. All advertising materials mentioning features or use of this
19 * software must display the following acknowledgment:
20 * "This product includes software developed by the OpenSSL Project
21 * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
22 *
23 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
24 * endorse or promote products derived from this software without
25 * prior written permission. For written permission, please contact
26 * openssl-core@openssl.org.
27 *
28 * 5. Products derived from this software may not be called "OpenSSL"
29 * nor may "OpenSSL" appear in their names without prior written
30 * permission of the OpenSSL Project.
31 *
32 * 6. Redistributions of any form whatsoever must retain the following
33 * acknowledgment:
34 * "This product includes software developed by the OpenSSL Project
35 * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
36 *
37 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
38 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
39 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
40 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
41 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
42 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
43 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
44 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
45 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
46 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
47 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
48 * OF THE POSSIBILITY OF SUCH DAMAGE.
49 * ====================================================================
50 *
51 * This product includes cryptographic software written by Eric Young
52 * (eay@cryptsoft.com). This product includes software written by Tim
53 * Hudson (tjh@cryptsoft.com).
54 *
55 */
56
57#include <openssl/e_os2.h>
58#include <openssl/rand.h>
59#include <openssl/buffer.h>
60
61/*
62 * Query the EGD <URL: http://www.lothar.com/tech/crypto/>.
63 *
64 * This module supplies three routines:
65 *
66 * RAND_query_egd_bytes(path, buf, bytes)
67 * will actually query "bytes" bytes of entropy form the egd-socket located
68 * at path and will write them to buf (if supplied) or will directly feed
69 * it to RAND_seed() if buf==NULL.
70 * The number of bytes is not limited by the maximum chunk size of EGD,
71 * which is 255 bytes. If more than 255 bytes are wanted, several chunks
72 * of entropy bytes are requested. The connection is left open until the
73 * query is competed.
74 * RAND_query_egd_bytes() returns with
75 * -1 if an error occured during connection or communication.
76 * num the number of bytes read from the EGD socket. This number is either
77 * the number of bytes requested or smaller, if the EGD pool is
78 * drained and the daemon signals that the pool is empty.
79 * This routine does not touch any RAND_status(). This is necessary, since
80 * PRNG functions may call it during initialization.
81 *
82 * RAND_egd_bytes(path, bytes) will query "bytes" bytes and have them
83 * used to seed the PRNG.
84 * RAND_egd_bytes() is a wrapper for RAND_query_egd_bytes() with buf=NULL.
85 * Unlike RAND_query_egd_bytes(), RAND_status() is used to test the
86 * seed status so that the return value can reflect the seed state:
87 * -1 if an error occured during connection or communication _or_
88 * if the PRNG has still not received the required seeding.
89 * num the number of bytes read from the EGD socket. This number is either
90 * the number of bytes requested or smaller, if the EGD pool is
91 * drained and the daemon signals that the pool is empty.
92 *
93 * RAND_egd(path) will query 255 bytes and use the bytes retreived to seed
94 * the PRNG.
95 * RAND_egd() is a wrapper for RAND_egd_bytes() with numbytes=255.
96 */
97
98int RAND_query_egd_bytes(const char *path, unsigned char *buf, int bytes)
99 {
100 return(-1);
101 }
102int RAND_egd(const char *path)
103 {
104 return(-1);
105 }
106
107int RAND_egd_bytes(const char *path,int bytes)
108 {
109 return(-1);
110 }
diff --git a/src/lib/libssl/src/apps/app_rand.c b/src/lib/libssl/src/apps/app_rand.c
index 0d5b77e1bd..d6cdd6e01b 100644
--- a/src/lib/libssl/src/apps/app_rand.c
+++ b/src/lib/libssl/src/apps/app_rand.c
@@ -117,7 +117,6 @@
117 117
118 118
119static int seeded = 0; 119static int seeded = 0;
120static int egdsocket = 0;
121 120
122int 121int
123app_RAND_load_file(const char *file, BIO * bio_e, int dont_warn) 122app_RAND_load_file(const char *file, BIO * bio_e, int dont_warn)
@@ -128,14 +127,6 @@ app_RAND_load_file(const char *file, BIO * bio_e, int dont_warn)
128 127
129 if (file == NULL) 128 if (file == NULL)
130 file = RAND_file_name(buffer, sizeof buffer); 129 file = RAND_file_name(buffer, sizeof buffer);
131 else if (RAND_egd(file) > 0) {
132 /*
133 * we try if the given filename is an EGD socket. if it is,
134 * we don't write anything back to the file.
135 */
136 egdsocket = 1;
137 return 1;
138 }
139 if (file == NULL || !RAND_load_file(file, -1)) { 130 if (file == NULL || !RAND_load_file(file, -1)) {
140 if (RAND_status() == 0) { 131 if (RAND_status() == 0) {
141 if (!dont_warn) { 132 if (!dont_warn) {
@@ -162,7 +153,6 @@ app_RAND_load_files(char *name)
162 char *p, *n; 153 char *p, *n;
163 int last; 154 int last;
164 long tot = 0; 155 long tot = 0;
165 int egd;
166 156
167 for (;;) { 157 for (;;) {
168 last = 0; 158 last = 0;
@@ -176,11 +166,7 @@ app_RAND_load_files(char *name)
176 if (*n == '\0') 166 if (*n == '\0')
177 break; 167 break;
178 168
179 egd = RAND_egd(n); 169 tot += RAND_load_file(n, -1);
180 if (egd > 0)
181 tot += egd;
182 else
183 tot += RAND_load_file(n, -1);
184 if (last) 170 if (last)
185 break; 171 break;
186 } 172 }
@@ -194,7 +180,7 @@ app_RAND_write_file(const char *file, BIO * bio_e)
194{ 180{
195 char buffer[200]; 181 char buffer[200];
196 182
197 if (egdsocket || !seeded) 183 if (!seeded)
198 /* 184 /*
199 * If we did not manage to read the seed file, we should not 185 * If we did not manage to read the seed file, we should not
200 * write a low-entropy seed file back -- it would suppress a 186 * write a low-entropy seed file back -- it would suppress a
diff --git a/src/lib/libssl/src/crypto/rand/rand.h b/src/lib/libssl/src/crypto/rand/rand.h
index e65b4b2e35..07de8cb7c4 100644
--- a/src/lib/libssl/src/crypto/rand/rand.h
+++ b/src/lib/libssl/src/crypto/rand/rand.h
@@ -95,9 +95,6 @@ int RAND_load_file(const char *file,long max_bytes);
95int RAND_write_file(const char *file); 95int RAND_write_file(const char *file);
96const char *RAND_file_name(char *file,size_t num); 96const char *RAND_file_name(char *file,size_t num);
97int RAND_status(void); 97int RAND_status(void);
98int RAND_query_egd_bytes(const char *path, unsigned char *buf, int bytes);
99int RAND_egd(const char *path);
100int RAND_egd_bytes(const char *path,int bytes);
101int RAND_poll(void); 98int RAND_poll(void);
102 99
103/* BEGIN ERROR CODES */ 100/* BEGIN ERROR CODES */
diff --git a/src/lib/libssl/src/crypto/rand/rand_egd.c b/src/lib/libssl/src/crypto/rand/rand_egd.c
deleted file mode 100644
index a78aa90c46..0000000000
--- a/src/lib/libssl/src/crypto/rand/rand_egd.c
+++ /dev/null
@@ -1,110 +0,0 @@
1/* crypto/rand/rand_egd.c */
2/* Written by Ulf Moeller and Lutz Jaenicke for the OpenSSL project. */
3/* ====================================================================
4 * Copyright (c) 1998-2000 The OpenSSL Project. All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 *
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 *
13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in
15 * the documentation and/or other materials provided with the
16 * distribution.
17 *
18 * 3. All advertising materials mentioning features or use of this
19 * software must display the following acknowledgment:
20 * "This product includes software developed by the OpenSSL Project
21 * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
22 *
23 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
24 * endorse or promote products derived from this software without
25 * prior written permission. For written permission, please contact
26 * openssl-core@openssl.org.
27 *
28 * 5. Products derived from this software may not be called "OpenSSL"
29 * nor may "OpenSSL" appear in their names without prior written
30 * permission of the OpenSSL Project.
31 *
32 * 6. Redistributions of any form whatsoever must retain the following
33 * acknowledgment:
34 * "This product includes software developed by the OpenSSL Project
35 * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
36 *
37 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
38 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
39 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
40 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
41 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
42 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
43 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
44 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
45 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
46 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
47 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
48 * OF THE POSSIBILITY OF SUCH DAMAGE.
49 * ====================================================================
50 *
51 * This product includes cryptographic software written by Eric Young
52 * (eay@cryptsoft.com). This product includes software written by Tim
53 * Hudson (tjh@cryptsoft.com).
54 *
55 */
56
57#include <openssl/e_os2.h>
58#include <openssl/rand.h>
59#include <openssl/buffer.h>
60
61/*
62 * Query the EGD <URL: http://www.lothar.com/tech/crypto/>.
63 *
64 * This module supplies three routines:
65 *
66 * RAND_query_egd_bytes(path, buf, bytes)
67 * will actually query "bytes" bytes of entropy form the egd-socket located
68 * at path and will write them to buf (if supplied) or will directly feed
69 * it to RAND_seed() if buf==NULL.
70 * The number of bytes is not limited by the maximum chunk size of EGD,
71 * which is 255 bytes. If more than 255 bytes are wanted, several chunks
72 * of entropy bytes are requested. The connection is left open until the
73 * query is competed.
74 * RAND_query_egd_bytes() returns with
75 * -1 if an error occured during connection or communication.
76 * num the number of bytes read from the EGD socket. This number is either
77 * the number of bytes requested or smaller, if the EGD pool is
78 * drained and the daemon signals that the pool is empty.
79 * This routine does not touch any RAND_status(). This is necessary, since
80 * PRNG functions may call it during initialization.
81 *
82 * RAND_egd_bytes(path, bytes) will query "bytes" bytes and have them
83 * used to seed the PRNG.
84 * RAND_egd_bytes() is a wrapper for RAND_query_egd_bytes() with buf=NULL.
85 * Unlike RAND_query_egd_bytes(), RAND_status() is used to test the
86 * seed status so that the return value can reflect the seed state:
87 * -1 if an error occured during connection or communication _or_
88 * if the PRNG has still not received the required seeding.
89 * num the number of bytes read from the EGD socket. This number is either
90 * the number of bytes requested or smaller, if the EGD pool is
91 * drained and the daemon signals that the pool is empty.
92 *
93 * RAND_egd(path) will query 255 bytes and use the bytes retreived to seed
94 * the PRNG.
95 * RAND_egd() is a wrapper for RAND_egd_bytes() with numbytes=255.
96 */
97
98int RAND_query_egd_bytes(const char *path, unsigned char *buf, int bytes)
99 {
100 return(-1);
101 }
102int RAND_egd(const char *path)
103 {
104 return(-1);
105 }
106
107int RAND_egd_bytes(const char *path,int bytes)
108 {
109 return(-1);
110 }