1// 
2// sa_reply.defs - SecurityAgent-side Mach RPC interface to Server.
3//
4#include <mach/std_types.defs>
5#include <mach/mach_types.defs>
6
7subsystem secagentreply 1200;
8serverprefix sa_reply_server_;
9userprefix sa_reply_client_;
10
11import <security_agent_client/sa_types.h>;
12
13//
14// Data types
15//
16type OSStatus = int32;
17type AuthorizationResult = int32;
18
19type Data = array [] of char;
20
21type AuthorizationItemSetBlob = Data
22	ctype: AuthorizationItemSetPtr;
23type AuthorizationItemSetPtr = unsigned32;
24type AuthorizationValueVectorBlob = Data
25	ctype: AuthorizationValueVectorPtr;
26type AuthorizationValueVectorPtr = unsigned32;
27
28
29#define BLOB(name,type)	name: type##Blob; name##Base: type##Ptr
30
31//
32// Staged SecurityAgent reply protocol
33//
34simpleroutine didCreate(requestport instanceReplyPort: mach_port_t;
35	instanceRequestPort: mach_port_make_send_t); // give client send rights to mechanism request port
36
37simpleroutine setResult(requestport instanceReplyPort: mach_port_t;
38	status: AuthorizationResult;
39	BLOB(hintsIn,AuthorizationItemSet);
40	BLOB(contextIn,AuthorizationItemSet));
41
42simpleroutine requestInterrupt(requestport instanceReplyPort: mach_port_t);
43
44simpleroutine didDeactivate(requestport instanceReplyPort: mach_port_t);
45
46simpleroutine reportError(requestport instanceReplyPort: mach_port_t;
47	status: OSStatus);
48    
49simpleroutine didStartTx(clientReplyPort: mach_port_move_send_once_t; 
50    result: kern_return_t);
51    
52// in case we decide to support true synchronous agent client IPCs, this 
53// keeps sa_reply routine #s at parity with sa_request routine #s
54skip;   // client: txEnd
55