diff options
author | Andrew John Hughes <gandalf@gcc.gnu.org> | 2009-02-25 21:40:28 +0000 |
---|---|---|
committer | Andrew John Hughes <gandalf@gcc.gnu.org> | 2009-02-25 21:40:28 +0000 |
commit | dc6a0b2d949256fbdcdc7301044067e2cf45289f (patch) | |
tree | 2c27a4aaca5b8d4062c3ad863f71e3765d25905e /libjava/java/security/VMSecureRandom.java | |
parent | a16b68bb66854ca9bbe5e11a8ddda7dcde3744e9 (diff) | |
download | gcc-dc6a0b2d949256fbdcdc7301044067e2cf45289f.zip gcc-dc6a0b2d949256fbdcdc7301044067e2cf45289f.tar.gz gcc-dc6a0b2d949256fbdcdc7301044067e2cf45289f.tar.bz2 |
Sync libgcj with GNU Classpath 0.98.
2009-02-13 Andrew John Hughes <ahughes@redhat.com>
Import GNU Classpath (classpath-0_98-release).
* Makefile.am: Add natVMSecureRandom.cc.
* Makefile.in: Regenerated.
* classpath/ChangeLog,
* classpath/Makefile.am: Merged.
* classpath/Makefile.in: Regenerated.
* classpath/NEWS: Merged.
* classpath/config.guess,
* classpath/config.sub,
* classpath/configure: Regenerated.
* classpath/configure.ac: Merged.
* classpath/gnu/java/awt/peer/gtk/CairoGraphics2D.java,
* classpath/gnu/java/security/jce/prng/SecureRandomAdapter.java,
* classpath/gnu/javax/crypto/jce/prng/ARCFourRandomSpi.java,
* classpath/gnu/javax/crypto/jce/prng/CSPRNGSpi.java,
* classpath/gnu/javax/crypto/jce/prng/FortunaImpl.java,
* classpath/gnu/javax/crypto/jce/prng/ICMRandomSpi.java,
* classpath/gnu/javax/crypto/jce/prng/UMacRandomSpi.java,
* classpath/gnu/javax/crypto/prng/ICMGenerator.java,
* classpath/gnu/xml/stream/XMLParser.java,
* classpath/java/security/SecureRandom.java,
* classpath/native/jni/native-lib/cpproc.c,
* classpath/native/plugin/gcjwebplugin.cc,
* classpath/tools/gnu/classpath/tools/gjdoc/Main.java: Merged.
* configure: Regenerated.
* configure.ac: Add symlink for natVMSecureRandomPosix.cc to natVMSecureRandom.cc
* gnu/classpath/Configuration.java: Change version to 0.98.
* gnu/java/security/jce/prng/SecureRandomAdapter.h: Regenerated.
* gnu/java/security/jce/prng/VMSecureRandom.h: Generated.
* gnu/java/security/jce/prng/VMSecureRandom.java: Added native implementation.
* gnu/java/security/jce/prng/natVMSecureRandomPosix.cc: Wrapper around /dev/random.
* gnu/javax/crypto/jce/prng/CSPRNGSpi.h,
* gnu/javax/crypto/jce/prng/FortunaImpl.h,
* java/security/SecureRandom.h: Regenerated.
* java/security/VMSecureRandom$Spinner.h,
* java/security/VMSecureRandom.h,
* java/security/VMSecureRandom.java: Removed.
* sources.am: Move VMSecureRandom to gnu.java.security.jce.prng.
From-SVN: r144434
Diffstat (limited to 'libjava/java/security/VMSecureRandom.java')
-rw-r--r-- | libjava/java/security/VMSecureRandom.java | 129 |
1 files changed, 0 insertions, 129 deletions
diff --git a/libjava/java/security/VMSecureRandom.java b/libjava/java/security/VMSecureRandom.java deleted file mode 100644 index 5eeb158..0000000 --- a/libjava/java/security/VMSecureRandom.java +++ /dev/null @@ -1,129 +0,0 @@ -/* VMSecureRandom.java -- random seed generator. - Copyright (C) 2006 Free Software Foundation, Inc. - -This file is a part of GNU Classpath. - -GNU Classpath is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or (at -your option) any later version. - -GNU Classpath is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU Classpath; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 -USA - -Linking this library statically or dynamically with other modules is -making a combined work based on this library. Thus, the terms and -conditions of the GNU General Public License cover the whole -combination. - -As a special exception, the copyright holders of this library give you -permission to link this library with independent modules to produce an -executable, regardless of the license terms of these independent -modules, and to copy and distribute the resulting executable under -terms of your choice, provided that you also meet, for each linked -independent module, the terms and conditions of the license of that -module. An independent module is a module which is not derived from -or based on this library. If you modify this library, you may extend -this exception to your version of the library, but you are not -obligated to do so. If you do not wish to do so, delete this -exception statement from your version. */ - - -package java.security; - -/** - * VM-specific methods for generating real (or almost real) random - * seeds. VM implementors should write a version of this class that - * reads random bytes from some system source. - * - * <p>The default implementation of this class runs eight threads that - * increment counters in a tight loop, and XORs each counter to - * produce one byte of seed data. This is not very efficient, and is - * not guaranteed to be random (the thread scheduler is probably - * deterministic, after all). If possible, VM implementors should - * reimplement this class so it obtains a random seed from a system - * facility, such as a system entropy gathering device or hardware - * random number generator. - */ -final class VMSecureRandom -{ - - /** - * Generate a random seed. Implementations are free to generate - * fewer random bytes than are requested, and leave the remaining - * bytes of the destination buffer as zeros. Implementations SHOULD, - * however, make a best-effort attempt to satisfy the request. - * - * @param buffer The destination buffer. - * @param offset The offset in the buffer to start putting bytes. - * @param length The number of random bytes to generate. - */ - static int generateSeed(byte[] buffer, int offset, int length) - { - if (length < 0) - throw new IllegalArgumentException("length must be nonnegative"); - if (offset < 0 || offset + length > buffer.length) - throw new IndexOutOfBoundsException(); - - Spinner[] spinners = new Spinner[8]; - int n = 0x1; - for (int i = 0; i < spinners.length; i++) - { - spinners[i] = new Spinner((byte) n); - Thread t = new Thread(spinners[i]); - t.start(); - n <<= 1; - } - - // Wait until at least one spinner has started. - while (!(spinners[0].running || spinners[1].running || spinners[2].running - || spinners[3].running || spinners[4].running || spinners[5].running - || spinners[6].running || spinners[7].running)) - { - Thread.yield(); - } - - for (int i = offset; i < length; i++) - { - buffer[i] = (byte) (spinners[0].value ^ spinners[1].value ^ spinners[2].value - ^ spinners[3].value ^ spinners[4].value ^ spinners[5].value - ^ spinners[6].value ^ spinners[7].value); - Thread.yield(); - } - - for (int i = 0; i < spinners.length; i++) - spinners[i].stop(); - - return length; - } - - static class Spinner implements Runnable - { - volatile byte value; - volatile boolean running; - - Spinner(final byte initial) - { - value = initial; - } - - public void run() - { - running = true; - while (running) - value++; - } - - private void stop() - { - running = false; - } - } -}
\ No newline at end of file |