summaryrefslogtreecommitdiffstats
path: root/src/include
diff options
context:
space:
mode:
authorSimon Rettberg2019-03-28 15:47:25 +0100
committerSimon Rettberg2019-03-28 15:47:25 +0100
commiteee6810fbe26652d4cacdf14a19c1c421eea953c (patch)
treeaad4a6b01220d33c804a28549efae1e39cf185ca /src/include
parent[efi] Add very ugly hack to use HW RNG on EFI (diff)
parent[intel] Add PCI ID for I219-V and -LM 6 to 9 (diff)
downloadipxe-eee6810fbe26652d4cacdf14a19c1c421eea953c.tar.gz
ipxe-eee6810fbe26652d4cacdf14a19c1c421eea953c.tar.xz
ipxe-eee6810fbe26652d4cacdf14a19c1c421eea953c.zip
Merge branch 'master' into openslx
Diffstat (limited to 'src/include')
-rw-r--r--src/include/ipxe/efi/efi_blacklist.h13
-rw-r--r--src/include/ipxe/errfile.h1
-rw-r--r--src/include/ipxe/ocsp.h4
-rw-r--r--src/include/ipxe/tls.h45
4 files changed, 59 insertions, 4 deletions
diff --git a/src/include/ipxe/efi/efi_blacklist.h b/src/include/ipxe/efi/efi_blacklist.h
new file mode 100644
index 000000000..c5a5a61dc
--- /dev/null
+++ b/src/include/ipxe/efi/efi_blacklist.h
@@ -0,0 +1,13 @@
+#ifndef _IPXE_EFI_BLACKLIST_H
+#define _IPXE_EFI_BLACKLIST_H
+
+/** @file
+ *
+ * EFI driver blacklist
+ */
+
+FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+
+extern void efi_unload_blacklist ( void );
+
+#endif /* _IPXE_EFI_BLACKLIST_H */
diff --git a/src/include/ipxe/errfile.h b/src/include/ipxe/errfile.h
index 596491a1f..ce67fc66d 100644
--- a/src/include/ipxe/errfile.h
+++ b/src/include/ipxe/errfile.h
@@ -375,6 +375,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#define ERRFILE_cert_cmd ( ERRFILE_OTHER | 0x004f0000 )
#define ERRFILE_acpi_settings ( ERRFILE_OTHER | 0x00500000 )
#define ERRFILE_ntlm ( ERRFILE_OTHER | 0x00510000 )
+#define ERRFILE_efi_blacklist ( ERRFILE_OTHER | 0x00520000 )
/** @} */
diff --git a/src/include/ipxe/ocsp.h b/src/include/ipxe/ocsp.h
index be0bddc50..9eb70b2cc 100644
--- a/src/include/ipxe/ocsp.h
+++ b/src/include/ipxe/ocsp.h
@@ -42,8 +42,8 @@ struct ocsp_check;
struct ocsp_request {
/** Request builder */
struct asn1_builder builder;
- /** Certificate ID */
- struct asn1_cursor cert_id;
+ /** Certificate ID (excluding hashAlgorithm) */
+ struct asn1_cursor cert_id_tail;
};
/** An OCSP responder */
diff --git a/src/include/ipxe/tls.h b/src/include/ipxe/tls.h
index b1e702e18..febbdc589 100644
--- a/src/include/ipxe/tls.h
+++ b/src/include/ipxe/tls.h
@@ -63,6 +63,7 @@ struct tls_header {
#define TLS_HELLO_REQUEST 0
#define TLS_CLIENT_HELLO 1
#define TLS_SERVER_HELLO 2
+#define TLS_NEW_SESSION_TICKET 4
#define TLS_CERTIFICATE 11
#define TLS_SERVER_KEY_EXCHANGE 12
#define TLS_CERTIFICATE_REQUEST 13
@@ -108,6 +109,9 @@ struct tls_header {
/* TLS signature algorithms extension */
#define TLS_SIGNATURE_ALGORITHMS 13
+/* TLS session ticket extension */
+#define TLS_SESSION_TICKET 35
+
/* TLS renegotiation information extension */
#define TLS_RENEGOTIATION_INFO 0xff01
@@ -242,13 +246,48 @@ struct md5_sha1_digest {
/** MD5+SHA1 digest size */
#define MD5_SHA1_DIGEST_SIZE sizeof ( struct md5_sha1_digest )
-/** A TLS connection */
-struct tls_connection {
+/** A TLS session */
+struct tls_session {
/** Reference counter */
struct refcnt refcnt;
+ /** List of sessions */
+ struct list_head list;
/** Server name */
const char *name;
+ /** Session ID */
+ uint8_t id[32];
+ /** Length of session ID */
+ size_t id_len;
+ /** Session ticket */
+ void *ticket;
+ /** Length of session ticket */
+ size_t ticket_len;
+ /** Master secret */
+ uint8_t master_secret[48];
+
+ /** List of connections */
+ struct list_head conn;
+};
+
+/** A TLS connection */
+struct tls_connection {
+ /** Reference counter */
+ struct refcnt refcnt;
+
+ /** Session */
+ struct tls_session *session;
+ /** List of connections within the same session */
+ struct list_head list;
+ /** Session ID */
+ uint8_t session_id[32];
+ /** Length of session ID */
+ size_t session_id_len;
+ /** New session ticket */
+ void *new_session_ticket;
+ /** Length of new session ticket */
+ size_t new_session_ticket_len;
+
/** Plaintext stream */
struct interface plainstream;
/** Ciphertext stream */
@@ -296,6 +335,8 @@ struct tls_connection {
struct pending_operation client_negotiation;
/** Server security negotiation pending operation */
struct pending_operation server_negotiation;
+ /** Certificate validation pending operation */
+ struct pending_operation validation;
/** TX sequence number */
uint64_t tx_seq;