target = "https://tools.ietf.org/rfc/rfc4492#section-5.7" # 5.7. Client Key Exchange # # When this message is sent: # # This message is sent in all key exchange algorithms. If client # authentication with ECDSA_fixed_ECDH or RSA_fixed_ECDH is used, this # message is empty. Otherwise, it contains the client's ephemeral ECDH # public key. # # Meaning of the message: # # This message is used to convey ephemeral data relating to the key # exchange belonging to the client (such as its ephemeral ECDH public # key). # # Structure of this message: # # The TLS ClientKeyExchange message is extended as follows. # # enum { implicit, explicit } PublicValueEncoding; # # implicit, explicit: For ECC cipher suites, this indicates whether # the client's ECDH public key is in the client's certificate # ("implicit") or is provided, as an ephemeral ECDH public key, in # the ClientKeyExchange message ("explicit"). (This is "explicit" # in ECC cipher suites except when the client uses the # ECDSA_fixed_ECDH or RSA_fixed_ECDH client authentication # mechanism.) # # struct { # select (PublicValueEncoding) { # case implicit: struct { }; # case explicit: ECPoint ecdh_Yc; # } ecdh_public; # } ClientECDiffieHellmanPublic; # # ecdh_Yc: Contains the client's ephemeral ECDH public key as a byte # string ECPoint.point, which may represent an elliptic curve point # in uncompressed or compressed format. Here, the format MUST # conform to what the server has requested through a Supported Point # Formats Extension if this extension was used, and MUST be # uncompressed if this extension was not used. # # struct { # select (KeyExchangeAlgorithm) { # case ec_diffie_hellman: ClientECDiffieHellmanPublic; # } exchange_keys; # } ClientKeyExchange; # # Actions of the sender: # # The client selects an ephemeral ECDH public key corresponding to the # parameters it received from the server according to the ECKAS-DH1 # scheme from IEEE 1363 [6]. It conveys this information to the client # in the ClientKeyExchange message using the format defined above. # # Actions of the receiver: # # The server retrieves the client's ephemeral ECDH public key from the # ClientKeyExchange message and checks that it is on the same elliptic # curve as the server's ECDH key. [[spec]] level = "MUST" quote = ''' Here, the format MUST conform to what the server has requested through a Supported Point Formats Extension if this extension was used, and MUST be uncompressed if this extension was not used. ''' [[spec]] level = "MUST" quote = ''' Here, the format MUST conform to what the server has requested through a Supported Point Formats Extension if this extension was used, and MUST be uncompressed if this extension was not used. '''