crmft.h
上传用户:lyxiangda
上传日期:2007-01-12
资源大小:3042k
文件大小:7k
源码类别:

CA认证

开发平台:

WINDOWS

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