Package uk.co.aldigital.ben.lucre

Source Code of uk.co.aldigital.ben.lucre.Util

/* ====================================================================
* Copyright (c) 1999, 2000 Ben Laurie.  All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
*    notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
*    notice, this list of conditions and the following disclaimer in
*    the documentation and/or other materials provided with the
*    distribution.
*
* 3. All advertising materials mentioning features or use of this
*    software must display the following acknowledgment:
*    "This product includes software developed by Ben Laurie
*    for use in the Lucre project."
*
* 4. The name "Lucre" must not be used to
*    endorse or promote products derived from this software without
*    prior written permission.
*
* 5. Redistributions of any form whatsoever must retain the following
*    acknowledgment:
*    "This product includes software developed by Ben Laurie
*    for use in the Lucre project."
*
* THIS SOFTWARE IS PROVIDED BY BEN LAURIE ``AS IS'' AND ANY
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL BEN LAURIE OR
* HIS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
* ====================================================================
*
* For more information on Lucre see http://anoncvs.aldigital.co.uk/lucre/.
*
*/

package uk.co.aldigital.ben.lucre;

import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintStream;
import java.math.BigInteger;
import java.security.SecureRandom;
import java.util.Random;

class Util {
    static PrintStream strDump;
    public final static BigInteger ONE=BigInteger.valueOf(1);
    public final static BigInteger TWO=BigInteger.valueOf(2);

    static void setDumper(PrintStream str) {
  strDump=str;
    }
    static void hexDump(PrintStream out,String s,byte b[],int n) {
        int i;

        out.print(s);
  for(i=0 ; i < n ; ++i)
      {
      int x=b[i];
      if(x < 0)
    x=256+x;
      s=Integer.toString(x,16);
      if(s.length() == 1)
    s="0"+s;
      out.print(s);
      }
  out.println();
    }
    static void hexDump(String s,byte b[],int n) {
        hexDump(strDump,s,b,n);
    }
    static void dumpNumber(PrintStream out,String s,BigInteger bi) {
  out.print(s);
  out.println(bi.toString(16));
    }
    static void dumpNumber(String s,BigInteger bi) {
  if(strDump == null)
      return;
  dumpNumber(strDump,s,bi);
    }
    static void dumpNumber(PrintStream out,String s,int i) {
  out.println(s+i);
    }
    static BigInteger readNumber(BufferedReader reader,String title)
      throws LucreIOException,IOException {
  String line=reader.readLine();
  if(line == null)
      throw new LucreIOException("End of file when expecting '"+title+"'");
  if(!line.startsWith(title))
      throw new LucreIOException("Read '"+line+"' when expecting '"+title+"'");
  return new BigInteger(line.substring(title.length()),16);
    }

    static BigInteger generateGermainPrimeWithRemainder(int nBitLength,
              BigInteger biDivisor,
              BigInteger biRemainder,
              int nCertainty) {
  Random rand=randomGenerator();
  for( ; ; ) {
      BigInteger biPrime=new BigInteger(nBitLength,nCertainty,rand);
      if(biPrime.remainder(biDivisor).compareTo(biRemainder) == 0
         && biPrime.shiftRight(1).isProbablePrime(nCertainty)) {
    System.out.println("");
    return biPrime;
      }
      System.out.print(".");
      System.out.flush();
  }
    }
    static BigInteger generateGermainPrime(int nBitLength,int nCertainty) {
  Random rand=randomGenerator();
  for( ; ; ) {
      BigInteger biPrime=new BigInteger(nBitLength,nCertainty,rand);
      if(biPrime.shiftRight(1).isProbablePrime(nCertainty)) {
    System.out.println("");
    return biPrime;
      }
      System.out.print(".");
      System.out.flush();
  }
    }
    static Random randomGenerator() {
  return new SecureRandom();
    }
    static BigInteger random(BigInteger lower,BigInteger upper) {
  Random rand=randomGenerator();
  int nBits=upper.bitLength();
  for( ; ; ) {
      BigInteger b=new BigInteger(nBits,rand);
      if(b.compareTo(lower) >= 0 && b.compareTo(upper) <= 0)
    return b;
  }
    }
    static BigInteger random(int lower,BigInteger upper) {
  return random(BigInteger.valueOf(lower),upper);
    }
    static void byteCopy(byte dest[],int doff,byte src[],int soff,int len) {
  for(int n=0 ; n < len ; ++n)
      dest[doff+n]=src[soff+n];
    }
    static BufferedReader newBufferedFileReader(String file)
      throws IOException {
  return new BufferedReader(new FileReader(file));
    }
    static PrintStream newFilePrintStream(String file)
      throws IOException {
  return new PrintStream(new FileOutputStream(file));
    }
    /*
    static boolean bCryptoAdded;
    static void addCrypto() {
  if(bCryptoAdded)
      return;
 
  java.security.Security.addProvider(new cryptix.provider.Cryptix());
  bCryptoAdded=true;
    }
    */

/*
    static void assert(boolean truth,String failure) {
  if(!truth) {
      System.err.println("assertion failed: "+failure);
      System.exit(1);
  }
    }
*/
TOP

Related Classes of uk.co.aldigital.ben.lucre.Util

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.