public class org.bouncycastle.crypto.util.PublicKeyFactory
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.bouncycastle.crypto.util.PublicKeyFactory
super_class: java.lang.Object
{
private static java.util.Map converters;
descriptor: Ljava/util/Map;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=0, args_size=0
0: new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
putstatic org.bouncycastle.crypto.util.PublicKeyFactory.converters:Ljava/util/Map;
1: getstatic org.bouncycastle.crypto.util.PublicKeyFactory.converters:Ljava/util/Map;
getstatic org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers.rsaEncryption:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
new org.bouncycastle.crypto.util.PublicKeyFactory$RSAConverter
dup
invokespecial org.bouncycastle.crypto.util.PublicKeyFactory$RSAConverter.<init>:()V
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
2: getstatic org.bouncycastle.crypto.util.PublicKeyFactory.converters:Ljava/util/Map;
getstatic org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers.id_RSASSA_PSS:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
new org.bouncycastle.crypto.util.PublicKeyFactory$RSAConverter
dup
invokespecial org.bouncycastle.crypto.util.PublicKeyFactory$RSAConverter.<init>:()V
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
3: getstatic org.bouncycastle.crypto.util.PublicKeyFactory.converters:Ljava/util/Map;
getstatic org.bouncycastle.asn1.x509.X509ObjectIdentifiers.id_ea_rsa:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
new org.bouncycastle.crypto.util.PublicKeyFactory$RSAConverter
dup
invokespecial org.bouncycastle.crypto.util.PublicKeyFactory$RSAConverter.<init>:()V
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
4: getstatic org.bouncycastle.crypto.util.PublicKeyFactory.converters:Ljava/util/Map;
getstatic org.bouncycastle.asn1.x9.X9ObjectIdentifiers.dhpublicnumber:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
new org.bouncycastle.crypto.util.PublicKeyFactory$DHPublicNumberConverter
dup
invokespecial org.bouncycastle.crypto.util.PublicKeyFactory$DHPublicNumberConverter.<init>:()V
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
5: getstatic org.bouncycastle.crypto.util.PublicKeyFactory.converters:Ljava/util/Map;
getstatic org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers.dhKeyAgreement:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
new org.bouncycastle.crypto.util.PublicKeyFactory$DHAgreementConverter
dup
invokespecial org.bouncycastle.crypto.util.PublicKeyFactory$DHAgreementConverter.<init>:()V
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
6: getstatic org.bouncycastle.crypto.util.PublicKeyFactory.converters:Ljava/util/Map;
getstatic org.bouncycastle.asn1.x9.X9ObjectIdentifiers.id_dsa:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
new org.bouncycastle.crypto.util.PublicKeyFactory$DSAConverter
dup
invokespecial org.bouncycastle.crypto.util.PublicKeyFactory$DSAConverter.<init>:()V
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
7: getstatic org.bouncycastle.crypto.util.PublicKeyFactory.converters:Ljava/util/Map;
getstatic org.bouncycastle.asn1.oiw.OIWObjectIdentifiers.dsaWithSHA1:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
new org.bouncycastle.crypto.util.PublicKeyFactory$DSAConverter
dup
invokespecial org.bouncycastle.crypto.util.PublicKeyFactory$DSAConverter.<init>:()V
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
8: getstatic org.bouncycastle.crypto.util.PublicKeyFactory.converters:Ljava/util/Map;
getstatic org.bouncycastle.asn1.oiw.OIWObjectIdentifiers.elGamalAlgorithm:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
new org.bouncycastle.crypto.util.PublicKeyFactory$ElGamalConverter
dup
invokespecial org.bouncycastle.crypto.util.PublicKeyFactory$ElGamalConverter.<init>:()V
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
9: getstatic org.bouncycastle.crypto.util.PublicKeyFactory.converters:Ljava/util/Map;
getstatic org.bouncycastle.asn1.x9.X9ObjectIdentifiers.id_ecPublicKey:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
new org.bouncycastle.crypto.util.PublicKeyFactory$ECConverter
dup
invokespecial org.bouncycastle.crypto.util.PublicKeyFactory$ECConverter.<init>:()V
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
10: getstatic org.bouncycastle.crypto.util.PublicKeyFactory.converters:Ljava/util/Map;
getstatic org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers.gostR3410_2001:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
new org.bouncycastle.crypto.util.PublicKeyFactory$GOST3410_2001Converter
dup
invokespecial org.bouncycastle.crypto.util.PublicKeyFactory$GOST3410_2001Converter.<init>:()V
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
11: getstatic org.bouncycastle.crypto.util.PublicKeyFactory.converters:Ljava/util/Map;
getstatic org.bouncycastle.asn1.rosstandart.RosstandartObjectIdentifiers.id_tc26_gost_3410_12_256:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
new org.bouncycastle.crypto.util.PublicKeyFactory$GOST3410_2012Converter
dup
invokespecial org.bouncycastle.crypto.util.PublicKeyFactory$GOST3410_2012Converter.<init>:()V
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
12: getstatic org.bouncycastle.crypto.util.PublicKeyFactory.converters:Ljava/util/Map;
getstatic org.bouncycastle.asn1.rosstandart.RosstandartObjectIdentifiers.id_tc26_gost_3410_12_512:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
new org.bouncycastle.crypto.util.PublicKeyFactory$GOST3410_2012Converter
dup
invokespecial org.bouncycastle.crypto.util.PublicKeyFactory$GOST3410_2012Converter.<init>:()V
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
13: getstatic org.bouncycastle.crypto.util.PublicKeyFactory.converters:Ljava/util/Map;
getstatic org.bouncycastle.asn1.ua.UAObjectIdentifiers.dstu4145be:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
new org.bouncycastle.crypto.util.PublicKeyFactory$DSTUConverter
dup
invokespecial org.bouncycastle.crypto.util.PublicKeyFactory$DSTUConverter.<init>:()V
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
14: getstatic org.bouncycastle.crypto.util.PublicKeyFactory.converters:Ljava/util/Map;
getstatic org.bouncycastle.asn1.ua.UAObjectIdentifiers.dstu4145le:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
new org.bouncycastle.crypto.util.PublicKeyFactory$DSTUConverter
dup
invokespecial org.bouncycastle.crypto.util.PublicKeyFactory$DSTUConverter.<init>:()V
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
15: getstatic org.bouncycastle.crypto.util.PublicKeyFactory.converters:Ljava/util/Map;
getstatic org.bouncycastle.asn1.edec.EdECObjectIdentifiers.id_X25519:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
new org.bouncycastle.crypto.util.PublicKeyFactory$X25519Converter
dup
invokespecial org.bouncycastle.crypto.util.PublicKeyFactory$X25519Converter.<init>:()V
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
16: getstatic org.bouncycastle.crypto.util.PublicKeyFactory.converters:Ljava/util/Map;
getstatic org.bouncycastle.asn1.edec.EdECObjectIdentifiers.id_X448:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
new org.bouncycastle.crypto.util.PublicKeyFactory$X448Converter
dup
invokespecial org.bouncycastle.crypto.util.PublicKeyFactory$X448Converter.<init>:()V
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
17: getstatic org.bouncycastle.crypto.util.PublicKeyFactory.converters:Ljava/util/Map;
getstatic org.bouncycastle.asn1.edec.EdECObjectIdentifiers.id_Ed25519:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
new org.bouncycastle.crypto.util.PublicKeyFactory$Ed25519Converter
dup
invokespecial org.bouncycastle.crypto.util.PublicKeyFactory$Ed25519Converter.<init>:()V
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
18: getstatic org.bouncycastle.crypto.util.PublicKeyFactory.converters:Ljava/util/Map;
getstatic org.bouncycastle.asn1.edec.EdECObjectIdentifiers.id_Ed448:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
new org.bouncycastle.crypto.util.PublicKeyFactory$Ed448Converter
dup
invokespecial org.bouncycastle.crypto.util.PublicKeyFactory$Ed448Converter.<init>:()V
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
19: return
LocalVariableTable:
Start End Slot Name Signature
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/bouncycastle/crypto/util/PublicKeyFactory;
public static org.bouncycastle.crypto.params.AsymmetricKeyParameter createKey(byte[]);
descriptor: ([B)Lorg/bouncycastle/crypto/params/AsymmetricKeyParameter;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokestatic org.bouncycastle.asn1.ASN1Primitive.fromByteArray:([B)Lorg/bouncycastle/asn1/ASN1Primitive;
invokestatic org.bouncycastle.asn1.x509.SubjectPublicKeyInfo.getInstance:(Ljava/lang/Object;)Lorg/bouncycastle/asn1/x509/SubjectPublicKeyInfo;
invokestatic org.bouncycastle.crypto.util.PublicKeyFactory.createKey:(Lorg/bouncycastle/asn1/x509/SubjectPublicKeyInfo;)Lorg/bouncycastle/crypto/params/AsymmetricKeyParameter;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 keyInfoData [B
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
keyInfoData
public static org.bouncycastle.crypto.params.AsymmetricKeyParameter createKey(java.io.InputStream);
descriptor: (Ljava/io/InputStream;)Lorg/bouncycastle/crypto/params/AsymmetricKeyParameter;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: new org.bouncycastle.asn1.ASN1InputStream
dup
aload 0
invokespecial org.bouncycastle.asn1.ASN1InputStream.<init>:(Ljava/io/InputStream;)V
invokevirtual org.bouncycastle.asn1.ASN1InputStream.readObject:()Lorg/bouncycastle/asn1/ASN1Primitive;
invokestatic org.bouncycastle.asn1.x509.SubjectPublicKeyInfo.getInstance:(Ljava/lang/Object;)Lorg/bouncycastle/asn1/x509/SubjectPublicKeyInfo;
invokestatic org.bouncycastle.crypto.util.PublicKeyFactory.createKey:(Lorg/bouncycastle/asn1/x509/SubjectPublicKeyInfo;)Lorg/bouncycastle/crypto/params/AsymmetricKeyParameter;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 inStr Ljava/io/InputStream;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
inStr
public static org.bouncycastle.crypto.params.AsymmetricKeyParameter createKey(org.bouncycastle.asn1.x509.SubjectPublicKeyInfo);
descriptor: (Lorg/bouncycastle/asn1/x509/SubjectPublicKeyInfo;)Lorg/bouncycastle/crypto/params/AsymmetricKeyParameter;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
aconst_null
invokestatic org.bouncycastle.crypto.util.PublicKeyFactory.createKey:(Lorg/bouncycastle/asn1/x509/SubjectPublicKeyInfo;Ljava/lang/Object;)Lorg/bouncycastle/crypto/params/AsymmetricKeyParameter;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 keyInfo Lorg/bouncycastle/asn1/x509/SubjectPublicKeyInfo;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
keyInfo
public static org.bouncycastle.crypto.params.AsymmetricKeyParameter createKey(org.bouncycastle.asn1.x509.SubjectPublicKeyInfo, java.lang.Object);
descriptor: (Lorg/bouncycastle/asn1/x509/SubjectPublicKeyInfo;Ljava/lang/Object;)Lorg/bouncycastle/crypto/params/AsymmetricKeyParameter;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=5, locals=4, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual org.bouncycastle.asn1.x509.SubjectPublicKeyInfo.getAlgorithm:()Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;
astore 2
start local 2 1: getstatic org.bouncycastle.crypto.util.PublicKeyFactory.converters:Ljava/util/Map;
aload 2
invokevirtual org.bouncycastle.asn1.x509.AlgorithmIdentifier.getAlgorithm:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.bouncycastle.crypto.util.PublicKeyFactory$SubjectPublicKeyInfoConverter
astore 3
start local 3 2: aload 3
ifnull 4
3: aload 3
aload 0
aload 1
invokevirtual org.bouncycastle.crypto.util.PublicKeyFactory$SubjectPublicKeyInfoConverter.getPublicKeyParameters:(Lorg/bouncycastle/asn1/x509/SubjectPublicKeyInfo;Ljava/lang/Object;)Lorg/bouncycastle/crypto/params/AsymmetricKeyParameter;
areturn
4: StackMap locals: org.bouncycastle.asn1.x509.AlgorithmIdentifier org.bouncycastle.crypto.util.PublicKeyFactory$SubjectPublicKeyInfoConverter
StackMap stack:
new java.io.IOException
dup
new java.lang.StringBuilder
dup
ldc "algorithm identifier in public key not recognised: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 2
invokevirtual org.bouncycastle.asn1.x509.AlgorithmIdentifier.getAlgorithm:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 keyInfo Lorg/bouncycastle/asn1/x509/SubjectPublicKeyInfo;
0 5 1 defaultParams Ljava/lang/Object;
1 5 2 algId Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;
2 5 3 converter Lorg/bouncycastle/crypto/util/PublicKeyFactory$SubjectPublicKeyInfoConverter;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
keyInfo
defaultParams
private static byte[] getRawKey(org.bouncycastle.asn1.x509.SubjectPublicKeyInfo, java.lang.Object, int);
descriptor: (Lorg/bouncycastle/asn1/x509/SubjectPublicKeyInfo;Ljava/lang/Object;I)[B
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokevirtual org.bouncycastle.asn1.x509.SubjectPublicKeyInfo.getPublicKeyData:()Lorg/bouncycastle/asn1/DERBitString;
invokevirtual org.bouncycastle.asn1.DERBitString.getOctets:()[B
astore 3
start local 3 1: iload 2
aload 3
arraylength
if_icmpeq 3
2: new java.lang.RuntimeException
dup
ldc "public key encoding has incorrect length"
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
3: StackMap locals: byte[]
StackMap stack:
aload 3
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 keyInfo Lorg/bouncycastle/asn1/x509/SubjectPublicKeyInfo;
0 4 1 defaultParams Ljava/lang/Object;
0 4 2 expectedSize I
1 4 3 result [B
MethodParameters:
Name Flags
keyInfo
defaultParams
expectedSize
}
SourceFile: "PublicKeyFactory.java"
NestMembers:
org.bouncycastle.crypto.util.PublicKeyFactory$DHAgreementConverter org.bouncycastle.crypto.util.PublicKeyFactory$DHPublicNumberConverter org.bouncycastle.crypto.util.PublicKeyFactory$DSAConverter org.bouncycastle.crypto.util.PublicKeyFactory$DSTUConverter org.bouncycastle.crypto.util.PublicKeyFactory$ECConverter org.bouncycastle.crypto.util.PublicKeyFactory$Ed25519Converter org.bouncycastle.crypto.util.PublicKeyFactory$Ed448Converter org.bouncycastle.crypto.util.PublicKeyFactory$ElGamalConverter org.bouncycastle.crypto.util.PublicKeyFactory$GOST3410_2001Converter org.bouncycastle.crypto.util.PublicKeyFactory$GOST3410_2012Converter org.bouncycastle.crypto.util.PublicKeyFactory$RSAConverter org.bouncycastle.crypto.util.PublicKeyFactory$SubjectPublicKeyInfoConverter org.bouncycastle.crypto.util.PublicKeyFactory$X25519Converter org.bouncycastle.crypto.util.PublicKeyFactory$X448Converter
InnerClasses:
private DHAgreementConverter = org.bouncycastle.crypto.util.PublicKeyFactory$DHAgreementConverter of org.bouncycastle.crypto.util.PublicKeyFactory
private DHPublicNumberConverter = org.bouncycastle.crypto.util.PublicKeyFactory$DHPublicNumberConverter of org.bouncycastle.crypto.util.PublicKeyFactory
private DSAConverter = org.bouncycastle.crypto.util.PublicKeyFactory$DSAConverter of org.bouncycastle.crypto.util.PublicKeyFactory
private DSTUConverter = org.bouncycastle.crypto.util.PublicKeyFactory$DSTUConverter of org.bouncycastle.crypto.util.PublicKeyFactory
private ECConverter = org.bouncycastle.crypto.util.PublicKeyFactory$ECConverter of org.bouncycastle.crypto.util.PublicKeyFactory
private Ed25519Converter = org.bouncycastle.crypto.util.PublicKeyFactory$Ed25519Converter of org.bouncycastle.crypto.util.PublicKeyFactory
private Ed448Converter = org.bouncycastle.crypto.util.PublicKeyFactory$Ed448Converter of org.bouncycastle.crypto.util.PublicKeyFactory
private ElGamalConverter = org.bouncycastle.crypto.util.PublicKeyFactory$ElGamalConverter of org.bouncycastle.crypto.util.PublicKeyFactory
private GOST3410_2001Converter = org.bouncycastle.crypto.util.PublicKeyFactory$GOST3410_2001Converter of org.bouncycastle.crypto.util.PublicKeyFactory
private GOST3410_2012Converter = org.bouncycastle.crypto.util.PublicKeyFactory$GOST3410_2012Converter of org.bouncycastle.crypto.util.PublicKeyFactory
private RSAConverter = org.bouncycastle.crypto.util.PublicKeyFactory$RSAConverter of org.bouncycastle.crypto.util.PublicKeyFactory
private abstract SubjectPublicKeyInfoConverter = org.bouncycastle.crypto.util.PublicKeyFactory$SubjectPublicKeyInfoConverter of org.bouncycastle.crypto.util.PublicKeyFactory
private X25519Converter = org.bouncycastle.crypto.util.PublicKeyFactory$X25519Converter of org.bouncycastle.crypto.util.PublicKeyFactory
private X448Converter = org.bouncycastle.crypto.util.PublicKeyFactory$X448Converter of org.bouncycastle.crypto.util.PublicKeyFactory