Download the Latest Intel® Digital Random Number Generator Software Implementation Guide

For more complete information about compiler optimizations, see our Optimization Notice.


anonymous's picture


You have it right. AES-CBC-MAC is run twice for each reseed to get the necessary 256 bits of reseed state required by SP800-90 for a 128 bit AES core based CTR DRBG. The CBC-MAC key is fixed. It's value is not relevant to the security assurances of the algorithm when used as a conditioner.


anonymous's picture

I tried to compile the example using GCC 4.6.1. I got the following error:

» gcc -c rdrand.s -o rdrand.o
rdrand.c:71:no such instruction: `rdrand %ax'
rdrand.c:92:no such instruction: `rdrand %eax'
rdrand.c:113:no such instruction: `rdrand %rax'

Is there something I need to enable in GCC or when configure/compile it?

anonymous's picture


thanks for a very nice article.

Could you share the details of operation of the whitener (conditioner)? What do you take as the key for AES? As AES based CBC_MAC will produce only 128 bits, are you producing two MACs which are then concatenate to 256 bit value?

Thanks a lot

jacace's picture

Great resource!


Add a Comment

Have a technical question? Visit our forums. Have site or software product issues? Contact support.