return 0;
}
- if (adin != NULL && adin_len > 0) {
- if (!ossl_rand_pool_add(pool, adin, adin_len, 0)) {
- ERR_raise(ERR_LIB_PROV, ERR_R_RAND_LIB);
- ossl_rand_pool_free(pool);
- return 0;
- }
- }
-
/* Get entropy from jitter entropy library. */
entropy_available = ossl_prov_acquire_entropy_from_jitter(s, pool);
if (entropy_available > 0)
memcpy(out, ossl_rand_pool_buffer(pool), ossl_rand_pool_length(pool));
+ if (adin != NULL && adin_len > 0) {
+ size_t i;
+
+ /* xor the additional data into the output */
+ for (i = 0; i < adin_len; ++i)
+ out[i % outlen] ^= adin[i];
+ }
+
ossl_rand_pool_free(pool);
return entropy_available > 0;
}