tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

crmft.h (5457B)


      1 /* -*- Mode: C; tab-width: 8 -*-*/
      2 /* This Source Code Form is subject to the terms of the Mozilla Public
      3 * License, v. 2.0. If a copy of the MPL was not distributed with this
      4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      5 
      6 /* Header file with all of the structures and types that will be exported
      7 * by the security library for implementation of CRMF.
      8 */
      9 
     10 #ifndef _CRMFT_H_
     11 #define _CRMFT_H_
     12 
     13 /* Use these enumerated values for adding fields to the certificate request */
     14 typedef enum {
     15    crmfVersion = 0,
     16    crmfSerialNumber = 1,
     17    crmfSigningAlg = 2,
     18    crmfIssuer = 3,
     19    crmfValidity = 4,
     20    crmfSubject = 5,
     21    crmfPublicKey = 6,
     22    crmfIssuerUID = 7,
     23    crmfSubjectUID = 8,
     24    crmfExtension = 9
     25 } CRMFCertTemplateField;
     26 
     27 /*
     28 * An enumeration for the different types of controls.
     29 */
     30 typedef enum {
     31    crmfNoControl = 0,
     32    crmfRegTokenControl = 1,
     33    crmfAuthenticatorControl = 2,
     34    crmfPKIPublicationInfoControl = 3,
     35    crmfPKIArchiveOptionsControl = 4,
     36    crmfOldCertIDControl = 5,
     37    crmfProtocolEncrKeyControl = 6
     38 } CRMFControlType;
     39 
     40 /*
     41 * The possible values that are passed into CRMF_CreatePKIPublicationInfo
     42 */
     43 typedef enum {
     44    crmfDontPublish = 0,
     45    crmfPleasePublish = 1
     46 } CRMFPublicationAction;
     47 
     48 /*
     49 * An enumeration for the possible for pubMethod which is a part of
     50 * the SinglePubInfo ASN1 type.
     51 */
     52 typedef enum {
     53    crmfDontCare = 0,
     54    crmfX500 = 1,
     55    crmfWeb = 2,
     56    crmfLdap = 3
     57 } CRMFPublicationMethod;
     58 
     59 /*
     60 * An enumeration for the different options for PKIArchiveOptions type.
     61 */
     62 typedef enum {
     63    crmfNoArchiveOptions = 0,
     64    crmfEncryptedPrivateKey = 1,
     65    crmfKeyGenParameters = 2,
     66    crmfArchiveRemGenPrivKey = 3
     67 } CRMFPKIArchiveOptionsType;
     68 
     69 /*
     70 * An enumeration for the different options for ProofOfPossession
     71 */
     72 typedef enum {
     73    crmfNoPOPChoice = 0,
     74    crmfRAVerified = 1,
     75    crmfSignature = 2,
     76    crmfKeyEncipherment = 3,
     77    crmfKeyAgreement = 4
     78 } CRMFPOPChoice;
     79 
     80 /*
     81 * An enumertion type for options for the authInfo field of the
     82 * CRMFPOPOSigningKeyInput structure.
     83 */
     84 typedef enum {
     85    crmfSender = 0,
     86    crmfPublicKeyMAC = 1
     87 } CRMFPOPOSkiInputAuthChoice;
     88 
     89 /*
     90 * An enumeration for the SubsequentMessage Options.
     91 */
     92 typedef enum {
     93    crmfNoSubseqMess = 0,
     94    crmfEncrCert = 1,
     95    crmfChallengeResp = 2
     96 } CRMFSubseqMessOptions;
     97 
     98 /*
     99 * An enumeration for the choice used by POPOPrivKey.
    100 */
    101 typedef enum {
    102    crmfNoMessage = 0,
    103    crmfThisMessage = 1,
    104    crmfSubsequentMessage = 2,
    105    crmfDHMAC = 3
    106 } CRMFPOPOPrivKeyChoice;
    107 
    108 /*
    109 * An enumeration for the choices for the EncryptedKey type.
    110 */
    111 typedef enum {
    112    crmfNoEncryptedKeyChoice = 0,
    113    crmfEncryptedValueChoice = 1,
    114    crmfEnvelopedDataChoice = 2
    115 } CRMFEncryptedKeyChoice;
    116 
    117 /*
    118 * TYPE: CRMFEncoderOutputCallback
    119 *     This function type defines a prototype for a function that the CRMF
    120 *     library expects when encoding is performed.
    121 *
    122 * ARGUMENTS:
    123 *     arg
    124 *         This will be a pointer the user passed into an encoding function.
    125 *         The user of the library is free to use this pointer in any way.
    126 *         The most common use is to keep around a buffer for writing out
    127 *         the DER encoded bytes.
    128 *     buf
    129 *         The DER encoded bytes that should be written out.
    130 *     len
    131 *         The number of DER encoded bytes to write out.
    132 *
    133 */
    134 typedef void (*CRMFEncoderOutputCallback)(void *arg,
    135                                          const char *buf,
    136                                          unsigned long len);
    137 
    138 /*
    139 * Type for the function that gets a password.  Just in case we ever
    140 * need to support publicKeyMAC for POPOSigningKeyInput
    141 */
    142 typedef SECItem *(*CRMFMACPasswordCallback)(void *arg);
    143 
    144 typedef struct CRMFOptionalValidityStr CRMFOptionalValidity;
    145 typedef struct CRMFValidityCreationInfoStr CRMFGetValidity;
    146 typedef struct CRMFCertTemplateStr CRMFCertTemplate;
    147 typedef struct CRMFCertRequestStr CRMFCertRequest;
    148 typedef struct CRMFCertReqMsgStr CRMFCertReqMsg;
    149 typedef struct CRMFCertReqMessagesStr CRMFCertReqMessages;
    150 typedef struct CRMFProofOfPossessionStr CRMFProofOfPossession;
    151 typedef struct CRMFPOPOSigningKeyStr CRMFPOPOSigningKey;
    152 typedef struct CRMFPOPOSigningKeyInputStr CRMFPOPOSigningKeyInput;
    153 typedef struct CRMFPOPOPrivKeyStr CRMFPOPOPrivKey;
    154 typedef struct CRMFPKIPublicationInfoStr CRMFPKIPublicationInfo;
    155 typedef struct CRMFSinglePubInfoStr CRMFSinglePubInfo;
    156 typedef struct CRMFPKIArchiveOptionsStr CRMFPKIArchiveOptions;
    157 typedef struct CRMFEncryptedKeyStr CRMFEncryptedKey;
    158 typedef struct CRMFEncryptedValueStr CRMFEncryptedValue;
    159 typedef struct CRMFCertIDStr CRMFCertID;
    160 typedef struct CRMFCertIDStr CRMFOldCertID;
    161 typedef CERTSubjectPublicKeyInfo CRMFProtocolEncrKey;
    162 typedef struct CRMFValidityCreationInfoStr CRMFValidityCreationInfo;
    163 typedef struct CRMFCertExtCreationInfoStr CRMFCertExtCreationInfo;
    164 typedef struct CRMFPKMACValueStr CRMFPKMACValue;
    165 typedef struct CRMFAttributeStr CRMFAttribute;
    166 typedef struct CRMFControlStr CRMFControl;
    167 typedef CERTGeneralName CRMFGeneralName;
    168 typedef struct CRMFCertExtensionStr CRMFCertExtension;
    169 
    170 struct CRMFValidityCreationInfoStr {
    171    PRTime *notBefore;
    172    PRTime *notAfter;
    173 };
    174 
    175 struct CRMFCertExtCreationInfoStr {
    176    CRMFCertExtension **extensions;
    177    int numExtensions;
    178 };
    179 
    180 /*
    181 * Some ASN1 Templates that may be needed.
    182 */
    183 extern const SEC_ASN1Template CRMFCertReqMessagesTemplate[];
    184 extern const SEC_ASN1Template CRMFCertRequestTemplate[];
    185 
    186 #endif /*_CRMFT_H_*/