Armory 0.97 (WIP, dev branch) (TLDR; not affected)
This uses libbtc, not libbitcoin per se, though I plan to move to libbitcoin cause libbtc is rough around the edges and libbitcoin is getting all the attention these days (+ it's a C++ implementation, not plain C).
Wallet creation can happen in many places in the new code, kinda pointless to try and pin it down (all depends on whether it has a seed or not). It's simpler to look at the RNG class where all entropy comes from.
1) The main RNG class:
https://github.com/goatpig/BitcoinArmory/blob/dev/cppForSwig/EncryptionUtils.h#L107This is the one that pulls entropy from the system directly, the other RNG class is seeded from this.
2) This calls libbtc routines 'btc_random_init()' and 'btc_random_bytes()':
https://github.com/goatpig/BitcoinArmory/blob/dev/cppForSwig/EncryptionUtils.cpp#L333) btc_random_bytes() default to btc_random_bytes_internal:
https://github.com/libbtc/libbtc/blob/master/src/random.c#L464) btc_random_bytes_internal has OS dependant implementations:
4.a) on Windows, it uses the MS closed source CryptGenRandom (everybody has to do this on Windows):
https://github.com/libbtc/libbtc/blob/master/src/random.c#L924.b) on Linux, it reads n bytes from /dev/urandom:
https://github.com/libbtc/libbtc/blob/master/src/random.c#L103