#include "spnegoDER.h"
#include <Security/cssmtype.h>
#include <Security/asn1Templates.h>
#include <stddef.h>
#include "spnegoBlob.h"
static const uint8 OID_SPNEGO[] =
{ 0x2b, 0x06, 0x01, 0x05, 0x05, 0x02 };
const CSSM_OID CSSMOID_SPNEGO =
{ sizeof(OID_SPNEGO), (uint8 *)OID_SPNEGO };
static const uint8 OID_KERB_V5_LEGACY[] =
{ 0x2a, 0x86, 0x48, 0x82, 0xf7, 0x12, 0x01, 0x02, 0x02 };
const CSSM_OID CSSMOID_KERB_V5_LEGACY =
{ sizeof(OID_KERB_V5_LEGACY), (uint8 *)OID_KERB_V5_LEGACY };
static const uint8 OID_KERB_V5[] =
{ 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x12, 0x01, 0x02, 0x02 };
const CSSM_OID CSSMOID_KERB_V5 =
{ sizeof(OID_KERB_V5), (uint8 *)OID_KERB_V5 };
const SecAsn1Template SpnegoNegTokenInitTemplate[] = {
{ SEC_ASN1_SEQUENCE,
0, NULL, sizeof(SpnegoNegTokenInit) },
{ SEC_ASN1_OPTIONAL | SEC_ASN1_CONTEXT_SPECIFIC | 0 |
SEC_ASN1_EXPLICIT | SEC_ASN1_CONSTRUCTED,
offsetof(SpnegoNegTokenInit,mechTypeList),
kSecAsn1SequenceOfObjectIDTemplate },
{ SEC_ASN1_OPTIONAL | SEC_ASN1_CONTEXT_SPECIFIC | 1 |
SEC_ASN1_EXPLICIT,
offsetof(SpnegoNegTokenInit,contextFlags),
kSecAsn1PointerToBitStringTemplate },
{ SEC_ASN1_OPTIONAL | SEC_ASN1_CONTEXT_SPECIFIC | 2 |
SEC_ASN1_EXPLICIT | SEC_ASN1_CONSTRUCTED,
offsetof(SpnegoNegTokenInit,mechToken),
kSecAsn1PointerToOctetStringTemplate },
{ SEC_ASN1_OPTIONAL | SEC_ASN1_CONTEXT_SPECIFIC | 3 |
SEC_ASN1_EXPLICIT | SEC_ASN1_CONSTRUCTED,
offsetof(SpnegoNegTokenInit,mechListMIC),
kSecAsn1PointerToOctetStringTemplate},
{ 0 }
};
const SecAsn1Template _SpnegoNegTokenInitGssTemplate[] = {
{ SEC_ASN1_SEQUENCE,
0, NULL, sizeof(SpnegoNegTokenInitGss) },
{ SEC_ASN1_OBJECT_ID,
offsetof(SpnegoNegTokenInitGss,oid) },
{ SEC_ASN1_CONTEXT_SPECIFIC | 0 | SEC_ASN1_CONSTRUCTED |
SEC_ASN1_EXPLICIT,
offsetof(SpnegoNegTokenInitGss,token),
SpnegoNegTokenInitTemplate },
{ 0 }
};
const SecAsn1Template SpnegoNegTokenInitGssTemplate[] = {
{ SEC_ASN1_APPLICATION | 0 | SEC_ASN1_CONSTRUCTED,
0, _SpnegoNegTokenInitGssTemplate, sizeof(SpnegoNegTokenInitGss) },
{ 0 }
};
const SecAsn1Template _SpnegoNegTokenTargTemplate[] = {
{ SEC_ASN1_SEQUENCE,
0, NULL, sizeof(SpnegoNegTokenTarg) },
{ SEC_ASN1_OPTIONAL | SEC_ASN1_CONTEXT_SPECIFIC | 0 |
SEC_ASN1_EXPLICIT | SEC_ASN1_CONSTRUCTED,
offsetof(SpnegoNegTokenTarg,negResult),
kSecAsn1PointerToEnumeratedTemplate },
{ SEC_ASN1_OPTIONAL | SEC_ASN1_CONTEXT_SPECIFIC | 1 |
SEC_ASN1_EXPLICIT | SEC_ASN1_CONSTRUCTED,
offsetof(SpnegoNegTokenTarg,mechType),
kSecAsn1PointerToObjectIDTemplate },
{ SEC_ASN1_OPTIONAL | SEC_ASN1_CONTEXT_SPECIFIC | 2 |
SEC_ASN1_EXPLICIT | SEC_ASN1_CONSTRUCTED,
offsetof(SpnegoNegTokenTarg,responseToken),
kSecAsn1PointerToOctetStringTemplate },
{ SEC_ASN1_OPTIONAL | SEC_ASN1_CONTEXT_SPECIFIC | 3 |
SEC_ASN1_EXPLICIT | SEC_ASN1_CONSTRUCTED,
offsetof(SpnegoNegTokenTarg,mechListMIC),
kSecAsn1PointerToOctetStringTemplate },
{ 0 }
};
const SecAsn1Template SpnegoNegTokenTargTemplate[] = {
{ SEC_ASN1_CONTEXT_SPECIFIC | 1 | SEC_ASN1_CONSTRUCTED |
SEC_ASN1_EXPLICIT,
0, _SpnegoNegTokenTargTemplate, sizeof(SpnegoNegTokenTarg) },
{ 0 }
};