windows-nt/Source/XPSP1/NT/ds/inc/ldap.h
2020-09-26 16:20:57 +08:00

781 lines
22 KiB
C

/******************************************************************/
/* Copyright (C) 1998 Microsoft Corporation. All rights reserved.*/
/******************************************************************/
/* Abstract syntax: ldap */
/* Created: Tue Jan 27 10:27:59 1998 */
/* ASN.1 compiler version: 4.2 Beta B */
/* Target operating system: Windows NT 3.5 or later/Windows 95 */
/* Target machine type: Intel x86 */
/* C compiler options required: -Zp8 (Microsoft) or equivalent */
/* ASN.1 compiler options specified:
* -noshortennames -nouniquepdu -c++ -noconstraints -ber -gendirectives
* ldapnew.gen
*/
#ifndef OSS_ldap
#define OSS_ldap
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#include "asn1hdr.h"
#include "asn1code.h"
#define ObjectID_PDU 1
#define DistinguishedName_PDU 2
#define LDAPMsg_PDU 3
#define Attribute_PDU 4
#define PagedResultsSearchControlValue_PDU 5
#define ReplicationSearchControlValue_PDU 6
#define SecurityDescriptorSearchControlValue_PDU 7
#define SearchResultFull_PDU 8
#define ProtectedPassword_PDU 9
#define StrongCredentials_PDU 10
#define SortKeyList_PDU 11
#define SortResult_PDU 12
typedef struct ObjectID_ {
struct ObjectID_ *next;
unsigned short value;
} *ObjectID;
typedef struct TYPE_IDENTIFIER {
struct ObjectID_ *id;
unsigned short Type;
} TYPE_IDENTIFIER;
typedef struct ObjectID_ *ID;
typedef struct UniqueIdentifier {
unsigned int length; /* number of significant bits */
unsigned char *value;
} UniqueIdentifier;
typedef struct AlgorithmIdentifier {
unsigned char bit_mask;
# define parameters_present 0x80
struct ObjectID_ *algorithm;
OpenType parameters; /* optional */
} AlgorithmIdentifier;
typedef struct RDNSequence_ *DistinguishedName;
typedef struct Token {
struct {
AlgorithmIdentifier algorithm;
struct RDNSequence_ *name;
UTCTime time;
struct {
unsigned int length; /* number of significant bits */
unsigned char *value;
} random;
} toBeSigned;
AlgorithmIdentifier algorithmIdentifier;
struct {
unsigned int length; /* number of significant bits */
unsigned char *value;
} encrypted;
} Token;
typedef int Version;
#define v1 0
#define v2 1
typedef int CertificateSerialNumber;
typedef struct Name {
unsigned short choice;
# define rdnSequence_chosen 1
union _union {
struct RDNSequence_ *rdnSequence;
} u;
} Name;
typedef struct Validity {
UTCTime notBefore;
UTCTime notAfter;
} Validity;
typedef struct SubjectPublicKeyInfo {
AlgorithmIdentifier algorithm;
struct _bit1 {
unsigned int length; /* number of significant bits */
unsigned char *value;
} subjectPublicKey;
} SubjectPublicKeyInfo;
typedef struct Certificate {
struct {
unsigned char bit_mask;
# define version_present 0x80
# define issuerUniqueIdentifier_present 0x40
# define subjectUniqueIdentifier_present 0x20
Version version; /* default assumed if omitted */
CertificateSerialNumber serialNumber;
AlgorithmIdentifier signature;
Name issuer;
Validity validity;
Name subject;
SubjectPublicKeyInfo subjectPublicKeyInfo;
UniqueIdentifier issuerUniqueIdentifier; /* optional */
UniqueIdentifier subjectUniqueIdentifier; /* optional */
} toBeSigned;
AlgorithmIdentifier algorithmIdentifier;
struct {
unsigned int length; /* number of significant bits */
unsigned char *value;
} encrypted;
} Certificate;
typedef TYPE_IDENTIFIER ALGORITHM;
typedef struct CertificatePair {
unsigned char bit_mask;
# define forward_present 0x80
# define reverse_present 0x40
Certificate forward; /* optional */
Certificate reverse; /* optional */
} CertificatePair;
typedef struct CertificationPath {
unsigned char bit_mask;
# define theCACertificates_present 0x80
Certificate userCertificate;
struct _seqof1 {
struct _seqof1 *next;
CertificatePair value;
} *theCACertificates; /* optional */
} CertificationPath;
typedef struct AttributeTypeAndValue {
struct ObjectID_ *type;
OpenType value;
} AttributeTypeAndValue;
typedef struct RDNSequence_ {
struct RDNSequence_ *next;
struct RelativeDistinguishedName_ *value;
} *RDNSequence;
typedef struct RelativeDistinguishedName_ {
struct RelativeDistinguishedName_ *next;
AttributeTypeAndValue value;
} *RelativeDistinguishedName;
typedef enum AttributeUsage {
userApplications = 0,
directoryOperation = 1,
distributedOperation = 2,
dSAOperation = 3
} AttributeUsage;
typedef struct ATTRIBUTE {
unsigned char bit_mask;
# define Type_present 0x80
# define single_valued_present 0x40
# define collective_present 0x20
# define no_user_modification_present 0x10
# define usage_present 0x08
struct ATTRIBUTE *derivation; /* NULL for not present */
unsigned short Type; /* optional */
struct MATCHING_RULE *equality_match; /* NULL for not present */
struct MATCHING_RULE *ordering_match; /* NULL for not present */
struct MATCHING_RULE *substrings_match; /* NULL for not present */
ossBoolean single_valued; /* default assumed if omitted */
ossBoolean collective; /* default assumed if omitted */
ossBoolean no_user_modification; /* default assumed if omitted */
AttributeUsage usage; /* default assumed if omitted */
struct ObjectID_ *id;
} ATTRIBUTE;
typedef struct MATCHING_RULE {
unsigned char bit_mask;
# define AssertionType_present 0x80
unsigned short AssertionType; /* optional */
struct ObjectID_ *id;
} MATCHING_RULE;
typedef unsigned int MessageID;
typedef struct LDAPString {
unsigned int length;
unsigned char *value;
} LDAPString;
typedef LDAPString LDAPDN;
typedef struct SaslCredentials {
LDAPString mechanism;
struct _octet1 {
unsigned int length;
unsigned char *value;
} credentials;
} SaslCredentials;
typedef struct AuthenticationChoice {
unsigned short choice;
# define simple_chosen 1
# define sasl_chosen 2
# define sicilyNegotiate_chosen 3
# define sicilyInitial_chosen 4
# define sicilySubsequent_chosen 5
# define sasl_v3response_chosen 1001
union _union {
struct _octet2 {
unsigned int length;
unsigned char *value;
} simple;
SaslCredentials sasl;
struct _octet1 {
unsigned int length;
unsigned char *value;
} sicilyNegotiate;
struct _octet2_2 {
unsigned int length;
unsigned char *value;
} sicilyInitial;
struct _octet3 {
unsigned int length;
unsigned char *value;
} sicilySubsequent;
} u;
} AuthenticationChoice;
typedef struct BindRequest {
unsigned short version;
LDAPDN name;
AuthenticationChoice authentication;
} BindRequest;
typedef enum _enum1 {
success = 0,
operationsError = 1,
protocolError = 2,
timeLimitExceeded = 3,
sizeLimitExceeded = 4,
compareFalse = 5,
compareTrue = 6,
authMethodNotSupported = 7,
strongAuthRequired = 8,
referralv2 = 9,
referral = 10,
adminLimitExceeded = 11,
unavailableCriticalExtension = 12,
confidentialityRequired = 13,
saslBindInProgress = 14,
noSuchAttribute = 16,
undefinedAttributeType = 17,
inappropriateMatching = 18,
constraintViolation = 19,
attributeOrValueExists = 20,
invalidAttributeSyntax = 21,
noSuchObject = 32,
aliasProblem = 33,
invalidDNSyntax = 34,
aliasDereferencingProblem = 36,
inappropriateAuthentication = 48,
invalidCredentials = 49,
insufficientAccessRights = 50,
busy = 51,
unavailable = 52,
unwillingToPerform = 53,
loopDetect = 54,
sortControlMissing = 60,
indexRangeError = 61,
namingViolation = 64,
objectClassViolation = 65,
notAllowedOnNonLeaf = 66,
notAllowedOnRDN = 67,
entryAlreadyExists = 68,
objectClassModsProhibited = 69,
resultsTooLarge = 70,
affectsMultipleDSAs = 71,
other = 80
} _enum1;
typedef struct BindResponse {
unsigned char bit_mask;
# define BindResponse_referral_present 0x80
# define serverCreds_present 0x40
# define BindResponse_ldapv3 0x20
_enum1 resultCode;
LDAPDN matchedDN;
LDAPString errorMessage;
struct Referral_ *BindResponse_referral; /* optional */
AuthenticationChoice serverCreds; /* optional */
} BindResponse;
typedef Nulltype UnbindRequest;
typedef LDAPString AttributeDescription;
typedef struct AssertionValue {
unsigned int length;
unsigned char *value;
} AssertionValue;
typedef struct AttributeValueAssertion {
AttributeDescription attributeDesc;
AssertionValue assertionValue;
} AttributeValueAssertion;
typedef struct SubstringFilter {
AttributeDescription type;
struct SubstringFilterList_ *substrings;
} SubstringFilter;
typedef LDAPString AttributeType;
typedef LDAPString MatchingRuleId;
typedef struct MatchingRuleAssertion {
unsigned char bit_mask;
# define matchingRule_present 0x80
# define type_present 0x40
# define dnAttributes_present 0x20
MatchingRuleId matchingRule; /* optional */
AttributeDescription type; /* optional */
AssertionValue matchValue;
ossBoolean dnAttributes; /* default assumed if omitted */
} MatchingRuleAssertion;
typedef struct Filter {
unsigned short choice;
# define and_chosen 1
# define or_chosen 2
# define not_chosen 3
# define equalityMatch_chosen 4
# define substrings_chosen 5
# define greaterOrEqual_chosen 6
# define lessOrEqual_chosen 7
# define present_chosen 8
# define approxMatch_chosen 9
# define extensibleMatch_chosen 10
union _union {
struct _setof3_ *and;
struct _setof4_ *or;
struct Filter *not;
AttributeValueAssertion equalityMatch;
SubstringFilter substrings;
AttributeValueAssertion greaterOrEqual;
AttributeValueAssertion lessOrEqual;
AttributeType present;
AttributeValueAssertion approxMatch;
MatchingRuleAssertion extensibleMatch;
} u;
} Filter;
typedef struct _setof3_ {
struct _setof3_ *next;
Filter value;
} *_setof3;
typedef struct _setof4_ {
struct _setof4_ *next;
Filter value;
} *_setof4;
typedef enum _enum2 {
baseObject = 0,
singleLevel = 1,
wholeSubtree = 2
} _enum2;
typedef enum _enum3 {
neverDerefAliases = 0,
derefInSearching = 1,
derefFindingBaseObj = 2,
derefAlways = 3
} _enum3;
typedef struct SearchRequest {
LDAPDN baseObject;
_enum2 scope;
_enum3 derefAliases;
unsigned int sizeLimit;
unsigned int timeLimit;
ossBoolean typesOnly;
Filter filter;
struct AttributeDescriptionList_ *attributes;
} SearchRequest;
typedef struct SearchResultEntry {
LDAPDN objectName;
struct PartialAttributeList_ *attributes;
} SearchResultEntry;
typedef struct LDAPResult {
unsigned char bit_mask;
# define LDAPResult_referral_present 0x80
_enum1 resultCode;
LDAPDN matchedDN;
LDAPString errorMessage;
struct Referral_ *LDAPResult_referral; /* optional */
} LDAPResult;
typedef LDAPResult SearchResultDone;
typedef struct ModifyRequest {
LDAPDN object;
struct ModificationList_ *modification;
} ModifyRequest;
typedef LDAPResult ModifyResponse;
typedef struct AddRequest {
LDAPDN entry;
struct AttributeList_ *attributes;
} AddRequest;
typedef LDAPResult AddResponse;
typedef LDAPDN DelRequest;
typedef LDAPResult DelResponse;
typedef LDAPString RelativeLDAPDN;
typedef struct ModifyDNRequest {
unsigned char bit_mask;
# define newSuperior_present 0x80
LDAPDN entry;
RelativeLDAPDN newrdn;
ossBoolean deleteoldrdn;
LDAPDN newSuperior; /* optional */
} ModifyDNRequest;
typedef LDAPResult ModifyDNResponse;
typedef struct CompareRequest {
LDAPDN entry;
AttributeValueAssertion ava;
} CompareRequest;
typedef LDAPResult CompareResponse;
typedef MessageID AbandonRequest;
typedef struct LDAPOID {
unsigned int length;
unsigned char *value;
} LDAPOID;
typedef struct ExtendedRequest {
LDAPOID requestName;
struct {
unsigned int length;
unsigned char *value;
} requestValue;
} ExtendedRequest;
typedef struct ExtendedResponse {
unsigned char bit_mask;
# define ExtendedResponse_referral_present 0x80
# define responseName_present 0x40
# define response_present 0x20
_enum1 resultCode;
LDAPDN matchedDN;
LDAPString errorMessage;
struct Referral_ *ExtendedResponse_referral; /* optional */
LDAPOID responseName; /* optional */
struct {
unsigned int length;
unsigned char *value;
} response; /* optional */
} ExtendedResponse;
typedef struct _choice1_1 {
unsigned short choice;
# define bindRequest_chosen 1
# define bindResponse_chosen 2
# define unbindRequest_chosen 3
# define searchRequest_chosen 4
# define searchResEntry_chosen 5
# define searchResDone_chosen 6
# define searchResRef_chosen 7
# define modifyRequest_chosen 8
# define modifyResponse_chosen 9
# define addRequest_chosen 10
# define addResponse_chosen 11
# define delRequest_chosen 12
# define delResponse_chosen 13
# define modDNRequest_chosen 14
# define modDNResponse_chosen 15
# define compareRequest_chosen 16
# define compareResponse_chosen 17
# define abandonRequest_chosen 18
# define extendedReq_chosen 19
# define extendedResp_chosen 20
union _union {
BindRequest bindRequest;
BindResponse bindResponse;
UnbindRequest unbindRequest;
SearchRequest searchRequest;
SearchResultEntry searchResEntry;
SearchResultDone searchResDone;
struct SearchResultReference_ *searchResRef;
ModifyRequest modifyRequest;
ModifyResponse modifyResponse;
AddRequest addRequest;
AddResponse addResponse;
DelRequest delRequest;
DelResponse delResponse;
ModifyDNRequest modDNRequest;
ModifyDNResponse modDNResponse;
CompareRequest compareRequest;
CompareResponse compareResponse;
AbandonRequest abandonRequest;
ExtendedRequest extendedReq;
ExtendedResponse extendedResp;
} u;
} _choice1_1;
typedef struct LDAPMsg {
unsigned char bit_mask;
# define controls_present 0x80
MessageID messageID;
_choice1_1 protocolOp;
struct Controls_ *controls; /* optional */
} LDAPMsg;
typedef struct AttributeDescriptionList_ {
struct AttributeDescriptionList_ *next;
AttributeDescription value;
} *AttributeDescriptionList;
typedef struct AttributeValue {
unsigned int length;
unsigned char *value;
} AttributeValue;
typedef struct AttributeVals_ {
struct AttributeVals_ *next;
AttributeValue value;
} *AttributeVals;
typedef struct Attribute {
AttributeDescription type;
struct AttributeVals_ *vals;
} Attribute;
typedef LDAPString LDAPURL;
typedef struct Referral_ {
struct Referral_ *next;
LDAPURL value;
} *Referral;
typedef struct Control {
unsigned char bit_mask;
# define criticality_present 0x80
LDAPOID controlType;
ossBoolean criticality; /* default assumed if omitted */
struct _octet4 {
unsigned int length;
unsigned char *value;
} controlValue;
} Control;
typedef struct Controls_ {
struct Controls_ *next;
Control value;
} *Controls;
typedef struct _choice1 {
unsigned short choice;
# define initial_chosen 1
# define any_chosen 2
# define final_chosen 3
union _union {
LDAPString initial;
LDAPString any;
LDAPString final;
} u;
} _choice1;
typedef struct SubstringFilterList_ {
struct SubstringFilterList_ *next;
_choice1 value;
} *SubstringFilterList;
typedef struct PagedResultsSearchControlValue {
unsigned int size;
struct _octet4 {
unsigned int length;
unsigned char *value;
} cookie;
} PagedResultsSearchControlValue;
typedef struct ReplicationSearchControlValue {
unsigned int flag;
unsigned int size;
struct _octet4 {
unsigned int length;
unsigned char *value;
} cookie;
} ReplicationSearchControlValue;
typedef struct SecurityDescriptorSearchControlValue {
unsigned int flags;
} SecurityDescriptorSearchControlValue;
typedef struct AttributeListElement {
AttributeDescription type;
struct AttributeVals_ *vals;
} AttributeListElement;
typedef struct PartialAttributeList_ {
struct PartialAttributeList_ *next;
AttributeListElement value;
} *PartialAttributeList;
typedef struct SearchResultReference_ {
struct SearchResultReference_ *next;
LDAPURL value;
} *SearchResultReference;
typedef struct _choice3 {
unsigned short choice;
# define entry_chosen 1
# define reference_chosen 2
# define resultCode_chosen 3
union _union {
SearchResultEntry entry;
struct SearchResultReference_ *reference;
SearchResultDone resultCode;
} u;
} _choice3;
typedef struct SearchResultFull_ {
struct SearchResultFull_ *next;
_choice3 value;
} *SearchResultFull;
typedef struct AttributeTypeAndValues {
AttributeDescription type;
struct _setof1 {
struct _setof1 *next;
AttributeValue value;
} *vals;
} AttributeTypeAndValues;
typedef enum _enum1_2 {
add = 0,
operation_delete = 1,
replace = 2
} _enum1_2;
typedef struct ModificationList_ {
struct ModificationList_ *next;
struct {
_enum1_2 operation;
AttributeTypeAndValues modification;
} value;
} *ModificationList;
typedef struct AttributeList_ {
struct AttributeList_ *next;
AttributeListElement value;
} *AttributeList;
typedef struct ProtectedPassword {
unsigned char bit_mask;
# define time1_present 0x80
# define time2_present 0x40
# define random1_present 0x20
# define random2_present 0x10
UTCTime time1; /* optional */
UTCTime time2; /* optional */
struct {
unsigned int length; /* number of significant bits */
unsigned char *value;
} random1; /* optional */
struct {
unsigned int length; /* number of significant bits */
unsigned char *value;
} random2; /* optional */
LDAPOID algorithmIdentifier;
struct {
unsigned int length; /* number of significant bits */
unsigned char *value;
} encipheredPassword;
} ProtectedPassword;
typedef struct StrongCredentials {
unsigned char bit_mask;
# define certification_path_present 0x80
CertificationPath certification_path; /* optional */
Token bind_token;
} StrongCredentials;
typedef struct SortKeyList_ {
struct SortKeyList_ *next;
struct {
unsigned char bit_mask;
# define orderingRule_present 0x80
# define reverseOrder_present 0x40
AttributeType attributeType;
MatchingRuleId orderingRule; /* optional */
ossBoolean reverseOrder; /* default assumed if omitted */
} value;
} *SortKeyList;
typedef enum _enum1_4 {
sortSuccess = 0,
sortOperationsError = 1,
sortTimeLimitExceeded = 2,
sortStrongAuthRequired = 8,
sortAdminLimitExceeded = 11,
sortNoSuchAttribute = 16,
sortInappropriateMatching = 18,
sortInsufficientAccessRights = 50,
sortBusy = 51,
sortUnwillingToPerform = 53,
sortOther = 80
} _enum1_4;
typedef struct SortResult {
unsigned char bit_mask;
# define attributeType_present 0x80
_enum1_4 sortResult;
AttributeType attributeType; /* optional */
} SortResult;
extern ID ds;
extern ID attributeType;
extern ID matchingRule;
extern ID id_at;
extern ID id_mr;
extern ATTRIBUTE objectClass;
extern ATTRIBUTE aliasedEntryName;
extern MATCHING_RULE objectIdentifierMatch;
extern MATCHING_RULE distinguishedNameMatch;
extern ObjectID id_at_objectClass;
extern ObjectID id_at_aliasedEntryName;
extern ObjectID id_mr_objectIdentifierMatch;
extern ObjectID id_mr_distinguishedNameMatch;
extern int maxInt;
extern void *ldap; /* encoder-decoder control table */
#ifdef __cplusplus
} /* extern "C" */
#endif /* __cplusplus */
#endif /* OSS_ldap */