7  $net/luminis/tls/handshake/EngineTest()V-net/luminis/tls/handshake/ServerMessageSender  org/mockito/Mockitomock%(Ljava/lang/Class;)Ljava/lang/Object;  -net/luminis/tls/handshake/TlsServerEngineTest messageSender/Lnet/luminis/tls/handshake/ServerMessageSender;RSA  java/security/KeyFactory getInstance.(Ljava/lang/String;)Ljava/security/KeyFactory;&java/security/spec/PKCS8EncodedKeySpec !" #$java/util/Base64 getDecoder()Ljava/util/Base64$Decoder; & '(encodedPrivateKeyLjava/lang/String; *+, -.java/util/Base64$Decoderdecode(Ljava/lang/String;)[B 0 1([B)V 3 45generatePrivate8(Ljava/security/spec/KeySpec;)Ljava/security/PrivateKey; 7 8(encodedCertificate :;< => net/luminis/tls/CertificateUtilsinflateCertificate8(Ljava/lang/String;)Ljava/security/cert/X509Certificate; @ ABserverCertificate$Ljava/security/cert/X509Certificate;D/net/luminis/tls/handshake/TlsStatusEventHandler F GHtlsStatusHandler1Lnet/luminis/tls/handshake/TlsStatusEventHandler;J0net/luminis/tls/handshake/TlsSessionRegistryImpl I M NOtlsSessionRegistry2Lnet/luminis/tls/handshake/TlsSessionRegistryImpl;Q/net/luminis/tls/handshake/TlsServerEngineTest$1 PS T(Lnet/luminis/tls/handshake/TlsServerEngineTest;Ljava/security/cert/X509Certificate;Ljava/security/PrivateKey;Lnet/luminis/tls/handshake/ServerMessageSender;Lnet/luminis/tls/handshake/TlsStatusEventHandler;Lnet/luminis/tls/handshake/TlsSessionRegistry;)V V WXengine+Lnet/luminis/tls/handshake/TlsServerEngine; Z[\ ]^(net/luminis/tls/TlsConstants$CipherSuiteTLS_AES_128_GCM_SHA256*Lnet/luminis/tls/TlsConstants$CipherSuite; `ab cdjava/util/Listof$(Ljava/lang/Object;)Ljava/util/List; fgh ij)net/luminis/tls/handshake/TlsServerEngineaddSupportedCiphers(Ljava/util/List;)V lmn opnet/luminis/tls/KeyUtilsgeneratePublicKey(()Ljava/security/interfaces/ECPublicKey; r st publicKey&Ljava/security/interfaces/ECPublicKey;v%net/luminis/tls/handshake/ClientHellox localhost Zz {^TLS_CHACHA20_POLY1305_SHA256 }~ ,net/luminis/tls/TlsConstants$SignatureSchemersa_pss_rsae_sha256.Lnet/luminis/tls/TlsConstants$SignatureScheme;  'net/luminis/tls/TlsConstants$NamedGroup secp256r1)Lnet/luminis/tls/TlsConstants$NamedGroup;  java/util/Collections emptyList()Ljava/util/List;  =net/luminis/tls/handshake/ClientHello$PskKeyEstablishmentModeboth?Lnet/luminis/tls/handshake/ClientHello$PskKeyEstablishmentMode; u (Ljava/lang/String;Ljava/security/PublicKey;ZLjava/util/List;Ljava/util/List;Lnet/luminis/tls/TlsConstants$NamedGroup;Ljava/util/List;Lnet/luminis/tls/TlsState;Lnet/luminis/tls/handshake/ClientHello$PskKeyEstablishmentMode;)V call(Lnet/luminis/tls/handshake/TlsServerEngineTest;Lnet/luminis/tls/handshake/ClientHello;)Lorg/assertj/core/api/ThrowableAssert$ThrowingCallable;  org/assertj/core/api/AssertionsassertThatThrownByg(Lorg/assertj/core/api/ThrowableAssert$ThrowingCallable;)Lorg/assertj/core/api/AbstractThrowableAssert;+net/luminis/tls/alert/HandshakeFailureAlert  ,org/assertj/core/api/AbstractThrowableAssert isInstanceOf8(Ljava/lang/Class;)Lorg/assertj/core/api/AbstractAssert;  createDefaultClientHello)()Lnet/luminis/tls/handshake/ClientHello; u  getExtensions ` size()I ` get(I)Ljava/lang/Object;2net/luminis/tls/extension/SupportedGroupsExtension ` remove+net/luminis/tls/alert/MissingExtensionAlert+net/luminis/tls/extension/KeyShareExtension6net/luminis/tls/extension/SignatureAlgorithmsExtension  "net/luminis/tls/ProtectionKeysTypeNone$Lnet/luminis/tls/ProtectionKeysType; f receivedN(Lnet/luminis/tls/handshake/ClientHello;Lnet/luminis/tls/ProtectionKeysType;)V  org/mockito/ArgumentCaptorforClass/(Ljava/lang/Class;)Lorg/mockito/ArgumentCaptor; verify&(Ljava/lang/Object;)Ljava/lang/Object; capture()Ljava/lang/Object; C jextensionsReceived getValue  assertThat3(Ljava/util/List;)Lorg/assertj/core/api/ListAssert;4net/luminis/tls/extension/SupportedVersionsExtension  org/assertj/core/api/ListAsserthasAtLeastOneElementOfType@(Ljava/lang/Class;)Lorg/assertj/core/api/AbstractIterableAssert; C earlySecretsKnown f getClientEarlyTrafficSecret()[B 2([B)Lorg/assertj/core/api/AbstractByteArrayAssert;  ,org/assertj/core/api/AbstractByteArrayAssert isNotNull'()Lorg/assertj/core/api/AbstractAssert; ` c6(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/List; matches()Lorg/mockito/ArgumentMatcher;     org/mockito/ArgumentMatchersargThat1(Lorg/mockito/ArgumentMatcher;)Ljava/lang/Object;%net/luminis/tls/handshake/ServerHello  send*(Lnet/luminis/tls/handshake/ServerHello;)V C handshakeSecretsKnown f getServerHandshakeTrafficSecretFnet/luminis/tls/extension/ApplicationLayerProtocolNegotiationExtensionfoobar  (Ljava/lang/String;)V f! "#addServerExtensions((Lnet/luminis/tls/extension/Extension;)V%-net/luminis/tls/handshake/EncryptedExtensions ' (2(Lnet/luminis/tls/handshake/EncryptedExtensions;)V $+ ,h(Lnet/luminis/tls/handshake/TlsServerEngineTest;)Lorg/assertj/core/api/ThrowableAssert$ThrowingCallable;.'net/luminis/tls/alert/DecryptErrorAlert0net/luminis/tls/TlsState 2 3any5[B /7 89computePskBinder([B)[B ; <=when:(Ljava/lang/Object;)Lorg/mockito/stubbing/OngoingStubbing; ?@A B=$org/mockito/stubbing/OngoingStubbing thenReturnD net/luminis/tls/NewSessionTicketF1net/luminis/tls/handshake/NewSessionTicketMessage EJ K (IJ[B[B)V CM Nz(Lnet/luminis/tls/TlsState;Lnet/luminis/tls/handshake/NewSessionTicketMessage;Lnet/luminis/tls/TlsConstants$CipherSuite;)VP:net/luminis/tls/extension/ClientHelloPreSharedKeyExtension OR S%(Lnet/luminis/tls/NewSessionTicket;)V U VS(Ljava/util/List;Lnet/luminis/tls/TlsState;)Lnet/luminis/tls/handshake/ClientHello;Yh3 I[ \]createNewSessionTicketMessage(BLnet/luminis/tls/TlsConstants$CipherSuite;Lnet/luminis/tls/TlsState;Ljava/lang/String;)Lnet/luminis/tls/handshake/NewSessionTicketMessage; _ `simulateAlpnNegotationb6net/luminis/tls/extension/PskKeyExchangeModesExtension def gh/net/luminis/tls/TlsConstants$PskKeyExchangeMode psk_dhe_ke1Lnet/luminis/tls/TlsConstants$PskKeyExchangeMode; aj k4(Lnet/luminis/tls/TlsConstants$PskKeyExchangeMode;)Vm,net/luminis/tls/extension/EarlyDataExtension l `p cqZ(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/List; Cs tuisEarlyDataAccepted()Z `w cxH(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/List; z {|never-()Lorg/mockito/verification/VerificationMode; ~ Q(Ljava/lang/Object;Lorg/mockito/verification/VerificationMode;)Ljava/lang/Object;http/1.1  none/net/luminis/tls/handshake/TlsServerEngineTest$2  2(Lnet/luminis/tls/handshake/TlsServerEngineTest;)V  doAnswer=(Lorg/mockito/stubbing/Answer;)Lorg/mockito/stubbing/Stubber;  <org/mockito/stubbing/Stubber  anyList)net/luminis/tls/handshake/FinishedMessage 0   Handshake f R(Lnet/luminis/tls/handshake/FinishedMessage;Lnet/luminis/tls/ProtectionKeysType;)V   getCipherSuite,()Lnet/luminis/tls/TlsConstants$CipherSuite; Z equals(Ljava/lang/Object;)ZCodeLineNumberTableLocalVariableTablethis/Lnet/luminis/tls/handshake/TlsServerEngineTest;initObjectUnderTest keyFactoryLjava/security/KeyFactory; keySpecPKCS8(Ljava/security/spec/PKCS8EncodedKeySpec; privateKeyLjava/security/PrivateKey; Exceptionsjava/lang/ExceptionRuntimeVisibleAnnotations"Lorg/junit/jupiter/api/BeforeEach;1failingCipherNegotiationLeadsToHandshakeException clientHello'Lnet/luminis/tls/handshake/ClientHello;Lorg/junit/jupiter/api/Test;;missingSupportedGroupsExtensionLeadsToMissingExtensionErroriI StackMapTable4missingKeyShareExtensionLeadsToMissingExtensionError.missingSignatureAlgorithmMissingExtensionError0allClientHelloExtensionsArePassedToStatusHandlercaptorLorg/mockito/ArgumentCaptor;clientExtensionsLjava/util/List;LocalVariableTypeTableULorg/mockito/ArgumentCaptor;>;7Ljava/util/List;6processingProperClientHelloLeadsToEarlySecretsCallback0serverSelectsCipherFromOptionsGivenByClientHello:processingProperClientHelloLeadsToHandshakeSecretsCallback5serverExtensionsShouldBeIncludedInEncryptedExtensionsMLorg/mockito/ArgumentCaptor;1incorrectClientFinishedMessageLeadsToDecryptError>clientProvidingPreSharedKeyShouldAlsoProvidePskKeyExchangeModetlsStateLnet/luminis/tls/TlsState;ticket"Lnet/luminis/tls/NewSessionTicket;&whenALPNsMatchEarlyDataShouldBeEnabled ticketMessage3Lnet/luminis/tls/handshake/NewSessionTicketMessage;.whenSelectedALPNnotSetEarlyDataShouldBeEnabled,whenALPNdontMatchEarlyDataShouldNotBeEnabled extensionsstate Signaturez(Ljava/util/List;Lnet/luminis/tls/TlsState;)Lnet/luminis/tls/handshake/ClientHello;Glambda$clientProvidingPreSharedKeyShouldAlsoProvidePskKeyExchangeMode$6*(Lnet/luminis/tls/handshake/ClientHello;)Vjava/lang/Throwable:lambda$incorrectClientFinishedMessageLeadsToDecryptError$59lambda$serverSelectsCipherFromOptionsGivenByClientHello$4*(Lnet/luminis/tls/handshake/ServerHello;)Zsh'Lnet/luminis/tls/handshake/ServerHello;7lambda$missingSignatureAlgorithmMissingExtensionError$3=lambda$missingKeyShareExtensionLeadsToMissingExtensionError$2Dlambda$missingSupportedGroupsExtensionLeadsToMissingExtensionError$1:lambda$failingCipherNegotiationLeadsToHandshakeException$0 SourceFileTlsServerEngineTest.java NestMembersBootstrapMethods  "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;               InnerClassesDecodernet/luminis/tls/TlsConstants CipherSuiteSignatureScheme NamedGroupPskKeyEstablishmentMode5org/assertj/core/api/ThrowableAssert$ThrowingCallable$org/assertj/core/api/ThrowableAssertThrowingCallablePskKeyExchangeMode%java/lang/invoke/MethodHandles$Lookupjava/lang/invoke/MethodHandlesLookup!WXstABGHNO/*0  ~* LY*%)/M+,2N**69?*C CE*IYKL*PY**?-**E*LRU*UY_e*kq. ; =>$?*A5BACLDiIvK}L*~l$Z*T 6uYw*qy_|_L*+WQRST%V1Z5[6%F*L=+$++W*+W"`bc$d/b5hAlEm .FA u'F*L=+$++W*+W"rtu$v/t5zA~E .FA u'F*L=+$+Ù+W*+W"$/5AE .FA u'S*L*U+ƶ`M*EC,`,`N-W-W-W& ,4>HR*SN=4=4r.*L*U+ƶ*EC*UW-.) NuYw*qyY|_L*U+ƶ* (3MN(&r.*L*U+ƶ*EC*UW-.)S*L*UY *U+ƶ$M*,$&,$)W!(>R SN(+ (+e!*L*U+ƶ**-W ! v/ /L+146: >WCY+EYGYTYTYTYTYTIYLM*OY,Q_+TN*-WW !Tequ*v lT"e / /L+146: >W*LY+XZM*^*aYciOYCY+,YLQlYnYXo+TN*U-ƶ*ECrW" !15l w  * ~1Wl / /L+146: >W*LY+XZM*^*aYciOYCY+,YLQlYnv+TN*U-ƶ*Ey}CrW" !15bm!"* w1Pb / /L+146: >W*LY+XZM*^*aYciOYCY+,YLQlYnYo+TN*U-ƶ*Ey}CrW"' (!)1+5.l4w78* 1Zl3 *T;  V #uYw*qY_|_+,?@A"? ### #`R Y**ECGRS  @ *U+ƶ̱  @*UY   5 *Y  @ *U+ƶ̱  @ *U+ƶ̱|  @ *U+ƶ̱j  @ *U+ƶ̱X  PH  R *  PZ@}@@u@ d@