typedef sequence<octet> AuthorizationElementContents;
typedef unsigned long AuthorizationElementType;
typedef sequence<AuthorizationElement> AuthorizationToken;
typedef unsigned long long ContextId;
typedef sequence<octet> GSSToken;
typedef sequence<octet> GSS_NT_ExportedName;
typedef sequence<GSS_NT_ExportedName> GSS_NT_ExportedNameList;
typedef sequence<octet> IdentityExtension;
typedef unsigned long IdentityTokenType;
typedef short MsgType;
typedef sequence<octet> OID;
typedef sequence<OID> OIDList;
typedef string StringOID;
typedef sequence<octet> UTF8String;
typedef sequence<octet> X501DistinguishedName;
typedef sequence<octet> X509CertificateChain;
const StringOID GSS_NT_Export_Name_OID = "oid:1.3.6.1.5.6.4";
const StringOID GSS_NT_Scoped_Username_OID = "oid:2.23.130.1.2.1";
const IdentityTokenType ITTAbsent = 0;
const IdentityTokenType ITTAnonymous = 1;
const IdentityTokenType ITTDistinguishedName = 8;
const IdentityTokenType ITTPrincipalName = 2;
const IdentityTokenType ITTX509CertChain = 4;
const StringOID KRB5MechOID = "oid:1.2.840.113554.1.2.2";
const MsgType MTCompleteEstablishContext = 1;
const MsgType MTContextError = 4;
const MsgType MTEstablishContext = 0;
const MsgType MTMessageInContext = 5;
const unsigned long OMGVMCID = 324816;
const AuthorizationElementType X509AttributeCertChain = 324817;
struct AuthorizationElement
{
AuthorizationElementType the_type;
AuthorizationElementContents the_element;
};
struct CompleteEstablishContext
{
ContextId client_context_id;
boolean context_stateful;
GSSToken final_context_token;
};
struct ContextError
{
ContextId client_context_id;
long major_status;
long minor_status;
GSSToken error_token;
};
struct EstablishContext
{
ContextId client_context_id;
AuthorizationToken authorization_token;
IdentityToken identity_token;
GSSToken client_authentication_token;
};
struct MessageInContext
{
ContextId client_context_id;
boolean discard_context;
};
union IdentityToken switch(IdentityTokenType)
{
case 0: boolean absent;
case 1: boolean anonymous;
case 2: GSS_NT_ExportedName principal_name;
case 4: X509CertificateChain certificate_chain;
case 8: X501DistinguishedName dn;
default: IdentityExtension id;
};
union SASContextBody switch(MsgType)
{
case 0: EstablishContext establish_msg;
case 1: CompleteEstablishContext complete_msg;
case 4: ContextError error_msg;
case 5: MessageInContext in_context_msg;
};