⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jdkkeyfactory.java

📁 kmlnjlkj nlkjlkjkljl okopokipoipo oipipipo i
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    /**     * create a private key from the given DER encoded input stream.      */     protected static PrivateKey createPrivateKeyFromDERStream(        byte[]         in)        throws IOException    {        return createPrivateKeyFromPrivateKeyInfo(            new PrivateKeyInfo((ASN1Sequence) ASN1Object.fromByteArray(in)));    }    /**     * create a private key from the given public key info object.     */     static PrivateKey createPrivateKeyFromPrivateKeyInfo(        PrivateKeyInfo      info)    {        DERObjectIdentifier     algOid = info.getAlgorithmId().getObjectId();                if (RSAUtil.isRsaOid(algOid))        {              return new JCERSAPrivateCrtKey(info);        }        else if (algOid.equals(PKCSObjectIdentifiers.dhKeyAgreement))        {              return new JCEDHPrivateKey(info);        }        else if (algOid.equals(OIWObjectIdentifiers.elGamalAlgorithm))        {              return new JCEElGamalPrivateKey(info);        }        else if (algOid.equals(X9ObjectIdentifiers.id_dsa))        {              return new JDKDSAPrivateKey(info);        }        else if (algOid.equals(X9ObjectIdentifiers.id_ecPublicKey))        {              return new JCEECPrivateKey(info);        }        else if (algOid.equals(CryptoProObjectIdentifiers.gostR3410_94))        {              return new JDKGOST3410PrivateKey(info);        }        else if (algOid.equals(CryptoProObjectIdentifiers.gostR3410_2001))        {              return new JCEECPrivateKey(info);        }        else        {            throw new RuntimeException("algorithm identifier " + algOid + " in key not recognised");        }    }    public static class RSA        extends JDKKeyFactory    {        public RSA()        {        }        protected PrivateKey engineGeneratePrivate(            KeySpec    keySpec)            throws InvalidKeySpecException        {            if (keySpec instanceof PKCS8EncodedKeySpec)            {                try                {                    return JDKKeyFactory.createPrivateKeyFromDERStream(                                ((PKCS8EncodedKeySpec)keySpec).getEncoded());                }                catch (Exception e)                {                    //                    // in case it's just a RSAPrivateKey object...                    //                    try                    {                        return new JCERSAPrivateCrtKey(                            new RSAPrivateKeyStructure(                                (ASN1Sequence) ASN1Object.fromByteArray(((PKCS8EncodedKeySpec)keySpec).getEncoded())));                    }                    catch (Exception ex)                    {                        throw new InvalidKeySpecException(ex.toString());                    }                }            }            else if (keySpec instanceof RSAPrivateCrtKeySpec)            {                return new JCERSAPrivateCrtKey((RSAPrivateCrtKeySpec)keySpec);            }            else if (keySpec instanceof RSAPrivateKeySpec)            {                return new JCERSAPrivateKey((RSAPrivateKeySpec)keySpec);            }                throw new InvalidKeySpecException("Unknown KeySpec type: " + keySpec.getClass().getName());        }            protected PublicKey engineGeneratePublic(            KeySpec    keySpec)            throws InvalidKeySpecException        {            if (keySpec instanceof RSAPublicKeySpec)            {                return new JCERSAPublicKey((RSAPublicKeySpec)keySpec);            }            return super.engineGeneratePublic(keySpec);        }    }    public static class DH        extends JDKKeyFactory    {        public DH()        {        }        protected PrivateKey engineGeneratePrivate(            KeySpec    keySpec)            throws InvalidKeySpecException        {            if (keySpec instanceof DHPrivateKeySpec)            {                return new JCEDHPrivateKey((DHPrivateKeySpec)keySpec);            }            return super.engineGeneratePrivate(keySpec);        }            protected PublicKey engineGeneratePublic(            KeySpec    keySpec)            throws InvalidKeySpecException        {            if (keySpec instanceof DHPublicKeySpec)            {                return new JCEDHPublicKey((DHPublicKeySpec)keySpec);            }            return super.engineGeneratePublic(keySpec);        }    }    public static class DSA        extends JDKKeyFactory    {        public DSA()        {        }        protected PrivateKey engineGeneratePrivate(            KeySpec    keySpec)            throws InvalidKeySpecException        {            if (keySpec instanceof DSAPrivateKeySpec)            {                return new JDKDSAPrivateKey((DSAPrivateKeySpec)keySpec);            }            return super.engineGeneratePrivate(keySpec);        }            protected PublicKey engineGeneratePublic(            KeySpec    keySpec)            throws InvalidKeySpecException        {            if (keySpec instanceof DSAPublicKeySpec)            {                return new JDKDSAPublicKey((DSAPublicKeySpec)keySpec);            }            return super.engineGeneratePublic(keySpec);        }    }    public static class GOST3410        extends JDKKeyFactory    {        public GOST3410()        {        }                protected PrivateKey engineGeneratePrivate(                KeySpec    keySpec)        throws InvalidKeySpecException        {            if (keySpec instanceof GOST3410PrivateKeySpec)            {                return new JDKGOST3410PrivateKey((GOST3410PrivateKeySpec)keySpec);            }            return super.engineGeneratePrivate(keySpec);        }                protected PublicKey engineGeneratePublic(                KeySpec    keySpec)        throws InvalidKeySpecException        {            if (keySpec instanceof GOST3410PublicKeySpec)            {                return new JDKGOST3410PublicKey((GOST3410PublicKeySpec)keySpec);            }            return super.engineGeneratePublic(keySpec);        }    }        public static class ElGamal        extends JDKKeyFactory    {        public ElGamal()        {            elGamalFactory = true;        }        protected PrivateKey engineGeneratePrivate(            KeySpec    keySpec)            throws InvalidKeySpecException        {            if (keySpec instanceof ElGamalPrivateKeySpec)            {                return new JCEElGamalPrivateKey((ElGamalPrivateKeySpec)keySpec);            }            else if (keySpec instanceof DHPrivateKeySpec)            {                return new JCEElGamalPrivateKey((DHPrivateKeySpec)keySpec);            }            return super.engineGeneratePrivate(keySpec);        }            protected PublicKey engineGeneratePublic(            KeySpec    keySpec)            throws InvalidKeySpecException        {            if (keySpec instanceof ElGamalPublicKeySpec)            {                return new JCEElGamalPublicKey((ElGamalPublicKeySpec)keySpec);            }            else if (keySpec instanceof DHPublicKeySpec)            {                return new JCEElGamalPublicKey((DHPublicKeySpec)keySpec);            }            return super.engineGeneratePublic(keySpec);        }    }    /**     * This isn't really correct, however the class path project API seems to think such     * a key factory will exist.     */    public static class X509        extends JDKKeyFactory    {        public X509()        {        }    }}

⌨️ 快捷键说明

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