+++ /dev/null
-/* Copyright (c) 1998,2011,2014 Apple Inc. All Rights Reserved.
- *
- * NOTICE: USE OF THE MATERIALS ACCOMPANYING THIS NOTICE IS SUBJECT
- * TO THE TERMS OF THE SIGNED "FAST ELLIPTIC ENCRYPTION (FEE) REFERENCE
- * SOURCE CODE EVALUATION AGREEMENT" BETWEEN APPLE, INC. AND THE
- * ORIGINAL LICENSEE THAT OBTAINED THESE MATERIALS FROM APPLE,
- * INC. ANY USE OF THESE MATERIALS NOT PERMITTED BY SUCH AGREEMENT WILL
- * EXPOSE YOU TO LIABILITY.
- ***************************************************************************
- *
- * NSRandomNumberGenerator.m
- *
- * Revision History
- * ----------------
- * 28 Mar 97 at Apple
- * Rewrote using feeRandom module.
- * ?? 96 Blaine Garst at NeXT
- * Created.
- */
-
-/*
- * Note: out _priv ivar is actually a feeRand pointer.
- */
-
-#import <Foundation/Foundation.h>
-#import "NSRandomNumberGenerator.h"
-#import "feeRandom.h"
-#import "falloc.h"
-
-@implementation NSRandomNumberGenerator
-
-- init
-{
- if(_priv == NULL) {
- _priv = feeRandAlloc();
- }
- /*
- * else no need to re-init
- */
- return self;
-}
-
-- initWithSeed:(unsigned)seed
-{
- if(_priv != NULL) {
- /*
- * Free & re-init to use new seed
- */
- feeRandFree(_priv);
- }
- _priv = feeRandAllocWithSeed(seed);
- return self;
-}
-
-- (unsigned)nextNumber
-{
- if(_priv == NULL) {
- return 0;
- }
- return feeRandNextNum(_priv);
-}
-
-- (unsigned)nextNumberInRange:(NSRange)range
-{
- if(_priv == NULL) {
- return 0;
- }
- return range.location + ([self nextNumber] % range.length);
-}
-
-- (NSData *)randomDataWithLength:(unsigned)l
-{
- unsigned char *cp;
-
- if(_priv == NULL) {
- return nil;
- }
- cp = fmalloc(l);
- feeRandBytes(_priv, cp, l);
- return [NSData dataWithBytesNoCopy:cp length:l];
-}
-
-@end