> Open question: should the class file respond to DiscardBytes? I kinda feel 
> like it should be a nop, but there could be folks who want to call it to 
> increase their comfort level.
>
> The promise of DiscardBytes() is, well, to discard bytes. If this actually 
> makes sense from a security standpoint or efficiency stand point is not at 
> us to judge, or we wouldn't have created this function in the first place. 
> If the user wants to discard 500 bytes, let him do this via DiscardBytes() 
> or he'll just write DiscardBytes() himself. 
>

If I parsed this correctly, then you want DiscardBytes to perform the 
discard.

Here's the updated implementations. Its optimized for word/register-sized 
discards.
 
//! generate and discard n bytes.
void RDRAND::DiscardBytes(size_t n)
{
    assert(Ready());
#if CRYPTOPP_BOOL_X64 || CRYPTOPP_BOOL_X32
    static const size_t SIZE = 128/sizeof(word64);
    FixedSizeSecBlock<word64, SIZE> discard;
#else
    static const size_t SIZE = 128/sizeof(word32);
    FixedSizeSecBlock<word32, SIZE> discard;
#endif
    
    size_t count = STDMIN(n, discard.SizeInBytes());
    while (count)
    {
        GenerateBlock(discard.BytePtr(), count);
        n -= count;
        count = STDMIN(n, discard.SizeInBytes());
    }
}

GenerateBlock can throw, so callers will need to be aware of the potential 
side effects of the discard.

Jeff

-- 
-- 
You received this message because you are subscribed to the "Crypto++ Users" 
Google Group.
To unsubscribe, send an email to [email protected].
More information about Crypto++ and this group is available at 
http://www.cryptopp.com.
--- 
You received this message because you are subscribed to the Google Groups 
"Crypto++ Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to