14c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrompackage org.bouncycastle.jcajce.provider.asymmetric.util;
24c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
34c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.ASN1Encodable;
44c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.ASN1Encoding;
54c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.pkcs.PrivateKeyInfo;
64c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.x509.AlgorithmIdentifier;
74c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.x509.SubjectPublicKeyInfo;
84c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
94c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrompublic class KeyUtil
104c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom{
114c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    public static byte[] getEncodedSubjectPublicKeyInfo(AlgorithmIdentifier algId, ASN1Encodable keyData)
124c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    {
134c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        try
144c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        {
154c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom            return getEncodedSubjectPublicKeyInfo(new SubjectPublicKeyInfo(algId, keyData));
164c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        }
174c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        catch (Exception e)
184c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        {
194c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom            return null;
204c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        }
214c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    }
224c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
234c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    public static byte[] getEncodedSubjectPublicKeyInfo(AlgorithmIdentifier algId, byte[] keyData)
244c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    {
254c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        try
264c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        {
274c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom            return getEncodedSubjectPublicKeyInfo(new SubjectPublicKeyInfo(algId, keyData));
284c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        }
294c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        catch (Exception e)
304c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        {
314c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom            return null;
324c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        }
334c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    }
344c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
354c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    public static byte[] getEncodedSubjectPublicKeyInfo(SubjectPublicKeyInfo info)
364c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    {
374c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom         try
384c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom         {
394c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom             return info.getEncoded(ASN1Encoding.DER);
404c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom         }
414c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom         catch (Exception e)
424c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom         {
434c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom             return null;
444c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom         }
454c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    }
464c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
474c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    public static byte[] getEncodedPrivateKeyInfo(AlgorithmIdentifier algId, ASN1Encodable privKey)
484c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    {
494c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom         try
504c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom         {
514c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom             PrivateKeyInfo info = new PrivateKeyInfo(algId, privKey.toASN1Primitive());
524c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
534c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom             return getEncodedPrivateKeyInfo(info);
544c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom         }
554c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom         catch (Exception e)
564c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom         {
574c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom             return null;
584c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom         }
594c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    }
604c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
614c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    public static byte[] getEncodedPrivateKeyInfo(PrivateKeyInfo info)
624c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    {
634c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom         try
644c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom         {
654c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom             return info.getEncoded(ASN1Encoding.DER);
664c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom         }
674c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom         catch (Exception e)
684c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom         {
694c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom             return null;
704c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom         }
714c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    }
724c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom}
73