public class io.vertx.ext.mail.impl.dkim.DKIMSigner
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: io.vertx.ext.mail.impl.dkim.DKIMSigner
  super_class: java.lang.Object
{
  public static final java.lang.String DKIM_SIGNATURE_HEADER;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "DKIM-Signature"

  private static final io.vertx.core.impl.logging.Logger logger;
    descriptor: Lio/vertx/core/impl/logging/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private final io.vertx.ext.mail.DKIMSignOptions dkimSignOptions;
    descriptor: Lio/vertx/ext/mail/DKIMSignOptions;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.String signatureTemplate;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.security.Signature signatureService;
    descriptor: Ljava/security/Signature;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private static final java.util.regex.Pattern DELIMITER;
    descriptor: Ljava/util/regex/Pattern;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 52
            ldc Lio/vertx/ext/mail/impl/dkim/DKIMSigner;
            invokestatic io.vertx.core.impl.logging.LoggerFactory.getLogger:(Ljava/lang/Class;)Lio/vertx/core/impl/logging/Logger;
            putstatic io.vertx.ext.mail.impl.dkim.DKIMSigner.logger:Lio/vertx/core/impl/logging/Logger;
         1: .line 57
            ldc "\n"
            invokestatic java.util.regex.Pattern.compile:(Ljava/lang/String;)Ljava/util/regex/Pattern;
            putstatic io.vertx.ext.mail.impl.dkim.DKIMSigner.DELIMITER:Ljava/util/regex/Pattern;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(io.vertx.ext.mail.DKIMSignOptions, io.vertx.core.Vertx);
    descriptor: (Lio/vertx/ext/mail/DKIMSignOptions;Lio/vertx/core/Vertx;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=7, args_size=3
        start local 0 // io.vertx.ext.mail.impl.dkim.DKIMSigner this
        start local 1 // io.vertx.ext.mail.DKIMSignOptions dkimSignOptions
        start local 2 // io.vertx.core.Vertx vertx
         0: .line 69
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 70
            aload 0 /* this */
            aload 1 /* dkimSignOptions */
            putfield io.vertx.ext.mail.impl.dkim.DKIMSigner.dkimSignOptions:Lio/vertx/ext/mail/DKIMSignOptions;
         2: .line 71
            aload 0 /* this */
            aload 0 /* this */
            getfield io.vertx.ext.mail.impl.dkim.DKIMSigner.dkimSignOptions:Lio/vertx/ext/mail/DKIMSignOptions;
            invokevirtual io.vertx.ext.mail.impl.dkim.DKIMSigner.validate:(Lio/vertx/ext/mail/DKIMSignOptions;)V
         3: .line 72
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual io.vertx.ext.mail.impl.dkim.DKIMSigner.dkimSignatureTemplate:()Ljava/lang/String;
            putfield io.vertx.ext.mail.impl.dkim.DKIMSigner.signatureTemplate:Ljava/lang/String;
         4: .line 74
            ldc "RSA"
            invokestatic java.security.KeyFactory.getInstance:(Ljava/lang/String;)Ljava/security/KeyFactory;
            astore 3 /* kf */
        start local 3 // java.security.KeyFactory kf
         5: .line 75
            aload 1 /* dkimSignOptions */
            invokevirtual io.vertx.ext.mail.DKIMSignOptions.getPrivateKey:()Ljava/lang/String;
            astore 4 /* secretKey */
        start local 4 // java.lang.String secretKey
         6: .line 76
            aload 4 /* secretKey */
            ifnonnull 8
         7: .line 78
            aload 2 /* vertx */
            invokeinterface io.vertx.core.Vertx.fileSystem:()Lio/vertx/core/file/FileSystem;
            aload 1 /* dkimSignOptions */
            invokevirtual io.vertx.ext.mail.DKIMSignOptions.getPrivateKeyPath:()Ljava/lang/String;
            invokeinterface io.vertx.core.file.FileSystem.readFileBlocking:(Ljava/lang/String;)Lio/vertx/core/buffer/Buffer;
            invokeinterface io.vertx.core.buffer.Buffer.toString:()Ljava/lang/String;
            astore 4 /* secretKey */
         8: .line 80
      StackMap locals: io.vertx.ext.mail.impl.dkim.DKIMSigner io.vertx.ext.mail.DKIMSignOptions io.vertx.core.Vertx java.security.KeyFactory java.lang.String
      StackMap stack:
            new java.security.spec.PKCS8EncodedKeySpec
            dup
            invokestatic java.util.Base64.getMimeDecoder:()Ljava/util/Base64$Decoder;
            aload 4 /* secretKey */
            invokevirtual java.util.Base64$Decoder.decode:(Ljava/lang/String;)[B
            invokespecial java.security.spec.PKCS8EncodedKeySpec.<init>:([B)V
            astore 5 /* keyspec */
        start local 5 // java.security.spec.PKCS8EncodedKeySpec keyspec
         9: .line 81
            aload 3 /* kf */
            aload 5 /* keyspec */
            invokevirtual java.security.KeyFactory.generatePrivate:(Ljava/security/spec/KeySpec;)Ljava/security/PrivateKey;
            astore 6 /* privateKey */
        start local 6 // java.security.PrivateKey privateKey
        10: .line 82
            aload 0 /* this */
            aload 1 /* dkimSignOptions */
            invokevirtual io.vertx.ext.mail.DKIMSignOptions.getSignAlgo:()Lio/vertx/ext/mail/DKIMSignAlgorithm;
            invokevirtual io.vertx.ext.mail.DKIMSignAlgorithm.signatureAlgorithm:()Ljava/lang/String;
            invokestatic java.security.Signature.getInstance:(Ljava/lang/String;)Ljava/security/Signature;
            putfield io.vertx.ext.mail.impl.dkim.DKIMSigner.signatureService:Ljava/security/Signature;
        11: .line 83
            aload 0 /* this */
            getfield io.vertx.ext.mail.impl.dkim.DKIMSigner.signatureService:Ljava/security/Signature;
            aload 6 /* privateKey */
            invokevirtual java.security.Signature.initSign:(Ljava/security/PrivateKey;)V
        end local 6 // java.security.PrivateKey privateKey
        end local 5 // java.security.spec.PKCS8EncodedKeySpec keyspec
        end local 4 // java.lang.String secretKey
        end local 3 // java.security.KeyFactory kf
        12: .line 84
            goto 15
      StackMap locals: io.vertx.ext.mail.impl.dkim.DKIMSigner io.vertx.ext.mail.DKIMSignOptions io.vertx.core.Vertx
      StackMap stack: java.security.GeneralSecurityException
        13: astore 3 /* e */
        start local 3 // java.security.GeneralSecurityException e
        14: .line 85
            new java.lang.IllegalStateException
            dup
            ldc "Failed to init the Signature"
            aload 3 /* e */
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.security.GeneralSecurityException e
        15: .line 87
      StackMap locals:
      StackMap stack:
            return
        end local 2 // io.vertx.core.Vertx vertx
        end local 1 // io.vertx.ext.mail.DKIMSignOptions dkimSignOptions
        end local 0 // io.vertx.ext.mail.impl.dkim.DKIMSigner this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   16     0             this  Lio/vertx/ext/mail/impl/dkim/DKIMSigner;
            0   16     1  dkimSignOptions  Lio/vertx/ext/mail/DKIMSignOptions;
            0   16     2            vertx  Lio/vertx/core/Vertx;
            5   12     3               kf  Ljava/security/KeyFactory;
            6   12     4        secretKey  Ljava/lang/String;
            9   12     5          keyspec  Ljava/security/spec/PKCS8EncodedKeySpec;
           10   12     6       privateKey  Ljava/security/PrivateKey;
           14   15     3                e  Ljava/security/GeneralSecurityException;
      Exception table:
        from    to  target  type
           4    12      13  Class java.security.NoSuchAlgorithmException
           4    12      13  Class java.security.InvalidKeyException
           4    12      13  Class java.security.spec.InvalidKeySpecException
    MethodParameters:
                 Name  Flags
      dkimSignOptions  
      vertx            final

  private void validate(io.vertx.ext.mail.DKIMSignOptions);
    descriptor: (Lio/vertx/ext/mail/DKIMSignOptions;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // io.vertx.ext.mail.impl.dkim.DKIMSigner this
        start local 1 // io.vertx.ext.mail.DKIMSignOptions ops
         0: .line 96
            aload 0 /* this */
            aload 1 /* ops */
            invokevirtual io.vertx.ext.mail.impl.dkim.DKIMSigner.checkRequiredFields:(Lio/vertx/ext/mail/DKIMSignOptions;)V
         1: .line 98
            aload 1 /* ops */
            invokevirtual io.vertx.ext.mail.DKIMSignOptions.getAuid:()Ljava/lang/String;
            astore 2 /* auid */
        start local 2 // java.lang.String auid
         2: .line 99
            aload 2 /* auid */
            ifnull 7
         3: .line 100
            aload 1 /* ops */
            invokevirtual io.vertx.ext.mail.DKIMSignOptions.getSdid:()Ljava/lang/String;
            astore 3 /* sdid */
        start local 3 // java.lang.String sdid
         4: .line 101
            aload 2 /* auid */
            invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
            new java.lang.StringBuilder
            dup
            ldc "@"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* sdid */
            invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifne 7
         5: .line 102
            aload 2 /* auid */
            invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
            new java.lang.StringBuilder
            dup
            ldc "."
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* sdid */
            invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifne 7
         6: .line 103
            new java.lang.IllegalStateException
            dup
            ldc "Identity domain mismatch, expected is: [xx]@[xx.]sdid"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // java.lang.String sdid
         7: .line 108
      StackMap locals: java.lang.String
      StackMap stack:
            aload 1 /* ops */
            invokevirtual io.vertx.ext.mail.DKIMSignOptions.getSignedHeaders:()Ljava/util/List;
            invokeinterface java.util.List.stream:()Ljava/util/stream/Stream;
            invokedynamic test()Ljava/util/function/Predicate;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Z
                  io/vertx/ext/mail/impl/dkim/DKIMSigner.lambda$0(Ljava/lang/String;)Z (6)
                  (Ljava/lang/String;)Z
            invokeinterface java.util.stream.Stream.noneMatch:(Ljava/util/function/Predicate;)Z
            ifeq 9
         8: .line 109
            new java.lang.IllegalStateException
            dup
            ldc "From field must be selected to sign."
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         9: .line 112
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.lang.String auid
        end local 1 // io.vertx.ext.mail.DKIMSignOptions ops
        end local 0 // io.vertx.ext.mail.impl.dkim.DKIMSigner this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   10     0  this  Lio/vertx/ext/mail/impl/dkim/DKIMSigner;
            0   10     1   ops  Lio/vertx/ext/mail/DKIMSignOptions;
            2   10     2  auid  Ljava/lang/String;
            4    7     3  sdid  Ljava/lang/String;
    Exceptions:
      throws java.lang.IllegalStateException
    MethodParameters:
      Name  Flags
      ops   

  private void checkRequiredFields(io.vertx.ext.mail.DKIMSignOptions);
    descriptor: (Lio/vertx/ext/mail/DKIMSignOptions;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // io.vertx.ext.mail.impl.dkim.DKIMSigner this
        start local 1 // io.vertx.ext.mail.DKIMSignOptions ops
         0: .line 115
            aload 1 /* ops */
            invokevirtual io.vertx.ext.mail.DKIMSignOptions.getSignAlgo:()Lio/vertx/ext/mail/DKIMSignAlgorithm;
            ifnonnull 2
         1: .line 116
            new java.lang.IllegalStateException
            dup
            ldc "Sign Algorithm is required: rsa-sha1 or rsa-sha256"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 118
      StackMap locals:
      StackMap stack:
            aload 1 /* ops */
            invokevirtual io.vertx.ext.mail.DKIMSignOptions.getPrivateKey:()Ljava/lang/String;
            ifnonnull 4
            aload 1 /* ops */
            invokevirtual io.vertx.ext.mail.DKIMSignOptions.getPrivateKeyPath:()Ljava/lang/String;
            ifnonnull 4
         3: .line 119
            new java.lang.IllegalStateException
            dup
            ldc "Either private key or private key file path must be specified to sign"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 121
      StackMap locals:
      StackMap stack:
            aload 1 /* ops */
            invokevirtual io.vertx.ext.mail.DKIMSignOptions.getSignedHeaders:()Ljava/util/List;
            ifnull 5
            aload 1 /* ops */
            invokevirtual io.vertx.ext.mail.DKIMSignOptions.getSignedHeaders:()Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 6
         5: .line 122
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalStateException
            dup
            ldc "Email header fields to sign must be set"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 124
      StackMap locals:
      StackMap stack:
            aload 1 /* ops */
            invokevirtual io.vertx.ext.mail.DKIMSignOptions.getSdid:()Ljava/lang/String;
            ifnonnull 8
         7: .line 125
            new java.lang.IllegalStateException
            dup
            ldc "Singing Domain Identifier(SDID) must be specified"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 127
      StackMap locals:
      StackMap stack:
            aload 1 /* ops */
            invokevirtual io.vertx.ext.mail.DKIMSignOptions.getSelector:()Ljava/lang/String;
            ifnonnull 10
         9: .line 128
            new java.lang.IllegalStateException
            dup
            ldc "The selector must be specified to be able to verify"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        10: .line 130
      StackMap locals:
      StackMap stack:
            return
        end local 1 // io.vertx.ext.mail.DKIMSignOptions ops
        end local 0 // io.vertx.ext.mail.impl.dkim.DKIMSigner this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  this  Lio/vertx/ext/mail/impl/dkim/DKIMSigner;
            0   11     1   ops  Lio/vertx/ext/mail/DKIMSignOptions;
    MethodParameters:
      Name  Flags
      ops   

  java.lang.String dkimSignatureTemplate();
    descriptor: ()Ljava/lang/String;
    flags: (0x0000) 
    Code:
      stack=4, locals=11, args_size=1
        start local 0 // io.vertx.ext.mail.impl.dkim.DKIMSigner this
         0: .line 133
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 1 /* sb */
        start local 1 // java.lang.StringBuilder sb
         1: .line 135
            aload 1 /* sb */
            ldc "v=1; "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         2: .line 137
            aload 1 /* sb */
            ldc "a="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield io.vertx.ext.mail.impl.dkim.DKIMSigner.dkimSignOptions:Lio/vertx/ext/mail/DKIMSignOptions;
            invokevirtual io.vertx.ext.mail.DKIMSignOptions.getSignAlgo:()Lio/vertx/ext/mail/DKIMSignAlgorithm;
            invokevirtual io.vertx.ext.mail.DKIMSignAlgorithm.dkimAlgoName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "; "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         3: .line 139
            aload 0 /* this */
            getfield io.vertx.ext.mail.impl.dkim.DKIMSigner.dkimSignOptions:Lio/vertx/ext/mail/DKIMSignOptions;
            invokevirtual io.vertx.ext.mail.DKIMSignOptions.getBodyCanonAlgo:()Lio/vertx/ext/mail/CanonicalizationAlgorithm;
            astore 2 /* bodyCanonic */
        start local 2 // io.vertx.ext.mail.CanonicalizationAlgorithm bodyCanonic
         4: .line 140
            aload 0 /* this */
            getfield io.vertx.ext.mail.impl.dkim.DKIMSigner.dkimSignOptions:Lio/vertx/ext/mail/DKIMSignOptions;
            invokevirtual io.vertx.ext.mail.DKIMSignOptions.getHeaderCanonAlgo:()Lio/vertx/ext/mail/CanonicalizationAlgorithm;
            astore 3 /* headerCanonic */
        start local 3 // io.vertx.ext.mail.CanonicalizationAlgorithm headerCanonic
         5: .line 141
            aload 1 /* sb */
            ldc "c="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 3 /* headerCanonic */
            invokevirtual io.vertx.ext.mail.CanonicalizationAlgorithm.algoName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "/"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* bodyCanonic */
            invokevirtual io.vertx.ext.mail.CanonicalizationAlgorithm.algoName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "; "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         6: .line 144
            aload 0 /* this */
            getfield io.vertx.ext.mail.impl.dkim.DKIMSigner.dkimSignOptions:Lio/vertx/ext/mail/DKIMSignOptions;
            invokevirtual io.vertx.ext.mail.DKIMSignOptions.getSdid:()Ljava/lang/String;
            invokestatic io.vertx.ext.mail.impl.dkim.DKIMSigner.dkimQuotedPrintable:(Ljava/lang/String;)Ljava/lang/String;
            astore 4 /* sdid */
        start local 4 // java.lang.String sdid
         7: .line 145
            aload 1 /* sb */
            ldc "d="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 4 /* sdid */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "; "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         8: .line 147
            aload 0 /* this */
            getfield io.vertx.ext.mail.impl.dkim.DKIMSigner.dkimSignOptions:Lio/vertx/ext/mail/DKIMSignOptions;
            invokevirtual io.vertx.ext.mail.DKIMSignOptions.getAuid:()Ljava/lang/String;
            astore 5 /* auid */
        start local 5 // java.lang.String auid
         9: .line 148
            aload 5 /* auid */
            ifnull 12
        10: .line 149
            aload 1 /* sb */
            ldc "i="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 5 /* auid */
            invokestatic io.vertx.ext.mail.impl.dkim.DKIMSigner.dkimQuotedPrintable:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "; "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        11: .line 150
            goto 13
        12: .line 151
      StackMap locals: io.vertx.ext.mail.impl.dkim.DKIMSigner java.lang.StringBuilder io.vertx.ext.mail.CanonicalizationAlgorithm io.vertx.ext.mail.CanonicalizationAlgorithm java.lang.String java.lang.String
      StackMap stack:
            aload 1 /* sb */
            ldc "i="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "@"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 4 /* sdid */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "; "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        13: .line 154
      StackMap locals:
      StackMap stack:
            aload 1 /* sb */
            ldc "s="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield io.vertx.ext.mail.impl.dkim.DKIMSigner.dkimSignOptions:Lio/vertx/ext/mail/DKIMSignOptions;
            invokevirtual io.vertx.ext.mail.DKIMSignOptions.getSelector:()Ljava/lang/String;
            invokestatic io.vertx.ext.mail.impl.dkim.DKIMSigner.dkimQuotedPrintable:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "; "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        14: .line 156
            ldc ":"
            aload 0 /* this */
            getfield io.vertx.ext.mail.impl.dkim.DKIMSigner.dkimSignOptions:Lio/vertx/ext/mail/DKIMSignOptions;
            invokevirtual io.vertx.ext.mail.DKIMSignOptions.getSignedHeaders:()Ljava/util/List;
            invokestatic java.lang.String.join:(Ljava/lang/CharSequence;Ljava/lang/Iterable;)Ljava/lang/String;
            astore 6 /* signHeadersString */
        start local 6 // java.lang.String signHeadersString
        15: .line 157
            aload 1 /* sb */
            ldc "h="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 6 /* signHeadersString */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "; "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        16: .line 159
            aload 0 /* this */
            getfield io.vertx.ext.mail.impl.dkim.DKIMSigner.dkimSignOptions:Lio/vertx/ext/mail/DKIMSignOptions;
            invokevirtual io.vertx.ext.mail.DKIMSignOptions.getBodyLimit:()I
            ifle 18
        17: .line 160
            aload 1 /* sb */
            ldc "l="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield io.vertx.ext.mail.impl.dkim.DKIMSigner.dkimSignOptions:Lio/vertx/ext/mail/DKIMSignOptions;
            invokevirtual io.vertx.ext.mail.DKIMSignOptions.getBodyLimit:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc "; "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        18: .line 163
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* this */
            getfield io.vertx.ext.mail.impl.dkim.DKIMSigner.dkimSignOptions:Lio/vertx/ext/mail/DKIMSignOptions;
            invokevirtual io.vertx.ext.mail.DKIMSignOptions.isSignatureTimestamp:()Z
            ifne 19
            aload 0 /* this */
            getfield io.vertx.ext.mail.impl.dkim.DKIMSigner.dkimSignOptions:Lio/vertx/ext/mail/DKIMSignOptions;
            invokevirtual io.vertx.ext.mail.DKIMSignOptions.getExpireTime:()J
            lconst_0
            lcmp
            ifle 24
        19: .line 164
      StackMap locals:
      StackMap stack:
            invokestatic java.lang.System.currentTimeMillis:()J
            ldc 1000
            ldiv
            lstore 7 /* time */
        start local 7 // long time
        20: .line 165
            aload 1 /* sb */
            ldc "t="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            lload 7 /* time */
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            ldc "; "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        21: .line 166
            aload 0 /* this */
            getfield io.vertx.ext.mail.impl.dkim.DKIMSigner.dkimSignOptions:Lio/vertx/ext/mail/DKIMSignOptions;
            invokevirtual io.vertx.ext.mail.DKIMSignOptions.getExpireTime:()J
            lconst_0
            lcmp
            ifle 24
        22: .line 167
            lload 7 /* time */
            aload 0 /* this */
            getfield io.vertx.ext.mail.impl.dkim.DKIMSigner.dkimSignOptions:Lio/vertx/ext/mail/DKIMSignOptions;
            invokevirtual io.vertx.ext.mail.DKIMSignOptions.getExpireTime:()J
            ladd
            lstore 9 /* expire */
        start local 9 // long expire
        23: .line 168
            aload 1 /* sb */
            ldc "x="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            lload 9 /* expire */
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            ldc "; "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 9 // long expire
        end local 7 // long time
        24: .line 171
      StackMap locals:
      StackMap stack:
            aload 1 /* sb */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 6 // java.lang.String signHeadersString
        end local 5 // java.lang.String auid
        end local 4 // java.lang.String sdid
        end local 3 // io.vertx.ext.mail.CanonicalizationAlgorithm headerCanonic
        end local 2 // io.vertx.ext.mail.CanonicalizationAlgorithm bodyCanonic
        end local 1 // java.lang.StringBuilder sb
        end local 0 // io.vertx.ext.mail.impl.dkim.DKIMSigner this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   25     0               this  Lio/vertx/ext/mail/impl/dkim/DKIMSigner;
            1   25     1                 sb  Ljava/lang/StringBuilder;
            4   25     2        bodyCanonic  Lio/vertx/ext/mail/CanonicalizationAlgorithm;
            5   25     3      headerCanonic  Lio/vertx/ext/mail/CanonicalizationAlgorithm;
            7   25     4               sdid  Ljava/lang/String;
            9   25     5               auid  Ljava/lang/String;
           15   25     6  signHeadersString  Ljava/lang/String;
           20   24     7               time  J
           23   24     9             expire  J

  public io.vertx.core.Future<java.lang.String> signEmail(io.vertx.core.Context, io.vertx.ext.mail.mailencoder.EncodedPart);
    descriptor: (Lio/vertx/core/Context;Lio/vertx/ext/mail/mailencoder/EncodedPart;)Lio/vertx/core/Future;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // io.vertx.ext.mail.impl.dkim.DKIMSigner this
        start local 1 // io.vertx.core.Context context
        start local 2 // io.vertx.ext.mail.mailencoder.EncodedPart encodedMessage
         0: .line 182
            aload 0 /* this */
            aload 1 /* context */
            aload 2 /* encodedMessage */
            invokevirtual io.vertx.ext.mail.impl.dkim.DKIMSigner.bodyHashing:(Lio/vertx/core/Context;Lio/vertx/ext/mail/mailencoder/EncodedPart;)Lio/vertx/core/Future;
            aload 0 /* this */
            aload 2 /* encodedMessage */
            invokedynamic apply(Lio/vertx/ext/mail/impl/dkim/DKIMSigner;Lio/vertx/ext/mail/mailencoder/EncodedPart;)Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  io/vertx/ext/mail/impl/dkim/DKIMSigner.lambda$1(Lio/vertx/ext/mail/mailencoder/EncodedPart;Ljava/lang/String;)Ljava/lang/String; (7)
                  (Ljava/lang/String;)Ljava/lang/String;
            invokeinterface io.vertx.core.Future.map:(Ljava/util/function/Function;)Lio/vertx/core/Future;
            areturn
        end local 2 // io.vertx.ext.mail.mailencoder.EncodedPart encodedMessage
        end local 1 // io.vertx.core.Context context
        end local 0 // io.vertx.ext.mail.impl.dkim.DKIMSigner this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    1     0            this  Lio/vertx/ext/mail/impl/dkim/DKIMSigner;
            0    1     1         context  Lio/vertx/core/Context;
            0    1     2  encodedMessage  Lio/vertx/ext/mail/mailencoder/EncodedPart;
    Signature: (Lio/vertx/core/Context;Lio/vertx/ext/mail/mailencoder/EncodedPart;)Lio/vertx/core/Future<Ljava/lang/String;>;
    MethodParameters:
                Name  Flags
      context         
      encodedMessage  

  private void walkThroughAttachStream(java.security.MessageDigest, io.vertx.core.streams.ReadStream<io.vertx.core.buffer.Buffer>, java.util.concurrent.atomic.AtomicInteger, io.vertx.core.Promise<java.lang.Void>);
    descriptor: (Ljava/security/MessageDigest;Lio/vertx/core/streams/ReadStream;Ljava/util/concurrent/atomic/AtomicInteger;Lio/vertx/core/Promise;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=7, args_size=5
        start local 0 // io.vertx.ext.mail.impl.dkim.DKIMSigner this
        start local 1 // java.security.MessageDigest md
        start local 2 // io.vertx.core.streams.ReadStream stream
        start local 3 // java.util.concurrent.atomic.AtomicInteger written
        start local 4 // io.vertx.core.Promise promise
         0: .line 211
            aload 2 /* stream */
            invokeinterface io.vertx.core.streams.ReadStream.pipe:()Lio/vertx/core/streams/Pipe;
            astore 5 /* pipe */
        start local 5 // io.vertx.core.streams.Pipe pipe
         1: .line 212
            invokestatic io.vertx.core.Promise.promise:()Lio/vertx/core/Promise;
            astore 6 /* pipePromise */
        start local 6 // io.vertx.core.Promise pipePromise
         2: .line 213
            aload 6 /* pipePromise */
            invokeinterface io.vertx.core.Promise.future:()Lio/vertx/core/Future;
            aload 5 /* pipe */
            aload 4 /* promise */
            invokedynamic handle(Lio/vertx/core/streams/Pipe;Lio/vertx/core/Promise;)Lio/vertx/core/Handler;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)V
                  io/vertx/ext/mail/impl/dkim/DKIMSigner.lambda$2(Lio/vertx/core/streams/Pipe;Lio/vertx/core/Promise;Lio/vertx/core/AsyncResult;)V (6)
                  (Lio/vertx/core/AsyncResult;)V
            invokeinterface io.vertx.core.Future.onComplete:(Lio/vertx/core/Handler;)Lio/vertx/core/Future;
            pop
         3: .line 221
            aload 5 /* pipe */
            new io.vertx.ext.mail.impl.dkim.DKIMSigner$1
            dup
            aload 0 /* this */
            aload 1 /* md */
            aload 3 /* written */
            invokespecial io.vertx.ext.mail.impl.dkim.DKIMSigner$1.<init>:(Lio/vertx/ext/mail/impl/dkim/DKIMSigner;Ljava/security/MessageDigest;Ljava/util/concurrent/atomic/AtomicInteger;)V
         4: .line 269
            aload 6 /* pipePromise */
         5: .line 221
            invokeinterface io.vertx.core.streams.Pipe.to:(Lio/vertx/core/streams/WriteStream;Lio/vertx/core/Handler;)V
         6: .line 270
            return
        end local 6 // io.vertx.core.Promise pipePromise
        end local 5 // io.vertx.core.streams.Pipe pipe
        end local 4 // io.vertx.core.Promise promise
        end local 3 // java.util.concurrent.atomic.AtomicInteger written
        end local 2 // io.vertx.core.streams.ReadStream stream
        end local 1 // java.security.MessageDigest md
        end local 0 // io.vertx.ext.mail.impl.dkim.DKIMSigner this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    7     0         this  Lio/vertx/ext/mail/impl/dkim/DKIMSigner;
            0    7     1           md  Ljava/security/MessageDigest;
            0    7     2       stream  Lio/vertx/core/streams/ReadStream<Lio/vertx/core/buffer/Buffer;>;
            0    7     3      written  Ljava/util/concurrent/atomic/AtomicInteger;
            0    7     4      promise  Lio/vertx/core/Promise<Ljava/lang/Void;>;
            1    7     5         pipe  Lio/vertx/core/streams/Pipe<Lio/vertx/core/buffer/Buffer;>;
            2    7     6  pipePromise  Lio/vertx/core/Promise<Ljava/lang/Void;>;
    Signature: (Ljava/security/MessageDigest;Lio/vertx/core/streams/ReadStream<Lio/vertx/core/buffer/Buffer;>;Ljava/util/concurrent/atomic/AtomicInteger;Lio/vertx/core/Promise<Ljava/lang/Void;>;)V
    MethodParameters:
         Name  Flags
      md       
      stream   
      written  
      promise  

  private boolean digest(java.security.MessageDigest, byte[], java.util.concurrent.atomic.AtomicInteger);
    descriptor: (Ljava/security/MessageDigest;[BLjava/util/concurrent/atomic/AtomicInteger;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=6, args_size=4
        start local 0 // io.vertx.ext.mail.impl.dkim.DKIMSigner this
        start local 1 // java.security.MessageDigest md
        start local 2 // byte[] bytes
        start local 3 // java.util.concurrent.atomic.AtomicInteger written
         0: .line 273
            aload 0 /* this */
            getfield io.vertx.ext.mail.impl.dkim.DKIMSigner.dkimSignOptions:Lio/vertx/ext/mail/DKIMSignOptions;
            invokevirtual io.vertx.ext.mail.DKIMSignOptions.getBodyLimit:()I
            ifle 8
         1: .line 274
            aload 0 /* this */
            getfield io.vertx.ext.mail.impl.dkim.DKIMSigner.dkimSignOptions:Lio/vertx/ext/mail/DKIMSignOptions;
            invokevirtual io.vertx.ext.mail.DKIMSignOptions.getBodyLimit:()I
            aload 3 /* written */
            invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
            isub
            istore 4 /* left */
        start local 4 // int left
         2: .line 275
            iload 4 /* left */
            ifle 7
         3: .line 276
            iload 4 /* left */
            aload 2 /* bytes */
            arraylength
            invokestatic java.lang.Math.min:(II)I
            istore 5 /* len */
        start local 5 // int len
         4: .line 277
            aload 1 /* md */
            aload 2 /* bytes */
            iconst_0
            iload 5 /* len */
            invokevirtual java.security.MessageDigest.update:([BII)V
         5: .line 278
            aload 3 /* written */
            iload 5 /* len */
            invokevirtual java.util.concurrent.atomic.AtomicInteger.getAndAdd:(I)I
            pop
        end local 5 // int len
         6: .line 279
            goto 9
         7: .line 280
      StackMap locals: int
      StackMap stack:
            iconst_0
            ireturn
        end local 4 // int left
         8: .line 283
      StackMap locals:
      StackMap stack:
            aload 1 /* md */
            aload 2 /* bytes */
            invokevirtual java.security.MessageDigest.update:([B)V
         9: .line 285
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 3 // java.util.concurrent.atomic.AtomicInteger written
        end local 2 // byte[] bytes
        end local 1 // java.security.MessageDigest md
        end local 0 // io.vertx.ext.mail.impl.dkim.DKIMSigner this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   10     0     this  Lio/vertx/ext/mail/impl/dkim/DKIMSigner;
            0   10     1       md  Ljava/security/MessageDigest;
            0   10     2    bytes  [B
            0   10     3  written  Ljava/util/concurrent/atomic/AtomicInteger;
            2    8     4     left  I
            4    6     5      len  I
    MethodParameters:
         Name  Flags
      md       
      bytes    
      written  

  private io.vertx.core.Future<java.lang.Boolean> walkBoundaryStartAndHeadersFuture(java.security.MessageDigest, java.lang.String, io.vertx.ext.mail.mailencoder.EncodedPart, java.util.concurrent.atomic.AtomicInteger);
    descriptor: (Ljava/security/MessageDigest;Ljava/lang/String;Lio/vertx/ext/mail/mailencoder/EncodedPart;Ljava/util/concurrent/atomic/AtomicInteger;)Lio/vertx/core/Future;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=7, args_size=5
        start local 0 // io.vertx.ext.mail.impl.dkim.DKIMSigner this
        start local 1 // java.security.MessageDigest md
        start local 2 // java.lang.String boundaryStart
        start local 3 // io.vertx.ext.mail.mailencoder.EncodedPart part
        start local 4 // java.util.concurrent.atomic.AtomicInteger written
         0: .line 289
            invokestatic io.vertx.core.Promise.promise:()Lio/vertx/core/Promise;
            astore 5 /* promise */
        start local 5 // io.vertx.core.Promise promise
         1: .line 291
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 6 /* sb */
        start local 6 // java.lang.StringBuilder sb
         2: .line 292
            aload 6 /* sb */
            aload 2 /* boundaryStart */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         3: .line 293
            aload 3 /* part */
            invokevirtual io.vertx.ext.mail.mailencoder.EncodedPart.headers:()Lio/vertx/core/MultiMap;
            aload 6 /* sb */
            invokedynamic accept(Ljava/lang/StringBuilder;)Ljava/util/function/Consumer;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)V
                  io/vertx/ext/mail/impl/dkim/DKIMSigner.lambda$3(Ljava/lang/StringBuilder;Ljava/util/Map$Entry;)V (6)
                  (Ljava/util/Map$Entry;)V
            invokeinterface io.vertx.core.MultiMap.forEach:(Ljava/util/function/Consumer;)V
         4: .line 294
            aload 6 /* sb */
            ldc "\r\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         5: .line 295
            aload 5 /* promise */
            aload 0 /* this */
            aload 1 /* md */
            aload 6 /* sb */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.lang.String.getBytes:()[B
            aload 4 /* written */
            invokevirtual io.vertx.ext.mail.impl.dkim.DKIMSigner.digest:(Ljava/security/MessageDigest;[BLjava/util/concurrent/atomic/AtomicInteger;)Z
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            invokeinterface io.vertx.core.Promise.complete:(Ljava/lang/Object;)V
        end local 6 // java.lang.StringBuilder sb
         6: .line 296
            goto 9
      StackMap locals: io.vertx.ext.mail.impl.dkim.DKIMSigner java.security.MessageDigest java.lang.String io.vertx.ext.mail.mailencoder.EncodedPart java.util.concurrent.atomic.AtomicInteger io.vertx.core.Promise
      StackMap stack: java.lang.Exception
         7: astore 6 /* e */
        start local 6 // java.lang.Exception e
         8: .line 297
            aload 5 /* promise */
            aload 6 /* e */
            invokeinterface io.vertx.core.Promise.fail:(Ljava/lang/Throwable;)V
        end local 6 // java.lang.Exception e
         9: .line 299
      StackMap locals:
      StackMap stack:
            aload 5 /* promise */
            invokeinterface io.vertx.core.Promise.future:()Lio/vertx/core/Future;
            areturn
        end local 5 // io.vertx.core.Promise promise
        end local 4 // java.util.concurrent.atomic.AtomicInteger written
        end local 3 // io.vertx.ext.mail.mailencoder.EncodedPart part
        end local 2 // java.lang.String boundaryStart
        end local 1 // java.security.MessageDigest md
        end local 0 // io.vertx.ext.mail.impl.dkim.DKIMSigner this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   10     0           this  Lio/vertx/ext/mail/impl/dkim/DKIMSigner;
            0   10     1             md  Ljava/security/MessageDigest;
            0   10     2  boundaryStart  Ljava/lang/String;
            0   10     3           part  Lio/vertx/ext/mail/mailencoder/EncodedPart;
            0   10     4        written  Ljava/util/concurrent/atomic/AtomicInteger;
            1   10     5        promise  Lio/vertx/core/Promise<Ljava/lang/Boolean;>;
            2    6     6             sb  Ljava/lang/StringBuilder;
            8    9     6              e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           1     6       7  Class java.lang.Exception
    Signature: (Ljava/security/MessageDigest;Ljava/lang/String;Lio/vertx/ext/mail/mailencoder/EncodedPart;Ljava/util/concurrent/atomic/AtomicInteger;)Lio/vertx/core/Future<Ljava/lang/Boolean;>;
    MethodParameters:
               Name  Flags
      md             
      boundaryStart  
      part           
      written        

  private void walkThroughMultiPart(io.vertx.core.Context, java.security.MessageDigest, io.vertx.ext.mail.mailencoder.EncodedPart, int, java.util.concurrent.atomic.AtomicInteger, io.vertx.core.Promise<java.lang.Void>);
    descriptor: (Lio/vertx/core/Context;Ljava/security/MessageDigest;Lio/vertx/ext/mail/mailencoder/EncodedPart;ILjava/util/concurrent/atomic/AtomicInteger;Lio/vertx/core/Promise;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=11, args_size=7
        start local 0 // io.vertx.ext.mail.impl.dkim.DKIMSigner this
        start local 1 // io.vertx.core.Context context
        start local 2 // java.security.MessageDigest md
        start local 3 // io.vertx.ext.mail.mailencoder.EncodedPart multiPart
        start local 4 // int index
        start local 5 // java.util.concurrent.atomic.AtomicInteger written
        start local 6 // io.vertx.core.Promise promise
         0: .line 304
            new java.lang.StringBuilder
            dup
            ldc "--"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* multiPart */
            invokevirtual io.vertx.ext.mail.mailencoder.EncodedPart.boundary:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "\r\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 7 /* boundaryStart */
        start local 7 // java.lang.String boundaryStart
         1: .line 305
            new java.lang.StringBuilder
            dup
            ldc "--"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* multiPart */
            invokevirtual io.vertx.ext.mail.mailencoder.EncodedPart.boundary:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "--"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 8 /* boundaryEnd */
        start local 8 // java.lang.String boundaryEnd
         2: .line 306
            iload 4 /* index */
            aload 3 /* multiPart */
            invokevirtual io.vertx.ext.mail.mailencoder.EncodedPart.parts:()Ljava/util/List;
            invokeinterface java.util.List.size:()I
            if_icmpge 8
         3: .line 307
            aload 3 /* multiPart */
            invokevirtual io.vertx.ext.mail.mailencoder.EncodedPart.parts:()Ljava/util/List;
            iload 4 /* index */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast io.vertx.ext.mail.mailencoder.EncodedPart
            astore 9 /* part */
        start local 9 // io.vertx.ext.mail.mailencoder.EncodedPart part
         4: .line 309
            invokestatic io.vertx.core.Promise.promise:()Lio/vertx/core/Promise;
            astore 10 /* nextPartPromise */
        start local 10 // io.vertx.core.Promise nextPartPromise
         5: .line 310
            aload 10 /* nextPartPromise */
            invokeinterface io.vertx.core.Promise.future:()Lio/vertx/core/Future;
            aload 0 /* this */
            aload 1 /* context */
            aload 2 /* md */
            aload 3 /* multiPart */
            iload 4 /* index */
            aload 5 /* written */
            aload 6 /* promise */
            invokedynamic handle(Lio/vertx/ext/mail/impl/dkim/DKIMSigner;Lio/vertx/core/Context;Ljava/security/MessageDigest;Lio/vertx/ext/mail/mailencoder/EncodedPart;ILjava/util/concurrent/atomic/AtomicInteger;Lio/vertx/core/Promise;)Lio/vertx/core/Handler;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)V
                  io/vertx/ext/mail/impl/dkim/DKIMSigner.lambda$4(Lio/vertx/core/Context;Ljava/security/MessageDigest;Lio/vertx/ext/mail/mailencoder/EncodedPart;ILjava/util/concurrent/atomic/AtomicInteger;Lio/vertx/core/Promise;Lio/vertx/core/AsyncResult;)V (7)
                  (Lio/vertx/core/AsyncResult;)V
            invokeinterface io.vertx.core.Future.onComplete:(Lio/vertx/core/Handler;)Lio/vertx/core/Future;
            pop
         6: .line 318
            aload 0 /* this */
            aload 2 /* md */
            aload 7 /* boundaryStart */
            aload 9 /* part */
            aload 5 /* written */
            invokevirtual io.vertx.ext.mail.impl.dkim.DKIMSigner.walkBoundaryStartAndHeadersFuture:(Ljava/security/MessageDigest;Ljava/lang/String;Lio/vertx/ext/mail/mailencoder/EncodedPart;Ljava/util/concurrent/atomic/AtomicInteger;)Lio/vertx/core/Future;
            aload 0 /* this */
            aload 9 /* part */
            aload 1 /* context */
            aload 2 /* md */
            aload 5 /* written */
            aload 10 /* nextPartPromise */
            aload 6 /* promise */
            invokedynamic handle(Lio/vertx/ext/mail/impl/dkim/DKIMSigner;Lio/vertx/ext/mail/mailencoder/EncodedPart;Lio/vertx/core/Context;Ljava/security/MessageDigest;Ljava/util/concurrent/atomic/AtomicInteger;Lio/vertx/core/Promise;Lio/vertx/core/Promise;)Lio/vertx/core/Handler;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)V
                  io/vertx/ext/mail/impl/dkim/DKIMSigner.lambda$5(Lio/vertx/ext/mail/mailencoder/EncodedPart;Lio/vertx/core/Context;Ljava/security/MessageDigest;Ljava/util/concurrent/atomic/AtomicInteger;Lio/vertx/core/Promise;Lio/vertx/core/Promise;Lio/vertx/core/AsyncResult;)V (7)
                  (Lio/vertx/core/AsyncResult;)V
            invokeinterface io.vertx.core.Future.onComplete:(Lio/vertx/core/Handler;)Lio/vertx/core/Future;
            pop
        end local 10 // io.vertx.core.Promise nextPartPromise
        end local 9 // io.vertx.ext.mail.mailencoder.EncodedPart part
         7: .line 346
            goto 10
         8: .line 348
      StackMap locals: java.lang.String java.lang.String
      StackMap stack:
            aload 0 /* this */
            aload 2 /* md */
            new java.lang.StringBuilder
            dup
            aload 8 /* boundaryEnd */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "\r\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.lang.String.getBytes:()[B
            aload 5 /* written */
            invokevirtual io.vertx.ext.mail.impl.dkim.DKIMSigner.digest:(Ljava/security/MessageDigest;[BLjava/util/concurrent/atomic/AtomicInteger;)Z
            pop
         9: .line 349
            aload 6 /* promise */
            invokeinterface io.vertx.core.Promise.complete:()V
        10: .line 351
      StackMap locals:
      StackMap stack:
            return
        end local 8 // java.lang.String boundaryEnd
        end local 7 // java.lang.String boundaryStart
        end local 6 // io.vertx.core.Promise promise
        end local 5 // java.util.concurrent.atomic.AtomicInteger written
        end local 4 // int index
        end local 3 // io.vertx.ext.mail.mailencoder.EncodedPart multiPart
        end local 2 // java.security.MessageDigest md
        end local 1 // io.vertx.core.Context context
        end local 0 // io.vertx.ext.mail.impl.dkim.DKIMSigner this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   11     0             this  Lio/vertx/ext/mail/impl/dkim/DKIMSigner;
            0   11     1          context  Lio/vertx/core/Context;
            0   11     2               md  Ljava/security/MessageDigest;
            0   11     3        multiPart  Lio/vertx/ext/mail/mailencoder/EncodedPart;
            0   11     4            index  I
            0   11     5          written  Ljava/util/concurrent/atomic/AtomicInteger;
            0   11     6          promise  Lio/vertx/core/Promise<Ljava/lang/Void;>;
            1   11     7    boundaryStart  Ljava/lang/String;
            2   11     8      boundaryEnd  Ljava/lang/String;
            4    7     9             part  Lio/vertx/ext/mail/mailencoder/EncodedPart;
            5    7    10  nextPartPromise  Lio/vertx/core/Promise<Ljava/lang/Void;>;
    Signature: (Lio/vertx/core/Context;Ljava/security/MessageDigest;Lio/vertx/ext/mail/mailencoder/EncodedPart;ILjava/util/concurrent/atomic/AtomicInteger;Lio/vertx/core/Promise<Ljava/lang/Void;>;)V
    MethodParameters:
           Name  Flags
      context    
      md         
      multiPart  
      index      
      written    
      promise    

  private io.vertx.core.Future<java.lang.String> bodyHashing(io.vertx.core.Context, io.vertx.ext.mail.mailencoder.EncodedPart);
    descriptor: (Lio/vertx/core/Context;Lio/vertx/ext/mail/mailencoder/EncodedPart;)Lio/vertx/core/Future;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=7, args_size=3
        start local 0 // io.vertx.ext.mail.impl.dkim.DKIMSigner this
        start local 1 // io.vertx.core.Context context
        start local 2 // io.vertx.ext.mail.mailencoder.EncodedPart encodedMessage
         0: .line 355
            invokestatic io.vertx.core.Promise.promise:()Lio/vertx/core/Promise;
            astore 3 /* bodyHashPromise */
        start local 3 // io.vertx.core.Promise bodyHashPromise
         1: .line 357
            aload 0 /* this */
            getfield io.vertx.ext.mail.impl.dkim.DKIMSigner.dkimSignOptions:Lio/vertx/ext/mail/DKIMSignOptions;
            invokevirtual io.vertx.ext.mail.DKIMSignOptions.getSignAlgo:()Lio/vertx/ext/mail/DKIMSignAlgorithm;
            invokevirtual io.vertx.ext.mail.DKIMSignAlgorithm.hashAlgorithm:()Ljava/lang/String;
            invokestatic java.security.MessageDigest.getInstance:(Ljava/lang/String;)Ljava/security/MessageDigest;
            astore 4 /* md */
        start local 4 // java.security.MessageDigest md
         2: .line 358
            aload 2 /* encodedMessage */
            invokevirtual io.vertx.ext.mail.mailencoder.EncodedPart.parts:()Ljava/util/List;
            ifnull 7
            aload 2 /* encodedMessage */
            invokevirtual io.vertx.ext.mail.mailencoder.EncodedPart.parts:()Ljava/util/List;
            invokeinterface java.util.List.size:()I
            ifle 7
         3: .line 359
            invokestatic io.vertx.core.Promise.promise:()Lio/vertx/core/Promise;
            astore 5 /* multiPartWalkThrough */
        start local 5 // io.vertx.core.Promise multiPartWalkThrough
         4: .line 360
            aload 5 /* multiPartWalkThrough */
            invokeinterface io.vertx.core.Promise.future:()Lio/vertx/core/Future;
            aload 4 /* md */
            aload 3 /* bodyHashPromise */
            invokedynamic handle(Ljava/security/MessageDigest;Lio/vertx/core/Promise;)Lio/vertx/core/Handler;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)V
                  io/vertx/ext/mail/impl/dkim/DKIMSigner.lambda$6(Ljava/security/MessageDigest;Lio/vertx/core/Promise;Lio/vertx/core/AsyncResult;)V (6)
                  (Lio/vertx/core/AsyncResult;)V
            invokeinterface io.vertx.core.Future.onComplete:(Lio/vertx/core/Handler;)Lio/vertx/core/Future;
            pop
         5: .line 373
            aload 0 /* this */
            aload 1 /* context */
            aload 4 /* md */
            aload 2 /* encodedMessage */
            iconst_0
            new java.util.concurrent.atomic.AtomicInteger
            dup
            invokespecial java.util.concurrent.atomic.AtomicInteger.<init>:()V
            aload 5 /* multiPartWalkThrough */
            invokevirtual io.vertx.ext.mail.impl.dkim.DKIMSigner.walkThroughMultiPart:(Lio/vertx/core/Context;Ljava/security/MessageDigest;Lio/vertx/ext/mail/mailencoder/EncodedPart;ILjava/util/concurrent/atomic/AtomicInteger;Lio/vertx/core/Promise;)V
        end local 5 // io.vertx.core.Promise multiPartWalkThrough
         6: .line 374
            goto 14
         7: .line 375
      StackMap locals: io.vertx.core.Promise java.security.MessageDigest
      StackMap stack:
            aload 0 /* this */
            aload 2 /* encodedMessage */
            invokevirtual io.vertx.ext.mail.mailencoder.EncodedPart.body:()Ljava/lang/String;
            invokevirtual io.vertx.ext.mail.impl.dkim.DKIMSigner.dkimMailBody:(Ljava/lang/String;)Ljava/lang/String;
            astore 5 /* canonicBody */
        start local 5 // java.lang.String canonicBody
         8: .line 376
            aload 0 /* this */
            aload 4 /* md */
            aload 5 /* canonicBody */
            invokevirtual java.lang.String.getBytes:()[B
            new java.util.concurrent.atomic.AtomicInteger
            dup
            invokespecial java.util.concurrent.atomic.AtomicInteger.<init>:()V
            invokevirtual io.vertx.ext.mail.impl.dkim.DKIMSigner.digest:(Ljava/security/MessageDigest;[BLjava/util/concurrent/atomic/AtomicInteger;)Z
            pop
         9: .line 377
            invokestatic java.util.Base64.getEncoder:()Ljava/util/Base64$Encoder;
            aload 4 /* md */
            invokevirtual java.security.MessageDigest.digest:()[B
            invokevirtual java.util.Base64$Encoder.encodeToString:([B)Ljava/lang/String;
            astore 6 /* bh */
        start local 6 // java.lang.String bh
        10: .line 378
            aload 3 /* bodyHashPromise */
            aload 6 /* bh */
            invokeinterface io.vertx.core.Promise.complete:(Ljava/lang/Object;)V
        end local 6 // java.lang.String bh
        end local 5 // java.lang.String canonicBody
        end local 4 // java.security.MessageDigest md
        11: .line 380
            goto 14
      StackMap locals: io.vertx.ext.mail.impl.dkim.DKIMSigner io.vertx.core.Context io.vertx.ext.mail.mailencoder.EncodedPart io.vertx.core.Promise
      StackMap stack: java.lang.Exception
        12: astore 4 /* e */
        start local 4 // java.lang.Exception e
        13: .line 381
            aload 3 /* bodyHashPromise */
            aload 4 /* e */
            invokeinterface io.vertx.core.Promise.fail:(Ljava/lang/Throwable;)V
        end local 4 // java.lang.Exception e
        14: .line 383
      StackMap locals:
      StackMap stack:
            aload 3 /* bodyHashPromise */
            invokeinterface io.vertx.core.Promise.future:()Lio/vertx/core/Future;
            areturn
        end local 3 // io.vertx.core.Promise bodyHashPromise
        end local 2 // io.vertx.ext.mail.mailencoder.EncodedPart encodedMessage
        end local 1 // io.vertx.core.Context context
        end local 0 // io.vertx.ext.mail.impl.dkim.DKIMSigner this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   15     0                  this  Lio/vertx/ext/mail/impl/dkim/DKIMSigner;
            0   15     1               context  Lio/vertx/core/Context;
            0   15     2        encodedMessage  Lio/vertx/ext/mail/mailencoder/EncodedPart;
            1   15     3       bodyHashPromise  Lio/vertx/core/Promise<Ljava/lang/String;>;
            2   11     4                    md  Ljava/security/MessageDigest;
            4    6     5  multiPartWalkThrough  Lio/vertx/core/Promise<Ljava/lang/Void;>;
            8   11     5           canonicBody  Ljava/lang/String;
           10   11     6                    bh  Ljava/lang/String;
           13   14     4                     e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           1    11      12  Class java.lang.Exception
    Signature: (Lio/vertx/core/Context;Lio/vertx/ext/mail/mailencoder/EncodedPart;)Lio/vertx/core/Future<Ljava/lang/String;>;
    MethodParameters:
                Name  Flags
      context         
      encodedMessage  

  private java.lang.StringBuilder headersToSign(io.vertx.ext.mail.mailencoder.EncodedPart);
    descriptor: (Lio/vertx/ext/mail/mailencoder/EncodedPart;)Ljava/lang/StringBuilder;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=9, args_size=2
        start local 0 // io.vertx.ext.mail.impl.dkim.DKIMSigner this
        start local 1 // io.vertx.ext.mail.mailencoder.EncodedPart encodedMessage
         0: .line 387
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 2 /* signHeaders */
        start local 2 // java.lang.StringBuilder signHeaders
         1: .line 390
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 3 /* valueIdx */
        start local 3 // java.util.Map valueIdx
         2: .line 392
            aload 0 /* this */
            getfield io.vertx.ext.mail.impl.dkim.DKIMSigner.dkimSignOptions:Lio/vertx/ext/mail/DKIMSignOptions;
            invokevirtual io.vertx.ext.mail.DKIMSignOptions.getSignedHeaders:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 5
            goto 11
      StackMap locals: io.vertx.ext.mail.impl.dkim.DKIMSigner io.vertx.ext.mail.mailencoder.EncodedPart java.lang.StringBuilder java.util.Map top java.util.Iterator
      StackMap stack:
         3: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 4 /* header */
        start local 4 // java.lang.String header
         4: .line 394
            aload 1 /* encodedMessage */
            invokevirtual io.vertx.ext.mail.mailencoder.EncodedPart.headers:()Lio/vertx/core/MultiMap;
            aload 4 /* header */
            invokeinterface io.vertx.core.MultiMap.getAll:(Ljava/lang/String;)Ljava/util/List;
            astore 6 /* values */
        start local 6 // java.util.List values
         5: .line 395
            aload 6 /* values */
            invokeinterface java.util.List.size:()I
            istore 7 /* size */
        start local 7 // int size
         6: .line 396
            iload 7 /* size */
            ifle 11
         7: .line 398
            aload 3 /* valueIdx */
            aload 4 /* header */
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toUpperCase:(Ljava/util/Locale;)Ljava/lang/String;
            iload 7 /* size */
            invokedynamic apply(I)Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  io/vertx/ext/mail/impl/dkim/DKIMSigner.lambda$7(ILjava/lang/String;)Ljava/lang/Integer; (6)
                  (Ljava/lang/String;)Ljava/lang/Integer;
            invokeinterface java.util.Map.computeIfAbsent:(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            istore 8 /* idx */
        start local 8 // int idx
         8: .line 399
            iload 8 /* idx */
            iflt 11
         9: .line 400
            aload 2 /* signHeaders */
            aload 0 /* this */
            aload 4 /* header */
            aload 6 /* values */
            iload 8 /* idx */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual io.vertx.ext.mail.impl.dkim.DKIMSigner.canonicHeader:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "\r\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        10: .line 401
            aload 3 /* valueIdx */
            aload 4 /* header */
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toUpperCase:(Ljava/util/Locale;)Ljava/lang/String;
            iload 8 /* idx */
            iconst_1
            isub
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 8 // int idx
        end local 7 // int size
        end local 6 // java.util.List values
        end local 4 // java.lang.String header
        11: .line 392
      StackMap locals:
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
        12: .line 405
            aload 2 /* signHeaders */
            areturn
        end local 3 // java.util.Map valueIdx
        end local 2 // java.lang.StringBuilder signHeaders
        end local 1 // io.vertx.ext.mail.mailencoder.EncodedPart encodedMessage
        end local 0 // io.vertx.ext.mail.impl.dkim.DKIMSigner this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   13     0            this  Lio/vertx/ext/mail/impl/dkim/DKIMSigner;
            0   13     1  encodedMessage  Lio/vertx/ext/mail/mailencoder/EncodedPart;
            1   13     2     signHeaders  Ljava/lang/StringBuilder;
            2   13     3        valueIdx  Ljava/util/Map<Ljava/lang/String;Ljava/lang/Integer;>;
            4   11     4          header  Ljava/lang/String;
            5   11     6          values  Ljava/util/List<Ljava/lang/String;>;
            6   11     7            size  I
            8   11     8             idx  I
    MethodParameters:
                Name  Flags
      encodedMessage  

  private java.lang.StringBuilder dkimTagList(io.vertx.ext.mail.mailencoder.EncodedPart);
    descriptor: (Lio/vertx/ext/mail/mailencoder/EncodedPart;)Ljava/lang/StringBuilder;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // io.vertx.ext.mail.impl.dkim.DKIMSigner this
        start local 1 // io.vertx.ext.mail.mailencoder.EncodedPart encodedMessage
         0: .line 415
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            getfield io.vertx.ext.mail.impl.dkim.DKIMSigner.signatureTemplate:Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            astore 2 /* dkimTagList */
        start local 2 // java.lang.StringBuilder dkimTagList
         1: .line 417
            aload 0 /* this */
            getfield io.vertx.ext.mail.impl.dkim.DKIMSigner.dkimSignOptions:Lio/vertx/ext/mail/DKIMSignOptions;
            invokevirtual io.vertx.ext.mail.DKIMSignOptions.getCopiedHeaders:()Ljava/util/List;
            ifnull 3
            aload 0 /* this */
            getfield io.vertx.ext.mail.impl.dkim.DKIMSigner.dkimSignOptions:Lio/vertx/ext/mail/DKIMSignOptions;
            invokevirtual io.vertx.ext.mail.DKIMSignOptions.getCopiedHeaders:()Ljava/util/List;
            invokeinterface java.util.List.size:()I
            ifle 3
         2: .line 418
            aload 2 /* dkimTagList */
            ldc "z="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            aload 0 /* this */
            getfield io.vertx.ext.mail.impl.dkim.DKIMSigner.dkimSignOptions:Lio/vertx/ext/mail/DKIMSignOptions;
            invokevirtual io.vertx.ext.mail.DKIMSignOptions.getCopiedHeaders:()Ljava/util/List;
            aload 1 /* encodedMessage */
            invokevirtual io.vertx.ext.mail.impl.dkim.DKIMSigner.copiedHeaders:(Ljava/util/List;Lio/vertx/ext/mail/mailencoder/EncodedPart;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "; "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         3: .line 420
      StackMap locals: java.lang.StringBuilder
      StackMap stack:
            aload 2 /* dkimTagList */
            areturn
        end local 2 // java.lang.StringBuilder dkimTagList
        end local 1 // io.vertx.ext.mail.mailencoder.EncodedPart encodedMessage
        end local 0 // io.vertx.ext.mail.impl.dkim.DKIMSigner this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    4     0            this  Lio/vertx/ext/mail/impl/dkim/DKIMSigner;
            0    4     1  encodedMessage  Lio/vertx/ext/mail/mailencoder/EncodedPart;
            1    4     2     dkimTagList  Ljava/lang/StringBuilder;
    MethodParameters:
                Name  Flags
      encodedMessage  

  private java.lang.String copiedHeaders(java.util.List<java.lang.String>, io.vertx.ext.mail.mailencoder.EncodedPart);
    descriptor: (Ljava/util/List;Lio/vertx/ext/mail/mailencoder/EncodedPart;)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // io.vertx.ext.mail.impl.dkim.DKIMSigner this
        start local 1 // java.util.List headers
        start local 2 // io.vertx.ext.mail.mailencoder.EncodedPart encodedMessage
         0: .line 424
            aload 1 /* headers */
            invokeinterface java.util.List.stream:()Ljava/util/stream/Stream;
            aload 0 /* this */
            aload 2 /* encodedMessage */
            invokedynamic apply(Lio/vertx/ext/mail/impl/dkim/DKIMSigner;Lio/vertx/ext/mail/mailencoder/EncodedPart;)Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  io/vertx/ext/mail/impl/dkim/DKIMSigner.lambda$8(Lio/vertx/ext/mail/mailencoder/EncodedPart;Ljava/lang/String;)Ljava/lang/String; (7)
                  (Ljava/lang/String;)Ljava/lang/String;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
         1: .line 430
            ldc "|"
            invokestatic java.util.stream.Collectors.joining:(Ljava/lang/CharSequence;)Ljava/util/stream/Collector;
            invokeinterface java.util.stream.Stream.collect:(Ljava/util/stream/Collector;)Ljava/lang/Object;
            checkcast java.lang.String
         2: .line 424
            areturn
        end local 2 // io.vertx.ext.mail.mailencoder.EncodedPart encodedMessage
        end local 1 // java.util.List headers
        end local 0 // io.vertx.ext.mail.impl.dkim.DKIMSigner this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    3     0            this  Lio/vertx/ext/mail/impl/dkim/DKIMSigner;
            0    3     1         headers  Ljava/util/List<Ljava/lang/String;>;
            0    3     2  encodedMessage  Lio/vertx/ext/mail/mailencoder/EncodedPart;
    Signature: (Ljava/util/List<Ljava/lang/String;>;Lio/vertx/ext/mail/mailencoder/EncodedPart;)Ljava/lang/String;
    MethodParameters:
                Name  Flags
      headers         
      encodedMessage  

  private static java.lang.String dkimQuotedPrintable(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // java.lang.String str
         0: .line 435
            aload 0 /* str */
            invokestatic io.vertx.ext.mail.mailencoder.Utils.encodeQP:(Ljava/lang/String;)Ljava/lang/String;
            astore 1 /* dkimStr */
        start local 1 // java.lang.String dkimStr
         1: .line 436
            aload 1 /* dkimStr */
            ldc ";"
            ldc "=3B"
            invokevirtual java.lang.String.replaceAll:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            astore 1 /* dkimStr */
         2: .line 437
            aload 1 /* dkimStr */
            ldc " "
            ldc "=20"
            invokevirtual java.lang.String.replaceAll:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            astore 1 /* dkimStr */
         3: .line 438
            aload 1 /* dkimStr */
            areturn
        end local 1 // java.lang.String dkimStr
        end local 0 // java.lang.String str
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0      str  Ljava/lang/String;
            1    4     1  dkimStr  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      str   

  private java.lang.String dkimQuotedPrintableCopiedHeader(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // io.vertx.ext.mail.impl.dkim.DKIMSigner this
        start local 1 // java.lang.String value
         0: .line 443
            aload 1 /* value */
            invokestatic io.vertx.ext.mail.impl.dkim.DKIMSigner.dkimQuotedPrintable:(Ljava/lang/String;)Ljava/lang/String;
            ldc "\\|"
            ldc "=7C"
            invokevirtual java.lang.String.replaceAll:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            areturn
        end local 1 // java.lang.String value
        end local 0 // io.vertx.ext.mail.impl.dkim.DKIMSigner this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lio/vertx/ext/mail/impl/dkim/DKIMSigner;
            0    1     1  value  Ljava/lang/String;
    MethodParameters:
       Name  Flags
      value  

  java.lang.String canonicHeader(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0000) 
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // io.vertx.ext.mail.impl.dkim.DKIMSigner this
        start local 1 // java.lang.String emailHeaderName
        start local 2 // java.lang.String emailHeaderValue
         0: .line 457
            aload 0 /* this */
            getfield io.vertx.ext.mail.impl.dkim.DKIMSigner.dkimSignOptions:Lio/vertx/ext/mail/DKIMSignOptions;
            invokevirtual io.vertx.ext.mail.DKIMSignOptions.getHeaderCanonAlgo:()Lio/vertx/ext/mail/CanonicalizationAlgorithm;
            getstatic io.vertx.ext.mail.CanonicalizationAlgorithm.SIMPLE:Lio/vertx/ext/mail/CanonicalizationAlgorithm;
            if_acmpne 2
         1: .line 458
            new java.lang.StringBuilder
            dup
            aload 1 /* emailHeaderName */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ": "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* emailHeaderValue */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
         2: .line 460
      StackMap locals:
      StackMap stack:
            aload 1 /* emailHeaderName */
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
            astore 3 /* headerName */
        start local 3 // java.lang.String headerName
         3: .line 461
            new java.lang.StringBuilder
            dup
            aload 3 /* headerName */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            aload 2 /* emailHeaderValue */
            aload 0 /* this */
            getfield io.vertx.ext.mail.impl.dkim.DKIMSigner.dkimSignOptions:Lio/vertx/ext/mail/DKIMSignOptions;
            invokevirtual io.vertx.ext.mail.DKIMSignOptions.getHeaderCanonAlgo:()Lio/vertx/ext/mail/CanonicalizationAlgorithm;
            invokevirtual io.vertx.ext.mail.impl.dkim.DKIMSigner.canonicalLine:(Ljava/lang/String;Lio/vertx/ext/mail/CanonicalizationAlgorithm;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 3 // java.lang.String headerName
        end local 2 // java.lang.String emailHeaderValue
        end local 1 // java.lang.String emailHeaderName
        end local 0 // io.vertx.ext.mail.impl.dkim.DKIMSigner this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    4     0              this  Lio/vertx/ext/mail/impl/dkim/DKIMSigner;
            0    4     1   emailHeaderName  Ljava/lang/String;
            0    4     2  emailHeaderValue  Ljava/lang/String;
            3    4     3        headerName  Ljava/lang/String;
    MethodParameters:
                  Name  Flags
      emailHeaderName   
      emailHeaderValue  

  java.lang.String dkimMailBody(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0000) 
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // io.vertx.ext.mail.impl.dkim.DKIMSigner this
        start local 1 // java.lang.String mailBody
         0: .line 465
            new java.util.Scanner
            dup
            aload 1 /* mailBody */
            invokespecial java.util.Scanner.<init>:(Ljava/lang/String;)V
            getstatic io.vertx.ext.mail.impl.dkim.DKIMSigner.DELIMITER:Ljava/util/regex/Pattern;
            invokevirtual java.util.Scanner.useDelimiter:(Ljava/util/regex/Pattern;)Ljava/util/Scanner;
            astore 2 /* scanner */
        start local 2 // java.util.Scanner scanner
         1: .line 466
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 3 /* sb */
        start local 3 // java.lang.StringBuilder sb
         2: .line 467
            goto 5
         3: .line 468
      StackMap locals: java.util.Scanner java.lang.StringBuilder
      StackMap stack:
            aload 3 /* sb */
            aload 0 /* this */
            aload 2 /* scanner */
            invokevirtual java.util.Scanner.nextLine:()Ljava/lang/String;
            invokevirtual io.vertx.ext.mail.impl.dkim.DKIMSigner.canonicBodyLine:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         4: .line 469
            aload 3 /* sb */
            ldc "\r\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         5: .line 467
      StackMap locals:
      StackMap stack:
            aload 2 /* scanner */
            invokevirtual java.util.Scanner.hasNext:()Z
            ifne 3
         6: .line 471
            aload 3 /* sb */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            ldc "[\r\n]*$"
            ldc "\r\n"
            invokevirtual java.lang.String.replaceFirst:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            areturn
        end local 3 // java.lang.StringBuilder sb
        end local 2 // java.util.Scanner scanner
        end local 1 // java.lang.String mailBody
        end local 0 // io.vertx.ext.mail.impl.dkim.DKIMSigner this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0      this  Lio/vertx/ext/mail/impl/dkim/DKIMSigner;
            0    7     1  mailBody  Ljava/lang/String;
            1    7     2   scanner  Ljava/util/Scanner;
            2    7     3        sb  Ljava/lang/StringBuilder;
    MethodParameters:
          Name  Flags
      mailBody  

  private java.lang.String canonicalLine(java.lang.String, io.vertx.ext.mail.CanonicalizationAlgorithm);
    descriptor: (Ljava/lang/String;Lio/vertx/ext/mail/CanonicalizationAlgorithm;)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // io.vertx.ext.mail.impl.dkim.DKIMSigner this
        start local 1 // java.lang.String line
        start local 2 // io.vertx.ext.mail.CanonicalizationAlgorithm canon
         0: .line 476
            getstatic io.vertx.ext.mail.CanonicalizationAlgorithm.RELAXED:Lio/vertx/ext/mail/CanonicalizationAlgorithm;
            aload 2 /* canon */
            if_acmpne 3
         1: .line 477
            aload 1 /* line */
            ldc "[\r\n\t ]+"
            ldc " "
            invokevirtual java.lang.String.replaceAll:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            astore 1 /* line */
         2: .line 478
            aload 1 /* line */
            ldc "[\r\n\t ]+$"
            ldc ""
            invokevirtual java.lang.String.replaceAll:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            astore 1 /* line */
         3: .line 480
      StackMap locals:
      StackMap stack:
            aload 1 /* line */
            areturn
        end local 2 // io.vertx.ext.mail.CanonicalizationAlgorithm canon
        end local 1 // java.lang.String line
        end local 0 // io.vertx.ext.mail.impl.dkim.DKIMSigner this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0   this  Lio/vertx/ext/mail/impl/dkim/DKIMSigner;
            0    4     1   line  Ljava/lang/String;
            0    4     2  canon  Lio/vertx/ext/mail/CanonicalizationAlgorithm;
    MethodParameters:
       Name  Flags
      line   
      canon  

  java.lang.String canonicBodyLine(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // io.vertx.ext.mail.impl.dkim.DKIMSigner this
        start local 1 // java.lang.String line
         0: .line 484
            aload 0 /* this */
            aload 1 /* line */
            aload 0 /* this */
            getfield io.vertx.ext.mail.impl.dkim.DKIMSigner.dkimSignOptions:Lio/vertx/ext/mail/DKIMSignOptions;
            invokevirtual io.vertx.ext.mail.DKIMSignOptions.getBodyCanonAlgo:()Lio/vertx/ext/mail/CanonicalizationAlgorithm;
            invokevirtual io.vertx.ext.mail.impl.dkim.DKIMSigner.canonicalLine:(Ljava/lang/String;Lio/vertx/ext/mail/CanonicalizationAlgorithm;)Ljava/lang/String;
            areturn
        end local 1 // java.lang.String line
        end local 0 // io.vertx.ext.mail.impl.dkim.DKIMSigner this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/ext/mail/impl/dkim/DKIMSigner;
            0    1     1  line  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      line  

  private static boolean lambda$0(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.String h
         0: .line 108
            aload 0 /* h */
            ldc "from"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ireturn
        end local 0 // java.lang.String h
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     h  Ljava/lang/String;

  private java.lang.String lambda$1(io.vertx.ext.mail.mailencoder.EncodedPart, java.lang.String);
    descriptor: (Lio/vertx/ext/mail/mailencoder/EncodedPart;Ljava/lang/String;)Ljava/lang/String;
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=4, locals=9, args_size=3
        start local 0 // io.vertx.ext.mail.impl.dkim.DKIMSigner this
        start local 2 // java.lang.String bh
         0: .line 183
            getstatic io.vertx.ext.mail.impl.dkim.DKIMSigner.logger:Lio/vertx/core/impl/logging/Logger;
            invokeinterface io.vertx.core.impl.logging.Logger.isDebugEnabled:()Z
            ifeq 2
         1: .line 184
            getstatic io.vertx.ext.mail.impl.dkim.DKIMSigner.logger:Lio/vertx/core/impl/logging/Logger;
            new java.lang.StringBuilder
            dup
            ldc "DKIM Body Hash: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* bh */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface io.vertx.core.impl.logging.Logger.debug:(Ljava/lang/Object;)V
         2: .line 187
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1
            invokevirtual io.vertx.ext.mail.impl.dkim.DKIMSigner.dkimTagList:(Lio/vertx/ext/mail/mailencoder/EncodedPart;)Ljava/lang/StringBuilder;
            ldc "bh="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* bh */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "; b="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            astore 3 /* dkimTagListBuilder */
        start local 3 // java.lang.StringBuilder dkimTagListBuilder
         3: .line 188
            aload 0 /* this */
            ldc "DKIM-Signature"
            aload 3 /* dkimTagListBuilder */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual io.vertx.ext.mail.impl.dkim.DKIMSigner.canonicHeader:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            astore 4 /* dkimSignHeaderCanonic */
        start local 4 // java.lang.String dkimSignHeaderCanonic
         4: .line 189
            aload 0 /* this */
            aload 1
            invokevirtual io.vertx.ext.mail.impl.dkim.DKIMSigner.headersToSign:(Lio/vertx/ext/mail/mailencoder/EncodedPart;)Ljava/lang/StringBuilder;
            aload 4 /* dkimSignHeaderCanonic */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 5 /* tobeSigned */
        start local 5 // java.lang.String tobeSigned
         5: .line 190
            getstatic io.vertx.ext.mail.impl.dkim.DKIMSigner.logger:Lio/vertx/core/impl/logging/Logger;
            invokeinterface io.vertx.core.impl.logging.Logger.isDebugEnabled:()Z
            ifeq 7
         6: .line 191
            getstatic io.vertx.ext.mail.impl.dkim.DKIMSigner.logger:Lio/vertx/core/impl/logging/Logger;
            new java.lang.StringBuilder
            dup
            ldc "To be signed DKIM header: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 5 /* tobeSigned */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface io.vertx.core.impl.logging.Logger.debug:(Ljava/lang/Object;)V
         7: .line 194
      StackMap locals: java.lang.StringBuilder java.lang.String java.lang.String
      StackMap stack:
            aload 0 /* this */
            getfield io.vertx.ext.mail.impl.dkim.DKIMSigner.signatureService:Ljava/security/Signature;
            dup
            astore 7
            monitorenter
         8: .line 195
            aload 0 /* this */
            getfield io.vertx.ext.mail.impl.dkim.DKIMSigner.signatureService:Ljava/security/Signature;
            aload 5 /* tobeSigned */
            invokevirtual java.lang.String.getBytes:()[B
            invokevirtual java.security.Signature.update:([B)V
         9: .line 196
            invokestatic java.util.Base64.getEncoder:()Ljava/util/Base64$Encoder;
            aload 0 /* this */
            getfield io.vertx.ext.mail.impl.dkim.DKIMSigner.signatureService:Ljava/security/Signature;
            invokevirtual java.security.Signature.sign:()[B
            invokevirtual java.util.Base64$Encoder.encodeToString:([B)Ljava/lang/String;
            astore 8 /* sig */
        start local 8 // java.lang.String sig
        10: .line 197
            aload 3 /* dkimTagListBuilder */
            aload 8 /* sig */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 6 /* returnStr */
        end local 8 // java.lang.String sig
        start local 6 // java.lang.String returnStr
        11: .line 194
            aload 7
            monitorexit
        12: goto 15
        end local 6 // java.lang.String returnStr
      StackMap locals: io.vertx.ext.mail.impl.dkim.DKIMSigner io.vertx.ext.mail.mailencoder.EncodedPart java.lang.String java.lang.StringBuilder java.lang.String java.lang.String top java.security.Signature
      StackMap stack: java.lang.Throwable
        13: aload 7
            monitorexit
        14: athrow
        start local 6 // java.lang.String returnStr
        15: .line 199
      StackMap locals: io.vertx.ext.mail.impl.dkim.DKIMSigner io.vertx.ext.mail.mailencoder.EncodedPart java.lang.String java.lang.StringBuilder java.lang.String java.lang.String java.lang.String
      StackMap stack:
            getstatic io.vertx.ext.mail.impl.dkim.DKIMSigner.logger:Lio/vertx/core/impl/logging/Logger;
            invokeinterface io.vertx.core.impl.logging.Logger.isDebugEnabled:()Z
            ifeq 17
        16: .line 200
            getstatic io.vertx.ext.mail.impl.dkim.DKIMSigner.logger:Lio/vertx/core/impl/logging/Logger;
            new java.lang.StringBuilder
            dup
            ldc "DKIM-Signature: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 6 /* returnStr */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface io.vertx.core.impl.logging.Logger.debug:(Ljava/lang/Object;)V
        17: .line 202
      StackMap locals:
      StackMap stack:
            aload 6 /* returnStr */
        18: areturn
        end local 6 // java.lang.String returnStr
        end local 5 // java.lang.String tobeSigned
        end local 4 // java.lang.String dkimSignHeaderCanonic
        end local 3 // java.lang.StringBuilder dkimTagListBuilder
        19: .line 203
      StackMap locals: io.vertx.ext.mail.impl.dkim.DKIMSigner io.vertx.ext.mail.mailencoder.EncodedPart java.lang.String
      StackMap stack: java.lang.Exception
            astore 3 /* e */
        start local 3 // java.lang.Exception e
        20: .line 204
            new java.lang.RuntimeException
            dup
            ldc "Cannot sign email"
            aload 3 /* e */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.lang.Exception e
        end local 2 // java.lang.String bh
        end local 0 // io.vertx.ext.mail.impl.dkim.DKIMSigner this
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0   21     0                   this  Lio/vertx/ext/mail/impl/dkim/DKIMSigner;
            0   21     2                     bh  Ljava/lang/String;
            3   19     3     dkimTagListBuilder  Ljava/lang/StringBuilder;
            4   19     4  dkimSignHeaderCanonic  Ljava/lang/String;
            5   19     5             tobeSigned  Ljava/lang/String;
           11   13     6              returnStr  Ljava/lang/String;
           15   19     6              returnStr  Ljava/lang/String;
           10   11     8                    sig  Ljava/lang/String;
           20   21     3                      e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           8    12      13  any
          13    14      13  any
           2    18      19  Class java.lang.Exception

  private static void lambda$2(io.vertx.core.streams.Pipe, io.vertx.core.Promise, io.vertx.core.AsyncResult);
    descriptor: (Lio/vertx/core/streams/Pipe;Lio/vertx/core/Promise;Lio/vertx/core/AsyncResult;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=3, args_size=3
        start local 2 // io.vertx.core.AsyncResult pr
         0: .line 214
            aload 0
            invokeinterface io.vertx.core.streams.Pipe.close:()V
         1: .line 215
            aload 2 /* pr */
            invokeinterface io.vertx.core.AsyncResult.succeeded:()Z
            ifeq 4
         2: .line 216
            aload 1
            invokeinterface io.vertx.core.Promise.complete:()V
         3: .line 217
            goto 5
         4: .line 218
      StackMap locals:
      StackMap stack:
            aload 1
            aload 2 /* pr */
            invokeinterface io.vertx.core.AsyncResult.cause:()Ljava/lang/Throwable;
            invokeinterface io.vertx.core.Promise.fail:(Ljava/lang/Throwable;)V
         5: .line 220
      StackMap locals:
      StackMap stack:
            return
        end local 2 // io.vertx.core.AsyncResult pr
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     2    pr  Lio/vertx/core/AsyncResult<Ljava/lang/Void;>;

  private static void lambda$3(java.lang.StringBuilder, java.util.Map$Entry);
    descriptor: (Ljava/lang/StringBuilder;Ljava/util/Map$Entry;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
        start local 1 // java.util.Map$Entry entry
         0: .line 293
            aload 0
            aload 1 /* entry */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ": "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* entry */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "\r\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            return
        end local 1 // java.util.Map$Entry entry
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     1  entry  Ljava/util/Map$Entry<Ljava/lang/String;Ljava/lang/String;>;

  private void lambda$4(io.vertx.core.Context, java.security.MessageDigest, io.vertx.ext.mail.mailencoder.EncodedPart, int, java.util.concurrent.atomic.AtomicInteger, io.vertx.core.Promise, io.vertx.core.AsyncResult);
    descriptor: (Lio/vertx/core/Context;Ljava/security/MessageDigest;Lio/vertx/ext/mail/mailencoder/EncodedPart;ILjava/util/concurrent/atomic/AtomicInteger;Lio/vertx/core/Promise;Lio/vertx/core/AsyncResult;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=7, locals=8, args_size=8
        start local 0 // io.vertx.ext.mail.impl.dkim.DKIMSigner this
        start local 7 // io.vertx.core.AsyncResult r
         0: .line 311
            aload 7 /* r */
            invokeinterface io.vertx.core.AsyncResult.succeeded:()Z
            ifeq 3
         1: .line 312
            aload 0 /* this */
            aload 1
            aload 2
            aload 3
            iload 4
            iconst_1
            iadd
            aload 5
            aload 6
            invokevirtual io.vertx.ext.mail.impl.dkim.DKIMSigner.walkThroughMultiPart:(Lio/vertx/core/Context;Ljava/security/MessageDigest;Lio/vertx/ext/mail/mailencoder/EncodedPart;ILjava/util/concurrent/atomic/AtomicInteger;Lio/vertx/core/Promise;)V
         2: .line 313
            goto 4
         3: .line 314
      StackMap locals:
      StackMap stack:
            aload 6
            aload 7 /* r */
            invokeinterface io.vertx.core.AsyncResult.cause:()Ljava/lang/Throwable;
            invokeinterface io.vertx.core.Promise.fail:(Ljava/lang/Throwable;)V
         4: .line 316
      StackMap locals:
      StackMap stack:
            return
        end local 7 // io.vertx.core.AsyncResult r
        end local 0 // io.vertx.ext.mail.impl.dkim.DKIMSigner this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lio/vertx/ext/mail/impl/dkim/DKIMSigner;
            0    5     7     r  Lio/vertx/core/AsyncResult<Ljava/lang/Void;>;

  private void lambda$5(io.vertx.ext.mail.mailencoder.EncodedPart, io.vertx.core.Context, java.security.MessageDigest, java.util.concurrent.atomic.AtomicInteger, io.vertx.core.Promise, io.vertx.core.Promise, io.vertx.core.AsyncResult);
    descriptor: (Lio/vertx/ext/mail/mailencoder/EncodedPart;Lio/vertx/core/Context;Ljava/security/MessageDigest;Ljava/util/concurrent/atomic/AtomicInteger;Lio/vertx/core/Promise;Lio/vertx/core/Promise;Lio/vertx/core/AsyncResult;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=7, locals=9, args_size=8
        start local 0 // io.vertx.ext.mail.impl.dkim.DKIMSigner this
        start local 7 // io.vertx.core.AsyncResult r
         0: .line 319
            aload 7 /* r */
            invokeinterface io.vertx.core.AsyncResult.succeeded:()Z
            ifeq 18
         1: .line 320
            aload 7 /* r */
            invokeinterface io.vertx.core.AsyncResult.result:()Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifeq 16
         2: .line 321
            aload 1
            invokevirtual io.vertx.ext.mail.mailencoder.EncodedPart.parts:()Ljava/util/List;
            ifnull 5
            aload 1
            invokevirtual io.vertx.ext.mail.mailencoder.EncodedPart.parts:()Ljava/util/List;
            invokeinterface java.util.List.size:()I
            ifle 5
         3: .line 323
            aload 0 /* this */
            aload 2
            aload 3
            aload 1
            iconst_0
            aload 4
            aload 5
            invokevirtual io.vertx.ext.mail.impl.dkim.DKIMSigner.walkThroughMultiPart:(Lio/vertx/core/Context;Ljava/security/MessageDigest;Lio/vertx/ext/mail/mailencoder/EncodedPart;ILjava/util/concurrent/atomic/AtomicInteger;Lio/vertx/core/Promise;)V
         4: .line 324
            goto 19
         5: .line 326
      StackMap locals:
      StackMap stack:
            aload 1
            invokevirtual io.vertx.ext.mail.mailencoder.EncodedPart.body:()Ljava/lang/String;
            ifnull 10
         6: .line 327
            aload 0 /* this */
            aload 1
            invokevirtual io.vertx.ext.mail.mailencoder.EncodedPart.body:()Ljava/lang/String;
            invokevirtual io.vertx.ext.mail.impl.dkim.DKIMSigner.dkimMailBody:(Ljava/lang/String;)Ljava/lang/String;
            astore 8 /* canonicBody */
        start local 8 // java.lang.String canonicBody
         7: .line 328
            aload 0 /* this */
            aload 3
            aload 8 /* canonicBody */
            invokevirtual java.lang.String.getBytes:()[B
            aload 4
            invokevirtual io.vertx.ext.mail.impl.dkim.DKIMSigner.digest:(Ljava/security/MessageDigest;[BLjava/util/concurrent/atomic/AtomicInteger;)Z
            pop
         8: .line 329
            aload 5
            invokeinterface io.vertx.core.Promise.complete:()V
        end local 8 // java.lang.String canonicBody
         9: .line 330
            goto 19
        10: .line 331
      StackMap locals:
      StackMap stack:
            aload 1
            aload 2
            invokevirtual io.vertx.ext.mail.mailencoder.EncodedPart.dkimBodyStream:(Lio/vertx/core/Context;)Lio/vertx/core/streams/ReadStream;
            astore 8 /* dkimAttachStream */
        start local 8 // io.vertx.core.streams.ReadStream dkimAttachStream
        11: .line 332
            aload 8 /* dkimAttachStream */
            ifnull 14
        12: .line 333
            aload 0 /* this */
            aload 3
            aload 8 /* dkimAttachStream */
            aload 4
            aload 5
            invokevirtual io.vertx.ext.mail.impl.dkim.DKIMSigner.walkThroughAttachStream:(Ljava/security/MessageDigest;Lio/vertx/core/streams/ReadStream;Ljava/util/concurrent/atomic/AtomicInteger;Lio/vertx/core/Promise;)V
        13: .line 334
            goto 19
        14: .line 335
      StackMap locals: io.vertx.core.streams.ReadStream
      StackMap stack:
            aload 5
            ldc "No data and stream found."
            invokeinterface io.vertx.core.Promise.fail:(Ljava/lang/String;)V
        end local 8 // io.vertx.core.streams.ReadStream dkimAttachStream
        15: .line 339
            goto 19
        16: .line 340
      StackMap locals:
      StackMap stack:
            aload 6
            invokeinterface io.vertx.core.Promise.complete:()V
        17: .line 342
            goto 19
        18: .line 343
      StackMap locals:
      StackMap stack:
            aload 6
            aload 7 /* r */
            invokeinterface io.vertx.core.AsyncResult.cause:()Ljava/lang/Throwable;
            invokeinterface io.vertx.core.Promise.fail:(Ljava/lang/Throwable;)V
        19: .line 345
      StackMap locals:
      StackMap stack:
            return
        end local 7 // io.vertx.core.AsyncResult r
        end local 0 // io.vertx.ext.mail.impl.dkim.DKIMSigner this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   20     0              this  Lio/vertx/ext/mail/impl/dkim/DKIMSigner;
            0   20     7                 r  Lio/vertx/core/AsyncResult<Ljava/lang/Boolean;>;
            7    9     8       canonicBody  Ljava/lang/String;
           11   15     8  dkimAttachStream  Lio/vertx/core/streams/ReadStream<Lio/vertx/core/buffer/Buffer;>;

  private static void lambda$6(java.security.MessageDigest, io.vertx.core.Promise, io.vertx.core.AsyncResult);
    descriptor: (Ljava/security/MessageDigest;Lio/vertx/core/Promise;Lio/vertx/core/AsyncResult;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=4, args_size=3
        start local 2 // io.vertx.core.AsyncResult r
         0: .line 361
            aload 2 /* r */
            invokeinterface io.vertx.core.AsyncResult.succeeded:()Z
            ifeq 7
         1: .line 364
            invokestatic java.util.Base64.getEncoder:()Ljava/util/Base64$Encoder;
            aload 0
            invokevirtual java.security.MessageDigest.digest:()[B
            invokevirtual java.util.Base64$Encoder.encodeToString:([B)Ljava/lang/String;
            astore 3 /* bh */
        start local 3 // java.lang.String bh
         2: .line 365
            aload 1
            aload 3 /* bh */
            invokeinterface io.vertx.core.Promise.complete:(Ljava/lang/Object;)V
        end local 3 // java.lang.String bh
         3: .line 366
            goto 8
      StackMap locals:
      StackMap stack: java.lang.Exception
         4: astore 3 /* e */
        start local 3 // java.lang.Exception e
         5: .line 367
            aload 1
            aload 3 /* e */
            invokeinterface io.vertx.core.Promise.fail:(Ljava/lang/Throwable;)V
        end local 3 // java.lang.Exception e
         6: .line 369
            goto 8
         7: .line 370
      StackMap locals:
      StackMap stack:
            aload 1
            aload 2 /* r */
            invokeinterface io.vertx.core.AsyncResult.cause:()Ljava/lang/Throwable;
            invokeinterface io.vertx.core.Promise.fail:(Ljava/lang/Throwable;)V
         8: .line 372
      StackMap locals:
      StackMap stack:
            return
        end local 2 // io.vertx.core.AsyncResult r
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     2     r  Lio/vertx/core/AsyncResult<Ljava/lang/Void;>;
            2    3     3    bh  Ljava/lang/String;
            5    6     3     e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           1     3       4  Class java.lang.Exception

  private static java.lang.Integer lambda$7(int, java.lang.String);
    descriptor: (ILjava/lang/String;)Ljava/lang/Integer;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
        start local 1 // java.lang.String s
         0: .line 398
            iload 0
            iconst_1
            isub
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            areturn
        end local 1 // java.lang.String s
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     1     s  Ljava/lang/String;

  private java.lang.String lambda$8(io.vertx.ext.mail.mailencoder.EncodedPart, java.lang.String);
    descriptor: (Lio/vertx/ext/mail/mailencoder/EncodedPart;Ljava/lang/String;)Ljava/lang/String;
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=5, locals=4, args_size=3
        start local 0 // io.vertx.ext.mail.impl.dkim.DKIMSigner this
        start local 2 // java.lang.String h
         0: .line 425
            aload 1
            invokevirtual io.vertx.ext.mail.mailencoder.EncodedPart.headers:()Lio/vertx/core/MultiMap;
            aload 2 /* h */
            invokeinterface io.vertx.core.MultiMap.get:(Ljava/lang/String;)Ljava/lang/String;
            astore 3 /* hValue */
        start local 3 // java.lang.String hValue
         1: .line 426
            aload 3 /* hValue */
            ifnull 3
         2: .line 427
            new java.lang.StringBuilder
            dup
            aload 2 /* h */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            aload 3 /* hValue */
            invokevirtual io.vertx.ext.mail.impl.dkim.DKIMSigner.dkimQuotedPrintableCopiedHeader:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
         3: .line 429
      StackMap locals: java.lang.String
      StackMap stack:
            new java.lang.RuntimeException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unknown email header: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* h */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " in copied headers."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // java.lang.String hValue
        end local 2 // java.lang.String h
        end local 0 // io.vertx.ext.mail.impl.dkim.DKIMSigner this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    this  Lio/vertx/ext/mail/impl/dkim/DKIMSigner;
            0    4     2       h  Ljava/lang/String;
            1    4     3  hValue  Ljava/lang/String;
}
SourceFile: "DKIMSigner.java"
NestMembers:
  io.vertx.ext.mail.impl.dkim.DKIMSigner$1
InnerClasses:
  io.vertx.ext.mail.impl.dkim.DKIMSigner$1
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public Decoder = java.util.Base64$Decoder of java.util.Base64
  public Encoder = java.util.Base64$Encoder of java.util.Base64
  public abstract Entry = java.util.Map$Entry of java.util.Map