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