--
--  Microsoft Windows
--  Copyright (C) Microsoft Corporation, 1992 - 1995.
--
--  File:       snego.asn
--
--  Contents:   Security Negotiation Definitions
--
--  Classes:
--
--  Functions:
--
--  History:    7-29-96   RichardW   Created
--





SPNEGO DEFINITIONS ::=
BEGIN


MechType ::= OBJECT IDENTIFIER

MechTypeList ::= SEQUENCE OF MechType
--
-- Create a top-level type using MechTypeList to enable it to be
-- marshalled independently
--

SavedMechTypeList ::= MechTypeList

NegHints ::= SEQUENCE {
                        hintName[0] GeneralString OPTIONAL,
                        hintAddress[1] OCTET STRING OPTIONAL
                      }


NegTokenInit ::= SEQUENCE {
                            mechTypes[0] MechTypeList OPTIONAL,
                            reqFlags [1] ContextFlags OPTIONAL,
                            mechToken [2] OCTET STRING OPTIONAL,
                            negHints [3] NegHints OPTIONAL,
                            mechListMIC [4] OCTET STRING OPTIONAL
                         }
                         
NegTokenInit2 ::= SEQUENCE {
                            mechTypes   [0] MechTypeList OPTIONAL,
                            reqFlags    [1] ContextFlags OPTIONAL,
                            mechToken   [2] OCTET STRING OPTIONAL,
                            mechListMIC [3] OCTET STRING OPTIONAL,
                            negHints    [4] NegHints OPTIONAL
                          }

ContextFlags ::= BIT STRING {
    delegFlag (0),
    mutualFlag (1),
    replayFlag (2),
    sequenceFlag (3),
    anonFlag (4),
    confFlag (5),
    integFlag (6)
}

-- NegResult ::= ENUMERATED { accept(0), reject(1) }

-- NegResultList ::= SEQUENCE OF NegResult

MechSpecInfo ::= OCTET STRING

-- NegTokenRep ::= SEQUENCE {
--                                 negResultList[0] NegResultList,
--                                 supportedMech[1] MechType OPTIONAL,
--                                 mechSpecInfo[2] MechSpecInfo OPTIONAL
--                          }

-- NegTokenSelect ::= SEQUENCE {
--                                 supportedMech[0] MechType OPTIONAL,
--                                 mechSpecInfo[1] MechSpecInfo OPTIONAL
--                            }


NegResult ::= ENUMERATED {
                        accept-completed (0),
                        accept-incomplete (1),
                        reject (2)
                        }

NegTokenTarg ::= SEQUENCE {
    negResult [0] NegResult OPTIONAL,
    supportedMech [1] MechType OPTIONAL,
    responseToken [2] OCTET STRING OPTIONAL,
    mechListMIC [3] OCTET STRING OPTIONAL
}

NegotiationToken ::= CHOICE {
                                negTokenInit [0] NegTokenInit,
                                negTokenTarg [1] NegTokenTarg,
                                negTokenInit2 [2] NegTokenInit2
                                
                            } --#public--


InitialNegToken ::= [APPLICATION 0] IMPLICIT SEQUENCE {
        spnegoMech      MechType,
        negToken        NegotiationToken
} --#public--

END