| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
argument in favor of referencing the global PRNG argument
|
|
|
|
| |
to rng.h (eventually base.h will be split up entirely and go away)
|
|
|
|
| |
instead of always using the global PRNG.
|
|
|
|
| |
of using the global RNG object.
|
| |
|
|
|
|
|
|
|
| |
them (encrypt and sign), with the intent of slowly bubbling up the access
points to the API level, at which point the application handles managing
the RNG. This will allow removing the compiled-in global PRNG, and
make testing much simpler.
|
| |
|
| |
|
|
|
|
|
| |
Java SecureRandom PRNG algorithm. (I accidentally checked in the header
in the previous revision).
|
|
|
|
|
|
| |
length to zero. That is because we encoded our seededness state as being
if (and only if) V has non-zero length. After clearing, we have reset all
state.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
it was seeded if and only if the underlying PRNG was seeded. However if
the PRNG always returned as being seeded, we would never generate a V
value, etc (leaving them at the default zero). This would not occur with
any of Botan's built in PRNGs since their implementations require that
add_randomness be called at least once before is_seeded will return true.
However this is not an invariant of the general RandomNumberGenerator
interface.
Now, the X9.31 PRNG is only seeded after it has a) detected that the PRNG
is seeded, and b) generated a new random key and V vector.
|
| |
|
| |
|
|
|
|
| |
value from the RNG. (Would an adapter class be more appropriate?)
|
|
|
|
| |
to use) explicit arguments to the constructor instead of being hardcoded.
|
| |
|
|
|
|
| |
PK_Encryptor_MR_with_EME::enc references the global PRNG currently
|
| |
|
|
|
|
| |
RandomNumberGenerator reference. Update all callers.
|
| |
|
| |
|
| |
|
|
|
|
| |
instead)
|
| |
|
|
|
|
| |
Update the examples
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
random bits. Now they take a reference to a RandomNumberGenerator object.
This was applied several times out, so now the constructors to private
key objects also take a RandomNumberGenerator& argument. This is also true
for a number of randomized algorithms (Miller-Rabin, for instance).
You can get a reference to the global PRNG with
global_state().prng_reference()
This is a provisional thing: and warning: it is not thread safe! If this
is a problem instead keep per-thread PRNGs and pass them were needed.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If the second argument was NULL, it would default to a new Randpool.
But this introduces an annoying dependency: really it is the caller who
is relying on Randpool. Make this explicit by passing a new Randpool
pointer to the constructor in Library_State.
This will break all callers using ANSI_X931_RNG's constructors with
default arguments. To regain the previous behavior, change:
ANSI_X931_RNG rng;
ANSI_X931_RNG rng("/*cipher name*/");
to
ANSI_X931_RNG rng(/*cipher name, default was AES-256 */, new Randpool);
You are free to pass another PRNG object if you like.
This make require inclusion of <botan/randpool.h>
|
|
|
|
|
|
|
|
|
|
|
|
| |
universal: this prevented it from decoding application, context-specific,
or private-class constructions.
Add a new parameter to BER_Decoder::start_cons which specifies the expected
class type (default universal). The decoder still verifies that the
constructed bit is set in the class tag. This provides parity with the
interface to the DER encoder.
Problem was found and reported by Falko Strenzke
|
|
|
|
| |
each caller.
|
|
|
|
|
|
| |
time format and converts it to a duration in seconds represented as a
u32bit. This is from Config::option_as_time, which is now implemented
simply as: return timespec_to_u32bit(option(key))
|
|
|
|
|
|
| |
should allow when checking timestamps, just call it once and store the
value in the X509_Store object, passing it to validity_check with a new
argument for the allowed time slack.
|
|
|
|
| |
as that was the only place it was called from.
|
|
|
|
|
|
|
|
| |
Including enums.h in needed places since asn1_int.h doesn't pull it in
anymore.
Remove Config::choose_sig_format, and move its logic into its only
caller, the (global!) choose_sig_format in x509_ca.cpp
|
|\
| |
| |
| |
| |
| | |
d4d75cf4f682ec63e316b853617e7cf9ba093272)
to branch 'net.randombit.botan' (head 2fac918f1a1cb77d155cf434177e443d41e9e517)
|
| |\
| | |
| | |
| | |
| | |
| | | |
51f9ee5180a5cacdfff31504266e883b7bb0eb00)
to branch 'net.randombit.botan.remove-libstate' (head 636b767b9686261418b1cb45a6271edeef87501b)
|
| | |\
| | | |
| | | |
| | | |
| | | |
| | | | |
85596a0b1fbee6696261d36def7dad742375f7d9)
to branch 'net.randombit.botan.remove-libstate' (head faf75eec422a3eb6108748315724fb6ac217dede)
|
| | | |\
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
bcae6a19d8d96ebde33c832c76a130ea02bc923a)
to branch 'net.randombit.botan.remove-libstate' (head f640991b6e433a264f5d22a08338cfc9c24c82da)
|
| | | | |\
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
6afe2db1f710f75bc27e189bb8bdb23613ce1ca3)
to branch 'net.randombit.botan.remove-libstate' (head e40f0dbdfd847024c30fa0092c2acefc19a550b8)
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
essentially a facade for the RNG object living in the global library state.
Rewrite all callers to directly invoke the global state object: this makes
it more clear what functions are actually accessing mutable state outside of
the normal reference graph (and thus, which functions will have to be
altered in order to remove this dependency). Other facades remain in place
for the configuration object and the memory allocator factory.
|
| | | | | | |
|
| | | | | |\
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
db3791f6bba4b57dd8aed17893565dc5bcd68f02)
to branch 'net.randombit.botan.remove-libstate' (head 627d12447b2bb32aa08ff5daa499ac9580a77a05)
|
| | | | | | | |
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
timer with an unspecified update rate and epoch. It is only used
inside the entropy sources to provide some timing-dependent
randomness. However, it is easier and basically 'as good' to treat the
timers as entropy sources in their own right and feed their output
directly into an entropy pool.
This commit removes Library_State::system_clock and all calls to that
function.
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
fruit for removal.
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
(Library_State, in libstate.{h,cpp}). It causes numerous 'interesting'
problems with threads, etc, and the best solution here is to move to
more or less an object-capability model, where the only objects that
a piece of code can access are those which can be referenced through
its arguments.
First things first, remove the UI 'pulse' code. It is neither necessary
nor sufficient for writing proper GUI/event driven code using Botan, has
likely never been used in real code, and, given that, causes a distressing
amount of overhead in terms of function calls made.
|
|/ / / / / /
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
the source file (this seems to be the case for all global functions that
we want to export from the library...)
|
|/ / / / /
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
on a patch from Joel Low for MSVC, modified and tested with GCC using
-fvisibility=hidden and the visibility attribute.
Getting this working completely requires making the shared object and
static lib builds completely distinct (which is also a win since it
allows avoiding -fPIC usage, etc in the static lib).
Currently too many things are being exported, though it is an improvement
as internal-only code like the bigint_* functions are hidden.
|
|/ / / /
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
block of data in the X9.31 PRNG (previously, adding entropy would cause
a new block to be computed but the read pointer would be the same as it
had been in the old block). Nominally this is very slightly faster (we
don't throw away bytes we just computed) but the change is more to make
the code more obvious/explicit; I was surprised by its old behavior, which
seems bad.
In theory it could introduce additional weaknesses, if gaining advantage
to this partial block that was being thrown away assisted in an attack
(I do not know of any attacks against the X9.31 PRNG that work that way,
however).
|