jdkkeypairgenerator.java

来自「bouncycastle 是一个JAVA安全提供者」· Java 代码 · 共 490 行 · 第 1/2 页

JAVA
490
字号
                SecureRandom    random)        {            this.strength = strength;            this.random = random;        }                private void init(            GOST3410ParameterSpec gParams,            SecureRandom          random)        {            GOST3410PublicKeyParameterSetSpec spec = gParams.getPublicKeyParameters();                        param = new GOST3410KeyGenerationParameters(random, new GOST3410Parameters(spec.getP(), spec.getQ(), spec.getA()));                        engine.init(param);                        gost3410Params = gParams;            initialised = true;        }                public void initialize(            AlgorithmParameterSpec  params,            SecureRandom            random)            throws InvalidAlgorithmParameterException        {            if (!(params instanceof GOST3410ParameterSpec))            {                throw new InvalidAlgorithmParameterException("parameter object not a GOST3410ParameterSpec");            }                        init((GOST3410ParameterSpec)params, random);        }                public KeyPair generateKeyPair()        {            if (!initialised)            {                init(new GOST3410ParameterSpec(CryptoProObjectIdentifiers.gostR3410_94_CryptoPro_A.getId()), new SecureRandom());            }                        AsymmetricCipherKeyPair   pair = engine.generateKeyPair();            GOST3410PublicKeyParameters  pub = (GOST3410PublicKeyParameters)pair.getPublic();            GOST3410PrivateKeyParameters priv = (GOST3410PrivateKeyParameters)pair.getPrivate();                        return new KeyPair(new JDKGOST3410PublicKey(pub, gost3410Params), new JDKGOST3410PrivateKey(priv, gost3410Params));        }    }        public static class ElGamal        extends JDKKeyPairGenerator    {        ElGamalKeyGenerationParameters  param;        ElGamalKeyPairGenerator         engine = new ElGamalKeyPairGenerator();        int                             strength = 1024;        int                             certainty = 20;        SecureRandom                    random = new SecureRandom();        boolean                         initialised = false;        public ElGamal()        {            super("ElGamal");        }        public void initialize(            int             strength,            SecureRandom    random)        {            this.strength = strength;            this.random = random;        }        public void initialize(            AlgorithmParameterSpec  params,            SecureRandom            random)            throws InvalidAlgorithmParameterException        {            if (!(params instanceof ElGamalParameterSpec) && !(params instanceof DHParameterSpec))            {                throw new InvalidAlgorithmParameterException("parameter object not a DHParameterSpec or an ElGamalParameterSpec");            }                        if (params instanceof ElGamalParameterSpec)            {                ElGamalParameterSpec     elParams = (ElGamalParameterSpec)params;                param = new ElGamalKeyGenerationParameters(random, new ElGamalParameters(elParams.getP(), elParams.getG()));            }            else            {                DHParameterSpec     dhParams = (DHParameterSpec)params;                param = new ElGamalKeyGenerationParameters(random, new ElGamalParameters(dhParams.getP(), dhParams.getG()));            }            engine.init(param);            initialised = true;        }        public KeyPair generateKeyPair()        {            if (!initialised)            {                ElGamalParametersGenerator   pGen = new ElGamalParametersGenerator();                pGen.init(strength, certainty, random);                param = new ElGamalKeyGenerationParameters(random, pGen.generateParameters());                engine.init(param);                initialised = true;            }            AsymmetricCipherKeyPair         pair = engine.generateKeyPair();            ElGamalPublicKeyParameters      pub = (ElGamalPublicKeyParameters)pair.getPublic();            ElGamalPrivateKeyParameters     priv = (ElGamalPrivateKeyParameters)pair.getPrivate();            return new KeyPair(new JCEElGamalPublicKey(pub),                               new JCEElGamalPrivateKey(priv));        }    }    public static class EC        extends JDKKeyPairGenerator    {        ECKeyGenerationParameters   param;        ECKeyPairGenerator          engine = new ECKeyPairGenerator();        ECParameterSpec             ecParams = null;        int                         strength = 239;        int                         certainty = 50;        SecureRandom                random = new SecureRandom();        boolean                     initialised = false;        String                      algorithm;        static private Hashtable    ecParameters;        static {            ecParameters = new Hashtable();            ecParameters.put(new Integer(192),                     ECNamedCurveTable.getParameterSpec("prime192v1"));            ecParameters.put(new Integer(239),                     ECNamedCurveTable.getParameterSpec("prime239v1"));            ecParameters.put(new Integer(256),                     ECNamedCurveTable.getParameterSpec("prime256v1"));        }        public EC()        {            super("EC");            this.algorithm = "EC";        }                public EC(            String  algorithm)        {            super(algorithm);            this.algorithm = algorithm;        }        public void initialize(            int             strength,            SecureRandom    random)        {            this.strength = strength;            this.random = random;            this.ecParams = (ECParameterSpec)ecParameters.get(new Integer(strength));            if (ecParams != null)            {                param = new ECKeyGenerationParameters(new ECDomainParameters(ecParams.getCurve(), ecParams.getG(), ecParams.getN()), random);                engine.init(param);                initialised = true;            }        }        public void initialize(            AlgorithmParameterSpec  params,            SecureRandom            random)            throws InvalidAlgorithmParameterException        {            if (!(params instanceof ECParameterSpec))            {                throw new InvalidAlgorithmParameterException("parameter object not a ECParameterSpec");            }            this.ecParams = (ECParameterSpec)params;            param = new ECKeyGenerationParameters(new ECDomainParameters(ecParams.getCurve(), ecParams.getG(), ecParams.getN()), random);            engine.init(param);            initialised = true;        }        public KeyPair generateKeyPair()        {            if (!initialised)            {                throw new IllegalStateException("EC Key Pair Generator not initialised");            }            AsymmetricCipherKeyPair     pair = engine.generateKeyPair();            ECPublicKeyParameters       pub = (ECPublicKeyParameters)pair.getPublic();            ECPrivateKeyParameters      priv = (ECPrivateKeyParameters)pair.getPrivate();            return new KeyPair(new JCEECPublicKey(algorithm, pub, ecParams),                               new JCEECPrivateKey(algorithm, priv, ecParams));        }    }    public static class ECDSA        extends EC    {        public ECDSA()        {            super("ECDSA");        }    }    public static class ECGOST3410        extends EC    {        public ECGOST3410()        {            super("ECGOST3410");        }    }    public static class ECDH        extends EC    {        public ECDH()        {            super("ECDH");        }    }    public static class ECDHC        extends EC    {        public ECDHC()        {            super("ECDHC");        }    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?