< prev index next >

## src/java.base/share/classes/java/security/SecureRandom.java

Print this page

       1 /*
       2  * Copyright (c) 1996, 2020, Oracle and/or its affiliates. All rights reserved.
       3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       4  *
       5  * This code is free software; you can redistribute it and/or modify it
       6  * under the terms of the GNU General Public License version 2 only, as
       7  * published by the Free Software Foundation.  Oracle designates this
       8  * particular file as subject to the "Classpath" exception as provided
       9  * by Oracle in the LICENSE file that accompanied this code.
      10  *
      11  * This code is distributed in the hope that it will be useful, but WITHOUT
      12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
      13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
      14  * version 2 for more details (a copy is included in the LICENSE file that
      15  * accompanied this code).
      16  *
      17  * You should have received a copy of the GNU General Public License version
      18  * 2 along with this work; if not, write to the Free Software Foundation,
      19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
      20  *
      21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
      22  * or visit www.oracle.com if you need additional information or have any
     161      * @since 1.2
     162      */
     163     private Provider provider = null;
     164
     165     /**
     166      * The provider implementation.
     167      *
     168      * @serial
     169      * @since 1.2
     170      */
     171     private SecureRandomSpi secureRandomSpi = null;
     172
     173     /**
     174      * Thread safety.
     175      *
     176      * @serial
     177      * @since 9
     178      */
     179     private final boolean threadSafe;
     180
     181     /*
     182      * The algorithm name of null if unknown.
     183      *
     184      * @serial
     185      * @since 1.5
     186      */
     187     private String algorithm;
     188
     189     // Seed Generator
     190     private static volatile SecureRandom seedGenerator;
     191
     192     /**
     193      * Constructs a secure random number generator (RNG) implementing the
     194      * default random number algorithm.
     195      *
     196      * <p> This constructor traverses the list of registered security Providers,
     197      * starting with the most preferred Provider.
     198      * A new {@code SecureRandom} object encapsulating the
     199      * {@code SecureRandomSpi} implementation from the first
     200      * Provider that supports a {@code SecureRandom} (RNG) algorithm is returned.
     201      * If none of the Providers support a RNG algorithm,
     202      * then an implementation-specific default is returned.
       1 /*
       2  * Copyright (c) 1996, 2021, Oracle and/or its affiliates. All rights reserved.
       3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       4  *
       5  * This code is free software; you can redistribute it and/or modify it
       6  * under the terms of the GNU General Public License version 2 only, as
       7  * published by the Free Software Foundation.  Oracle designates this
       8  * particular file as subject to the "Classpath" exception as provided
       9  * by Oracle in the LICENSE file that accompanied this code.
      10  *
      11  * This code is distributed in the hope that it will be useful, but WITHOUT
      12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
      13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
      14  * version 2 for more details (a copy is included in the LICENSE file that
      15  * accompanied this code).
      16  *
      17  * You should have received a copy of the GNU General Public License version
      18  * 2 along with this work; if not, write to the Free Software Foundation,
      19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
      20  *
      21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
      22  * or visit www.oracle.com if you need additional information or have any
     161      * @since 1.2
     162      */
     163     private Provider provider = null;
     164
     165     /**
     166      * The provider implementation.
     167      *
     168      * @serial
     169      * @since 1.2
     170      */
     171     private SecureRandomSpi secureRandomSpi = null;
     172
     173     /**
     174      * Thread safety.
     175      *
     176      * @serial
     177      * @since 9
     178      */
     179     private final boolean threadSafe;
     180
     181     /**
     182      * The algorithm name or {@code null} if unknown.
     183      *
     184      * @serial
     185      * @since 1.5
     186      */
     187     private String algorithm;
     188
     189     // Seed Generator
     190     private static volatile SecureRandom seedGenerator;
     191
     192     /**
     193      * Constructs a secure random number generator (RNG) implementing the
     194      * default random number algorithm.
     195      *
     196      * <p> This constructor traverses the list of registered security Providers,
     197      * starting with the most preferred Provider.
     198      * A new {@code SecureRandom} object encapsulating the
     199      * {@code SecureRandomSpi} implementation from the first
     200      * Provider that supports a {@code SecureRandom} (RNG) algorithm is returned.
     201      * If none of the Providers support a RNG algorithm,
     202      * then an implementation-specific default is returned.

< prev index next >