lucid.x   [plain text]


%/*
% * Copyright (c) 2016 Apple Inc. All rights reserved.
% *
% * @APPLE_LICENSE_HEADER_START@
% *
% * The contents of this file constitute Original Code as defined in and
% * are subject to the Apple Public Source License Version 1.1 (the
% * "License").  You may not use this file except in compliance with the
% * License.  Please obtain a copy of the License at
% * http://www.apple.com/publicsource and read it before using this file.
% *
% * This Original Code and all software distributed under the License are
% * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
% * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
% * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
% * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
% * License for the specific language governing rights and limitations
% * under the License.
% *
% * @APPLE_LICENSE_HEADER_END@
% */
%
struct lucid_key {
	uint32_t	etype;
	opaque		key<>;
};

struct key_data_1964 {
	uint32_t	sign_alg;
	uint32_t	seal_alg;
};

struct key_data_4121 {
	uint32_t	acceptor_subkey;
};

union lucid_protocol switch (uint32_t proto) {
case 0: /* RFC 1964 */
	key_data_1964 data_1964;
case 1: /* RFC 4121 */
	key_data_4121 data_4121;
};
		
struct lucid_context {
	uint32_t	vers;
	uint32_t	initiate;
	uint32_t	end_time;
	uint64_t	send_seq;
	uint64_t	recv_seq;
	lucid_protocol	key_data;
	lucid_key	ctx_key;
};