class io.vertx.ext.mail.impl.SMTPAuthentication
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: io.vertx.ext.mail.impl.SMTPAuthentication
super_class: java.lang.Object
{
private final io.vertx.ext.mail.impl.SMTPConnection connection;
descriptor: Lio/vertx/ext/mail/impl/SMTPConnection;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final io.vertx.ext.mail.MailConfig config;
descriptor: Lio/vertx/ext/mail/MailConfig;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final io.vertx.core.Handler<java.lang.Void> finishedHandler;
descriptor: Lio/vertx/core/Handler;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Lio/vertx/core/Handler<Ljava/lang/Void;>;
private final io.vertx.core.Handler<java.lang.Throwable> errorHandler;
descriptor: Lio/vertx/core/Handler;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Lio/vertx/core/Handler<Ljava/lang/Throwable;>;
private static final io.vertx.core.logging.Logger log;
descriptor: Lio/vertx/core/logging/Logger;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private final io.vertx.ext.mail.impl.sasl.AuthOperationFactory authOperationFactory;
descriptor: Lio/vertx/ext/mail/impl/sasl/AuthOperationFactory;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc Lio/vertx/ext/mail/impl/SMTPAuthentication;
invokestatic io.vertx.core.logging.LoggerFactory.getLogger:(Ljava/lang/Class;)Lio/vertx/core/logging/Logger;
putstatic io.vertx.ext.mail.impl.SMTPAuthentication.log:Lio/vertx/core/logging/Logger;
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>(io.vertx.ext.mail.impl.SMTPConnection, io.vertx.ext.mail.MailConfig, io.vertx.ext.auth.PRNG, io.vertx.core.Handler<java.lang.Void>, io.vertx.core.Handler<java.lang.Throwable>);
descriptor: (Lio/vertx/ext/mail/impl/SMTPConnection;Lio/vertx/ext/mail/MailConfig;Lio/vertx/ext/auth/PRNG;Lio/vertx/core/Handler;Lio/vertx/core/Handler;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=6, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aload 1
putfield io.vertx.ext.mail.impl.SMTPAuthentication.connection:Lio/vertx/ext/mail/impl/SMTPConnection;
2: aload 0
aload 2
putfield io.vertx.ext.mail.impl.SMTPAuthentication.config:Lio/vertx/ext/mail/MailConfig;
3: aload 0
aload 4
putfield io.vertx.ext.mail.impl.SMTPAuthentication.finishedHandler:Lio/vertx/core/Handler;
4: aload 0
aload 5
putfield io.vertx.ext.mail.impl.SMTPAuthentication.errorHandler:Lio/vertx/core/Handler;
5: aload 0
new io.vertx.ext.mail.impl.sasl.AuthOperationFactory
dup
aload 3
invokespecial io.vertx.ext.mail.impl.sasl.AuthOperationFactory.<init>:(Lio/vertx/ext/auth/PRNG;)V
putfield io.vertx.ext.mail.impl.SMTPAuthentication.authOperationFactory:Lio/vertx/ext/mail/impl/sasl/AuthOperationFactory;
6: return
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lio/vertx/ext/mail/impl/SMTPAuthentication;
0 7 1 connection Lio/vertx/ext/mail/impl/SMTPConnection;
0 7 2 config Lio/vertx/ext/mail/MailConfig;
0 7 3 prng Lio/vertx/ext/auth/PRNG;
0 7 4 finishedHandler Lio/vertx/core/Handler<Ljava/lang/Void;>;
0 7 5 errorHandler Lio/vertx/core/Handler<Ljava/lang/Throwable;>;
Signature: (Lio/vertx/ext/mail/impl/SMTPConnection;Lio/vertx/ext/mail/MailConfig;Lio/vertx/ext/auth/PRNG;Lio/vertx/core/Handler<Ljava/lang/Void;>;Lio/vertx/core/Handler<Ljava/lang/Throwable;>;)V
MethodParameters:
Name Flags
connection
config
prng
finishedHandler
errorHandler
public void start();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=1
start local 0 0: aload 0
invokevirtual io.vertx.ext.mail.impl.SMTPAuthentication.intersectAllowedMethods:()Ljava/util/Set;
invokeinterface java.util.Set.isEmpty:()Z
ifeq 1
iconst_0
goto 2
StackMap locals:
StackMap stack:
1: iconst_1
StackMap locals:
StackMap stack: int
2: istore 1
start local 1 3: aload 0
getfield io.vertx.ext.mail.impl.SMTPAuthentication.config:Lio/vertx/ext/mail/MailConfig;
invokevirtual io.vertx.ext.mail.MailConfig.getLogin:()Lio/vertx/ext/mail/LoginOption;
getstatic io.vertx.ext.mail.LoginOption.DISABLED:Lio/vertx/ext/mail/LoginOption;
if_acmpeq 7
aload 0
getfield io.vertx.ext.mail.impl.SMTPAuthentication.config:Lio/vertx/ext/mail/MailConfig;
invokevirtual io.vertx.ext.mail.MailConfig.getUsername:()Ljava/lang/String;
ifnull 7
aload 0
getfield io.vertx.ext.mail.impl.SMTPAuthentication.config:Lio/vertx/ext/mail/MailConfig;
invokevirtual io.vertx.ext.mail.MailConfig.getPassword:()Ljava/lang/String;
ifnull 7
4: iload 1
ifeq 7
5: aload 0
invokevirtual io.vertx.ext.mail.impl.SMTPAuthentication.authCmd:()V
6: goto 14
7: StackMap locals: int
StackMap stack:
aload 0
getfield io.vertx.ext.mail.impl.SMTPAuthentication.config:Lio/vertx/ext/mail/MailConfig;
invokevirtual io.vertx.ext.mail.MailConfig.getLogin:()Lio/vertx/ext/mail/LoginOption;
getstatic io.vertx.ext.mail.LoginOption.REQUIRED:Lio/vertx/ext/mail/LoginOption;
if_acmpne 13
8: iload 1
ifne 11
9: aload 0
ldc "login is required, but no allowed AUTH methods available. You may need to do STARTTLS"
invokevirtual io.vertx.ext.mail.impl.SMTPAuthentication.handleError:(Ljava/lang/String;)V
10: goto 14
11: StackMap locals:
StackMap stack:
aload 0
ldc "login is required, but no credentials supplied"
invokevirtual io.vertx.ext.mail.impl.SMTPAuthentication.handleError:(Ljava/lang/String;)V
12: goto 14
13: StackMap locals:
StackMap stack:
aload 0
invokevirtual io.vertx.ext.mail.impl.SMTPAuthentication.finished:()V
14: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 this Lio/vertx/ext/mail/impl/SMTPAuthentication;
3 15 1 foundAllowedMethods Z
private java.util.Set<java.lang.String> intersectAllowedMethods();
descriptor: ()Ljava/util/Set;
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=3, args_size=1
start local 0 0: aload 0
getfield io.vertx.ext.mail.impl.SMTPAuthentication.config:Lio/vertx/ext/mail/MailConfig;
invokevirtual io.vertx.ext.mail.MailConfig.getAuthMethods:()Ljava/lang/String;
astore 1
start local 1 1: aload 1
ifnull 2
aload 1
invokevirtual java.lang.String.isEmpty:()Z
ifeq 4
2: StackMap locals: java.lang.String
StackMap stack:
aload 0
getfield io.vertx.ext.mail.impl.SMTPAuthentication.connection:Lio/vertx/ext/mail/impl/SMTPConnection;
invokevirtual io.vertx.ext.mail.impl.SMTPConnection.getCapa:()Lio/vertx/ext/mail/impl/Capabilities;
invokevirtual io.vertx.ext.mail.impl.Capabilities.getCapaAuth:()Ljava/util/Set;
astore 2
start local 2 3: goto 6
end local 2 4: StackMap locals:
StackMap stack:
aload 1
invokestatic io.vertx.ext.mail.impl.Utils.parseCapaAuth:(Ljava/lang/String;)Ljava/util/Set;
astore 2
start local 2 5: aload 2
aload 0
getfield io.vertx.ext.mail.impl.SMTPAuthentication.connection:Lio/vertx/ext/mail/impl/SMTPConnection;
invokevirtual io.vertx.ext.mail.impl.SMTPConnection.getCapa:()Lio/vertx/ext/mail/impl/Capabilities;
invokevirtual io.vertx.ext.mail.impl.Capabilities.getCapaAuth:()Ljava/util/Set;
invokeinterface java.util.Set.retainAll:(Ljava/util/Collection;)Z
pop
6: StackMap locals: java.util.Set
StackMap stack:
aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lio/vertx/ext/mail/impl/SMTPAuthentication;
1 7 1 authMethods Ljava/lang/String;
3 4 2 allowed Ljava/util/Set<Ljava/lang/String;>;
5 7 2 allowed Ljava/util/Set<Ljava/lang/String;>;
Signature: ()Ljava/util/Set<Ljava/lang/String;>;
private void authCmd();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=3, args_size=1
start local 0 0: aload 0
getfield io.vertx.ext.mail.impl.SMTPAuthentication.authOperationFactory:Lio/vertx/ext/mail/impl/sasl/AuthOperationFactory;
aload 0
getfield io.vertx.ext.mail.impl.SMTPAuthentication.config:Lio/vertx/ext/mail/MailConfig;
invokevirtual io.vertx.ext.mail.MailConfig.getUsername:()Ljava/lang/String;
aload 0
getfield io.vertx.ext.mail.impl.SMTPAuthentication.config:Lio/vertx/ext/mail/MailConfig;
invokevirtual io.vertx.ext.mail.MailConfig.getPassword:()Ljava/lang/String;
1: aload 0
invokevirtual io.vertx.ext.mail.impl.SMTPAuthentication.intersectAllowedMethods:()Ljava/util/Set;
2: invokevirtual io.vertx.ext.mail.impl.sasl.AuthOperationFactory.createAuth:(Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)Lio/vertx/ext/mail/impl/sasl/AuthOperation;
astore 1
start local 1 3: goto 8
end local 1 StackMap locals:
StackMap stack: java.lang.RuntimeException
4: astore 2
start local 2 5: getstatic io.vertx.ext.mail.impl.SMTPAuthentication.log:Lio/vertx/core/logging/Logger;
ldc "authentication factory threw exception"
aload 2
invokevirtual io.vertx.core.logging.Logger.warn:(Ljava/lang/Object;Ljava/lang/Throwable;)V
6: aload 0
aload 2
invokevirtual io.vertx.ext.mail.impl.SMTPAuthentication.handleError:(Ljava/lang/Throwable;)V
7: return
end local 2 start local 1 8: StackMap locals: io.vertx.ext.mail.impl.sasl.AuthOperation
StackMap stack:
aload 1
ifnull 11
9: aload 0
aload 1
aconst_null
invokevirtual io.vertx.ext.mail.impl.SMTPAuthentication.authCmdStep:(Lio/vertx/ext/mail/impl/sasl/AuthOperation;Ljava/lang/String;)V
10: goto 13
11: StackMap locals:
StackMap stack:
getstatic io.vertx.ext.mail.impl.SMTPAuthentication.log:Lio/vertx/core/logging/Logger;
ldc "cannot find supported auth method"
invokevirtual io.vertx.core.logging.Logger.warn:(Ljava/lang/Object;)V
12: aload 0
ldc "cannot find supported auth method"
invokevirtual io.vertx.ext.mail.impl.SMTPAuthentication.handleError:(Ljava/lang/String;)V
13: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lio/vertx/ext/mail/impl/SMTPAuthentication;
3 4 1 authOperation Lio/vertx/ext/mail/impl/sasl/AuthOperation;
8 14 1 authOperation Lio/vertx/ext/mail/impl/sasl/AuthOperation;
5 8 2 ex Ljava/lang/RuntimeException;
Exception table:
from to target type
0 3 4 Class java.lang.IllegalArgumentException
0 3 4 Class java.lang.SecurityException
private void authCmdStep(io.vertx.ext.mail.impl.sasl.AuthOperation, java.lang.String);
descriptor: (Lio/vertx/ext/mail/impl/sasl/AuthOperation;Ljava/lang/String;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=6, args_size=3
start local 0 start local 1 start local 2 0: aload 2
ifnonnull 9
1: aload 1
aconst_null
invokeinterface io.vertx.ext.mail.impl.sasl.AuthOperation.nextStep:(Ljava/lang/String;)Ljava/lang/String;
astore 5
start local 5 2: aload 5
invokevirtual java.lang.String.isEmpty:()Z
ifne 6
3: new java.lang.StringBuilder
dup
ldc "AUTH "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokeinterface io.vertx.ext.mail.impl.sasl.AuthOperation.getName:()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 5
invokestatic io.vertx.ext.mail.impl.sasl.CryptUtils.base64:(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;
astore 3
start local 3 4: aload 1
invokeinterface io.vertx.ext.mail.impl.sasl.AuthOperation.getName:()Ljava/lang/String;
invokevirtual java.lang.String.length:()I
bipush 6
iadd
istore 4
start local 4 5: goto 11
end local 4 end local 3 6: StackMap locals: io.vertx.ext.mail.impl.SMTPAuthentication io.vertx.ext.mail.impl.sasl.AuthOperation java.lang.String top top java.lang.String
StackMap stack:
new java.lang.StringBuilder
dup
ldc "AUTH "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokeinterface io.vertx.ext.mail.impl.sasl.AuthOperation.getName:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 3
start local 3 7: iconst_m1
istore 4
end local 5 start local 4 8: goto 11
end local 4 end local 3 9: StackMap locals: io.vertx.ext.mail.impl.SMTPAuthentication io.vertx.ext.mail.impl.sasl.AuthOperation java.lang.String
StackMap stack:
aload 1
aload 2
iconst_4
invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
invokestatic io.vertx.ext.mail.impl.sasl.CryptUtils.decodeb64:(Ljava/lang/String;)Ljava/lang/String;
invokeinterface io.vertx.ext.mail.impl.sasl.AuthOperation.nextStep:(Ljava/lang/String;)Ljava/lang/String;
invokestatic io.vertx.ext.mail.impl.sasl.CryptUtils.base64:(Ljava/lang/String;)Ljava/lang/String;
astore 3
start local 3 10: iconst_0
istore 4
start local 4 11: StackMap locals: java.lang.String int
StackMap stack:
aload 0
getfield io.vertx.ext.mail.impl.SMTPAuthentication.connection:Lio/vertx/ext/mail/impl/SMTPConnection;
aload 3
iload 4
aload 0
aload 1
invokedynamic handle(Lio/vertx/ext/mail/impl/SMTPAuthentication;Lio/vertx/ext/mail/impl/sasl/AuthOperation;)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/SMTPAuthentication.lambda$0(Lio/vertx/ext/mail/impl/sasl/AuthOperation;Ljava/lang/String;)V (7)
(Ljava/lang/String;)V
invokevirtual io.vertx.ext.mail.impl.SMTPConnection.write:(Ljava/lang/String;ILio/vertx/core/Handler;)V
12: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lio/vertx/ext/mail/impl/SMTPAuthentication;
0 13 1 authMethod Lio/vertx/ext/mail/impl/sasl/AuthOperation;
0 13 2 message Ljava/lang/String;
4 6 3 nextLine Ljava/lang/String;
7 9 3 nextLine Ljava/lang/String;
10 13 3 nextLine Ljava/lang/String;
5 6 4 blank I
8 9 4 blank I
11 13 4 blank I
2 8 5 authParameter Ljava/lang/String;
MethodParameters:
Name Flags
authMethod
message
private void finished();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield io.vertx.ext.mail.impl.SMTPAuthentication.finishedHandler:Lio/vertx/core/Handler;
aconst_null
invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/vertx/ext/mail/impl/SMTPAuthentication;
private void handleError(java.lang.String);
descriptor: (Ljava/lang/String;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield io.vertx.ext.mail.impl.SMTPAuthentication.errorHandler:Lio/vertx/core/Handler;
new io.vertx.core.impl.NoStackTraceThrowable
dup
aload 1
invokespecial io.vertx.core.impl.NoStackTraceThrowable.<init>:(Ljava/lang/String;)V
invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/vertx/ext/mail/impl/SMTPAuthentication;
0 2 1 message Ljava/lang/String;
MethodParameters:
Name Flags
message
private void handleError(java.lang.Throwable);
descriptor: (Ljava/lang/Throwable;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield io.vertx.ext.mail.impl.SMTPAuthentication.errorHandler:Lio/vertx/core/Handler;
aload 1
invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/vertx/ext/mail/impl/SMTPAuthentication;
0 2 1 th Ljava/lang/Throwable;
MethodParameters:
Name Flags
th
private void lambda$0(io.vertx.ext.mail.impl.sasl.AuthOperation, java.lang.String);
descriptor: (Lio/vertx/ext/mail/impl/sasl/AuthOperation;Ljava/lang/String;)V
flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
Code:
stack=4, locals=3, args_size=3
start local 0 start local 2 0: getstatic io.vertx.ext.mail.impl.SMTPAuthentication.log:Lio/vertx/core/logging/Logger;
new java.lang.StringBuilder
dup
ldc "AUTH command result: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual io.vertx.core.logging.Logger.debug:(Ljava/lang/Object;)V
1: aload 2
invokestatic io.vertx.ext.mail.impl.StatusCode.isStatusOk:(Ljava/lang/String;)Z
ifeq 7
2: aload 2
invokestatic io.vertx.ext.mail.impl.StatusCode.isStatusContinue:(Ljava/lang/String;)Z
ifeq 5
3: aload 0
aload 1
aload 2
invokevirtual io.vertx.ext.mail.impl.SMTPAuthentication.authCmdStep:(Lio/vertx/ext/mail/impl/sasl/AuthOperation;Ljava/lang/String;)V
4: goto 8
5: StackMap locals:
StackMap stack:
aload 0
invokevirtual io.vertx.ext.mail.impl.SMTPAuthentication.finished:()V
6: goto 8
7: StackMap locals:
StackMap stack:
aload 0
new java.lang.StringBuilder
dup
ldc "AUTH "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokeinterface io.vertx.ext.mail.impl.sasl.AuthOperation.getName:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " failed "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual io.vertx.ext.mail.impl.SMTPAuthentication.handleError:(Ljava/lang/String;)V
8: StackMap locals:
StackMap stack:
return
end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lio/vertx/ext/mail/impl/SMTPAuthentication;
0 9 2 message2 Ljava/lang/String;
}
SourceFile: "SMTPAuthentication.java"
InnerClasses:
public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles