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
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  * 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: http://www.fsf.org.
  */
 
 package org.exoplatform.web.security.security;
 
 
 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.

Author(s):
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) {
         super();
         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
                 .parseLong(initParams.getValueParam().getValue())
                 : .;
     }
 
     public SecureRandom getSecureRandom() {
         /* wait until the random instance was initialized */
         try {
             .await();
         } catch (InterruptedException e) {
             throw new RuntimeException(e);
         }
         return ;
     }
 
     /*
      * (non-Javadoc)
      *
      * @see org.picocontainer.Startable#start()
      */
     @Override
     public void start() {
         Thread t = new Thread(new Runnable() {
             @Override
             public void run() {
                 SecureRandomService.this. = new AutoReseedRandom(SecureRandomService.this.,
                         SecureRandomService.this.SecureRandomService.this.,
                         SecureRandomService.this.);
                .countDown();
            }
        }, SecureRandomService.class.getSimpleName() + " initialization");
        /* Make a daemon out of t so that the VM can be shut down before t completes */
        t.setDaemon(true);
        t.start();
    }
    /*
     * (non-Javadoc)
     *
     * @see org.picocontainer.Startable#stop()
     */
    @Override
    public void stop() {
        /* nothing to do */
    }
New to GrepCode? Check out our FAQ X