Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
   * JBoss, Home of Professional Open Source.
   * Copyright 2012, Red Hat, Inc., and individual contributors
   * as indicated by the @author tags. See the copyright.txt file in the
   * distribution for a full listing of individual contributors.
   * This is free software; you can redistribute it and/or modify it
   * under the terms of the GNU Lesser General Public License as
   * published by the Free Software Foundation; either version 2.1 of
  * the License, or (at your option) any later version.
  * This software is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * Lesser General Public License for more details.
  * You should have received a copy of the GNU Lesser General Public
  * License along with this software; if not, write to the Free
  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  * 02110-1301 USA, or see the FSF site:
 import  org.picocontainer.Startable;

A central service for getting a SecureRandom that is granted to be reseeded regularly. It starts fast thanks to seeding the underlying SecureRandom in a dedicated initialisation thread.

Peter Palaga
 public class SecureRandomService implements Startable, SecureRandomProvider {
     protected static final String RANDOM_ALGORITHM = "random.algorithm";
     protected static final String RANDOM_ALGORITHM_PROVIDER = "random.algorithm.provider";
     protected static final String RANDOM_RESEEDING_PERIOD_MILLISECONDS = "random.algorithm.reseeding.period.milliseconds";
     protected static final String RANDOM_SEED_LENGTH_BYTES = "random.algorithm.seed.length.bytes";
     private volatile AutoReseedRandom random;
     private final CountDownLatch initializationLatch = new CountDownLatch(1);
     private final String algorithm;
     private final String algorithmProvider;
     private final int seedLength;
     private final long reseedingPeriod;
     public SecureRandomService() {

     public SecureRandomService(InitParams initParams) {
         this. = initParams != null && initParams.containsKey() ? initParams.getValueParam(
                 ).getValue() : .;
         this. = initParams != null && initParams.containsKey() ? initParams
         this. = initParams != null && initParams.containsKey() ? Integer.parseInt(initParams
         this. = initParams != null && initParams.containsKey() ? Long
                 : .;
     public SecureRandom getSecureRandom() {
         /* wait until the random instance was initialized */
         try {
         } catch (InterruptedException e) {
             throw new RuntimeException(e);
         return ;
      * (non-Javadoc)
      * @see org.picocontainer.Startable#start()
     public void start() {
         Thread t = new Thread(new Runnable() {
             public void run() {
                 SecureRandomService.this. = new AutoReseedRandom(SecureRandomService.this.,
        }, SecureRandomService.class.getSimpleName() + " initialization");
        /* Make a daemon out of t so that the VM can be shut down before t completes */
     * (non-Javadoc)
     * @see org.picocontainer.Startable#stop()
    public void stop() {
        /* nothing to do */
New to GrepCode? Check out our FAQ X