Windows-Server-2003/ds/inc/ndssntx.h

492 lines
13 KiB
C

/*++
Copyright (c) 1995 Microsoft Corporation
Module Name:
NdsSntx.h
Abstract:
This module defines NDS Syntax IDs and Structures used in the NDS
object API found in nds32.h.
Author:
Glenn Curtis [GlennC] 15-Dec-1995
--*/
#ifndef __NDSSNTX_H
#define __NDSSNTX_H
#define NDS_SYNTAX_ID_0 0 /* Unknown */
#define NDS_SYNTAX_ID_1 1 /* Distinguished Name */
#define NDS_SYNTAX_ID_2 2 /* Case Exact String */
#define NDS_SYNTAX_ID_3 3 /* Case Ignore String */
#define NDS_SYNTAX_ID_4 4 /* Printable String */
#define NDS_SYNTAX_ID_5 5 /* Numeric String */
#define NDS_SYNTAX_ID_6 6 /* Case Ignore List */
#define NDS_SYNTAX_ID_7 7 /* Boolean */
#define NDS_SYNTAX_ID_8 8 /* Integer */
#define NDS_SYNTAX_ID_9 9 /* Octet String */
#define NDS_SYNTAX_ID_10 10 /* Telephone Number */
#define NDS_SYNTAX_ID_11 11 /* Facsimile Telephone Number */
#define NDS_SYNTAX_ID_12 12 /* Net Address */
#define NDS_SYNTAX_ID_13 13 /* Octet List */
#define NDS_SYNTAX_ID_14 14 /* EMail Address */
#define NDS_SYNTAX_ID_15 15 /* Path */
#define NDS_SYNTAX_ID_16 16 /* Replica Pointer */
#define NDS_SYNTAX_ID_17 17 /* Object ACL */
#define NDS_SYNTAX_ID_18 18 /* Postal Address */
#define NDS_SYNTAX_ID_19 19 /* Timestamp */
#define NDS_SYNTAX_ID_20 20 /* Class Name */
#define NDS_SYNTAX_ID_21 21 /* Stream */
#define NDS_SYNTAX_ID_22 22 /* Counter */
#define NDS_SYNTAX_ID_23 23 /* Back Link */
#define NDS_SYNTAX_ID_24 24 /* Time */
#define NDS_SYNTAX_ID_25 25 /* Typed Name */
#define NDS_SYNTAX_ID_26 26 /* Hold */
#define NDS_SYNTAX_ID_27 27 /* Interval */
//
// NDS Distinguished Name
//
// Used in attributes: Alias Object Name, Default Queue, Device,
// Group Membership, Higher Privileges, Host Device,
// Host Server, Member, Message Server, Operator, Owner,
// Profile, Reference, Resource, Role Occupant,
// Security Equals, See Also, Server, User, Volume
//
typedef struct
{
LPWSTR DNString;
} ASN1_TYPE_1, * LPASN1_TYPE_1;
//
// NDS Case Exact String syntax
//
// Used in attribute: Home Directory
//
typedef struct
{
LPWSTR CaseExactString;
} ASN1_TYPE_2, * LPASN1_TYPE_2;
//
// NDS Case Ignore String syntax
//
// Used in attributes: Cartridge, CN (Common Name), C (Country Name),
// Description, Host Resource Name, L (Locality Name),
// O (Organization Name), OU (Organizational Unit Name),
// Physical Delivery Office Name, Postal Code,
// Postal Office Box, Queue Directory, SAP Name,
// S (State or Province Name), SA (Street Address),
// Supported Services, Supported Typefaces, Surname,
// Title, Unknown Base Class, Version
//
typedef struct
{
LPWSTR CaseIgnoreString;
} ASN1_TYPE_3, * LPASN1_TYPE_3;
//
// NDS Printable String syntax
//
// Used in attributes: Page Description Language, Serial Number
//
typedef struct
{
LPWSTR PrintableString;
} ASN1_TYPE_4, * LPASN1_TYPE_4;
//
// NDS Numeric String syntax
//
// Used in attributes: Bindery Type
//
typedef struct
{
LPWSTR NumericString;
} ASN1_TYPE_5, * LPASN1_TYPE_5;
//
// NDS Case Ignore List syntax
//
// Used in attribute: Language
//
typedef struct _CI_LIST
{
struct _CI_LIST * Next;
LPWSTR String;
} ASN1_TYPE_6, * LPASN1_TYPE_6;
//
// NDS Boolean syntax
//
// Used in attributes: Allow Unlimited Credit, Detect Intruder,
// Lockout After Detection, Locked By Intruder,
// Login Diabled, Password Allow Change, Password Required,
// Password Unique Required
//
typedef struct
{
DWORD Boolean;
} ASN1_TYPE_7, * LPASN1_TYPE_7;
//
// Example: NDS Integer syntax
//
// Used in attributes: Bindery Object Restriction, Convergence, GID (Group ID),
// Login Grace Limit, Login Intruder Limit,
// Login Maximum Simultaneous, Memory,
// Minimum Account Balance, Password Minimum Length, Status,
// Supported Connections, UID (User ID)
//
typedef struct
{
DWORD Integer;
} ASN1_TYPE_8, * LPASN1_TYPE_8;
//
// NDS Octet String syntax
//
// Used in attributes: Athority Revocation, Bindery Property, CA Private Key,
// CA Public Key, Certificate Revocation,
// Cross Certificate Pair, Login Allowed Time Map,
// Passwords Used, Printer Configuration, Private Key,
// Public Key
//
typedef struct
{
DWORD Length;
LPBYTE OctetString;
} ASN1_TYPE_9, * LPASN1_TYPE_9;
//
// NDS Telephone Number syntax
//
// Used in attribute: Telephone Number
//
typedef struct
{
LPWSTR TelephoneNumber;
} ASN1_TYPE_10, * LPASN1_TYPE_10;
//
// NDS Facsimile Telephone Number syntax
//
// Used in attribute: Facsimile Telephone Number
//
typedef struct
{
LPWSTR TelephoneNumber;
DWORD NumberOfBits;
LPBYTE Parameters;
} ASN1_TYPE_11, * LPASN1_TYPE_11;
//
// NDS Network Address syntax
//
// Used in attributes: Login Intruder Address, Network Address,
// Network Address Restriction
//
typedef struct
{
DWORD AddressType; // 0 = IPX,
DWORD AddressLength;
BYTE * Address;
} ASN1_TYPE_12, * LPASN1_TYPE_12;
//
// NDS Octet List syntax
//
// Used in attribute: (none)
//
typedef struct _OCTET_LIST
{
struct _OCTET_LIST * Next;
DWORD Length;
BYTE * Data;
} ASN1_TYPE_13, * LPASN1_TYPE_13;
//
// NDS EMail Address syntax
//
// Used in attribute: EMail Address
//
typedef struct
{
DWORD Type;
LPWSTR Address;
} ASN1_TYPE_14, * LPASN1_TYPE_14;
//
// NDS Path syntax
//
// Used in attribute: Path
//
typedef struct
{
DWORD Type;
LPWSTR VolumeName;
LPWSTR Path;
} ASN1_TYPE_15, * LPASN1_TYPE_15;
//
// NDS Replica Pointer syntax
//
// Used in attribute: Replica
//
typedef struct
{
LPWSTR ServerName;
DWORD ReplicaType;
DWORD ReplicaNumber;
DWORD Count;
ASN1_TYPE_12 ReplicaAddressHint[1]; // ReplicaAddressHint is variable and
// can be calculated by Count * the
// length of a ASN1_TYPE_12 ( that is
// Count * 9).
} ASN1_TYPE_16, * LPASN1_TYPE_16;
//
// NDS Object ACL syntax
//
// Used in attributes: ACL, Inherited ACL
//
typedef struct
{
LPWSTR ProtectedAttrName;
LPWSTR SubjectName;
DWORD Privileges;
} ASN1_TYPE_17, * LPASN1_TYPE_17;
//
// NDS Postal Address syntax
//
// Used in attribute: Postal Address
//
typedef struct
{
LPWSTR PostalAddress[6]; // Value is limited to 6 lines,
// 30 characters each.
} ASN1_TYPE_18, * LPASN1_TYPE_18;
//
// NDS Timestamp syntax
//
// Used in attribute: Obituary, Partition Creation Time, Received Up To,
// Syncronized Up To
//
typedef struct
{
DWORD WholeSeconds; // Zero equals 12:00 midnight, January 1, 1970, UTC
DWORD EventID;
} ASN1_TYPE_19, * LPASN1_TYPE_19;
//
// NDS Class Name syntax
//
// Used in attribute: Object Class
//
typedef struct
{
LPWSTR ClassName;
} ASN1_TYPE_20, * LPASN1_TYPE_20;
//
// NDS Stream syntax
//
// Used in attribute: Login Script, Print Job Configuration, Printer Control,
// Type Creator Map
//
typedef struct
{
DWORD Length; // Always zero
BYTE * Data;
} ASN1_TYPE_21, * LPASN1_TYPE_21;
//
// NDS Count syntax
//
// Used in attributes: Account Balance, Login Grace Remaining,
// Login Intruder Attempts
//
typedef struct
{
DWORD Counter;
} ASN1_TYPE_22, * LPASN1_TYPE_22;
//
// NDS Back Link syntax
//
// Used in attribute: Back Link
//
typedef struct
{
DWORD RemoteID;
LPWSTR ObjectName;
} ASN1_TYPE_23, * LPASN1_TYPE_23;
//
// NDS Time syntax
//
// Used in attributes: Last Login Time, Login Expiration Time,
// Login Intruder Rest Time, Login Time,
// Low Convergence Reset Time, Password Expiration Time
//
typedef struct
{
DWORD Time; // (in whole seconds) zero equals 12:00 midnight,
// January 1, 1970, UTC
} ASN1_TYPE_24, * LPASN1_TYPE_24;
//
// NDS Typed Name syntax
//
// Used in attribute: Notify, Print Server, Printer, Queue
//
typedef struct
{
LPWSTR ObjectName;
DWORD Level;
DWORD Interval;
} ASN1_TYPE_25, * LPASN1_TYPE_25;
//
// NDS Hold syntax
//
// Used in attribute: Server Holds
//
typedef struct
{
LPWSTR ObjectName;
DWORD Amount;
} ASN1_TYPE_26, * LPASN1_TYPE_26;
//
// NDS Interval syntax
//
// Used in attribute: High Convergence Syncronization Interval,
// Intruder Attempt Reset Interval,
// Intruder Lockout Reset Interval,
// Low Convergence Syncronization Interval,
// Password Expiration Interval
//
typedef struct
{
DWORD Interval;
} ASN1_TYPE_27, * LPASN1_TYPE_27;
//
// rc.exe falls over because this macro gets way too long
//
#ifndef RC_INVOKED
#define SIZE_OF_ASN1_1 sizeof( ASN1_TYPE_1 )
#define SIZE_OF_ASN1_2 sizeof( ASN1_TYPE_2 )
#define SIZE_OF_ASN1_3 sizeof( ASN1_TYPE_3 )
#define SIZE_OF_ASN1_4 sizeof( ASN1_TYPE_4 )
#define SIZE_OF_ASN1_5 sizeof( ASN1_TYPE_5 )
#define SIZE_OF_ASN1_6 sizeof( ASN1_TYPE_6 )
#define SIZE_OF_ASN1_7 sizeof( ASN1_TYPE_7 )
#define SIZE_OF_ASN1_8 sizeof( ASN1_TYPE_8 )
#define SIZE_OF_ASN1_9 sizeof( ASN1_TYPE_9 )
#define SIZE_OF_ASN1_10 sizeof( ASN1_TYPE_10 )
#define SIZE_OF_ASN1_11 sizeof( ASN1_TYPE_11 )
#define SIZE_OF_ASN1_12 sizeof( ASN1_TYPE_12 )
#define SIZE_OF_ASN1_13 sizeof( ASN1_TYPE_13 )
#define SIZE_OF_ASN1_14 sizeof( ASN1_TYPE_14 )
#define SIZE_OF_ASN1_15 sizeof( ASN1_TYPE_15 )
#define SIZE_OF_ASN1_16 sizeof( ASN1_TYPE_16 )
#define SIZE_OF_ASN1_17 sizeof( ASN1_TYPE_17 )
#define SIZE_OF_ASN1_18 sizeof( ASN1_TYPE_18 )
#define SIZE_OF_ASN1_19 sizeof( ASN1_TYPE_19 )
#define SIZE_OF_ASN1_20 sizeof( ASN1_TYPE_20 )
#define SIZE_OF_ASN1_21 sizeof( ASN1_TYPE_21 )
#define SIZE_OF_ASN1_22 sizeof( ASN1_TYPE_22 )
#define SIZE_OF_ASN1_23 sizeof( ASN1_TYPE_23 )
#define SIZE_OF_ASN1_24 sizeof( ASN1_TYPE_24 )
#define SIZE_OF_ASN1_25 sizeof( ASN1_TYPE_25 )
#define SIZE_OF_ASN1_26 sizeof( ASN1_TYPE_26 )
#define SIZE_OF_ASN1_27 sizeof( ASN1_TYPE_27 )
#define MOD_OF_ASN1_1 (SIZE_OF_ASN1_1 % sizeof(DWORD))
#define MOD_OF_ASN1_2 (SIZE_OF_ASN1_2 % sizeof(DWORD))
#define MOD_OF_ASN1_3 (SIZE_OF_ASN1_3 % sizeof(DWORD))
#define MOD_OF_ASN1_4 (SIZE_OF_ASN1_4 % sizeof(DWORD))
#define MOD_OF_ASN1_5 (SIZE_OF_ASN1_5 % sizeof(DWORD))
#define MOD_OF_ASN1_6 (SIZE_OF_ASN1_6 % sizeof(DWORD))
#define MOD_OF_ASN1_7 (SIZE_OF_ASN1_7 % sizeof(DWORD))
#define MOD_OF_ASN1_8 (SIZE_OF_ASN1_8 % sizeof(DWORD))
#define MOD_OF_ASN1_9 (SIZE_OF_ASN1_9 % sizeof(DWORD))
#define MOD_OF_ASN1_10 (SIZE_OF_ASN1_10 % sizeof(DWORD))
#define MOD_OF_ASN1_11 (SIZE_OF_ASN1_11 % sizeof(DWORD))
#define MOD_OF_ASN1_12 (SIZE_OF_ASN1_12 % sizeof(DWORD))
#define MOD_OF_ASN1_13 (SIZE_OF_ASN1_13 % sizeof(DWORD))
#define MOD_OF_ASN1_14 (SIZE_OF_ASN1_14 % sizeof(DWORD))
#define MOD_OF_ASN1_15 (SIZE_OF_ASN1_15 % sizeof(DWORD))
#define MOD_OF_ASN1_16 (SIZE_OF_ASN1_16 % sizeof(DWORD))
#define MOD_OF_ASN1_17 (SIZE_OF_ASN1_17 % sizeof(DWORD))
#define MOD_OF_ASN1_18 (SIZE_OF_ASN1_18 % sizeof(DWORD))
#define MOD_OF_ASN1_19 (SIZE_OF_ASN1_19 % sizeof(DWORD))
#define MOD_OF_ASN1_20 (SIZE_OF_ASN1_20 % sizeof(DWORD))
#define MOD_OF_ASN1_21 (SIZE_OF_ASN1_21 % sizeof(DWORD))
#define MOD_OF_ASN1_22 (SIZE_OF_ASN1_22 % sizeof(DWORD))
#define MOD_OF_ASN1_23 (SIZE_OF_ASN1_23 % sizeof(DWORD))
#define MOD_OF_ASN1_24 (SIZE_OF_ASN1_24 % sizeof(DWORD))
#define MOD_OF_ASN1_25 (SIZE_OF_ASN1_25 % sizeof(DWORD))
#define MOD_OF_ASN1_26 (SIZE_OF_ASN1_26 % sizeof(DWORD))
#define MOD_OF_ASN1_27 (SIZE_OF_ASN1_27 % sizeof(DWORD))
#define SUM_OF_ASN1_MODS ( MOD_OF_ASN1_1 + MOD_OF_ASN1_2 + MOD_OF_ASN1_3 + \
MOD_OF_ASN1_4 + MOD_OF_ASN1_5 + MOD_OF_ASN1_6 + \
MOD_OF_ASN1_7 + MOD_OF_ASN1_8 + MOD_OF_ASN1_9 + \
MOD_OF_ASN1_10 + MOD_OF_ASN1_11 + MOD_OF_ASN1_12 + \
MOD_OF_ASN1_13 + MOD_OF_ASN1_14 + MOD_OF_ASN1_15 + \
MOD_OF_ASN1_16 + MOD_OF_ASN1_17 + MOD_OF_ASN1_18 + \
MOD_OF_ASN1_19 + MOD_OF_ASN1_20 + MOD_OF_ASN1_21 + \
MOD_OF_ASN1_22 + MOD_OF_ASN1_23 + MOD_OF_ASN1_24 + \
MOD_OF_ASN1_25 + MOD_OF_ASN1_26 + MOD_OF_ASN1_27 )
//
// If an error occurs here, then the structures found in this file are not
// DWORD aligned. They should be in order to run on RISC platforms.
//
static int x[1 - SUM_OF_ASN1_MODS] ;
#endif // RC_INVOKED
#endif