public class org.bouncycastle.cms.DefaultSignedAttributeTableGenerator implements org.bouncycastle.cms.CMSAttributeTableGenerator
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.bouncycastle.cms.DefaultSignedAttributeTableGenerator
  super_class: java.lang.Object
{
  private final java.util.Hashtable table;
    descriptor: Ljava/util/Hashtable;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.bouncycastle.cms.DefaultSignedAttributeTableGenerator this
         0: .line 29
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 31
            aload 0 /* this */
            new java.util.Hashtable
            dup
            invokespecial java.util.Hashtable.<init>:()V
            putfield org.bouncycastle.cms.DefaultSignedAttributeTableGenerator.table:Ljava/util/Hashtable;
         2: .line 32
            return
        end local 0 // org.bouncycastle.cms.DefaultSignedAttributeTableGenerator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/bouncycastle/cms/DefaultSignedAttributeTableGenerator;

  public void <init>(org.bouncycastle.asn1.cms.AttributeTable);
    descriptor: (Lorg/bouncycastle/asn1/cms/AttributeTable;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.bouncycastle.cms.DefaultSignedAttributeTableGenerator this
        start local 1 // org.bouncycastle.asn1.cms.AttributeTable attributeTable
         0: .line 39
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 42
            aload 1 /* attributeTable */
            ifnull 4
         2: .line 44
            aload 0 /* this */
            aload 1 /* attributeTable */
            invokevirtual org.bouncycastle.asn1.cms.AttributeTable.toHashtable:()Ljava/util/Hashtable;
            putfield org.bouncycastle.cms.DefaultSignedAttributeTableGenerator.table:Ljava/util/Hashtable;
         3: .line 45
            goto 5
         4: .line 48
      StackMap locals: org.bouncycastle.cms.DefaultSignedAttributeTableGenerator org.bouncycastle.asn1.cms.AttributeTable
      StackMap stack:
            aload 0 /* this */
            new java.util.Hashtable
            dup
            invokespecial java.util.Hashtable.<init>:()V
            putfield org.bouncycastle.cms.DefaultSignedAttributeTableGenerator.table:Ljava/util/Hashtable;
         5: .line 50
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.bouncycastle.asn1.cms.AttributeTable attributeTable
        end local 0 // org.bouncycastle.cms.DefaultSignedAttributeTableGenerator this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    6     0            this  Lorg/bouncycastle/cms/DefaultSignedAttributeTableGenerator;
            0    6     1  attributeTable  Lorg/bouncycastle/asn1/cms/AttributeTable;
    MethodParameters:
                Name  Flags
      attributeTable  

  protected java.util.Hashtable createStandardAttributeTable(java.util.Map);
    descriptor: (Ljava/util/Map;)Ljava/util/Hashtable;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=11, locals=5, args_size=2
        start local 0 // org.bouncycastle.cms.DefaultSignedAttributeTableGenerator this
        start local 1 // java.util.Map parameters
         0: .line 65
            aload 0 /* this */
            getfield org.bouncycastle.cms.DefaultSignedAttributeTableGenerator.table:Ljava/util/Hashtable;
            invokestatic org.bouncycastle.cms.DefaultSignedAttributeTableGenerator.copyHashTable:(Ljava/util/Hashtable;)Ljava/util/Hashtable;
            astore 2 /* std */
        start local 2 // java.util.Hashtable std
         1: .line 67
            aload 2 /* std */
            getstatic org.bouncycastle.asn1.cms.CMSAttributes.contentType:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokevirtual java.util.Hashtable.containsKey:(Ljava/lang/Object;)Z
            ifne 9
         2: .line 70
            aload 1 /* parameters */
            ldc "contentType"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
         3: .line 69
            invokestatic org.bouncycastle.asn1.ASN1ObjectIdentifier.getInstance:(Ljava/lang/Object;)Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            astore 3 /* contentType */
        start local 3 // org.bouncycastle.asn1.ASN1ObjectIdentifier contentType
         4: .line 73
            aload 3 /* contentType */
            ifnull 9
         5: .line 75
            new org.bouncycastle.asn1.cms.Attribute
            dup
            getstatic org.bouncycastle.asn1.cms.CMSAttributes.contentType:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
         6: .line 76
            new org.bouncycastle.asn1.DERSet
            dup
            aload 3 /* contentType */
            invokespecial org.bouncycastle.asn1.DERSet.<init>:(Lorg/bouncycastle/asn1/ASN1Encodable;)V
         7: .line 75
            invokespecial org.bouncycastle.asn1.cms.Attribute.<init>:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;Lorg/bouncycastle/asn1/ASN1Set;)V
            astore 4 /* attr */
        start local 4 // org.bouncycastle.asn1.cms.Attribute attr
         8: .line 77
            aload 2 /* std */
            aload 4 /* attr */
            invokevirtual org.bouncycastle.asn1.cms.Attribute.getAttrType:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            aload 4 /* attr */
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 4 // org.bouncycastle.asn1.cms.Attribute attr
        end local 3 // org.bouncycastle.asn1.ASN1ObjectIdentifier contentType
         9: .line 81
      StackMap locals: java.util.Hashtable
      StackMap stack:
            aload 2 /* std */
            getstatic org.bouncycastle.asn1.cms.CMSAttributes.signingTime:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokevirtual java.util.Hashtable.containsKey:(Ljava/lang/Object;)Z
            ifne 15
        10: .line 83
            new java.util.Date
            dup
            invokespecial java.util.Date.<init>:()V
            astore 3 /* signingTime */
        start local 3 // java.util.Date signingTime
        11: .line 84
            new org.bouncycastle.asn1.cms.Attribute
            dup
            getstatic org.bouncycastle.asn1.cms.CMSAttributes.signingTime:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
        12: .line 85
            new org.bouncycastle.asn1.DERSet
            dup
            new org.bouncycastle.asn1.cms.Time
            dup
            aload 3 /* signingTime */
            invokespecial org.bouncycastle.asn1.cms.Time.<init>:(Ljava/util/Date;)V
            invokespecial org.bouncycastle.asn1.DERSet.<init>:(Lorg/bouncycastle/asn1/ASN1Encodable;)V
        13: .line 84
            invokespecial org.bouncycastle.asn1.cms.Attribute.<init>:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;Lorg/bouncycastle/asn1/ASN1Set;)V
            astore 4 /* attr */
        start local 4 // org.bouncycastle.asn1.cms.Attribute attr
        14: .line 86
            aload 2 /* std */
            aload 4 /* attr */
            invokevirtual org.bouncycastle.asn1.cms.Attribute.getAttrType:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            aload 4 /* attr */
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 4 // org.bouncycastle.asn1.cms.Attribute attr
        end local 3 // java.util.Date signingTime
        15: .line 89
      StackMap locals:
      StackMap stack:
            aload 2 /* std */
            getstatic org.bouncycastle.asn1.cms.CMSAttributes.messageDigest:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokevirtual java.util.Hashtable.containsKey:(Ljava/lang/Object;)Z
            ifne 23
        16: .line 91
            aload 1 /* parameters */
        17: .line 92
            ldc "digest"
        18: .line 91
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast byte[]
            astore 3 /* messageDigest */
        start local 3 // byte[] messageDigest
        19: .line 93
            new org.bouncycastle.asn1.cms.Attribute
            dup
            getstatic org.bouncycastle.asn1.cms.CMSAttributes.messageDigest:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
        20: .line 94
            new org.bouncycastle.asn1.DERSet
            dup
            new org.bouncycastle.asn1.DEROctetString
            dup
            aload 3 /* messageDigest */
            invokespecial org.bouncycastle.asn1.DEROctetString.<init>:([B)V
            invokespecial org.bouncycastle.asn1.DERSet.<init>:(Lorg/bouncycastle/asn1/ASN1Encodable;)V
        21: .line 93
            invokespecial org.bouncycastle.asn1.cms.Attribute.<init>:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;Lorg/bouncycastle/asn1/ASN1Set;)V
            astore 4 /* attr */
        start local 4 // org.bouncycastle.asn1.cms.Attribute attr
        22: .line 95
            aload 2 /* std */
            aload 4 /* attr */
            invokevirtual org.bouncycastle.asn1.cms.Attribute.getAttrType:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            aload 4 /* attr */
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 4 // org.bouncycastle.asn1.cms.Attribute attr
        end local 3 // byte[] messageDigest
        23: .line 98
      StackMap locals:
      StackMap stack:
            aload 2 /* std */
            getstatic org.bouncycastle.asn1.cms.CMSAttributes.cmsAlgorithmProtect:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokevirtual java.util.Hashtable.contains:(Ljava/lang/Object;)Z
            ifne 29
        24: .line 100
            new org.bouncycastle.asn1.cms.Attribute
            dup
            getstatic org.bouncycastle.asn1.cms.CMSAttributes.cmsAlgorithmProtect:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            new org.bouncycastle.asn1.DERSet
            dup
            new org.bouncycastle.asn1.cms.CMSAlgorithmProtection
            dup
        25: .line 101
            aload 1 /* parameters */
            ldc "digestAlgID"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.bouncycastle.asn1.x509.AlgorithmIdentifier
        26: .line 102
            iconst_1
            aload 1 /* parameters */
            ldc "signatureAlgID"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.bouncycastle.asn1.x509.AlgorithmIdentifier
            invokespecial org.bouncycastle.asn1.cms.CMSAlgorithmProtection.<init>:(Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;ILorg/bouncycastle/asn1/x509/AlgorithmIdentifier;)V
            invokespecial org.bouncycastle.asn1.DERSet.<init>:(Lorg/bouncycastle/asn1/ASN1Encodable;)V
        27: .line 100
            invokespecial org.bouncycastle.asn1.cms.Attribute.<init>:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;Lorg/bouncycastle/asn1/ASN1Set;)V
            astore 3 /* attr */
        start local 3 // org.bouncycastle.asn1.cms.Attribute attr
        28: .line 103
            aload 2 /* std */
            aload 3 /* attr */
            invokevirtual org.bouncycastle.asn1.cms.Attribute.getAttrType:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            aload 3 /* attr */
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 3 // org.bouncycastle.asn1.cms.Attribute attr
        29: .line 106
      StackMap locals:
      StackMap stack:
            aload 2 /* std */
            areturn
        end local 2 // java.util.Hashtable std
        end local 1 // java.util.Map parameters
        end local 0 // org.bouncycastle.cms.DefaultSignedAttributeTableGenerator this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   30     0           this  Lorg/bouncycastle/cms/DefaultSignedAttributeTableGenerator;
            0   30     1     parameters  Ljava/util/Map;
            1   30     2            std  Ljava/util/Hashtable;
            4    9     3    contentType  Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            8    9     4           attr  Lorg/bouncycastle/asn1/cms/Attribute;
           11   15     3    signingTime  Ljava/util/Date;
           14   15     4           attr  Lorg/bouncycastle/asn1/cms/Attribute;
           19   23     3  messageDigest  [B
           22   23     4           attr  Lorg/bouncycastle/asn1/cms/Attribute;
           28   29     3           attr  Lorg/bouncycastle/asn1/cms/Attribute;
    MethodParameters:
            Name  Flags
      parameters  

  public org.bouncycastle.asn1.cms.AttributeTable getAttributes(java.util.Map);
    descriptor: (Ljava/util/Map;)Lorg/bouncycastle/asn1/cms/AttributeTable;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.bouncycastle.cms.DefaultSignedAttributeTableGenerator this
        start local 1 // java.util.Map parameters
         0: .line 115
            new org.bouncycastle.asn1.cms.AttributeTable
            dup
            aload 0 /* this */
            aload 1 /* parameters */
            invokevirtual org.bouncycastle.cms.DefaultSignedAttributeTableGenerator.createStandardAttributeTable:(Ljava/util/Map;)Ljava/util/Hashtable;
            invokespecial org.bouncycastle.asn1.cms.AttributeTable.<init>:(Ljava/util/Hashtable;)V
            areturn
        end local 1 // java.util.Map parameters
        end local 0 // org.bouncycastle.cms.DefaultSignedAttributeTableGenerator this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0        this  Lorg/bouncycastle/cms/DefaultSignedAttributeTableGenerator;
            0    1     1  parameters  Ljava/util/Map;
    MethodParameters:
            Name  Flags
      parameters  

  private static java.util.Hashtable copyHashTable(java.util.Hashtable);
    descriptor: (Ljava/util/Hashtable;)Ljava/util/Hashtable;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=1
        start local 0 // java.util.Hashtable paramsMap
         0: .line 120
            new java.util.Hashtable
            dup
            invokespecial java.util.Hashtable.<init>:()V
            astore 1 /* newTable */
        start local 1 // java.util.Hashtable newTable
         1: .line 122
            aload 0 /* paramsMap */
            invokevirtual java.util.Hashtable.keys:()Ljava/util/Enumeration;
            astore 2 /* keys */
        start local 2 // java.util.Enumeration keys
         2: .line 123
            goto 5
         3: .line 125
      StackMap locals: java.util.Hashtable java.util.Enumeration
      StackMap stack:
            aload 2 /* keys */
            invokeinterface java.util.Enumeration.nextElement:()Ljava/lang/Object;
            astore 3 /* key */
        start local 3 // java.lang.Object key
         4: .line 126
            aload 1 /* newTable */
            aload 3 /* key */
            aload 0 /* paramsMap */
            aload 3 /* key */
            invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 3 // java.lang.Object key
         5: .line 123
      StackMap locals:
      StackMap stack:
            aload 2 /* keys */
            invokeinterface java.util.Enumeration.hasMoreElements:()Z
            ifne 3
         6: .line 129
            aload 1 /* newTable */
            areturn
        end local 2 // java.util.Enumeration keys
        end local 1 // java.util.Hashtable newTable
        end local 0 // java.util.Hashtable paramsMap
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0  paramsMap  Ljava/util/Hashtable;
            1    7     1   newTable  Ljava/util/Hashtable;
            2    7     2       keys  Ljava/util/Enumeration;
            4    5     3        key  Ljava/lang/Object;
    MethodParameters:
           Name  Flags
      paramsMap  
}
SourceFile: "DefaultSignedAttributeTableGenerator.java"