* RandomSource: Add new method getBytes(buf, offset, length)

This commit is contained in:
zzz
2011-11-23 22:10:34 +00:00
parent f3e2dfacdf
commit df8cd90b85
2 changed files with 33 additions and 0 deletions

View File

@ -150,6 +150,16 @@ public class FortunaRandomSource extends RandomSource implements EntropyHarveste
_fortuna.nextBytes(buf);
}
/**
* Not part of java.util.SecureRandom, but added for efficiency, since Fortuna supports it.
*
* @since 0.8.12
*/
@Override
public synchronized void nextBytes(byte buf[], int offset, int length) {
_fortuna.nextBytes(buf, offset, length);
}
/**
* Implementation from sun's java.util.Random javadocs
*/

View File

@ -59,6 +59,7 @@ public class RandomSource extends SecureRandom implements EntropyHarvester {
* WTF. Ok, so we're going to have it return between 0 and n (including 0, excluding n), since
* thats what it has been used for.
*
* This code unused, see FortunaRandomSource override
*/
@Override
public int nextInt(int n) {
@ -72,6 +73,8 @@ public class RandomSource extends SecureRandom implements EntropyHarvester {
/**
* Like the modified nextInt, nextLong(n) returns a random number from 0 through n,
* including 0, excluding n.
*
* This code unused, see FortunaRandomSource override
*/
public long nextLong(long n) {
long v = super.nextLong();
@ -80,6 +83,24 @@ public class RandomSource extends SecureRandom implements EntropyHarvester {
return v;
}
/**
* Not part of java.util.SecureRandom, but added since Fortuna supports it.
*
* This code unused, see FortunaRandomSource override
*
* @since 0.8.12
*/
public void nextBytes(byte buf[], int offset, int length) {
// inefficient, just in case anybody actually instantiates this
if (offset == 0 && buf.length == length) {
nextBytes(buf);
} else {
byte[] tmp = new byte[length];
nextBytes(tmp);
System.arraycopy(tmp, 0, buf, offset, length);
}
}
/**
* override as synchronized, for those JVMs that don't always pull via
* nextBytes (cough ibm)
@ -188,6 +209,7 @@ public class RandomSource extends SecureRandom implements EntropyHarvester {
return false;
}
/****
public static void main(String args[]) {
for (int j = 0; j < 2; j++) {
RandomSource rs = new RandomSource(I2PAppContext.getGlobalContext());
@ -208,4 +230,5 @@ public class RandomSource extends SecureRandom implements EntropyHarvester {
rs.saveSeed();
}
}
****/
}