Krishna, Thanks for your review. I incorporated your comments.
http://cr.opensolaris.org/~haimay/CR6703956-v2/ Krishna Yenduri wrote: > Hai-May Chao wrote: >> ... >> http://cr.opensolaris.org/~haimay/CR6703956-v2/ > >> ... >>> usr/src/uts/common/crypto/io/swrand.c >>> >>> KY-3 T3 line 387 >>> Why not use digest directly and get rid of digest32 >>> since they are of the same size? You can then >>> remove the bcopy() here. >>> >> Originally I coded just like you indicated and got lint warning >> due to pointer cast. So I changed it to as it is now. > > You can over ride the lint warning with a directive. This is OK > to do since we know the cast is safe to do. > Ok. Done. >>> KY-5 T3 lines 406-407 >>> I assume FIPS compliance would require you to stop using >>> the provider in this case (or fail all the requests from then on). >>> I see that n2rng unregisters from the framework >>> in error cases. >>> >>> We can have the default behavior as now ("log a warning") >>> and add an option (a kernel tunable) to stop using swrand when we hit >>> this error. >>> >> If we have swrand and one or more hardware random number providers, >> then I think it'd be okay to disable the provider that fails. If we >> only have swrand, i.e. disabling the last remaining provider doesn't >> seem like a good idea. >> >> The kernel tunable option could be added later as part of FIPS 140-2 >> Self-Tests work. I'd like to suggest we provide logging a warning at >> this putback as we're getting the FIPS 186-2 RNG into the framework. > > Sounds fine. > >> .. >>> KY-7 T3 lines 667-668 >>> I believe it is much more secure to have a different XSEED for >>> every call. >>> >>> I would recommend XOR'ing the seed value with a high >>> resolution timer output (gethrtime()) for this call. >>> >> Fixed. > > line 676 - > I see a problem with the XOR code. src is only 8 bytes long while > dst is 20 bytes. You can fix this by making this src[i % sizeof > (timestamp)]. > Fixed. Thanks, Hai-May