private static AuthorizationDataElement ParseAdIfRelevant(Asn1Element restriction, AuthorizationDataValueType type) { switch (type) { case AuthorizationDataValueType.AD_WIN2K_PAC: return(new PacElement(restriction[0].Value)); case AuthorizationDataValueType.AD_ETYPE_NEGOTIATION: return(ParseETypes(restriction.AsEncapsulatedElement())); case AuthorizationDataValueType.KERB_AUTH_DATA_TOKEN_RESTRICTIONS: return(new RestrictionEntry().Decode(restriction.AsEncapsulatedElement())); case AuthorizationDataValueType.KERB_AP_OPTIONS: return(new KerbApOptions(restriction[0].AsInt(reverse: true))); case AuthorizationDataValueType.KERB_LOCAL: return(new KerbLocal(restriction[0].Value)); case AuthorizationDataValueType.KERB_SERVICE_TARGET: return(new KerbServiceName(restriction[0].Value)); default: return(null); } }
public MechToken Decode(Asn1Element sequence, IEnumerable <MechType> mechTypes) { var firstMech = mechTypes.FirstOrDefault(); if (ProcessedAsNegoEx(sequence, firstMech)) { return(this); } sequence = sequence.AsEncapsulatedElement(); if (ProcessedAsNtlm(sequence, firstMech)) { return(this); } ProcessedAsKerberos(sequence, firstMech); return(this); }