class org.bouncycastle.cert.crmf.jcajce.CRMFHelper
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: org.bouncycastle.cert.crmf.jcajce.CRMFHelper
  super_class: java.lang.Object
{
  protected static final java.util.Map BASE_CIPHER_NAMES;
    descriptor: Ljava/util/Map;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL

  protected static final java.util.Map CIPHER_ALG_NAMES;
    descriptor: Ljava/util/Map;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL

  protected static final java.util.Map DIGEST_ALG_NAMES;
    descriptor: Ljava/util/Map;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL

  protected static final java.util.Map KEY_ALG_NAMES;
    descriptor: Ljava/util/Map;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL

  protected static final java.util.Map MAC_ALG_NAMES;
    descriptor: Ljava/util/Map;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL

  private org.bouncycastle.jcajce.util.JcaJceHelper helper;
    descriptor: Lorg/bouncycastle/jcajce/util/JcaJceHelper;
    flags: (0x0002) ACC_PRIVATE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0
         0: .line 49
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putstatic org.bouncycastle.cert.crmf.jcajce.CRMFHelper.BASE_CIPHER_NAMES:Ljava/util/Map;
         1: .line 50
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putstatic org.bouncycastle.cert.crmf.jcajce.CRMFHelper.CIPHER_ALG_NAMES:Ljava/util/Map;
         2: .line 51
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putstatic org.bouncycastle.cert.crmf.jcajce.CRMFHelper.DIGEST_ALG_NAMES:Ljava/util/Map;
         3: .line 52
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putstatic org.bouncycastle.cert.crmf.jcajce.CRMFHelper.KEY_ALG_NAMES:Ljava/util/Map;
         4: .line 53
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putstatic org.bouncycastle.cert.crmf.jcajce.CRMFHelper.MAC_ALG_NAMES:Ljava/util/Map;
         5: .line 57
            getstatic org.bouncycastle.cert.crmf.jcajce.CRMFHelper.BASE_CIPHER_NAMES:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers.des_EDE3_CBC:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            ldc "DESEDE"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         6: .line 58
            getstatic org.bouncycastle.cert.crmf.jcajce.CRMFHelper.BASE_CIPHER_NAMES:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.nist.NISTObjectIdentifiers.id_aes128_CBC:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            ldc "AES"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         7: .line 59
            getstatic org.bouncycastle.cert.crmf.jcajce.CRMFHelper.BASE_CIPHER_NAMES:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.nist.NISTObjectIdentifiers.id_aes192_CBC:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            ldc "AES"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         8: .line 60
            getstatic org.bouncycastle.cert.crmf.jcajce.CRMFHelper.BASE_CIPHER_NAMES:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.nist.NISTObjectIdentifiers.id_aes256_CBC:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            ldc "AES"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         9: .line 62
            getstatic org.bouncycastle.cert.crmf.jcajce.CRMFHelper.CIPHER_ALG_NAMES:Ljava/util/Map;
            getstatic org.bouncycastle.cms.CMSAlgorithm.DES_EDE3_CBC:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            ldc "DESEDE/CBC/PKCS5Padding"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        10: .line 63
            getstatic org.bouncycastle.cert.crmf.jcajce.CRMFHelper.CIPHER_ALG_NAMES:Ljava/util/Map;
            getstatic org.bouncycastle.cms.CMSAlgorithm.AES128_CBC:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            ldc "AES/CBC/PKCS5Padding"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        11: .line 64
            getstatic org.bouncycastle.cert.crmf.jcajce.CRMFHelper.CIPHER_ALG_NAMES:Ljava/util/Map;
            getstatic org.bouncycastle.cms.CMSAlgorithm.AES192_CBC:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            ldc "AES/CBC/PKCS5Padding"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        12: .line 65
            getstatic org.bouncycastle.cert.crmf.jcajce.CRMFHelper.CIPHER_ALG_NAMES:Ljava/util/Map;
            getstatic org.bouncycastle.cms.CMSAlgorithm.AES256_CBC:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            ldc "AES/CBC/PKCS5Padding"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        13: .line 66
            getstatic org.bouncycastle.cert.crmf.jcajce.CRMFHelper.CIPHER_ALG_NAMES:Ljava/util/Map;
            new org.bouncycastle.asn1.ASN1ObjectIdentifier
            dup
            getstatic org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers.rsaEncryption:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokevirtual org.bouncycastle.asn1.ASN1ObjectIdentifier.getId:()Ljava/lang/String;
            invokespecial org.bouncycastle.asn1.ASN1ObjectIdentifier.<init>:(Ljava/lang/String;)V
            ldc "RSA/ECB/PKCS1Padding"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        14: .line 68
            getstatic org.bouncycastle.cert.crmf.jcajce.CRMFHelper.DIGEST_ALG_NAMES:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.oiw.OIWObjectIdentifiers.idSHA1:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            ldc "SHA1"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        15: .line 69
            getstatic org.bouncycastle.cert.crmf.jcajce.CRMFHelper.DIGEST_ALG_NAMES:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.nist.NISTObjectIdentifiers.id_sha224:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            ldc "SHA224"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        16: .line 70
            getstatic org.bouncycastle.cert.crmf.jcajce.CRMFHelper.DIGEST_ALG_NAMES:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.nist.NISTObjectIdentifiers.id_sha256:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            ldc "SHA256"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        17: .line 71
            getstatic org.bouncycastle.cert.crmf.jcajce.CRMFHelper.DIGEST_ALG_NAMES:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.nist.NISTObjectIdentifiers.id_sha384:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            ldc "SHA384"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        18: .line 72
            getstatic org.bouncycastle.cert.crmf.jcajce.CRMFHelper.DIGEST_ALG_NAMES:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.nist.NISTObjectIdentifiers.id_sha512:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            ldc "SHA512"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        19: .line 74
            getstatic org.bouncycastle.cert.crmf.jcajce.CRMFHelper.MAC_ALG_NAMES:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.iana.IANAObjectIdentifiers.hmacSHA1:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            ldc "HMACSHA1"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        20: .line 75
            getstatic org.bouncycastle.cert.crmf.jcajce.CRMFHelper.MAC_ALG_NAMES:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers.id_hmacWithSHA1:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            ldc "HMACSHA1"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        21: .line 76
            getstatic org.bouncycastle.cert.crmf.jcajce.CRMFHelper.MAC_ALG_NAMES:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers.id_hmacWithSHA224:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            ldc "HMACSHA224"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        22: .line 77
            getstatic org.bouncycastle.cert.crmf.jcajce.CRMFHelper.MAC_ALG_NAMES:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers.id_hmacWithSHA256:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            ldc "HMACSHA256"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        23: .line 78
            getstatic org.bouncycastle.cert.crmf.jcajce.CRMFHelper.MAC_ALG_NAMES:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers.id_hmacWithSHA384:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            ldc "HMACSHA384"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        24: .line 79
            getstatic org.bouncycastle.cert.crmf.jcajce.CRMFHelper.MAC_ALG_NAMES:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers.id_hmacWithSHA512:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            ldc "HMACSHA512"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        25: .line 81
            getstatic org.bouncycastle.cert.crmf.jcajce.CRMFHelper.KEY_ALG_NAMES:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers.rsaEncryption:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            ldc "RSA"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        26: .line 82
            getstatic org.bouncycastle.cert.crmf.jcajce.CRMFHelper.KEY_ALG_NAMES:Ljava/util/Map;
            getstatic org.bouncycastle.asn1.x9.X9ObjectIdentifiers.id_dsa:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            ldc "DSA"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        27: .line 83
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(org.bouncycastle.jcajce.util.JcaJceHelper);
    descriptor: (Lorg/bouncycastle/jcajce/util/JcaJceHelper;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.bouncycastle.cert.crmf.jcajce.CRMFHelper this
        start local 1 // org.bouncycastle.jcajce.util.JcaJceHelper helper
         0: .line 87
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 89
            aload 0 /* this */
            aload 1 /* helper */
            putfield org.bouncycastle.cert.crmf.jcajce.CRMFHelper.helper:Lorg/bouncycastle/jcajce/util/JcaJceHelper;
         2: .line 90
            return
        end local 1 // org.bouncycastle.jcajce.util.JcaJceHelper helper
        end local 0 // org.bouncycastle.cert.crmf.jcajce.CRMFHelper this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lorg/bouncycastle/cert/crmf/jcajce/CRMFHelper;
            0    3     1  helper  Lorg/bouncycastle/jcajce/util/JcaJceHelper;
    MethodParameters:
        Name  Flags
      helper  

  java.security.PublicKey toPublicKey(org.bouncycastle.asn1.x509.SubjectPublicKeyInfo);
    descriptor: (Lorg/bouncycastle/asn1/x509/SubjectPublicKeyInfo;)Ljava/security/PublicKey;
    flags: (0x0000) 
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // org.bouncycastle.cert.crmf.jcajce.CRMFHelper this
        start local 1 // org.bouncycastle.asn1.x509.SubjectPublicKeyInfo subjectPublicKeyInfo
         0: .line 97
            new java.security.spec.X509EncodedKeySpec
            dup
            aload 1 /* subjectPublicKeyInfo */
            invokevirtual org.bouncycastle.asn1.x509.SubjectPublicKeyInfo.getEncoded:()[B
            invokespecial java.security.spec.X509EncodedKeySpec.<init>:([B)V
            astore 2 /* xspec */
        start local 2 // java.security.spec.X509EncodedKeySpec xspec
         1: .line 98
            aload 1 /* subjectPublicKeyInfo */
            invokevirtual org.bouncycastle.asn1.x509.SubjectPublicKeyInfo.getAlgorithm:()Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;
            astore 3 /* keyAlg */
        start local 3 // org.bouncycastle.asn1.x509.AlgorithmIdentifier keyAlg
         2: .line 100
            aload 0 /* this */
            aload 3 /* keyAlg */
            invokevirtual org.bouncycastle.asn1.x509.AlgorithmIdentifier.getAlgorithm:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokevirtual org.bouncycastle.cert.crmf.jcajce.CRMFHelper.createKeyFactory:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Ljava/security/KeyFactory;
            aload 2 /* xspec */
            invokevirtual java.security.KeyFactory.generatePublic:(Ljava/security/spec/KeySpec;)Ljava/security/PublicKey;
         3: areturn
        end local 3 // org.bouncycastle.asn1.x509.AlgorithmIdentifier keyAlg
        end local 2 // java.security.spec.X509EncodedKeySpec xspec
         4: .line 102
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 2 /* e */
        start local 2 // java.lang.Exception e
         5: .line 104
            new org.bouncycastle.cert.crmf.CRMFException
            dup
            new java.lang.StringBuilder
            dup
            ldc "invalid key: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* e */
            invokevirtual java.lang.Exception.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 2 /* e */
            invokespecial org.bouncycastle.cert.crmf.CRMFException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.lang.Exception e
        end local 1 // org.bouncycastle.asn1.x509.SubjectPublicKeyInfo subjectPublicKeyInfo
        end local 0 // org.bouncycastle.cert.crmf.jcajce.CRMFHelper this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    6     0                  this  Lorg/bouncycastle/cert/crmf/jcajce/CRMFHelper;
            0    6     1  subjectPublicKeyInfo  Lorg/bouncycastle/asn1/x509/SubjectPublicKeyInfo;
            1    4     2                 xspec  Ljava/security/spec/X509EncodedKeySpec;
            2    4     3                keyAlg  Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;
            5    6     2                     e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           0     3       4  Class java.lang.Exception
    Exceptions:
      throws org.bouncycastle.cert.crmf.CRMFException
    MethodParameters:
                      Name  Flags
      subjectPublicKeyInfo  

  javax.crypto.Cipher createCipher(org.bouncycastle.asn1.ASN1ObjectIdentifier);
    descriptor: (Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Ljavax/crypto/Cipher;
    flags: (0x0000) 
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // org.bouncycastle.cert.crmf.jcajce.CRMFHelper this
        start local 1 // org.bouncycastle.asn1.ASN1ObjectIdentifier algorithm
         0: .line 113
            getstatic org.bouncycastle.cert.crmf.jcajce.CRMFHelper.CIPHER_ALG_NAMES:Ljava/util/Map;
            aload 1 /* algorithm */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            astore 2 /* cipherName */
        start local 2 // java.lang.String cipherName
         1: .line 115
            aload 2 /* cipherName */
            ifnull 5
         2: .line 120
            aload 0 /* this */
            getfield org.bouncycastle.cert.crmf.jcajce.CRMFHelper.helper:Lorg/bouncycastle/jcajce/util/JcaJceHelper;
            aload 2 /* cipherName */
            invokeinterface org.bouncycastle.jcajce.util.JcaJceHelper.createCipher:(Ljava/lang/String;)Ljavax/crypto/Cipher;
         3: areturn
         4: .line 122
      StackMap locals: org.bouncycastle.cert.crmf.jcajce.CRMFHelper org.bouncycastle.asn1.ASN1ObjectIdentifier java.lang.String
      StackMap stack: java.security.NoSuchAlgorithmException
            pop
         5: .line 127
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.cert.crmf.jcajce.CRMFHelper.helper:Lorg/bouncycastle/jcajce/util/JcaJceHelper;
            aload 1 /* algorithm */
            invokevirtual org.bouncycastle.asn1.ASN1ObjectIdentifier.getId:()Ljava/lang/String;
            invokeinterface org.bouncycastle.jcajce.util.JcaJceHelper.createCipher:(Ljava/lang/String;)Ljavax/crypto/Cipher;
         6: areturn
        end local 2 // java.lang.String cipherName
         7: .line 129
      StackMap locals: org.bouncycastle.cert.crmf.jcajce.CRMFHelper org.bouncycastle.asn1.ASN1ObjectIdentifier
      StackMap stack: java.security.GeneralSecurityException
            astore 2 /* e */
        start local 2 // java.security.GeneralSecurityException e
         8: .line 131
            new org.bouncycastle.cert.crmf.CRMFException
            dup
            new java.lang.StringBuilder
            dup
            ldc "cannot create cipher: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* e */
            invokevirtual java.security.GeneralSecurityException.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 2 /* e */
            invokespecial org.bouncycastle.cert.crmf.CRMFException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.security.GeneralSecurityException e
        end local 1 // org.bouncycastle.asn1.ASN1ObjectIdentifier algorithm
        end local 0 // org.bouncycastle.cert.crmf.jcajce.CRMFHelper this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    9     0        this  Lorg/bouncycastle/cert/crmf/jcajce/CRMFHelper;
            0    9     1   algorithm  Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            1    7     2  cipherName  Ljava/lang/String;
            8    9     2           e  Ljava/security/GeneralSecurityException;
      Exception table:
        from    to  target  type
           2     3       4  Class java.security.NoSuchAlgorithmException
           0     3       7  Class java.security.GeneralSecurityException
           4     6       7  Class java.security.GeneralSecurityException
    Exceptions:
      throws org.bouncycastle.cert.crmf.CRMFException
    MethodParameters:
           Name  Flags
      algorithm  

  public javax.crypto.KeyGenerator createKeyGenerator(org.bouncycastle.asn1.ASN1ObjectIdentifier);
    descriptor: (Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Ljavax/crypto/KeyGenerator;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // org.bouncycastle.cert.crmf.jcajce.CRMFHelper this
        start local 1 // org.bouncycastle.asn1.ASN1ObjectIdentifier algorithm
         0: .line 140
            getstatic org.bouncycastle.cert.crmf.jcajce.CRMFHelper.BASE_CIPHER_NAMES:Ljava/util/Map;
            aload 1 /* algorithm */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            astore 2 /* cipherName */
        start local 2 // java.lang.String cipherName
         1: .line 142
            aload 2 /* cipherName */
            ifnull 5
         2: .line 147
            aload 0 /* this */
            getfield org.bouncycastle.cert.crmf.jcajce.CRMFHelper.helper:Lorg/bouncycastle/jcajce/util/JcaJceHelper;
            aload 2 /* cipherName */
            invokeinterface org.bouncycastle.jcajce.util.JcaJceHelper.createKeyGenerator:(Ljava/lang/String;)Ljavax/crypto/KeyGenerator;
         3: areturn
         4: .line 149
      StackMap locals: org.bouncycastle.cert.crmf.jcajce.CRMFHelper org.bouncycastle.asn1.ASN1ObjectIdentifier java.lang.String
      StackMap stack: java.security.NoSuchAlgorithmException
            pop
         5: .line 154
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.cert.crmf.jcajce.CRMFHelper.helper:Lorg/bouncycastle/jcajce/util/JcaJceHelper;
            aload 1 /* algorithm */
            invokevirtual org.bouncycastle.asn1.ASN1ObjectIdentifier.getId:()Ljava/lang/String;
            invokeinterface org.bouncycastle.jcajce.util.JcaJceHelper.createKeyGenerator:(Ljava/lang/String;)Ljavax/crypto/KeyGenerator;
         6: areturn
        end local 2 // java.lang.String cipherName
         7: .line 156
      StackMap locals: org.bouncycastle.cert.crmf.jcajce.CRMFHelper org.bouncycastle.asn1.ASN1ObjectIdentifier
      StackMap stack: java.security.GeneralSecurityException
            astore 2 /* e */
        start local 2 // java.security.GeneralSecurityException e
         8: .line 158
            new org.bouncycastle.cert.crmf.CRMFException
            dup
            new java.lang.StringBuilder
            dup
            ldc "cannot create key generator: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* e */
            invokevirtual java.security.GeneralSecurityException.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 2 /* e */
            invokespecial org.bouncycastle.cert.crmf.CRMFException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.security.GeneralSecurityException e
        end local 1 // org.bouncycastle.asn1.ASN1ObjectIdentifier algorithm
        end local 0 // org.bouncycastle.cert.crmf.jcajce.CRMFHelper this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    9     0        this  Lorg/bouncycastle/cert/crmf/jcajce/CRMFHelper;
            0    9     1   algorithm  Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            1    7     2  cipherName  Ljava/lang/String;
            8    9     2           e  Ljava/security/GeneralSecurityException;
      Exception table:
        from    to  target  type
           2     3       4  Class java.security.NoSuchAlgorithmException
           0     3       7  Class java.security.GeneralSecurityException
           4     6       7  Class java.security.GeneralSecurityException
    Exceptions:
      throws org.bouncycastle.cert.crmf.CRMFException
    MethodParameters:
           Name  Flags
      algorithm  

  javax.crypto.Cipher createContentCipher(java.security.Key, org.bouncycastle.asn1.x509.AlgorithmIdentifier);
    descriptor: (Ljava/security/Key;Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;)Ljavax/crypto/Cipher;
    flags: (0x0000) 
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // org.bouncycastle.cert.crmf.jcajce.CRMFHelper this
        start local 1 // java.security.Key sKey
        start local 2 // org.bouncycastle.asn1.x509.AlgorithmIdentifier encryptionAlgID
         0: .line 167
            new org.bouncycastle.cert.crmf.jcajce.CRMFHelper$1
            dup
            aload 0 /* this */
            aload 2 /* encryptionAlgID */
            aload 1 /* sKey */
            invokespecial org.bouncycastle.cert.crmf.jcajce.CRMFHelper$1.<init>:(Lorg/bouncycastle/cert/crmf/jcajce/CRMFHelper;Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;Ljava/security/Key;)V
            invokestatic org.bouncycastle.cert.crmf.jcajce.CRMFHelper.execute:(Lorg/bouncycastle/cert/crmf/jcajce/CRMFHelper$JCECallback;)Ljava/lang/Object;
            checkcast javax.crypto.Cipher
            areturn
        end local 2 // org.bouncycastle.asn1.x509.AlgorithmIdentifier encryptionAlgID
        end local 1 // java.security.Key sKey
        end local 0 // org.bouncycastle.cert.crmf.jcajce.CRMFHelper this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    1     0             this  Lorg/bouncycastle/cert/crmf/jcajce/CRMFHelper;
            0    1     1             sKey  Ljava/security/Key;
            0    1     2  encryptionAlgID  Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;
    Exceptions:
      throws org.bouncycastle.cert.crmf.CRMFException
    MethodParameters:
                 Name  Flags
      sKey             final
      encryptionAlgID  final

  java.security.AlgorithmParameters createAlgorithmParameters(org.bouncycastle.asn1.ASN1ObjectIdentifier);
    descriptor: (Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Ljava/security/AlgorithmParameters;
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // org.bouncycastle.cert.crmf.jcajce.CRMFHelper this
        start local 1 // org.bouncycastle.asn1.ASN1ObjectIdentifier algorithm
         0: .line 234
            getstatic org.bouncycastle.cert.crmf.jcajce.CRMFHelper.BASE_CIPHER_NAMES:Ljava/util/Map;
            aload 1 /* algorithm */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            astore 2 /* algorithmName */
        start local 2 // java.lang.String algorithmName
         1: .line 236
            aload 2 /* algorithmName */
            ifnull 5
         2: .line 241
            aload 0 /* this */
            getfield org.bouncycastle.cert.crmf.jcajce.CRMFHelper.helper:Lorg/bouncycastle/jcajce/util/JcaJceHelper;
            aload 2 /* algorithmName */
            invokeinterface org.bouncycastle.jcajce.util.JcaJceHelper.createAlgorithmParameters:(Ljava/lang/String;)Ljava/security/AlgorithmParameters;
         3: areturn
         4: .line 243
      StackMap locals: org.bouncycastle.cert.crmf.jcajce.CRMFHelper org.bouncycastle.asn1.ASN1ObjectIdentifier java.lang.String
      StackMap stack: java.security.NoSuchAlgorithmException
            pop
         5: .line 248
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.cert.crmf.jcajce.CRMFHelper.helper:Lorg/bouncycastle/jcajce/util/JcaJceHelper;
            aload 1 /* algorithm */
            invokevirtual org.bouncycastle.asn1.ASN1ObjectIdentifier.getId:()Ljava/lang/String;
            invokeinterface org.bouncycastle.jcajce.util.JcaJceHelper.createAlgorithmParameters:(Ljava/lang/String;)Ljava/security/AlgorithmParameters;
            areturn
        end local 2 // java.lang.String algorithmName
        end local 1 // org.bouncycastle.asn1.ASN1ObjectIdentifier algorithm
        end local 0 // org.bouncycastle.cert.crmf.jcajce.CRMFHelper this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    6     0           this  Lorg/bouncycastle/cert/crmf/jcajce/CRMFHelper;
            0    6     1      algorithm  Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            1    6     2  algorithmName  Ljava/lang/String;
      Exception table:
        from    to  target  type
           2     3       4  Class java.security.NoSuchAlgorithmException
    Exceptions:
      throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException
    MethodParameters:
           Name  Flags
      algorithm  

  java.security.KeyFactory createKeyFactory(org.bouncycastle.asn1.ASN1ObjectIdentifier);
    descriptor: (Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Ljava/security/KeyFactory;
    flags: (0x0000) 
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // org.bouncycastle.cert.crmf.jcajce.CRMFHelper this
        start local 1 // org.bouncycastle.asn1.ASN1ObjectIdentifier algorithm
         0: .line 256
            getstatic org.bouncycastle.cert.crmf.jcajce.CRMFHelper.KEY_ALG_NAMES:Ljava/util/Map;
            aload 1 /* algorithm */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            astore 2 /* algName */
        start local 2 // java.lang.String algName
         1: .line 258
            aload 2 /* algName */
            ifnull 5
         2: .line 263
            aload 0 /* this */
            getfield org.bouncycastle.cert.crmf.jcajce.CRMFHelper.helper:Lorg/bouncycastle/jcajce/util/JcaJceHelper;
            aload 2 /* algName */
            invokeinterface org.bouncycastle.jcajce.util.JcaJceHelper.createKeyFactory:(Ljava/lang/String;)Ljava/security/KeyFactory;
         3: areturn
         4: .line 265
      StackMap locals: org.bouncycastle.cert.crmf.jcajce.CRMFHelper org.bouncycastle.asn1.ASN1ObjectIdentifier java.lang.String
      StackMap stack: java.security.NoSuchAlgorithmException
            pop
         5: .line 270
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.cert.crmf.jcajce.CRMFHelper.helper:Lorg/bouncycastle/jcajce/util/JcaJceHelper;
            aload 1 /* algorithm */
            invokevirtual org.bouncycastle.asn1.ASN1ObjectIdentifier.getId:()Ljava/lang/String;
            invokeinterface org.bouncycastle.jcajce.util.JcaJceHelper.createKeyFactory:(Ljava/lang/String;)Ljava/security/KeyFactory;
         6: areturn
        end local 2 // java.lang.String algName
         7: .line 272
      StackMap locals: org.bouncycastle.cert.crmf.jcajce.CRMFHelper org.bouncycastle.asn1.ASN1ObjectIdentifier
      StackMap stack: java.security.GeneralSecurityException
            astore 2 /* e */
        start local 2 // java.security.GeneralSecurityException e
         8: .line 274
            new org.bouncycastle.cert.crmf.CRMFException
            dup
            new java.lang.StringBuilder
            dup
            ldc "cannot create cipher: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* e */
            invokevirtual java.security.GeneralSecurityException.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 2 /* e */
            invokespecial org.bouncycastle.cert.crmf.CRMFException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.security.GeneralSecurityException e
        end local 1 // org.bouncycastle.asn1.ASN1ObjectIdentifier algorithm
        end local 0 // org.bouncycastle.cert.crmf.jcajce.CRMFHelper this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    9     0       this  Lorg/bouncycastle/cert/crmf/jcajce/CRMFHelper;
            0    9     1  algorithm  Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            1    7     2    algName  Ljava/lang/String;
            8    9     2          e  Ljava/security/GeneralSecurityException;
      Exception table:
        from    to  target  type
           2     3       4  Class java.security.NoSuchAlgorithmException
           0     3       7  Class java.security.GeneralSecurityException
           4     6       7  Class java.security.GeneralSecurityException
    Exceptions:
      throws org.bouncycastle.cert.crmf.CRMFException
    MethodParameters:
           Name  Flags
      algorithm  

  java.security.MessageDigest createDigest(org.bouncycastle.asn1.ASN1ObjectIdentifier);
    descriptor: (Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Ljava/security/MessageDigest;
    flags: (0x0000) 
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // org.bouncycastle.cert.crmf.jcajce.CRMFHelper this
        start local 1 // org.bouncycastle.asn1.ASN1ObjectIdentifier algorithm
         0: .line 283
            getstatic org.bouncycastle.cert.crmf.jcajce.CRMFHelper.DIGEST_ALG_NAMES:Ljava/util/Map;
            aload 1 /* algorithm */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            astore 2 /* digestName */
        start local 2 // java.lang.String digestName
         1: .line 285
            aload 2 /* digestName */
            ifnull 5
         2: .line 290
            aload 0 /* this */
            getfield org.bouncycastle.cert.crmf.jcajce.CRMFHelper.helper:Lorg/bouncycastle/jcajce/util/JcaJceHelper;
            aload 2 /* digestName */
            invokeinterface org.bouncycastle.jcajce.util.JcaJceHelper.createDigest:(Ljava/lang/String;)Ljava/security/MessageDigest;
         3: areturn
         4: .line 292
      StackMap locals: org.bouncycastle.cert.crmf.jcajce.CRMFHelper org.bouncycastle.asn1.ASN1ObjectIdentifier java.lang.String
      StackMap stack: java.security.NoSuchAlgorithmException
            pop
         5: .line 297
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.cert.crmf.jcajce.CRMFHelper.helper:Lorg/bouncycastle/jcajce/util/JcaJceHelper;
            aload 1 /* algorithm */
            invokevirtual org.bouncycastle.asn1.ASN1ObjectIdentifier.getId:()Ljava/lang/String;
            invokeinterface org.bouncycastle.jcajce.util.JcaJceHelper.createDigest:(Ljava/lang/String;)Ljava/security/MessageDigest;
         6: areturn
        end local 2 // java.lang.String digestName
         7: .line 299
      StackMap locals: org.bouncycastle.cert.crmf.jcajce.CRMFHelper org.bouncycastle.asn1.ASN1ObjectIdentifier
      StackMap stack: java.security.GeneralSecurityException
            astore 2 /* e */
        start local 2 // java.security.GeneralSecurityException e
         8: .line 301
            new org.bouncycastle.cert.crmf.CRMFException
            dup
            new java.lang.StringBuilder
            dup
            ldc "cannot create cipher: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* e */
            invokevirtual java.security.GeneralSecurityException.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 2 /* e */
            invokespecial org.bouncycastle.cert.crmf.CRMFException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.security.GeneralSecurityException e
        end local 1 // org.bouncycastle.asn1.ASN1ObjectIdentifier algorithm
        end local 0 // org.bouncycastle.cert.crmf.jcajce.CRMFHelper this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    9     0        this  Lorg/bouncycastle/cert/crmf/jcajce/CRMFHelper;
            0    9     1   algorithm  Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            1    7     2  digestName  Ljava/lang/String;
            8    9     2           e  Ljava/security/GeneralSecurityException;
      Exception table:
        from    to  target  type
           2     3       4  Class java.security.NoSuchAlgorithmException
           0     3       7  Class java.security.GeneralSecurityException
           4     6       7  Class java.security.GeneralSecurityException
    Exceptions:
      throws org.bouncycastle.cert.crmf.CRMFException
    MethodParameters:
           Name  Flags
      algorithm  

  javax.crypto.Mac createMac(org.bouncycastle.asn1.ASN1ObjectIdentifier);
    descriptor: (Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Ljavax/crypto/Mac;
    flags: (0x0000) 
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // org.bouncycastle.cert.crmf.jcajce.CRMFHelper this
        start local 1 // org.bouncycastle.asn1.ASN1ObjectIdentifier algorithm
         0: .line 310
            getstatic org.bouncycastle.cert.crmf.jcajce.CRMFHelper.MAC_ALG_NAMES:Ljava/util/Map;
            aload 1 /* algorithm */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            astore 2 /* macName */
        start local 2 // java.lang.String macName
         1: .line 312
            aload 2 /* macName */
            ifnull 5
         2: .line 317
            aload 0 /* this */
            getfield org.bouncycastle.cert.crmf.jcajce.CRMFHelper.helper:Lorg/bouncycastle/jcajce/util/JcaJceHelper;
            aload 2 /* macName */
            invokeinterface org.bouncycastle.jcajce.util.JcaJceHelper.createMac:(Ljava/lang/String;)Ljavax/crypto/Mac;
         3: areturn
         4: .line 319
      StackMap locals: org.bouncycastle.cert.crmf.jcajce.CRMFHelper org.bouncycastle.asn1.ASN1ObjectIdentifier java.lang.String
      StackMap stack: java.security.NoSuchAlgorithmException
            pop
         5: .line 324
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.cert.crmf.jcajce.CRMFHelper.helper:Lorg/bouncycastle/jcajce/util/JcaJceHelper;
            aload 1 /* algorithm */
            invokevirtual org.bouncycastle.asn1.ASN1ObjectIdentifier.getId:()Ljava/lang/String;
            invokeinterface org.bouncycastle.jcajce.util.JcaJceHelper.createMac:(Ljava/lang/String;)Ljavax/crypto/Mac;
         6: areturn
        end local 2 // java.lang.String macName
         7: .line 326
      StackMap locals: org.bouncycastle.cert.crmf.jcajce.CRMFHelper org.bouncycastle.asn1.ASN1ObjectIdentifier
      StackMap stack: java.security.GeneralSecurityException
            astore 2 /* e */
        start local 2 // java.security.GeneralSecurityException e
         8: .line 328
            new org.bouncycastle.cert.crmf.CRMFException
            dup
            new java.lang.StringBuilder
            dup
            ldc "cannot create mac: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* e */
            invokevirtual java.security.GeneralSecurityException.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 2 /* e */
            invokespecial org.bouncycastle.cert.crmf.CRMFException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.security.GeneralSecurityException e
        end local 1 // org.bouncycastle.asn1.ASN1ObjectIdentifier algorithm
        end local 0 // org.bouncycastle.cert.crmf.jcajce.CRMFHelper this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    9     0       this  Lorg/bouncycastle/cert/crmf/jcajce/CRMFHelper;
            0    9     1  algorithm  Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            1    7     2    macName  Ljava/lang/String;
            8    9     2          e  Ljava/security/GeneralSecurityException;
      Exception table:
        from    to  target  type
           2     3       4  Class java.security.NoSuchAlgorithmException
           0     3       7  Class java.security.GeneralSecurityException
           4     6       7  Class java.security.GeneralSecurityException
    Exceptions:
      throws org.bouncycastle.cert.crmf.CRMFException
    MethodParameters:
           Name  Flags
      algorithm  

  java.security.AlgorithmParameterGenerator createAlgorithmParameterGenerator(org.bouncycastle.asn1.ASN1ObjectIdentifier);
    descriptor: (Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Ljava/security/AlgorithmParameterGenerator;
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // org.bouncycastle.cert.crmf.jcajce.CRMFHelper this
        start local 1 // org.bouncycastle.asn1.ASN1ObjectIdentifier algorithm
         0: .line 335
            getstatic org.bouncycastle.cert.crmf.jcajce.CRMFHelper.BASE_CIPHER_NAMES:Ljava/util/Map;
            aload 1 /* algorithm */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            astore 2 /* algorithmName */
        start local 2 // java.lang.String algorithmName
         1: .line 337
            aload 2 /* algorithmName */
            ifnull 5
         2: .line 342
            aload 0 /* this */
            getfield org.bouncycastle.cert.crmf.jcajce.CRMFHelper.helper:Lorg/bouncycastle/jcajce/util/JcaJceHelper;
            aload 2 /* algorithmName */
            invokeinterface org.bouncycastle.jcajce.util.JcaJceHelper.createAlgorithmParameterGenerator:(Ljava/lang/String;)Ljava/security/AlgorithmParameterGenerator;
         3: areturn
         4: .line 344
      StackMap locals: org.bouncycastle.cert.crmf.jcajce.CRMFHelper org.bouncycastle.asn1.ASN1ObjectIdentifier java.lang.String
      StackMap stack: java.security.NoSuchAlgorithmException
            pop
         5: .line 349
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.cert.crmf.jcajce.CRMFHelper.helper:Lorg/bouncycastle/jcajce/util/JcaJceHelper;
            aload 1 /* algorithm */
            invokevirtual org.bouncycastle.asn1.ASN1ObjectIdentifier.getId:()Ljava/lang/String;
            invokeinterface org.bouncycastle.jcajce.util.JcaJceHelper.createAlgorithmParameterGenerator:(Ljava/lang/String;)Ljava/security/AlgorithmParameterGenerator;
            areturn
        end local 2 // java.lang.String algorithmName
        end local 1 // org.bouncycastle.asn1.ASN1ObjectIdentifier algorithm
        end local 0 // org.bouncycastle.cert.crmf.jcajce.CRMFHelper this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    6     0           this  Lorg/bouncycastle/cert/crmf/jcajce/CRMFHelper;
            0    6     1      algorithm  Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            1    6     2  algorithmName  Ljava/lang/String;
      Exception table:
        from    to  target  type
           2     3       4  Class java.security.NoSuchAlgorithmException
    Exceptions:
      throws java.security.GeneralSecurityException
    MethodParameters:
           Name  Flags
      algorithm  

  java.security.AlgorithmParameters generateParameters(org.bouncycastle.asn1.ASN1ObjectIdentifier, javax.crypto.SecretKey, java.security.SecureRandom);
    descriptor: (Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;Ljavax/crypto/SecretKey;Ljava/security/SecureRandom;)Ljava/security/AlgorithmParameters;
    flags: (0x0000) 
    Code:
      stack=5, locals=7, args_size=4
        start local 0 // org.bouncycastle.cert.crmf.jcajce.CRMFHelper this
        start local 1 // org.bouncycastle.asn1.ASN1ObjectIdentifier encryptionOID
        start local 2 // javax.crypto.SecretKey encKey
        start local 3 // java.security.SecureRandom rand
         0: .line 357
            aload 0 /* this */
            aload 1 /* encryptionOID */
            invokevirtual org.bouncycastle.cert.crmf.jcajce.CRMFHelper.createAlgorithmParameterGenerator:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Ljava/security/AlgorithmParameterGenerator;
            astore 4 /* pGen */
        start local 4 // java.security.AlgorithmParameterGenerator pGen
         1: .line 359
            aload 1 /* encryptionOID */
            getstatic org.bouncycastle.cms.CMSAlgorithm.RC2_CBC:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokevirtual org.bouncycastle.asn1.ASN1ObjectIdentifier.equals:(Ljava/lang/Object;)Z
            ifeq 8
         2: .line 361
            bipush 8
            newarray 8
            astore 5 /* iv */
        start local 5 // byte[] iv
         3: .line 363
            aload 3 /* rand */
            aload 5 /* iv */
            invokevirtual java.security.SecureRandom.nextBytes:([B)V
         4: .line 367
            aload 4 /* pGen */
            new javax.crypto.spec.RC2ParameterSpec
            dup
            aload 2 /* encKey */
            invokeinterface javax.crypto.SecretKey.getEncoded:()[B
            arraylength
            bipush 8
            imul
            aload 5 /* iv */
            invokespecial javax.crypto.spec.RC2ParameterSpec.<init>:(I[B)V
            aload 3 /* rand */
            invokevirtual java.security.AlgorithmParameterGenerator.init:(Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
         5: .line 368
            goto 8
         6: .line 369
      StackMap locals: org.bouncycastle.cert.crmf.jcajce.CRMFHelper org.bouncycastle.asn1.ASN1ObjectIdentifier javax.crypto.SecretKey java.security.SecureRandom java.security.AlgorithmParameterGenerator byte[]
      StackMap stack: java.security.InvalidAlgorithmParameterException
            astore 6 /* e */
        start local 6 // java.security.InvalidAlgorithmParameterException e
         7: .line 371
            new org.bouncycastle.cert.crmf.CRMFException
            dup
            new java.lang.StringBuilder
            dup
            ldc "parameters generation error: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 6 /* e */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 6 /* e */
            invokespecial org.bouncycastle.cert.crmf.CRMFException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 6 // java.security.InvalidAlgorithmParameterException e
        end local 5 // byte[] iv
         8: .line 375
      StackMap locals:
      StackMap stack:
            aload 4 /* pGen */
            invokevirtual java.security.AlgorithmParameterGenerator.generateParameters:()Ljava/security/AlgorithmParameters;
         9: areturn
        end local 4 // java.security.AlgorithmParameterGenerator pGen
        10: .line 377
      StackMap locals: org.bouncycastle.cert.crmf.jcajce.CRMFHelper org.bouncycastle.asn1.ASN1ObjectIdentifier javax.crypto.SecretKey java.security.SecureRandom
      StackMap stack: java.security.NoSuchAlgorithmException
            pop
        11: .line 379
            aconst_null
            areturn
        12: .line 381
      StackMap locals:
      StackMap stack: java.security.GeneralSecurityException
            astore 4 /* e */
        start local 4 // java.security.GeneralSecurityException e
        13: .line 383
            new org.bouncycastle.cert.crmf.CRMFException
            dup
            new java.lang.StringBuilder
            dup
            ldc "exception creating algorithm parameter generator: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* e */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 4 /* e */
            invokespecial org.bouncycastle.cert.crmf.CRMFException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 4 // java.security.GeneralSecurityException e
        end local 3 // java.security.SecureRandom rand
        end local 2 // javax.crypto.SecretKey encKey
        end local 1 // org.bouncycastle.asn1.ASN1ObjectIdentifier encryptionOID
        end local 0 // org.bouncycastle.cert.crmf.jcajce.CRMFHelper this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   14     0           this  Lorg/bouncycastle/cert/crmf/jcajce/CRMFHelper;
            0   14     1  encryptionOID  Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            0   14     2         encKey  Ljavax/crypto/SecretKey;
            0   14     3           rand  Ljava/security/SecureRandom;
            1   10     4           pGen  Ljava/security/AlgorithmParameterGenerator;
            3    8     5             iv  [B
            7    8     6              e  Ljava/security/InvalidAlgorithmParameterException;
           13   14     4              e  Ljava/security/GeneralSecurityException;
      Exception table:
        from    to  target  type
           4     5       6  Class java.security.InvalidAlgorithmParameterException
           0     9      10  Class java.security.NoSuchAlgorithmException
           0     9      12  Class java.security.GeneralSecurityException
    Exceptions:
      throws org.bouncycastle.cert.crmf.CRMFException
    MethodParameters:
               Name  Flags
      encryptionOID  
      encKey         
      rand           

  org.bouncycastle.asn1.x509.AlgorithmIdentifier getAlgorithmIdentifier(org.bouncycastle.asn1.ASN1ObjectIdentifier, java.security.AlgorithmParameters);
    descriptor: (Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;Ljava/security/AlgorithmParameters;)Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;
    flags: (0x0000) 
    Code:
      stack=5, locals=5, args_size=3
        start local 0 // org.bouncycastle.cert.crmf.jcajce.CRMFHelper this
        start local 1 // org.bouncycastle.asn1.ASN1ObjectIdentifier encryptionOID
        start local 2 // java.security.AlgorithmParameters params
         0: .line 391
            aload 2 /* params */
            ifnull 5
         1: .line 395
            aload 2 /* params */
            invokestatic org.bouncycastle.jcajce.util.AlgorithmParametersUtils.extractParameters:(Ljava/security/AlgorithmParameters;)Lorg/bouncycastle/asn1/ASN1Encodable;
            astore 3 /* asn1Params */
        start local 3 // org.bouncycastle.asn1.ASN1Encodable asn1Params
         2: .line 396
            goto 6
        end local 3 // org.bouncycastle.asn1.ASN1Encodable asn1Params
         3: .line 397
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 4 /* e */
        start local 4 // java.io.IOException e
         4: .line 399
            new org.bouncycastle.cert.crmf.CRMFException
            dup
            new java.lang.StringBuilder
            dup
            ldc "cannot encode parameters: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* e */
            invokevirtual java.io.IOException.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 4 /* e */
            invokespecial org.bouncycastle.cert.crmf.CRMFException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 4 // java.io.IOException e
         5: .line 404
      StackMap locals:
      StackMap stack:
            getstatic org.bouncycastle.asn1.DERNull.INSTANCE:Lorg/bouncycastle/asn1/DERNull;
            astore 3 /* asn1Params */
        start local 3 // org.bouncycastle.asn1.ASN1Encodable asn1Params
         6: .line 407
      StackMap locals: org.bouncycastle.asn1.ASN1Encodable
      StackMap stack:
            new org.bouncycastle.asn1.x509.AlgorithmIdentifier
            dup
         7: .line 408
            aload 1 /* encryptionOID */
         8: .line 409
            aload 3 /* asn1Params */
         9: .line 407
            invokespecial org.bouncycastle.asn1.x509.AlgorithmIdentifier.<init>:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;Lorg/bouncycastle/asn1/ASN1Encodable;)V
            areturn
        end local 3 // org.bouncycastle.asn1.ASN1Encodable asn1Params
        end local 2 // java.security.AlgorithmParameters params
        end local 1 // org.bouncycastle.asn1.ASN1ObjectIdentifier encryptionOID
        end local 0 // org.bouncycastle.cert.crmf.jcajce.CRMFHelper this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   10     0           this  Lorg/bouncycastle/cert/crmf/jcajce/CRMFHelper;
            0   10     1  encryptionOID  Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            0   10     2         params  Ljava/security/AlgorithmParameters;
            2    3     3     asn1Params  Lorg/bouncycastle/asn1/ASN1Encodable;
            6   10     3     asn1Params  Lorg/bouncycastle/asn1/ASN1Encodable;
            4    5     4              e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           1     2       3  Class java.io.IOException
    Exceptions:
      throws org.bouncycastle.cert.crmf.CRMFException
    MethodParameters:
               Name  Flags
      encryptionOID  
      params         

  static java.lang.Object execute(org.bouncycastle.cert.crmf.jcajce.CRMFHelper$JCECallback);
    descriptor: (Lorg/bouncycastle/cert/crmf/jcajce/CRMFHelper$JCECallback;)Ljava/lang/Object;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // org.bouncycastle.cert.crmf.jcajce.CRMFHelper$JCECallback callback
         0: .line 416
            aload 0 /* callback */
            invokeinterface org.bouncycastle.cert.crmf.jcajce.CRMFHelper$JCECallback.doInJCE:()Ljava/lang/Object;
         1: areturn
         2: .line 418
      StackMap locals:
      StackMap stack: java.security.NoSuchAlgorithmException
            astore 1 /* e */
        start local 1 // java.security.NoSuchAlgorithmException e
         3: .line 420
            new org.bouncycastle.cert.crmf.CRMFException
            dup
            ldc "can't find algorithm."
            aload 1 /* e */
            invokespecial org.bouncycastle.cert.crmf.CRMFException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.security.NoSuchAlgorithmException e
         4: .line 422
      StackMap locals:
      StackMap stack: java.security.InvalidKeyException
            astore 1 /* e */
        start local 1 // java.security.InvalidKeyException e
         5: .line 424
            new org.bouncycastle.cert.crmf.CRMFException
            dup
            ldc "key invalid in message."
            aload 1 /* e */
            invokespecial org.bouncycastle.cert.crmf.CRMFException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.security.InvalidKeyException e
         6: .line 426
      StackMap locals:
      StackMap stack: java.security.NoSuchProviderException
            astore 1 /* e */
        start local 1 // java.security.NoSuchProviderException e
         7: .line 428
            new org.bouncycastle.cert.crmf.CRMFException
            dup
            ldc "can't find provider."
            aload 1 /* e */
            invokespecial org.bouncycastle.cert.crmf.CRMFException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.security.NoSuchProviderException e
         8: .line 430
      StackMap locals:
      StackMap stack: javax.crypto.NoSuchPaddingException
            astore 1 /* e */
        start local 1 // javax.crypto.NoSuchPaddingException e
         9: .line 432
            new org.bouncycastle.cert.crmf.CRMFException
            dup
            ldc "required padding not supported."
            aload 1 /* e */
            invokespecial org.bouncycastle.cert.crmf.CRMFException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 1 // javax.crypto.NoSuchPaddingException e
        10: .line 434
      StackMap locals:
      StackMap stack: java.security.InvalidAlgorithmParameterException
            astore 1 /* e */
        start local 1 // java.security.InvalidAlgorithmParameterException e
        11: .line 436
            new org.bouncycastle.cert.crmf.CRMFException
            dup
            ldc "algorithm parameters invalid."
            aload 1 /* e */
            invokespecial org.bouncycastle.cert.crmf.CRMFException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.security.InvalidAlgorithmParameterException e
        12: .line 438
      StackMap locals:
      StackMap stack: java.security.spec.InvalidParameterSpecException
            astore 1 /* e */
        start local 1 // java.security.spec.InvalidParameterSpecException e
        13: .line 440
            new org.bouncycastle.cert.crmf.CRMFException
            dup
            ldc "MAC algorithm parameter spec invalid."
            aload 1 /* e */
            invokespecial org.bouncycastle.cert.crmf.CRMFException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.security.spec.InvalidParameterSpecException e
        end local 0 // org.bouncycastle.cert.crmf.jcajce.CRMFHelper$JCECallback callback
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   14     0  callback  Lorg/bouncycastle/cert/crmf/jcajce/CRMFHelper$JCECallback;
            3    4     1         e  Ljava/security/NoSuchAlgorithmException;
            5    6     1         e  Ljava/security/InvalidKeyException;
            7    8     1         e  Ljava/security/NoSuchProviderException;
            9   10     1         e  Ljavax/crypto/NoSuchPaddingException;
           11   12     1         e  Ljava/security/InvalidAlgorithmParameterException;
           13   14     1         e  Ljava/security/spec/InvalidParameterSpecException;
      Exception table:
        from    to  target  type
           0     1       2  Class java.security.NoSuchAlgorithmException
           0     1       4  Class java.security.InvalidKeyException
           0     1       6  Class java.security.NoSuchProviderException
           0     1       8  Class javax.crypto.NoSuchPaddingException
           0     1      10  Class java.security.InvalidAlgorithmParameterException
           0     1      12  Class java.security.spec.InvalidParameterSpecException
    Exceptions:
      throws org.bouncycastle.cert.crmf.CRMFException
    MethodParameters:
          Name  Flags
      callback  
}
SourceFile: "CRMFHelper.java"
NestMembers:
  org.bouncycastle.cert.crmf.jcajce.CRMFHelper$1  org.bouncycastle.cert.crmf.jcajce.CRMFHelper$JCECallback
InnerClasses:
  org.bouncycastle.cert.crmf.jcajce.CRMFHelper$1
  abstract JCECallback = org.bouncycastle.cert.crmf.jcajce.CRMFHelper$JCECallback of org.bouncycastle.cert.crmf.jcajce.CRMFHelper