|
iPXE
|
TLS key schedule. More...
#include <tls.h>
Data Fields | |
| struct digest_algorithm * | digest |
| Digest algorithm. | |
| struct tls_named_group * | group |
| Named key exchange group. | |
| int | keyed |
| Schedule holds secret key material. | |
| struct x509_certificate * | bound |
| Server identity to which the schedule has been bound (if any). | |
| void * | dynamic |
| Dynamically-allocated storage. | |
| void * | handshake |
| Handshake running transcript digest context. | |
| void * | kdf |
| Key derivation function master secret. | |
| uint8_t | ephemeral [SHA256_DIGEST_SIZE] |
| Ephemeral master secret. | |
| struct digest_algorithm* tls_key_schedule::digest |
Digest algorithm.
This is the digest algorithm specified by the cipher suite. It is used to construct the handshake running transcript digest value, and as the HMAC digest algorithm for key derivation.
Definition at line 378 of file tls.h.
Referenced by tls_new_finished(), tls_send_certificate_verify(), tls_send_finished(), and tls_set_digest().
| struct tls_named_group* tls_key_schedule::group |
Named key exchange group.
Definition at line 380 of file tls.h.
Referenced by tls_new_server_key_exchange_dhe(), and tls_new_server_key_exchange_ecdhe().
| int tls_key_schedule::keyed |
Schedule holds secret key material.
This flag is set when shared secret key material is introduced into the schedule (e.g. when the TLS pre-master secret is calculated, or when a session is resumed).
If this flag has not been set, then the key schedule contains only public information.
This flag must be cleared whenever the key schedule is reset.
Definition at line 393 of file tls.h.
Referenced by tls_generate_keys().
| struct x509_certificate* tls_key_schedule::bound |
Server identity to which the schedule has been bound (if any).
This reference to the server certificate is set when the shared secret key material has been bound to the identity represented by the server's certificate. It represents the successful delegation of authority from the server's long-term authentication key to the per-connection shared secret key material for the purpose of authenticating the connection via a successfully verified server Finished message.
Note that this reference may be set before the server certificate has been validated. The validation of the server certificate's chain is independent from the binding of the key schedule to the server certificate.
The binding may take place in several different ways, depending on the protocol version and options:
This reference may not be set unless the "keyed" flag has already been set, and must be cleared whenever the "keyed" flag is cleared.
This reference must be cleared whenever the server identity represented by the current certificate changes (e.g. when a new certificate chain is provided), or whenever the key derivation function master secret is overwritten with a value that is not cryptographically derived from its current value.
Definition at line 455 of file tls.h.
Referenced by tls_generate_keys(), and tls_parse_chain().
| void* tls_key_schedule::dynamic |
Dynamically-allocated storage.
Definition at line 457 of file tls.h.
Referenced by tls_set_digest().
| void* tls_key_schedule::handshake |
| void* tls_key_schedule::kdf |
| uint8_t tls_key_schedule::ephemeral[SHA256_DIGEST_SIZE] |