class org.bouncycastle.crypto.util.PublicKeyFactory$DSTUConverter extends org.bouncycastle.crypto.util.PublicKeyFactory$SubjectPublicKeyInfoConverter
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: org.bouncycastle.crypto.util.PublicKeyFactory$DSTUConverter
super_class: org.bouncycastle.crypto.util.PublicKeyFactory$SubjectPublicKeyInfoConverter
{
private void <init>();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 // org.bouncycastle.crypto.util.PublicKeyFactory$DSTUConverter this
0: .line 420
aload 0 /* this */
invokespecial org.bouncycastle.crypto.util.PublicKeyFactory$SubjectPublicKeyInfoConverter.<init>:()V
return
end local 0 // org.bouncycastle.crypto.util.PublicKeyFactory$DSTUConverter this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/bouncycastle/crypto/util/PublicKeyFactory$DSTUConverter;
org.bouncycastle.crypto.params.AsymmetricKeyParameter getPublicKeyParameters(org.bouncycastle.asn1.x509.SubjectPublicKeyInfo, java.lang.Object);
descriptor: (Lorg/bouncycastle/asn1/x509/SubjectPublicKeyInfo;Ljava/lang/Object;)Lorg/bouncycastle/crypto/params/AsymmetricKeyParameter;
flags: (0x0000)
Code:
stack=11, locals=13, args_size=3
start local 0 // org.bouncycastle.crypto.util.PublicKeyFactory$DSTUConverter this
start local 1 // org.bouncycastle.asn1.x509.SubjectPublicKeyInfo keyInfo
start local 2 // java.lang.Object defaultParams
0: .line 426
aload 1 /* keyInfo */
invokevirtual org.bouncycastle.asn1.x509.SubjectPublicKeyInfo.getPublicKeyData:()Lorg/bouncycastle/asn1/DERBitString;
astore 3 /* bits */
start local 3 // org.bouncycastle.asn1.DERBitString bits
1: .line 431
aload 3 /* bits */
invokevirtual org.bouncycastle.asn1.DERBitString.getBytes:()[B
invokestatic org.bouncycastle.asn1.ASN1Primitive.fromByteArray:([B)Lorg/bouncycastle/asn1/ASN1Primitive;
checkcast org.bouncycastle.asn1.ASN1OctetString
astore 4 /* key */
start local 4 // org.bouncycastle.asn1.ASN1OctetString key
2: .line 432
goto 5
end local 4 // org.bouncycastle.asn1.ASN1OctetString key
3: .line 433
StackMap locals: org.bouncycastle.crypto.util.PublicKeyFactory$DSTUConverter org.bouncycastle.asn1.x509.SubjectPublicKeyInfo java.lang.Object org.bouncycastle.asn1.DERBitString
StackMap stack: java.io.IOException
pop
4: .line 435
new java.lang.IllegalArgumentException
dup
ldc "error recovering public key"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
start local 4 // org.bouncycastle.asn1.ASN1OctetString key
5: .line 438
StackMap locals: org.bouncycastle.asn1.ASN1OctetString
StackMap stack:
aload 4 /* key */
invokevirtual org.bouncycastle.asn1.ASN1OctetString.getOctets:()[B
astore 5 /* keyEnc */
start local 5 // byte[] keyEnc
6: .line 440
aload 1 /* keyInfo */
invokevirtual org.bouncycastle.asn1.x509.SubjectPublicKeyInfo.getAlgorithm:()Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;
invokevirtual org.bouncycastle.asn1.x509.AlgorithmIdentifier.getAlgorithm:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
getstatic org.bouncycastle.asn1.ua.UAObjectIdentifiers.dstu4145le:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
invokevirtual org.bouncycastle.asn1.ASN1ObjectIdentifier.equals:(Ljava/lang/Object;)Z
ifeq 8
7: .line 442
aload 0 /* this */
aload 5 /* keyEnc */
invokevirtual org.bouncycastle.crypto.util.PublicKeyFactory$DSTUConverter.reverseBytes:([B)V
8: .line 445
StackMap locals: byte[]
StackMap stack:
aload 1 /* keyInfo */
invokevirtual org.bouncycastle.asn1.x509.SubjectPublicKeyInfo.getAlgorithm:()Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;
invokevirtual org.bouncycastle.asn1.x509.AlgorithmIdentifier.getParameters:()Lorg/bouncycastle/asn1/ASN1Encodable;
invokestatic org.bouncycastle.asn1.ua.DSTU4145Params.getInstance:(Ljava/lang/Object;)Lorg/bouncycastle/asn1/ua/DSTU4145Params;
astore 6 /* dstuParams */
start local 6 // org.bouncycastle.asn1.ua.DSTU4145Params dstuParams
9: .line 448
aload 6 /* dstuParams */
invokevirtual org.bouncycastle.asn1.ua.DSTU4145Params.isNamedCurve:()Z
ifeq 13
10: .line 450
aload 6 /* dstuParams */
invokevirtual org.bouncycastle.asn1.ua.DSTU4145Params.getNamedCurve:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
astore 8 /* curveOid */
start local 8 // org.bouncycastle.asn1.ASN1ObjectIdentifier curveOid
11: .line 452
aload 8 /* curveOid */
invokestatic org.bouncycastle.asn1.ua.DSTU4145NamedCurves.getByOID:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Lorg/bouncycastle/crypto/params/ECDomainParameters;
astore 7 /* ecDomain */
end local 8 // org.bouncycastle.asn1.ASN1ObjectIdentifier curveOid
start local 7 // org.bouncycastle.crypto.params.ECDomainParameters ecDomain
12: .line 453
goto 23
end local 7 // org.bouncycastle.crypto.params.ECDomainParameters ecDomain
13: .line 456
StackMap locals: org.bouncycastle.asn1.ua.DSTU4145Params
StackMap stack:
aload 6 /* dstuParams */
invokevirtual org.bouncycastle.asn1.ua.DSTU4145Params.getECBinary:()Lorg/bouncycastle/asn1/ua/DSTU4145ECBinary;
astore 8 /* binary */
start local 8 // org.bouncycastle.asn1.ua.DSTU4145ECBinary binary
14: .line 457
aload 8 /* binary */
invokevirtual org.bouncycastle.asn1.ua.DSTU4145ECBinary.getB:()[B
astore 9 /* b_bytes */
start local 9 // byte[] b_bytes
15: .line 458
aload 1 /* keyInfo */
invokevirtual org.bouncycastle.asn1.x509.SubjectPublicKeyInfo.getAlgorithm:()Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;
invokevirtual org.bouncycastle.asn1.x509.AlgorithmIdentifier.getAlgorithm:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
getstatic org.bouncycastle.asn1.ua.UAObjectIdentifiers.dstu4145le:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
invokevirtual org.bouncycastle.asn1.ASN1ObjectIdentifier.equals:(Ljava/lang/Object;)Z
ifeq 17
16: .line 460
aload 0 /* this */
aload 9 /* b_bytes */
invokevirtual org.bouncycastle.crypto.util.PublicKeyFactory$DSTUConverter.reverseBytes:([B)V
17: .line 462
StackMap locals: org.bouncycastle.crypto.util.PublicKeyFactory$DSTUConverter org.bouncycastle.asn1.x509.SubjectPublicKeyInfo java.lang.Object org.bouncycastle.asn1.DERBitString org.bouncycastle.asn1.ASN1OctetString byte[] org.bouncycastle.asn1.ua.DSTU4145Params top org.bouncycastle.asn1.ua.DSTU4145ECBinary byte[]
StackMap stack:
aload 8 /* binary */
invokevirtual org.bouncycastle.asn1.ua.DSTU4145ECBinary.getField:()Lorg/bouncycastle/asn1/ua/DSTU4145BinaryField;
astore 10 /* field */
start local 10 // org.bouncycastle.asn1.ua.DSTU4145BinaryField field
18: .line 463
new org.bouncycastle.math.ec.ECCurve$F2m
dup
aload 10 /* field */
invokevirtual org.bouncycastle.asn1.ua.DSTU4145BinaryField.getM:()I
aload 10 /* field */
invokevirtual org.bouncycastle.asn1.ua.DSTU4145BinaryField.getK1:()I
aload 10 /* field */
invokevirtual org.bouncycastle.asn1.ua.DSTU4145BinaryField.getK2:()I
aload 10 /* field */
invokevirtual org.bouncycastle.asn1.ua.DSTU4145BinaryField.getK3:()I
aload 8 /* binary */
invokevirtual org.bouncycastle.asn1.ua.DSTU4145ECBinary.getA:()Ljava/math/BigInteger;
new java.math.BigInteger
dup
iconst_1
aload 9 /* b_bytes */
invokespecial java.math.BigInteger.<init>:(I[B)V
invokespecial org.bouncycastle.math.ec.ECCurve$F2m.<init>:(IIIILjava/math/BigInteger;Ljava/math/BigInteger;)V
astore 11 /* curve */
start local 11 // org.bouncycastle.math.ec.ECCurve curve
19: .line 464
aload 8 /* binary */
invokevirtual org.bouncycastle.asn1.ua.DSTU4145ECBinary.getG:()[B
astore 12 /* g_bytes */
start local 12 // byte[] g_bytes
20: .line 465
aload 1 /* keyInfo */
invokevirtual org.bouncycastle.asn1.x509.SubjectPublicKeyInfo.getAlgorithm:()Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;
invokevirtual org.bouncycastle.asn1.x509.AlgorithmIdentifier.getAlgorithm:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
getstatic org.bouncycastle.asn1.ua.UAObjectIdentifiers.dstu4145le:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
invokevirtual org.bouncycastle.asn1.ASN1ObjectIdentifier.equals:(Ljava/lang/Object;)Z
ifeq 22
21: .line 467
aload 0 /* this */
aload 12 /* g_bytes */
invokevirtual org.bouncycastle.crypto.util.PublicKeyFactory$DSTUConverter.reverseBytes:([B)V
22: .line 469
StackMap locals: org.bouncycastle.asn1.ua.DSTU4145BinaryField org.bouncycastle.math.ec.ECCurve byte[]
StackMap stack:
new org.bouncycastle.crypto.params.ECDomainParameters
dup
aload 11 /* curve */
aload 11 /* curve */
aload 12 /* g_bytes */
invokestatic org.bouncycastle.asn1.ua.DSTU4145PointEncoder.decodePoint:(Lorg/bouncycastle/math/ec/ECCurve;[B)Lorg/bouncycastle/math/ec/ECPoint;
aload 8 /* binary */
invokevirtual org.bouncycastle.asn1.ua.DSTU4145ECBinary.getN:()Ljava/math/BigInteger;
invokespecial org.bouncycastle.crypto.params.ECDomainParameters.<init>:(Lorg/bouncycastle/math/ec/ECCurve;Lorg/bouncycastle/math/ec/ECPoint;Ljava/math/BigInteger;)V
astore 7 /* ecDomain */
end local 12 // byte[] g_bytes
end local 11 // org.bouncycastle.math.ec.ECCurve curve
end local 10 // org.bouncycastle.asn1.ua.DSTU4145BinaryField field
end local 9 // byte[] b_bytes
end local 8 // org.bouncycastle.asn1.ua.DSTU4145ECBinary binary
start local 7 // org.bouncycastle.crypto.params.ECDomainParameters ecDomain
23: .line 472
StackMap locals: org.bouncycastle.crypto.util.PublicKeyFactory$DSTUConverter org.bouncycastle.asn1.x509.SubjectPublicKeyInfo java.lang.Object org.bouncycastle.asn1.DERBitString org.bouncycastle.asn1.ASN1OctetString byte[] org.bouncycastle.asn1.ua.DSTU4145Params org.bouncycastle.crypto.params.ECDomainParameters
StackMap stack:
new org.bouncycastle.crypto.params.ECPublicKeyParameters
dup
aload 7 /* ecDomain */
invokevirtual org.bouncycastle.crypto.params.ECDomainParameters.getCurve:()Lorg/bouncycastle/math/ec/ECCurve;
aload 5 /* keyEnc */
invokestatic org.bouncycastle.asn1.ua.DSTU4145PointEncoder.decodePoint:(Lorg/bouncycastle/math/ec/ECCurve;[B)Lorg/bouncycastle/math/ec/ECPoint;
aload 7 /* ecDomain */
invokespecial org.bouncycastle.crypto.params.ECPublicKeyParameters.<init>:(Lorg/bouncycastle/math/ec/ECPoint;Lorg/bouncycastle/crypto/params/ECDomainParameters;)V
areturn
end local 7 // org.bouncycastle.crypto.params.ECDomainParameters ecDomain
end local 6 // org.bouncycastle.asn1.ua.DSTU4145Params dstuParams
end local 5 // byte[] keyEnc
end local 4 // org.bouncycastle.asn1.ASN1OctetString key
end local 3 // org.bouncycastle.asn1.DERBitString bits
end local 2 // java.lang.Object defaultParams
end local 1 // org.bouncycastle.asn1.x509.SubjectPublicKeyInfo keyInfo
end local 0 // org.bouncycastle.crypto.util.PublicKeyFactory$DSTUConverter this
LocalVariableTable:
Start End Slot Name Signature
0 24 0 this Lorg/bouncycastle/crypto/util/PublicKeyFactory$DSTUConverter;
0 24 1 keyInfo Lorg/bouncycastle/asn1/x509/SubjectPublicKeyInfo;
0 24 2 defaultParams Ljava/lang/Object;
1 24 3 bits Lorg/bouncycastle/asn1/DERBitString;
2 3 4 key Lorg/bouncycastle/asn1/ASN1OctetString;
5 24 4 key Lorg/bouncycastle/asn1/ASN1OctetString;
6 24 5 keyEnc [B
9 24 6 dstuParams Lorg/bouncycastle/asn1/ua/DSTU4145Params;
12 13 7 ecDomain Lorg/bouncycastle/crypto/params/ECDomainParameters;
23 24 7 ecDomain Lorg/bouncycastle/crypto/params/ECDomainParameters;
11 12 8 curveOid Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
14 23 8 binary Lorg/bouncycastle/asn1/ua/DSTU4145ECBinary;
15 23 9 b_bytes [B
18 23 10 field Lorg/bouncycastle/asn1/ua/DSTU4145BinaryField;
19 23 11 curve Lorg/bouncycastle/math/ec/ECCurve;
20 23 12 g_bytes [B
Exception table:
from to target type
1 2 3 Class java.io.IOException
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
keyInfo
defaultParams
private void reverseBytes(byte[]);
descriptor: ([B)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=4, args_size=2
start local 0 // org.bouncycastle.crypto.util.PublicKeyFactory$DSTUConverter this
start local 1 // byte[] bytes
0: .line 479
iconst_0
istore 3 /* i */
start local 3 // int i
1: goto 6
2: .line 481
StackMap locals: org.bouncycastle.crypto.util.PublicKeyFactory$DSTUConverter byte[] top int
StackMap stack:
aload 1 /* bytes */
iload 3 /* i */
baload
istore 2 /* tmp */
start local 2 // byte tmp
3: .line 482
aload 1 /* bytes */
iload 3 /* i */
aload 1 /* bytes */
aload 1 /* bytes */
arraylength
iconst_1
isub
iload 3 /* i */
isub
baload
bastore
4: .line 483
aload 1 /* bytes */
aload 1 /* bytes */
arraylength
iconst_1
isub
iload 3 /* i */
isub
iload 2 /* tmp */
bastore
5: .line 479
iinc 3 /* i */ 1
end local 2 // byte tmp
StackMap locals:
StackMap stack:
6: iload 3 /* i */
aload 1 /* bytes */
arraylength
iconst_2
idiv
if_icmplt 2
end local 3 // int i
7: .line 485
return
end local 1 // byte[] bytes
end local 0 // org.bouncycastle.crypto.util.PublicKeyFactory$DSTUConverter this
LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lorg/bouncycastle/crypto/util/PublicKeyFactory$DSTUConverter;
0 8 1 bytes [B
3 6 2 tmp B
1 7 3 i I
MethodParameters:
Name Flags
bytes
}
SourceFile: "PublicKeyFactory.java"
NestHost: org.bouncycastle.crypto.util.PublicKeyFactory
InnerClasses:
private DSTUConverter = org.bouncycastle.crypto.util.PublicKeyFactory$DSTUConverter of org.bouncycastle.crypto.util.PublicKeyFactory
private abstract SubjectPublicKeyInfoConverter = org.bouncycastle.crypto.util.PublicKeyFactory$SubjectPublicKeyInfoConverter of org.bouncycastle.crypto.util.PublicKeyFactory
public F2m = org.bouncycastle.math.ec.ECCurve$F2m of org.bouncycastle.math.ec.ECCurve