const unsigned short AgreedDefault = 5;
    const unsigned short DES_CBC = 22;
    const unsigned short DES_CBC_DES_MAC = 10;
    const unsigned short DES_CBC_MD5 = 11;
    const unsigned short DES_CBC_SOURCE = 24;
    const unsigned short DES_MAC = 12;
    const unsigned short FullSecurity = 1;
    const unsigned short LowGradeConfidentiality = 3;
    const unsigned short MD5 = 13;
    const unsigned short MD5_DES_CBC = 21;
    const unsigned short MD5_DES_CBC_SOURCE = 23;
    const unsigned short MD5_RSA = 20;
    const unsigned short NoDataConfidentiality = 2;
    const unsigned long TAG_ASSOCIATION_OPTIONS = 13;
    const unsigned long TAG_CSI_ECMA_Hybrid_SEC_MECH = 19;
    const unsigned long TAG_CSI_ECMA_Public_SEC_MECH = 21;
    const unsigned long TAG_CSI_ECMA_Secret_SEC_MECH = 18;
    const unsigned long TAG_GENERIC_SEC_MECH = 22;
    const unsigned long TAG_KerberosV5_SEC_MECH = 17;
    const unsigned long TAG_SEC_NAME = 14;
    const unsigned long TAG_SECIOP_SEC_TRANS = 35;
    const unsigned long TAG_SPKM_1_SEC_MECH = 15;
    const unsigned long TAG_SPKM_2_SEC_MECH = 16;
    struct CompleteEstablishContext
    {
        SECIOP::ContextId client_context_id;
        boolean target_context_id_valid;
        SECIOP::ContextId target_context_id;
    final_context_token;    };
    
    typedef unsigned long long ContextId;
    enum ContextIdDefn
    {
        CIDClient,
        CIDPeer,
        CIDSender
    };
    enum ContextTokenType
    {
        SecTokenTypeWrap,
        SecTokenTypeMIC
    };
    struct ContinueEstablishContext
    {
        SECIOP::ContextId client_context_id;
    continuation_context_token;    };
    
    typedef unsigned short CryptographicProfile;
    typedef sequence < SECIOP::CryptographicProfile > CryptographicProfileList;
    struct CSI_ECMA_Hybrid
    {
        Security::AssociationOptions target_supports;
        Security::AssociationOptions target_requires;
        SECIOP::CryptographicProfileList crypto_profile;
        SECIOP::SecurityName security_name;
    };
    
    struct CSI_ECMA_Public
    {
        Security::AssociationOptions target_supports;
        Security::AssociationOptions target_requires;
        SECIOP::CryptographicProfileList crypto_profile;
        SECIOP::SecurityName security_name;
    };
    
    struct CSI_ECMA_Secret
    {
        Security::AssociationOptions target_supports;
        Security::AssociationOptions target_requires;
        SECIOP::CryptographicProfileList crypto_profile;
        SECIOP::SecurityName security_name;
    };
    
    struct DiscardContext
    {
        SECIOP::ContextIdDefn message_context_id_defn;
        SECIOP::ContextId message_context_id;
    discard_context_token;    };
    
    struct EstablishContext
    {
        SECIOP::ContextId client_context_id;
    initial_context_token;    };
    
    struct GenericMechanismInfo
    {
    security_mechanism_type;
    mech_specific_data;
    components;    };
    
    struct KerberosV5
    {
        Security::AssociationOptions target_supports;
        Security::AssociationOptions target_requires;
        SECIOP::CryptographicProfileList crypto_profile;
        SECIOP::SecurityName security_name;
    };
    
    struct MessageError
    {
        SECIOP::ContextIdDefn message_context_id_defn;
        SECIOP::ContextId message_context_id;
        long major_status;
        long minor_status;
    };
    
    struct MessageInContext
    {
        SECIOP::ContextIdDefn message_context_id_defn;
        SECIOP::ContextId message_context_id;
        SECIOP::ContextTokenType message_context_type;
    message_protection_token;    };
    
    enum MsgType
    {
        MTEstablishContext,
        MTCompleteEstablishContext,
        MTContinueEstablishContext,
        MTDiscardContext,
        MTMessageError,
        MTMessageInContext
    };
    struct SECIOP_SEC_TRANS
    {
        Security::AssociationOptions target_supports;
        Security::AssociationOptions target_requires;
        Security::OID mech_oid;
        Security::GSS_NT_ExportedName target_name;
        unsigned short port;
    };
    
    typedef sequence < octet > SecurityName;
    struct SequencingHeader
    {
        octet control_state;
        unsigned long direct_sequence_number;
        unsigned long reverse_sequence_number;
        unsigned long reverse_window;
    };
    
    struct SPKM_1
    {
        Security::AssociationOptions target_supports;
        Security::AssociationOptions target_requires;
        SECIOP::CryptographicProfileList crypto_profile;
        SECIOP::SecurityName security_name;
    };
    
    struct SPKM_2
    {
        Security::AssociationOptions target_supports;
        Security::AssociationOptions target_requires;
        SECIOP::CryptographicProfileList crypto_profile;
        SECIOP::SecurityName security_name;
    };
    
    struct TargetAssociationOptions
    {
        Security::AssociationOptions target_supports;
        Security::AssociationOptions target_requires;
    };