7  *net/luminis/tls/handshake/HandshakeMessage()Vjava/util/ArrayList   %net/luminis/tls/handshake/ClientHello cipherSuitesLjava/util/List;  java/nio/ByteBufferposition()I   remaining*net/luminis/tls/alert/DecodeErrorExceptionmessage underflow  (Ljava/lang/String;)V ! "#get()B %&' ()*net/luminis/tls/TlsConstants$HandshakeType client_hello,Lnet/luminis/tls/TlsConstants$HandshakeType; %+ ,-valueB/java/lang/RuntimeException . 2 34getShort()S6legacy version must be 0303 8 9: clientRandom[B < "=([B)Ljava/nio/ByteBuffer; ?@A BC(net/luminis/tls/TlsConstants$CipherSuitevalues-()[Lnet/luminis/tls/TlsConstants$CipherSuite; EFG HIjava/util/Arraysstream.([Ljava/lang/Object;)Ljava/util/stream/Stream;K LMtest!(I)Ljava/util/function/Predicate; OPQ RSjava/util/stream/Streamfilter9(Ljava/util/function/Predicate;)Ljava/util/stream/Stream; OU VW findFirst()Ljava/util/Optional;Y Z[acceptF(Lnet/luminis/tls/handshake/ClientHello;)Ljava/util/function/Consumer; ]^_ `ajava/util/Optional ifPresent (Ljava/util/function/Consumer;)Vc+net/luminis/tls/alert/IllegalParameterAlerte!Invalid legacy compression method b h ijparseExtensions~(Ljava/nio/ByteBuffer;Lnet/luminis/tls/TlsConstants$HandshakeType;Lnet/luminis/tls/extension/ExtensionParser;)Ljava/util/List; l m extensions opq Hrjava/util/List()Ljava/util/stream/Stream;t Lu ()Ljava/util/function/Predicate; Ow xyanyMatch!(Ljava/util/function/Predicate;)Z { |(I)Ljava/nio/ByteBuffer; ~ findPositionLastExtension(Ljava/nio/ByteBuffer;)I pskExtensionStartPositionI o size o "(I)Ljava/lang/Object;/net/luminis/tls/extension/PreSharedKeyExtensionFpre_shared_key extension MUST be the last extension in the ClientHello :data SUPPORTED_CIPHERS SUPPORTED_SIGNATURES  '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; (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  |allocate  put(B)Ljava/nio/ByteBuffer;  =  secureRandomLjava/security/SecureRandom;  java/security/SecureRandom nextBytes([B)V randomLjava/util/Random; java/util/Random  putShort(S)Ljava/nio/ByteBuffer; o iterator()Ljava/util/Iterator;  java/util/IteratorhasNext()Z next()Ljava/lang/Object; ? ,S#net/luminis/tls/extension/Extension-net/luminis/tls/extension/ServerNameExtension 4net/luminis/tls/extension/SupportedVersionsExtension /(Lnet/luminis/tls/TlsConstants$HandshakeType;)V2net/luminis/tls/extension/SupportedGroupsExtension ,(Lnet/luminis/tls/TlsConstants$NamedGroup;)V6net/luminis/tls/extension/SignatureAlgorithmsExtension (Ljava/util/List;)V+net/luminis/tls/extension/KeyShareExtension q(Ljava/security/PublicKey;Lnet/luminis/tls/TlsConstants$NamedGroup;Lnet/luminis/tls/TlsConstants$HandshakeType;)V o of%([Ljava/lang/Object;)Ljava/util/List; o addAll(Ljava/util/Collection;)Z none  "createPskKeyExchangeModesExtensiony(Lnet/luminis/tls/handshake/ClientHello$PskKeyEstablishmentMode;)Lnet/luminis/tls/extension/PskKeyExchangeModesExtension; o add(Ljava/lang/Object;)Z    applyAsInt$()Ljava/util/function/ToIntFunction; O mapToInt@(Ljava/util/function/ToIntFunction;)Ljava/util/stream/IntStream;  java/util/stream/IntStreamsum:net/luminis/tls/extension/ClientHelloPreSharedKeyExtension  getBytes()[B  |limit   (IS)Ljava/nio/ByteBuffer; " #$rewind()Ljava/nio/ByteBuffer;&"java/lang/IllegalArgumentException(HTlsState cannot be null when ClientHelloPreSharedKeyExtension is present % + ,-calculateBinder ([BILnet/luminis/tls/TlsState;)V  012 34'net/luminis/tls/handshake/ClientHello$1H$SwitchMap$net$luminis$tls$handshake$ClientHello$PskKeyEstablishmentMode[I 6 7ordinal96net/luminis/tls/extension/PskKeyExchangeModesExtension ;<= >?/net/luminis/tls/TlsConstants$PskKeyExchangeModepsk_ke1Lnet/luminis/tls/TlsConstants$PskKeyExchangeMode; 8A B4(Lnet/luminis/tls/TlsConstants$PskKeyExchangeMode;)V ;D E? psk_dhe_ke 8G H5([Lnet/luminis/tls/TlsConstants$PskKeyExchangeMode;)V %K LMapply()Ljava/util/function/Function; OO PQmap8(Ljava/util/function/Function;)Ljava/util/stream/Stream;S, UVW XYjava/util/stream/Collectorsjoining6(Ljava/lang/CharSequence;)Ljava/util/stream/Collector; O[ \]collect0(Ljava/util/stream/Collector;)Ljava/lang/Object;_java/lang/StringKb cdmakeConcatWithConstants8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; fgh ijjava/lang/ObjecttoString()Ljava/lang/String; ?g ?m noTLS_AES_128_GCM_SHA256*Lnet/luminis/tls/TlsConstants$CipherSuite; oq r$(Ljava/lang/Object;)Ljava/util/List; tuv wx,net/luminis/tls/TlsConstants$SignatureSchemersa_pss_rsae_sha256.Lnet/luminis/tls/TlsConstants$SignatureScheme;  MAX_CLIENT_HELLO_SIZE ConstantValue  Signature;MINIMAL_MESSAGE_LENGTH/@Ljava/util/List;7Ljava/util/List;C(Ljava/nio/ByteBuffer;Lnet/luminis/tls/extension/ExtensionParser;)VCodeLineNumberTableLocalVariableTablecipherSuiteValueithis'Lnet/luminis/tls/handshake/ClientHello;bufferLjava/nio/ByteBuffer;customExtensionParser+Lnet/luminis/tls/extension/ExtensionParser; startPosition messageTypelength legacyVersionsessionIdLengthcipherSuitesLengthlegacyCompressionMethodsLengthlegacyCompressionMethodextensionStart StackMapTable)net/luminis/tls/extension/ExtensionParser Exceptions$net/luminis/tls/TlsProtocolException;(Ljava/lang/String;Ljava/security/interfaces/ECPublicKey;)V serverNameLjava/lang/String; publicKey&Ljava/security/interfaces/ECPublicKey;L(Ljava/lang/String;Ljava/security/interfaces/ECPublicKey;ZLjava/util/List;)VcompatibilityModeZextraExtensionsLocalVariableTypeTables(Ljava/lang/String;Ljava/security/interfaces/ECPublicKey;ZLjava/util/List;)V sessionIdcipher extension%Lnet/luminis/tls/extension/Extension;Ljava/security/PublicKey;supportedCipherssupportedSignaturesecCurvetlsStateLnet/luminis/tls/TlsState;pskKeyEstablishmentModedefaultExtensions&[Lnet/luminis/tls/extension/Extension; pskExtension;Ljava/util/List;Lnet/luminis/tls/TlsConstants$NamedGroup;Ljava/util/List;Lnet/luminis/tls/TlsState;Lnet/luminis/tls/handshake/ClientHello$PskKeyEstablishmentMode;)VgetType.()Lnet/luminis/tls/TlsConstants$HandshakeType;getClientRandomgetCipherSuites>()Ljava/util/List; getExtensions9()Ljava/util/List;getPskExtensionStartPositionlambda$toString$59(Lnet/luminis/tls/extension/Extension;)Ljava/lang/String;exlambda$toString$4>(Lnet/luminis/tls/TlsConstants$CipherSuite;)Ljava/lang/String;cs lambda$new$3((Lnet/luminis/tls/extension/Extension;)Iext lambda$new$2((Lnet/luminis/tls/extension/Extension;)Z lambda$new$1-(Lnet/luminis/tls/TlsConstants$CipherSuite;)Vitem lambda$new$0.(ILnet/luminis/tls/TlsConstants$CipherSuite;)Z SourceFileClientHello.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;  -(Lnet/luminis/tls/TlsConstants$CipherSuite;)Z(Ljava/lang/Object;)V    (Ljava/lang/Object;)I  &(Ljava/lang/Object;)Ljava/lang/Object;       c $java/lang/invoke/StringConcatFactory(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; ClientHello[|] InnerClassesnet/luminis/tls/TlsConstants HandshakeType CipherSuite NamedGroupPskKeyEstablishmentModePskKeyExchangeModeSignatureScheme%java/lang/invoke/MethodHandles$Lookupjava/lang/invoke/MethodHandlesLookup!  {|}~|~ :9:~m~6 **Y +>+ Y+/ Y+ 6$* .Y0+ ~x+ ~x+ ~6+ Y+16 Y5* 7+*7;W+ 6 +;W+166  /+16 >D JNT*X\ + 6 + 6   bYdf+6 *+$,gk*knsv6+ zW*+}*k*kdbYf**+d+zW+*;W-D;EGH&J/K9N?OJPRRtS}TWXY\]_`adefghimepq rs!v'w3xIyPzX~r|  3 ?^t)   'v 7 & 4$2 ZbZ *+,   *+, 4 ~Q**Y *  :  W:   W W W* 7*7 *7W :  ħ:   W   W hW:   ?: ٶW YTYTWYY+SYY$SYYSYYSYY,$S: *Y k*k W *k* W*kW:*kn 6 W6*k:3:: 6 W*  W d6 W*` !W *;WC%Y')** zW .W !W *;W8;$)18?GQ[_epu!,;CS_b|  -5@FPe : o!QQQQQQQQQQ 4 )(: u: !0 b|j QQQ p  ^ooo#? ^ooo+ R/~Z/+5.J'28Y:@8YC@8Y;Y:SYCSF%YI$/:RZZ$ .$  /* /*7 /*  ~/*k ~/*$ ij~H* nJNRTZ^*kn`NRTZ^a)*%+G) H /*e+  /*k* o 0*  /*x @ * +Wm  o M+ho @K'lpspYyYz1 3560D B%@?@@ @0;@t@