Changeset 60017f7


Ignore:
Timestamp:
Dec 17, 2014 2:41:24 PM (6 years ago)
Author:
zzz <zzz@…>
Branches:
master
Children:
a9e928f
Parents:
eb46f74
Message:

Crypto: Stubs for encryption key types

Location:
core/java/src/net/i2p/crypto
Files:
3 added
1 edited

Legend:

Unmodified
Added
Removed
  • core/java/src/net/i2p/crypto/CryptoConstants.java

    reb46f74 r60017f7  
    3030 */
    3131
     32import java.lang.reflect.Constructor;
    3233import java.math.BigInteger;
     34import java.security.spec.AlgorithmParameterSpec;
    3335import java.security.spec.DSAParameterSpec;
    3436
     
    3840 * Prime for ElGamal from http://tools.ietf.org/html/rfc3526
    3941 * Primes for DSA: Generated by TheCrypto http://article.gmane.org/gmane.comp.security.invisiblenet.iip.devel/343
     42 *
     43 * See also: ECConstants, RSAConstants
     44 *
    4045 */
    4146public class CryptoConstants {
     
    5358                                                             + "3321c3cb3dbb14a905e7b2b3e93be4708cbcc82",
    5459                                                               16);
     60
     61    /** 2048-bit MODP Group from RFC 3526 */
    5562    public static final BigInteger elgp = new NativeBigInteger("FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1"
    5663                                                               + "29024E088A67CC74020BBEA63B139B22514A08798E3404DD"
     
    6471                                                               + "DE2BCBF6955817183995497CEA956AE515D2261898FA0510"
    6572                                                               + "15728E5A8AACAA68FFFFFFFFFFFFFFFF", 16);
     73
    6674    public static final BigInteger elgg = new NativeBigInteger("2");
    6775
     
    7078     */
    7179    public static final DSAParameterSpec DSA_SHA1_SPEC = new DSAParameterSpec(dsap, dsaq, dsag);
     80
     81    /**
     82     *  This will be org.bouncycastle.jce.spec.ElgamalParameterSpec
     83     *  if BC is available, otherwise it
     84     *  will be net.i2p.crypto.ElgamalParameterSpec
     85     *
     86     *  @since 0.9.18
     87     */
     88    public static final AlgorithmParameterSpec ELGAMAL_2048_SPEC;
     89
     90    static {
     91        AlgorithmParameterSpec spec;
     92        if (ECConstants.isBCAvailable()) {
     93            try {
     94                Class<?> cls = Class.forName("org.bouncycastle.jce.spec.ElGamalParameterSpec");
     95                Constructor<?> con = cls.getConstructor(new Class[] {BigInteger.class, BigInteger.class});
     96                spec = (AlgorithmParameterSpec)con.newInstance(new Object[] {elgp, elgg});
     97                //System.out.println("BC ElG spec loaded");
     98            } catch (Exception e) {
     99                //System.out.println("BC ElG spec failed");
     100                //e.printStackTrace();
     101                spec = new ElGamalParameterSpec(elgp, elgg);
     102            }
     103        } else {
     104            //System.out.println("BC not available");
     105            spec = new ElGamalParameterSpec(elgp, elgg);
     106        }
     107        ELGAMAL_2048_SPEC = spec;
     108    }
    72109}
Note: See TracChangeset for help on using the changeset viewer.