| 135 | #define BUFSIZE 8192 |
| 136 | |
| 137 | static int ssl_rand_feedfp(apr_pool_t *p, apr_file_t *fp, int nReq) |
| 138 | { |
| 139 | apr_size_t nDone; |
| 140 | unsigned char caBuf[BUFSIZE]; |
| 141 | apr_size_t nBuf; |
| 142 | apr_size_t nRead; |
| 143 | apr_size_t nTodo; |
| 144 | |
| 145 | nDone = 0; |
| 146 | nRead = BUFSIZE; |
| 147 | nTodo = nReq; |
| 148 | while (1) { |
| 149 | if (nReq > 0) |
| 150 | nRead = (nTodo < BUFSIZE ? nTodo : BUFSIZE); |
| 151 | nBuf = nRead; |
| 152 | if (apr_file_read(fp, caBuf, &nBuf) != APR_SUCCESS) |
| 153 | break; |
| 154 | RAND_seed(caBuf, nBuf); |
| 155 | nDone += nBuf; |
| 156 | if (nReq > 0) { |
| 157 | nTodo -= nBuf; |
| 158 | if (nTodo <= 0) |
| 159 | break; |
| 160 | } |
| 161 | } |
| 162 | return nDone; |
| 163 | } |
| 164 | |
| 165 | static int ssl_rand_choosenum(int l, int h) |
| 166 | { |