20#define PEERDIST_MAGIC_PATH "/116B50EB-ECE2-41ac-8429-9F9E963361B7/"
36#define PEERDIST_MSG_VERSION_1_0 0x00000001UL
39#define PEERDIST_MSG_VERSION_2_0 0x00000002UL
72#define peerdist_msg_segment_t( digestsize ) \
74 struct peerdist_msg_segment segment; \
75 uint8_t id[digestsize]; \
76 uint8_t pad[ ( -(digestsize) ) & 0x3 ]; \
77 } __attribute__ (( packed ))
93#define peerdist_msg_ranges_t( count ) \
95 struct peerdist_msg_ranges ranges; \
96 struct peerdist_msg_range range[count]; \
97 } __attribute__ (( packed ))
110#define peerdist_msg_block_t( len ) \
112 struct peerdist_msg_block block; \
114 } __attribute__ (( packed ))
127#define peerdist_msg_iv_t( blksize ) \
129 struct peerdist_msg_iv iv; \
130 uint8_t data[blksize]; \
131 } __attribute__ (( packed ))
146#define peerdist_msg_useless_vrf_t( vrf_len ) \
148 struct peerdist_msg_useless_vrf vrf; \
149 uint8_t data[vrf_len]; \
150 uint8_t pad[ ( -(vrf_len) ) & 0x3 ]; \
151 } __attribute__ (( packed ))
201#define PEERDIST_MSG_NEGO_REQ_VERSION PEERDIST_MSG_VERSION_1_0
204#define PEERDIST_MSG_NEGO_REQ_TYPE 0x00000000UL
215#define PEERDIST_MSG_NEGO_RESP_VERSION PEERDIST_MSG_VERSION_1_0
218#define PEERDIST_MSG_NEGO_RESP_TYPE 0x00000001UL
236#define peerdist_msg_getblklist_t( digestsize, count ) \
238 struct peerdist_msg_getblklist getblklist; \
239 peerdist_msg_segment_t ( digestsize ) segment; \
240 peerdist_msg_ranges_t ( count ) ranges; \
241 } __attribute__ (( packed ))
244#define PEERDIST_MSG_GETBLKLIST_VERSION PEERDIST_MSG_VERSION_1_0
247#define PEERDIST_MSG_GETBLKLIST_TYPE 0x00000002UL
268#define peerdist_msg_getblks_t( digestsize, count, vrf_len ) \
270 struct peerdist_msg_getblks getblks; \
271 peerdist_msg_segment_t ( digestsize ) segment; \
272 peerdist_msg_ranges_t ( count ) ranges; \
273 peerdist_msg_useless_vrf_t ( vrf_len ); \
274 } __attribute__ (( packed ))
277#define PEERDIST_MSG_GETBLKS_VERSION PEERDIST_MSG_VERSION_1_0
280#define PEERDIST_MSG_GETBLKS_TYPE 0x00000003UL
300#define peerdist_msg_blklist_t( digestsize, count ) \
302 struct peerdist_msg_blklist blklist; \
303 peerdist_msg_segment_t ( digestsize ) segment; \
304 peerdist_msg_ranges_t ( count ) ranges; \
306 } __attribute__ (( packed ))
309#define PEERDIST_MSG_BLKLIST_VERSION PEERDIST_MSG_VERSION_1_0
312#define PEERDIST_MSG_BLKLIST_TYPE 0x00000004UL
338#define peerdist_msg_blk_t( digestsize, len, vrf_len, blksize ) \
340 struct peerdist_msg_blk blk; \
341 peerdist_msg_segment_t ( digestsize ) segment; \
344 peerdist_msg_block_t ( len ) block; \
345 peerdist_msg_useless_vrf_t ( vrf_len ) vrf; \
346 peerdist_msg_iv_t ( blksize ) iv; \
347 } __attribute__ (( packed ))
350#define PEERDIST_MSG_BLK_VERSION PEERDIST_MSG_VERSION_1_0
353#define PEERDIST_MSG_BLK_TYPE 0x00000005UL
371 unsigned int block );
uint8_t id
Request identifier.
#define FILE_LICENCE(_licence)
Declare a particular licence as applying to a file.
enum peerdist_msg_algorithm __attribute__
#define FILE_SECBOOT(_status)
Declare a file's UEFI Secure Boot permission status.
uint8_t block[3][8]
DES-encrypted blocks.
struct peerdist_retrieval peerdist_get
PeerDist retrieval protocol using HTTP GET or local file.
struct peerdist_retrieval peerdist_post
PeerDist retrieval protocol using HTTP POST.
peerdist_msg_algorithm
Retrieval protocol cryptographic algorithm IDs.
@ PEERDIST_MSG_AES_192_CBC
AES-192 in CBC mode.
@ PEERDIST_MSG_AES_128_CBC
AES-128 in CBC mode.
@ PEERDIST_MSG_PLAINTEXT
No encryption.
@ PEERDIST_MSG_AES_256_CBC
AES-256 in CBC mode.
uint32_t digestsize
Digest size (i.e.
Retrieval protocol block fetch response header.
struct peerdist_msg_header hdr
Message header.
Retrieval protocol block list response header.
struct peerdist_msg_header hdr
Message header.
Retrieval protocol data block header.
uint32_t len
Length of data block.
Retrieval protocol block list request header.
struct peerdist_msg_header hdr
Message header.
Retrieval protocol block fetch request header.
struct peerdist_msg_header hdr
Message header.
Retrieval protocol initialisation vector header.
uint32_t blksize
Cipher block size.
Retrieval protocol negotiation request.
struct peerdist_msg_header hdr
Message header.
struct peerdist_msg_versions versions
Supported versions.
Retrieval protocol negotiation response.
struct peerdist_msg_header hdr
Message header.
struct peerdist_msg_versions versions
Supported versions.
Retrieval protocol block range.
uint32_t count
Number of blocks in range.
uint32_t first
First block in range.
Retrieval protocol block range list header.
uint32_t count
Number of ranges.
Retrieval protocol segment ID header.
uint32_t digestsize
Digest size (i.e.
Retrieval protocol useless VRF data header.
uint32_t len
Length of useless VRF data.
Retrieval protocol supported versions.
union peerdist_msg_version max
Maximum supported protocol version.
union peerdist_msg_version min
Minimum supported protocol version.
A retrieval protocol mechanism.
int(* open)(struct interface *xfer, const char *location, size_t digestsize, const uint8_t *id, unsigned int block)
Open retrieval protocol connection.
Retrieval protocol version.
uint32_t raw
Raw version number.
uint16_t minor
Minor version number.
uint16_t major
Major version number.