cssmtype.h

来自「Next BIOS Source code : Extensible Firmw」· C头文件 代码 · 共 1,558 行 · 第 1/5 页

H
1,558
字号

typedef enum cssm_cert_encoding {
    CSSM_CERT_ENCODING_UNKNOWN =   0x00,
    CSSM_CERT_ENCODING_CUSTOM  =   0x01,
    CSSM_CERT_ENCODING_BER     =  0x02,
    CSSM_CERT_ENCODING_DER     =  0x03,
    CSSM_CERT_ENCODING_NDR     =  0x04
} CSSM_CERT_ENCODING, *CSSM_CERT_ENCODING_PTR;


typedef struct cssm_certgroup {
	CSSM_CERT_TYPE CertType; /* Certificate domain/type identifier */
	CSSM_CERT_ENCODING  CertEncoding;		/* certificate encoding */
    uint32 NumCerts;
    CSSM_DATA_PTR CertList;
    void* reserved;
} CSSM_CERTGROUP, *CSSM_CERTGROUP_PTR;

/*
 * This structure represents the type of format used for revocation lists.
 */
typedef enum cssm_crl_type { 
    CSSM_CRL_TYPE_UNKNOWN,
    CSSM_CRL_TYPE_X_509v1,
    CSSM_CRL_TYPE_X_509v2,
} CSSM_CRL_TYPE, *CSSM_CRL_TYPE_PTR; 

/*
 * This structure represents the encoding format used for revocation lists.
 */
typedef enum cssm_crl_encoding { 
    CSSM_CRL_ENCODING_UNKNOWN,
    CSSM_CRL_ENCODING_CUSTOM,
    CSSM_CRL_ENCODING_BER,
    CSSM_CRL_ENCODING_DER,
    CSSM_CRL_ENCODING_BLOOM
} CSSM_CRL_ENCODING, *CSSM_CRL_ENCODING_PTR; 


#define CSSM_EVIDENCE_FORM_UNSPECIFIC 0x0 
#define CSSM_EVIDENCE_FORM_CERT 0x1 
#define CSSM_EVIDENCE_FORM_CRL 0x2 
/*
 * This structure contains certificates, CRLs and other information used as 
 * audit trail evidence.
 */
typedef struct cssm_evidence {
	uint32 EvidenceForm; /* CSSM_EVIDENCE_FORM_CERT,CSSM_EVIDENCE_FORM_CRL */
	union cssm_format_type {
		CSSM_CERT_TYPE CertType;
		CSSM_CRL_TYPE CrlType;
	} FormatType ;
	union cssm_format_encoding {
		CSSM_CERT_ENCODING CertEncoding;
		CSSM_CRL_ENCODING CrlEncoding;
	} FormatEncoding;

CSSM_DATA_PTR Evidence;	/* Evidence content */
} CSSM_EVIDENCE, *CSSM_EVIDENCE_PTR; 

/*
 * This enumerated list defines the application-level protocols that could be
 * supported by a Certificate Library Module that communicates with Certification 
 * Authorities, Registration Authorities and other services, or by a Data Storage
 * Library Module that communicates with service-based storage and directory 
 * services.
 */
typedef enum cssm_net_protocol {
    CSSM_NET_PROTO_NONE = 0, /* local */
    CSSM_NET_PROTO_CUSTOM = 1, /* proprietary implementation */
    CSSM_NET_PROTO_UNSPECIFIED = 2, /* implementation default */
    CSSM_NET_PROTO_LDAP = 3, /* light weight directory access protocol */
    CSSM_NET_PROTO_LDAPS = 4, /* ldap/ssl where SSL initiates the connection */
    CSSM_NET_PROTO_LDAPNS = 5, /* ldap where ldap negotiates an SSL session */
    CSSM_NET_PROTO_X500DAP = 6, /* x.500 Directory access protocol */
    CSSM_NET_PROTO_FTPDAP = 7, /* file transfer protocol for cert/crl fetch */
    CSSM_NET_PROTO_FTPDAPS = 8, /* ftp/ssl where SSL initiates the connection */
    CSSM_NET_PROTO_NDS = 9, /* Novell directory services */
    CSSM_NET_PROTO_OCSP = 10, /* online certificate status protocol */
    CSSM_NET_PROTO_PKIX3 = 11, /* the cert request protocol in PKIX3 */
    CSSM_NET_PROTO_PKIX3S = 12, /* The ssl/tls derivative of PKIX3 */
    CSSM_NET_PROTO_PKCS_HTTP = 13, /* PKCS client <=> CA protocol over HTTP */
    CSSM_NET_PROTO_PKCS_HTTPS = 14, /* PKCS client <=> CA protocol over HTTPS */
} CSSM_NET_PROTOCOL;

typedef struct cssm_dl_db_handle {
    CSSM_DL_HANDLE DLHandle;
    CSSM_DB_HANDLE DBHandle;
} CSSM_DL_DB_HANDLE, *CSSM_DL_DB_HANDLE_PTR;

typedef struct cssm_dl_db_list {
    uint32 NumHandles;
    CSSM_DL_DB_HANDLE_PTR DLDBHandle;
} CSSM_DL_DB_LIST, *CSSM_DL_DB_LIST_PTR;

/*  CSSM_DB_ATTRIBUTE_NAME_FORMAT  */ 
typedef enum cssm_db_attribute_name_format {
    CSSM_DB_ATTRIBUTE_NAME_AS_STRING = 0, 
    CSSM_DB_ATTRIBUTE_NAME_AS_OID = 1,
	CSSM_DB_ATTRIBUTE_NAME_AS_BLOB = 2
} CSSM_DB_ATTRIBUTE_NAME_FORMAT, *CSSM_DB_ATTRIBUTE_NAME_FORMAT_PTR;

typedef enum cssm_db_attribute_format {
    CSSM_DB_ATTRIBUTE_FORMAT_STRING = 0,
    CSSM_DB_ATTRIBUTE_FORMAT_INTEGER = 1,
    CSSM_DB_ATTRIBUTE_FORMAT_REAL = 2,
    CSSM_DB_ATTRIBUTE_FORMAT_TIME = 3,
    CSSM_DB_ATTRIBUTE_FORMAT_MONEY = 4,
    CSSM_DB_ATTRIBUTE_FORMAT_BLOB = 5,
} CSSM_DB_ATTRIBUTE_FORMAT, *CSSM_DB_ATTRIBUTE_FORMAT_PTR;

/*  CSSM_DB_ATTRIBUTE_INFO  */
typedef struct cssm_db_attribute_info {
    CSSM_DB_ATTRIBUTE_NAME_FORMAT AttributeNameFormat; 
    union cssm_db_attribute_label {
		CSSM_DATA Name;
        char * AttributeName;             /* eg. "record label" */
        CSSM_OID AttributeID;             /* eg. CSSMOID_RECORDLABEL */
	} Label;
	CSSM_DB_ATTRIBUTE_FORMAT AttributeFormat;
} CSSM_DB_ATTRIBUTE_INFO, *CSSM_DB_ATTRIBUTE_INFO_PTR;

/*  CSSM_DB_ATTRIBUTE_DATA  */
typedef struct cssm_db_attribute_data {
    CSSM_DB_ATTRIBUTE_INFO Info; 
    CSSM_DATA Value;
} CSSM_DB_ATTRIBUTE_DATA, *CSSM_DB_ATTRIBUTE_DATA_PTR;


/*  *****  Record-related structures  *****  */

/*  CSSM_DB_RECORDTYPE  */
typedef enum cssm_db_recordtype {
    CSSM_DL_DB_RECORD_GENERIC = 0,
    CSSM_DL_DB_RECORD_CERT = 1,
    CSSM_DL_DB_RECORD_CRL = 2,
    CSSM_DL_DB_RECORD_KEY = 3,
    CSSM_DL_DB_RECORD_POLICY = 4
} CSSM_DB_RECORDTYPE;

/*  CSSM_DB_XXXRECORD_SEMANTICS  */
/* (XXX can be Cert, CRL, Policy, etc.)  */
/* It is expected that there will be certain semantic types associated
   with certs, CRLs, policies, etc.
   Each type is expected to have a bit mask which is capable of describing
   general information about how the record should be used.  CRL, KEY, 
   and POLICY semantic bit masks will be defined as needed .  */

/*  CSSM_DB_CERTRECORD_SEMANTICS  */
/*  Optional semantic information associated with certificate records.  */
#define CSSM_DB_CERT_USE_TRUSTED 0x00000001 /* application-defined as trusted */
#define CSSM_DB_CERT_USE_SYSTEM  0x00000002 /* the CSSM system cert */
#define CSSM_DB_CERT_USE_OWNER   0x00000004 /* private key owned by system user*/
#define CSSM_DB_CERT_USE_REVOKED 0x00000008 /* revoked cert - used w\ CRL APIs */
#define CSSM_DB_CERT_USE_SIGNING 0x00000010 /* use cert for signing only */ 
#define CSSM_DB_CERT_USE_PRIVACY 0x00000020 /* use cert for confidentiality only */

/*  CSSM_DB_RECORD_ATTRIBUTE_INFO  */
typedef struct cssm_db_record_attribute_info {
    CSSM_DB_RECORDTYPE DataRecordType;
    uint32 NumberOfAttributes; 
    CSSM_DB_ATTRIBUTE_INFO_PTR AttributeInfo;
} CSSM_DB_RECORD_ATTRIBUTE_INFO, *CSSM_DB_RECORD_ATTRIBUTE_INFO_PTR;

/*  CSSM_DB_RECORD_ATTRIBUTE_DATA  */
typedef struct cssm_db_record_attribute_data {
    CSSM_DB_RECORDTYPE DataRecordType;
    uint32 SemanticInformation; 
    uint32 NumberOfAttributes; 
    CSSM_DB_ATTRIBUTE_DATA_PTR AttributeData;
} CSSM_DB_RECORD_ATTRIBUTE_DATA, *CSSM_DB_RECORD_ATTRIBUTE_DATA_PTR;

/*  CSSM_DB_RECORD_PARSING_FUNCTION_TABLE  */ 
typedef struct cssm_db_record_parsing_fntable {
	CSSM_DATA_PTR (CSSMAPI *RecordGetFirstFieldValue) 
									(CSSM_HANDLE Handle,
									const CSSM_DATA_PTR Data,
									const CSSM_OID_PTR DataField,
									CSSM_HANDLE_PTR ResultsHandle,
									uint32 *NumberOfMatchedFields);
	CSSM_DATA_PTR (CSSMAPI *RecordGetNextFieldValue) 
									(CSSM_HANDLE Handle,
									CSSM_HANDLE ResultsHandle);
	CSSM_RETURN (CSSMAPI *RecordAbortQuery)
									(CSSM_HANDLE Handle,
									CSSM_HANDLE ResultsHandle);
} CSSM_DB_RECORD_PARSING_FNTABLE, *CSSM_DB_RECORD_PARSING_FNTABLE_PTR; 

/* CSSM_DB_PARSING_INFO */
typedef struct cssm_db_parsing_module_info {
    CSSM_DB_RECORDTYPE RecordType;
    CSSM_SUBSERVICE_UID ModuleSubserviceUid;
} CSSM_DB_PARSING_MODULE_INFO, *CSSM_DB_PARSING_MODULE_INFO_PTR;

/*  CSSM_DB_INDEX_TYPE  */
typedef enum cssm_db_index_type {
    CSSM_DB_INDEX_UNIQUE = 0,
    CSSM_DB_INDEX_NONUNIQUE = 1
} CSSM_DB_INDEX_TYPE;

/*  CSSM_DB_INDEXED_DATA_LOCATION  */ 
typedef enum cssm_db_indexed_data_location {
    CSSM_DB_INDEX_ON_UNKNOWN = 0,
    CSSM_DB_INDEX_ON_ATTRIBUTE = 1,
    CSSM_DB_INDEX_ON_RECORD = 2
} CSSM_DB_INDEXED_DATA_LOCATION;

/*  CSSM_DB_INDEX_INFO  */
typedef struct cssm_db_index_info {
    CSSM_DB_INDEX_TYPE IndexType; 
    CSSM_DB_INDEXED_DATA_LOCATION IndexedDataLocation; 
    CSSM_DB_ATTRIBUTE_INFO Info;
} CSSM_DB_INDEX_INFO, *CSSM_DB_INDEX_INFO_PTR;

/*  CSSM_DB_UNIQUE_RECORD  */
typedef struct cssm_db_unique_record {
    CSSM_DB_INDEX_INFO RecordLocator; 
    CSSM_DATA RecordIdentifier;
} CSSM_DB_UNIQUE_RECORD, *CSSM_DB_UNIQUE_RECORD_PTR;

/*  CSSM_DB_RECORD_INDEX_INFO  */
typedef struct cssm_db_record_indexinfo {
    CSSM_DB_RECORDTYPE DataRecordType; 
    uint32 NumberOfIndexes; 
    CSSM_DB_INDEX_INFO_PTR IndexInfo;
} CSSM_DB_RECORD_INDEX_INFO, *CSSM_DB_RECORD_INDEX_INFO_PTR;


/*  CSSM_DB_ACCESS_TYPE  */
typedef uint32 CSSM_DB_ACCESS_TYPE, *CSSM_DB_ACCESS_TYPE_PTR;

#define CSSM_DB_ACCESS_READ		0x00001
#define CSSM_DB_ACCESS_WRITE		0x00002
#define CSSM_DB_ACCESS_PRIVILEGED	0x00004		/* versus user mode */
#define CSSM_DB_ACCESS_ASYNCHRONOUS	0x00008		/* versus synchronous */

/*  CSSM_DBINFO  */
typedef struct cssm_dbInfo {
/* meta information about each record type stored in this data store 
   including meta information about record attributes and indexes */
    uint32 NumberOfRecordTypes;
    CSSM_DB_PARSING_MODULE_INFO_PTR DefaultParsingModules;
    CSSM_DB_RECORD_ATTRIBUTE_INFO_PTR RecordAttributeNames;
    CSSM_DB_RECORD_INDEX_INFO_PTR RecordIndexes;

    /* access restrictions for opening this data store */
    CSSM_USER_AUTHENTICATION_MECHANISM AuthenticationMechanism;

    /* transparent integrity checking options for this data store */
    CSSM_BOOL RecordSigningImplemented;
    CSSM_DATA SigningCertificate;
    CSSM_SUBSERVICE_UID SigningCspSubserviceUid;

    /* additional information */
    CSSM_BOOL IsLocal;
    char *AccessPath;           /* URL, dir path, etc */
    void *Reserved;
} CSSM_DBINFO, *CSSM_DBINFO_PTR;


/*  CSSM_DB_OPERATOR  */
typedef enum cssm_db_operator {
    CSSM_DB_EQUAL = 0,
    CSSM_DB_NOT_EQUAL = 1,
    CSSM_DB_APPROX_EQUAL = 2,
    CSSM_DB_LESS_THAN = 3,
    CSSM_DB_GREATER_THAN = 4,
    CSSM_DB_EQUALS_INITIAL_SUBSTRING = 5,
    CSSM_DB_EQUALS_ANY_SUBSTRING = 6,
    CSSM_DB_EQUALS_FINAL_SUBSTRING = 7,
    CSSM_DB_EXISTS = 8
} CSSM_DB_OPERATOR, *CSSM_DB_OPERATOR_PTR;

/*  CSSM_DB_CONJUNCTIVE  */
typedef enum cssm_db_conjunctive{
    CSSM_DB_NONE = 0,
    CSSM_DB_AND = 1,
    CSSM_DB_OR = 2
} CSSM_DB_CONJUNCTIVE, *CSSM_DB_CONJUNCTIVE_PTR;

/* CSSM_SELECTION_PREDICATE  */
typedef struct cssm_selection_predicate {
    CSSM_DB_OPERATOR DbOperator;
    CSSM_DB_ATTRIBUTE_DATA Attribute;
} CSSM_SELECTION_PREDICATE, *CSSM_SELECTION_PREDICATE_PTR;

#define CSSM_QUERY_TIMELIMIT_NONE   0
#define CSSM_QUERY_SIZELIMIT_NONE   0

/*  CSSM_QUERY_LIMITS  */
typedef struct cssm_query_limits {
    uint32 TimeLimit;         /* in seconds */
    uint32 SizeLimit;         /* max. number of records to return */
} CSSM_QUERY_LIMITS, *CSSM_QUERY_LIMITS_PTR;

typedef uint32 CSSM_QUERY_FLAGS;

#define CSSM_QUERY_RETURN_DATA  0x1  /* On = Output in common data format
                                        Off = Output in DL native format */

/*  CSSM_QUERY  */
typedef struct cssm_query {
    CSSM_DB_RECORDTYPE RecordType;
    CSSM_DB_CONJUNCTIVE Conjunctive;
    uint32 NumSelectionPredicates;
    CSSM_SELECTION_PREDICATE_PTR SelectionPredicate;
    CSSM_QUERY_LIMITS QueryLimits;
    CSSM_QUERY_FLAGS QueryFlags;
} CSSM_QUERY, *CSSM_QUERY_PTR;

/*  CSSM_DLTYPE  */
typedef enum cssm_dltype {

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?