📄 ospasn1.h
字号:
/**########################################################################*########################################################################*########################################################################* * COPYRIGHT (c) 1998, 1999 by TransNexus, LLC * * This software contains proprietary and confidential information * of TransNexus, LLC. Except as may be set forth in the license * agreement under which this software is supplied, use, disclosure, * or reproduction is prohibited without the prior, express, written* consent of TransNexus, LLC. * *******#########################################################################*#########################################################################*#########################################################################*//* * ospasn1.h - Constants and typedefs for ASN.1 */#ifndef _OSP_ASN1_H#define _OSP_ASN1_H#include "osp.h"#include "ospasn1ids.h"#define OSPC_ASN1_SIGNERINFO_VERSION 1/* ASN1 ENCODED DATA KNOWN TO THE PARSER THAT GETS ACCESSED */#define OSPC_ASN1_DATAREFID_CERTIFICATE 0x01#define OSPC_ASN1_DATAREFID_CERT_TBSCERTIFICATE 0x01#define OSPC_ASN1_DATAREFID_CERT_EXPLICIT_VERSION 0x01#define OSPC_ASN1_DATAREFID_CERT_VERSION 0x01#define OSPC_ASN1_DATAREFID_CERT_SERIALNUMBER 0x02#define OSPC_ASN1_DATAREFID_CERT_SIGNATURE_TBS 0x03#define OSPC_ASN1_DATAREFID_CERT_ISSUER 0x04#define OSPC_ASN1_DATAREFID_CERT_VALIDITY 0x05#define OSPC_ASN1_DATAREFID_CERT_NOTBEFORE 0x01#define OSPC_ASN1_DATAREFID_CERT_NOTAFTER 0x02#define OSPC_ASN1_DATAREFID_CERT_SUBJECT 0x06#define OSPC_ASN1_DATAREFID_CERT_SUBJPUBKEYINFO 0x07#define OSPC_ASN1_DATAREFID_CERT_PUBLICKEYALG 0x01#define OSPC_ASN1_DATAREFID_CERT_PUBLICKEY 0x02#define OSPC_ASN1_DATAREFID_CERT_ISSUERUNIQUEID 0x08#define OSPC_ASN1_DATAREFID_CERT_SUBJECTUNIQUEID 0x09#define OSPC_ASN1_DATAREFID_CERT_EXPLICIT_EXTENSIONS 0x0a#define OSPC_ASN1_DATAREFID_CERT_EXTENSIONS 0x01#define OSPC_ASN1_DATAREFID_CERT_EXTENSION 0x01#define OSPC_ASN1_DATAREFID_CERT_SIGNATUREALGORITHM 0x02#define OSPC_ASN1_DATAREFID_CERT_SIGNATURE 0x03/* ASN1 ENCODED CONTENT INFO ELEMENT */#define OSPC_ASN1_DATAREFID_CONTENTINFO 0x02#define OSPC_ASN1_DATAREFID_CNTINF_CONTENTTYPE 0x01#define OSPC_ASN1_DATAREFID_CNTINF_EXPLICIT_CONTENT 0x02#define OSPC_ASN1_DATAREFID_CNTINF_CONTENT 0x01/* ASN1 ENCODED SIGNED DATA ELEMENTS */#define OSPC_ASN1_DATAREFID_SIGNEDDATA 0x03#define OSPC_ASN1_DATAREFID_SGNDAT_VERSION 0x01#define OSPC_ASN1_DATAREFID_SGNDAT_DIGESTALGORITHMS 0x02#define OSPC_ASN1_DATAREFID_SGNDAT_DIGESTALGORITHM 0x01#define OSPC_ASN1_DATAREFID_SGNDAT_CONTENTINFO 0x03#define OSPC_ASN1_DATAREFID_SGNDAT_CERTIFICATES 0x04#define OSPC_ASN1_DATAREFID_SGNDAT_CERTIFICATE 0x01#define OSPC_ASN1_DATAREFID_SGNDAT_CERTREVLISTS 0x05#define OSPC_ASN1_DATAREFID_SGNDAT_CERTREVLIST 0x01#define OSPC_ASN1_DATAREFID_SGNDAT_SIGNERINFOS 0x06#define OSPC_ASN1_DATAREFID_SGNDAT_SIGNERINFO 0x01/* ASN1 ENCODED SIGNER INFO ELEMENTS */ #define OSPC_ASN1_DATAREFID_SIGNERINFO 0x04#define OSPC_ASN1_DATAREFID_SGNINF_VERSION 0x01#define OSPC_ASN1_DATAREFID_SGNINF_ISSUERANDSERNUM 0x02 #define OSPC_ASN1_DATAREFID_SGNINF_ISSUER 0x01#define OSPC_ASN1_DATAREFID_SGNINF_SERIALNUMBER 0x02#define OSPC_ASN1_DATAREFID_SGNINF_DIGESTALGORITHM 0x03#define OSPC_ASN1_DATAREFID_SGNINF_AUTHATTRIBUTES 0x04#define OSPC_ASN1_DATAREFID_SGNINF_AUTHATTRIBUTE 0x01#define OSPC_ASN1_DATAREFID_SGNINF_DIGENCRYPTALG 0x05#define OSPC_ASN1_DATAREFID_SGNINF_ENCRYPTEDDIGEST 0x06#define OSPC_ASN1_DATAREFID_SGNINF_UNAUTHATTRIBUTES 0x07#define OSPC_ASN1_DATAREFID_SGNINF_UNAUTHATTRIBUTE 0x01/* ASN1 ENCODED SIGNER INFO ELEMENTS */ #define OSPC_ASN1_DATAREFID_DIGESTINFO 0x05#define OSPC_ASN1_DATAREFID_DIGINF_DIGESTALGORITHM 0x01#define OSPC_ASN1_DATAREFID_DIGINF_DIGEST 0x02 /* ASN1 ENCODED ALGORITHM ID ELEMENTS */#define OSPC_ASN1_DATAREFID_ALGORITHMID 0x06#define OSPC_ASN1_DATAREFID_ALGID_OID 0x01#define OSPC_ASN1_DATAREFID_ALGID_ATTRTYPEANDVAL 0x02#define OSPC_ASN1_DATAREFID_ALGID_TERMINATOR 0x03/* ASN1 ENCODED PRIVATE KEY INFO ELEMENTS */#define OSPC_ASN1_DATAREFID_PRIVATEKEYINFO 0x07#define OSPC_ASN1_DATAREFID_PVTKEYINF_VERSION 0x01#define OSPC_ASN1_DATAREFID_PVTKEYINF_ALGORITHM 0x02#define OSPC_ASN1_DATAREFID_PVTKEYINF_PRIVATEKEY 0x03#define OSPC_ASN1_DATAREFID_PVTKEYINF_ATTRIBUTES 0x04#define OSPC_ASN1_DATAREFID_PVTKEYINF_ATTRIBUTE 0x01/* These are defined for parsing a PKCS#10 certificate request. * A certificate request contains a CertificateRequestInfo structure * ( with the version, subject, public key, and optional attributes ) and * a signature. */#define OSPC_ASN1_DATAREFID_CERTREQ 0x01#define OSPC_ASN1_DATAREFID_CERTREQINFO 0x01#define OSPC_ASN1_DATAREFID_CERTREQINFO_VERSION 0x01#define OSPC_ASN1_DATAREFID_CERTREQINFO_SUBJECT 0x02#define OSPC_ASN1_DATAREFID_CERTREQINFO_SUBJPUBKEYINFO 0x03#define OSPC_ASN1_DATAREFID_CERTREQINFO_ATTRIBUTES 0x04#define OSPC_ASN1_DATAREFID_CERTREQ_SIGNATURE_ALGORITHM 0x02#define OSPC_ASN1_DATAREFID_CERTREQ_SIGNATURE 0x03/* The definition for a subjectPublicKeyInfo is separate from * that of those for the PKCS#10 certificate request and X.509 certificates. */#define OSPC_ASN1_DATAREFID_SUBJPUBKEYINFO 0x01/* NOTE: THE OSPEASN1PARSETABLEID enum list must stay in sync with ospgParseTableIndex[]. The enum values are the index into the ParseTableIndex for the parse table array.*/ typedef enum _OSPEASN1PARSETABLEID{ /* DO NOT CHANGE THIS TABLE WITHOUT UPDATING THE POSITIONS OF THE PARSE TABLES IN ospgParseTableIndex */ OSPEPTID_NOTDEFINED=0, OSPEPTID_CERTIFICATE, OSPEPTID_TBSCERTIFICATE, OSPEPTID_SIGNATUREALGORITHM, OSPEPTID_DERALGORITHMID, OSPEPTID_EXPLICIT_VERSION, OSPEPTID_VERSION, OSPEPTID_CERTSERIALNUM, OSPEPTID_NAME, OSPEPTID_RDNSEQUENCE, OSPEPTID_RELDISNAME, OSPEPTID_ATTRTYPEANDVAL, OSPEPTID_ATTRIBUTETYPE, OSPEPTID_ATTRIBUTEVALUE, OSPEPTID_VALIDITY, OSPEPTID_TIME, OSPEPTID_UTCTIME, OSPEPTID_SUBJPUBKEYINFO, OSPEPTID_ISSUERUNIQUEID, OSPEPTID_SUBJECTUNIQUEID, OSPEPTID_UNIQUEID, OSPEPTID_EXPLICIT_EXTENSIONS, OSPEPTID_EXTENSIONS, OSPEPTID_EXTENSION, OSPEPTID_CONTENTINFO_DATA, OSPEPTID_EXPLICIT_DATA, OSPEPTID_DATA, OSPEPTID_CONTENTINFO_SIGNEDDATA, OSPEPTID_EXPLICIT_SIGNEDDATA, OSPEPTID_SIGNEDDATA, OSPEPTID_DIGESTALGORITHMS, OSPEPTID_CERTIFICATES, OSPEPTID_CERTREVLISTS, OSPEPTID_CERTREVLIST, OSPEPTID_SIGNERINFOS, OSPEPTID_SIGNERINFO, OSPEPTID_ENCRYPTEDDIGEST, OSPEPTID_AUTHATTRIBUTES, OSPEPTID_UNAUTHATTRIBUTES, OSPEPTID_ISSUERANDSERNUM, OSPEPTID_DIGESTINFO, OSPEPTID_ALGORITHMID, OSPEPTID_PRIVATEKEYINFO, OSPEPTID_PRIVATEKEYINFO_ATTRIBUTES, /* These were added for parsing the certificate requests used for * enrolling devices; they represent the same entities described * in PKCS#10: */ OSPEPTID_CERTREQ, OSPEPTID_CERTREQINFO, OSPEPTID_LAST_PTID} OSPEASN1PARSETABLEID;typedef enum _OSPEASN1DATAREFID{ /* CERTIFICATE ELEMENTS THAT GET ASKED FOR */ OSPEDRID_CERTIFICATE, OSPEDRID_CERT_TBSCERTIFICATE, OSPEDRID_CERT_SIGNATUREALGORITHM, OSPEDRID_CERT_SIGNATURE, OSPEDRID_CERT_EXPLICIT_VERSION, OSPEDRID_CERT_VERSION, OSPEDRID_CERT_SERIALNUMBER, OSPEDRID_CERT_SIGNATURE_TBS, OSPEDRID_CERT_ISSUER, OSPEDRID_CERT_NOTBEFORE, OSPEDRID_CERT_NOTAFTER, OSPEDRID_CERT_SUBJECT, OSPEDRID_CERT_SUBJPUBKEYINFO, OSPEDRID_CERT_PUBLICKEYALG, OSPEDRID_CERT_PUBLICKEY, OSPEDRID_CERT_ISSUERUNIQUEID, OSPEDRID_CERT_SUBJECTUNIQUEID, OSPEDRID_CERT_EXPLICIT_EXTENSIONS, OSPEDRID_CERT_EXTENSIONS, OSPEDRID_CERT_EXTENSION, /* SIGNED DATA ELEMENTS THAT GET ASKED FOR */ OSPEDRID_SIGNEDDATA, OSPEDRID_SGNDAT_VERSION, OSPEDRID_SGNDAT_DIGESTALGORITHMS, OSPEDRID_SGNDAT_DIGESTALGORITHM, OSPEDRID_SGNDAT_CONTENTINFO, OSPEDRID_SGNDAT_CERTIFICATES, OSPEDRID_SGNDAT_CERTIFICATE, OSPEDRID_SGNDAT_CERTIFICATE_SUBJPUBKEYINFO, OSPEDRID_SGNDAT_CERTREVLISTS, OSPEDRID_SGNDAT_CERTREVLIST, OSPEDRID_SGNDAT_SIGNERINFOS, OSPEDRID_SGNDAT_SIGNERINFO, /* SIGNED INFO DATA ELEMENTS */ OSPEDRID_SIGNERINFO, OSPEDRID_SGNINF_VERSION, OSPEDRID_SGNINF_ISSUER , OSPEDRID_SGNINF_SERIALNUMBER, OSPEDRID_SGNINF_DIGESTALGORITHM , OSPEDRID_SGNINF_AUTHATTRIBUTES, OSPEDRID_SGNINF_DIGENCRYPTALG , OSPEDRID_SGNINF_ENCRYPTEDDIGEST , OSPEDRID_SGNINF_UNAUTHATTRIBUTES , /* CONTENT INFO DATA ELEMENTS */ OSPEDRID_CONTENTINFO, OSPEDRID_CNTINF_CONTENTTYPE, OSPEDRID_CNTINF_EXPLICIT_CONTENT, OSPEDRID_CNTINF_CONTENT, /* DIGEST INFO DATA ELEMENTS */ OSPEDRID_DIGESTINFO, OSPEDRID_DIGINF_DIGESTALGORITHM, OSPEDRID_DIGINF_DIGEST, /* ALGORITHM ID DATA ELEMENTS */ OSPEDRID_ALGORITHMID, OSPEDRID_ALGID_OID, OSPEDRID_ALGID_ATTRIBUTES, OSPEDRID_ALGID_TERMINATOR, /* PRIVATEKEYINFO DATA ELEMENTS */ OSPEDRID_PRIVATEKEYINFO, OSPEDRID_PVTKEYINF_VERSION, OSPEDRID_PVTKEYINF_ALGORITHM, OSPEDRID_PVTKEYINF_PRIVATEKEY, OSPEDRID_PVTKEYINF_ATTRIBUTES, OSPEDRID_PVTKEYINF_ATTRIBUTE, OSPEDRID_SIGNATURE, OSPEDRID_SIG_CONTENTTYPE, OSPEDRID_SIG_SIGNEDDATA, OSPEDRID_SIG_SGNDAT_VERSION, OSPEDRID_SIG_SGNDAT_DIGESTALGORITHM, OSPEDRID_SIG_SGNDAT_DATA, OSPEDRID_SIG_SGNDAT_CERTIFICATE, OSPEDRID_SIG_SGNDAT_CERTIFICATE_SUBJPUBKEYINFO, OSPEDRID_SIG_SGNDAT_CERTREVLIST, OSPEDRID_SIG_SGNDAT_SIGNERINFO, OSPEDRID_SIG_SGNDAT_SGNINF_DIGESTALGORITHM, OSPEDRID_SIG_SGNDAT_SGNINF_DIGENCRYPTALG, OSPEDRID_SIG_SGNDAT_SGNINF_ENCRYPTEDDIGEST, /* These are defined for parsing certificate requests; all possible * elements of a certificate request ( with the exception of the possible * values of the optional attributes list, which is unknown at compile * time anyway ) is given here. This listing is based off of PKCS#10. */ OSPEDRID_CERTREQ, OSPEDRID_CERTREQINFO, OSPEDRID_CERTREQINFO_VERSION, OSPEDRID_CERTREQINFO_SUBJECT, OSPEDRID_CERTREQINFO_SUBJPUBKEYINFO, OSPEDRID_CERTREQINFO_ATTRIBUTES, OSPEDRID_CERTREQ_SIGNATUREALGID, OSPEDRID_CERTREQ_SIGNATURE, OSPEDRID_NOTDEFINED, OSPEDRID_LAST_DRID} OSPEASN1DATAREFID;typedef struct _OSPTASN1ELEMENTINFO { unsigned char Tag; /* ASN1 Data Type Tag Number */ unsigned char *Element; /* Pointer to beginning of encoded data for this element.*/ unsigned int ElementLength; /* Length of data pointed to by Element above */ unsigned int ElementSpaceAllocated; /* Space for element and possibly for children is allocated by this element and must be deleted when this element is deleted (after child elements are deleted of course) */ unsigned char *Content; /* Pointer to encoded content data that defines this element */ unsigned int ContentLength; /* Length of data pointed to by Content above */ struct _OSPTASN1ELEMENTINFO *ContentElementInfo; /* "child" element - points to this element's component elements - constructed elements only.*/ struct _OSPTASN1ELEMENTINFO *NextElementInfo; /* Pointer to next peer element */} OSPTASN1ELEMENTINFO;#define OSPC_ASN1_DATAREF_MAXLENGTH 30 typedef struct _OSPTASN1PARSERESULT{ unsigned char DataReference[OSPC_ASN1_DATAREF_MAXLENGTH]; struct _OSPTASN1PARSERESULT *NextResult; OSPTASN1ELEMENTINFO *ElementInfo;} OSPTASN1PARSERESULT;typedef struct _OSPASN1OBJECT{ OSPTASN1ELEMENTINFO *ElementInfo; OSPTASN1PARSERESULT *ParseResults;} OSPTASN1OBJECT;typedef struct _OSPTASN1PARSERULE{ char *Name; unsigned char Tag; /* ASN1 Type Tag that the current element must match. If the Tag is 0xFF, then this rule is a content rule and directs the parser to a differnt parse table to continue parsing. Tag. */ OSPEASN1PARSETABLEID ParseTableId; /* Enum identifier the parse table that describes this elements contents. Only used for elements whose Tag is 0xFF indicating that the element is constructed.*/ unsigned char DataReference; /* Reference for this rule data in the Result's table. */ unsigned int MinimumCount; /* Minimum number of occurances of this item that are allowed. If the data element is optional, then Minimum occurances will be 0 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -