blob: 2e891d8bdfb25fbe8776211a517e680f28eabdc1 [file] [log] [blame]
#ifndef _CSI_IDL_
#define _CSI_IDL_
#pragma prefix "omg.org"
#include <IOP.idl>
module IOP {
const ServiceId SecurityAttributeService = 15;
};
module CSI {
// The OMG VMCID; same value as CORBA::OMGVMCID. Do not change ever.
const unsigned long OMGVMCID = 0x4F4D0;
// An X509CertificateChain contains an ASN.1 BER encoded SEQUENCE
// [1..MAX] OF X.509 certificates encapsulated in a sequence of octets. The
// subject's certificate shall come first in the list. Each following
// certificate shall directly certify the one preceding it. The ASN.1
// representation of Certificate is as defined in [IETF RFC 2459].
typedef sequence <octet> X509CertificateChain;
// an X.501 type name or Distinguished Name encapsulated in a sequence of
// octets containing the ASN.1 encoding.
typedef sequence <octet> X501DistinguishedName;
// UTF-8 Encoding of String
typedef sequence <octet> UTF8String;
// ASN.1 Encoding of an OBJECT IDENTIFIER
typedef sequence <octet> OID;
typedef sequence <OID> OIDList;
// A sequence of octets containing a GSStoken. Initial context tokens are
// ASN.1 encoded as defined in [IETF RFC 2743] Section 3.1,
// "Mechanism-Independent token Format", pp. 81-82. Initial context tokens
// contain an ASN.1 tag followed by a token length, a mechanism identifier,
// and a mechanism-specific token (i.e. a GSSUP::InitialContextToken). The
// encoding of all other GSS tokens (e.g. error tokens and final context
// tokens) is mechanism dependent.
typedef sequence <octet> GSSToken;
// An encoding of a GSS Mechanism-Independent Exported Name Object as
// defined in [IETF RFC 2743] Section 3.2, "GSS Mechanism-Independent
// Exported Name Object Format," p. 84.
typedef sequence <octet> GSS_NT_ExportedName;
typedef sequence <GSS_NT_ExportedName> GSS_NT_ExportedNameList;
// The MsgType enumeration defines the complete set of service context
// message types used by the CSI context management protocols, including
// those message types pertaining only to the stateful application of the
// protocols (to insure proper alignment of the identifiers between
// stateless and stateful implementations). Specifically, the
// MTMessageInContext is not sent by stateless clients (although it may
// be received by stateless targets).
typedef short MsgType;
const MsgType MTEstablishContext = 0;
const MsgType MTCompleteEstablishContext = 1;
const MsgType MTContextError = 4;
const MsgType MTMessageInContext = 5;
// The ContextId type is used carry session identifiers. A stateless
// application of the service context protocol is indicated by a session
// identifier value of 0.
typedef unsigned long long ContextId;
// The AuthorizationElementType defines the contents and encoding of
// the_element field of the AuthorizationElement.
// The high order 20-bits of each AuthorizationElementType constant
// shall contain the Vendor Minor Codeset ID (VMCID) of the
// organization that defined the element type. The low order 12 bits
// shall contain the organization-scoped element type identifier. The
// high-order 20 bits of all element types defined by the OMG shall
// contain the VMCID allocated to the OMG (that is, 0x4F4D0).
typedef unsigned long AuthorizationElementType;
// An AuthorizationElementType of X509AttributeCertChain indicates that
// the_element field of the AuthorizationElement contains an ASN.1 BER
// SEQUENCE composed of an (X.509) AttributeCertificate followed by a
// SEQUENCE OF (X.509) Certificate. The two-part SEQUENCE is encapsulated
// in an octet stream. The chain of identity certificates is provided
// to certify the attribute certificate. Each certificate in the chain
// shall directly certify the one preceding it. The first certificate
// in the chain shall certify the attribute certificate. The ASN.1
// representation of (X.509) Certificate is as defined in [IETF RFC 2459].
// The ASN.1 representation of (X.509) AtributeCertificate is as defined
// in [IETF ID PKIXAC].
const AuthorizationElementType X509AttributeCertChain = OMGVMCID | 1;
typedef sequence <octet> AuthorizationElementContents;
// The AuthorizationElement contains one element of an authorization token.
// Each element of an authorization token is logically a PAC.
struct AuthorizationElement {
AuthorizationElementType the_type;
AuthorizationElementContents the_element;
};
// The AuthorizationToken is made up of a sequence of
// AuthorizationElements
typedef sequence <AuthorizationElement> AuthorizationToken;
typedef unsigned long IdentityTokenType;
// Additional standard identity token types shall only be defined by the
// OMG. All IdentityTokenType constants shall be a power of 2.
const IdentityTokenType ITTAbsent = 0;
const IdentityTokenType ITTAnonymous = 1;
const IdentityTokenType ITTPrincipalName = 2;
const IdentityTokenType ITTX509CertChain = 4;
const IdentityTokenType ITTDistinguishedName = 8;
typedef sequence <octet> IdentityExtension;
union IdentityToken switch ( IdentityTokenType ) {
case ITTAbsent: boolean absent;
case ITTAnonymous: boolean anonymous;
case ITTPrincipalName: GSS_NT_ExportedName principal_name;
case ITTX509CertChain: X509CertificateChain certificate_chain;
case ITTDistinguishedName: X501DistinguishedName dn;
default: IdentityExtension id;
};
struct EstablishContext {
ContextId client_context_id;
AuthorizationToken authorization_token;
IdentityToken identity_token;
GSSToken client_authentication_token;
};
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;
};
// Not sent by stateless clients. If received by a stateless server, a
// ContextError message should be returned, indicating the session does
// not exist.
struct MessageInContext {
ContextId client_context_id;
boolean discard_context;
};
union SASContextBody switch ( MsgType ) {
case MTEstablishContext: EstablishContext establish_msg;
case MTCompleteEstablishContext: CompleteEstablishContext
complete_msg;
case MTContextError: ContextError error_msg;
case MTMessageInContext: MessageInContext in_context_msg;
};
// The following type represents the string representation of an ASN.1
// OBJECT IDENTIFIER (OID). OIDs are represented by the string "oid:"
// followed by the integer base 10 representation of the OID separated
// by dots. For example, the OID corresponding to the OMG is represented
// as: "oid:2.23.130"
typedef string StringOID;
// The GSS Object Identifier for the KRB5 mechanism is:
// { iso(1) member-body(2) United States(840) mit(113554) infosys(1)
// gssapi(2) krb5(2) }
const StringOID KRB5MechOID = "oid:1.2.840.113554.1.2.2";
// The GSS Object Identifier for name objects of the Mechanism-independent
// Exported Name Object type is:
// { iso(1) org(3) dod(6) internet(1) security(5) nametypes(6)
// gss-api-exported-name(4) }
const StringOID GSS_NT_Export_Name_OID = "oid:1.3.6.1.5.6.4";
// The GSS Object Identifier for the scoped-username name form is:
// { iso-itu-t (2) international-organization (23) omg (130) security (1)
// naming (2) scoped-username(1) }
const StringOID GSS_NT_Scoped_Username_OID = "oid:2.23.130.1.2.1";
}; // CSI
#endif