crmfit.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. #ifndef _CRMFIT_H_
  35. #define _CRMFIT_H_
  36. struct CRMFCertReqMessagesStr {
  37.     CRMFCertReqMsg **messages;
  38.     PRArenaPool     *poolp;
  39. };
  40. struct CRMFCertExtensionStr {
  41.     SECItem id;
  42.     SECItem critical;
  43.     SECItem value;
  44. };
  45. struct CRMFOptionalValidityStr {
  46.     SECItem notBefore; 
  47.     SECItem notAfter;
  48. };
  49. struct CRMFCertTemplateStr {
  50.     SECItem                   version;
  51.     SECItem                   serialNumber;
  52.     SECAlgorithmID           *signingAlg;
  53.     CERTName                 *issuer;
  54.     CRMFOptionalValidity     *validity;
  55.     CERTName                 *subject;
  56.     CERTSubjectPublicKeyInfo *publicKey;
  57.     SECItem                   issuerUID;
  58.     SECItem                   subjectUID; 
  59.     CRMFCertExtension       **extensions;
  60.     int                       numExtensions;
  61. };
  62. struct CRMFCertIDStr {
  63.     SECItem issuer; /* General Name */
  64.     SECItem serialNumber; /*INTEGER*/
  65. };
  66. struct CRMFEncryptedValueStr {
  67.     SECAlgorithmID *intendedAlg;
  68.     SECAlgorithmID *symmAlg;
  69.     SECItem         encSymmKey; /*BIT STRING   */
  70.     SECAlgorithmID *keyAlg;
  71.     SECItem         valueHint;  /*OCTET STRING */
  72.     SECItem         encValue;   /*BIT STRING   */
  73. };
  74. /*
  75.  * The field derValue will contain the actual der
  76.  * to include in the encoding or that was read in
  77.  * from a der blob. 
  78.  */
  79. struct CRMFEncryptedKeyStr {
  80.     union {
  81.         SEC_PKCS7ContentInfo   *envelopedData;
  82.         CRMFEncryptedValue      encryptedValue; 
  83.     } value;
  84.     CRMFEncryptedKeyChoice encKeyChoice;
  85.     SECItem derValue;
  86. };
  87. /* ASN1 must only have one of the following 3 options. */
  88. struct CRMFPKIArchiveOptionsStr {
  89.     union {
  90.         CRMFEncryptedKey  encryptedKey;
  91.         SECItem           keyGenParameters;
  92.         SECItem           archiveRemGenPrivKey; /* BOOLEAN */
  93.     } option;
  94.     CRMFPKIArchiveOptionsType archOption;
  95. };
  96. struct CRMFPKIPublicationInfoStr {
  97.     SECItem action; /* Possible values                    */
  98.                     /* dontPublish (0), pleasePublish (1) */
  99.     CRMFSinglePubInfo **pubInfos; 
  100. };
  101. struct CRMFControlStr {
  102.     SECOidTag  tag;
  103.     SECItem    derTag;
  104.     SECItem    derValue;
  105.     /* These will be C structures used to represent the various 
  106.      * options.  Values that can't be stored as der right away.
  107.      * After creating these structures, we'll place their der
  108.      * encoding in derValue so the encoder knows how to get to
  109.      * it.
  110.      */
  111.     union {
  112.         CRMFCertID              oldCertId;
  113.         CRMFPKIArchiveOptions   archiveOptions;
  114.         CRMFPKIPublicationInfo  pubInfo;
  115.         CRMFProtocolEncrKey     protEncrKey; 
  116.     } value;
  117. };
  118. struct CRMFCertRequestStr {
  119.     SECItem            certReqId;
  120.     CRMFCertTemplate   certTemplate;
  121.     CRMFControl      **controls;
  122.     /* The following members are used by the internal implementation, but
  123.      * are not part of the encoding.
  124.      */
  125.     PRArenaPool *poolp;
  126.     long         requestID; /* This is the value that will be encoded into
  127.      * the certReqId field.
  128.      */
  129. };                                   
  130. struct CRMFAttributeStr {
  131.     SECItem derTag;
  132.     SECItem derValue;
  133. };
  134. struct CRMFCertReqMsgStr {
  135.     CRMFCertRequest            *certReq;
  136.     CRMFProofOfPossession      *pop;
  137.     CRMFAttribute             **regInfo;
  138.     SECItem                     derPOP;
  139.     /* This arena will be used for allocating memory when decoding.
  140.      */
  141.     PRArenaPool *poolp;
  142.     PRBool       isDecoded;
  143. };
  144. struct CRMFPOPOSigningKeyInputStr {
  145.     /* ASN1 must have only one of the next 2 options */
  146.     union {
  147.         SECItem          sender; /*General Name*/
  148.         CRMFPKMACValue  *publicKeyMAC;
  149.     }authInfo;
  150.     CERTSubjectPublicKeyInfo publicKey;
  151. };
  152. struct CRMFPOPOSigningKeyStr {
  153.     SECItem                  derInput; /*If in the future we support 
  154.                                         *POPOSigningKeyInput, this will
  155.                                         *a C structure representation
  156.                                         *instead.
  157.                                         */
  158.     SECAlgorithmID          *algorithmIdentifier;
  159.     SECItem                  signature; /* This is a BIT STRING. Remember */
  160. };                                      /* that when interpreting.        */
  161. /* ASN1 must only choose one of these members */
  162. struct CRMFPOPOPrivKeyStr {
  163.     union {
  164.         SECItem thisMessage; /* BIT STRING */
  165.         SECItem subsequentMessage; /*INTEGER*/ 
  166.         SECItem dhMAC; /*BIT STRING*/
  167.     } message;
  168.     CRMFPOPOPrivKeyChoice messageChoice;
  169. };
  170. /* ASN1 must only have one of these options. */
  171. struct CRMFProofOfPossessionStr {
  172.     union {
  173.         SECItem             raVerified;
  174.         CRMFPOPOSigningKey  signature;
  175.         CRMFPOPOPrivKey     keyEncipherment;
  176.         CRMFPOPOPrivKey     keyAgreement;
  177.     } popChoice;
  178.     CRMFPOPChoice       popUsed; /*Not part of encoding*/
  179. };
  180. struct CRMFPKMACValueStr {
  181.     SECAlgorithmID algID;
  182.     SECItem        value; /*BIT STRING*/
  183. };
  184. struct CRMFSinglePubInfoStr {
  185.     SECItem pubMethod; /* Possible Values:
  186. *   dontCare (0)
  187. *   x500     (1)
  188. *   web      (2)
  189. *   ldap     (3)
  190. */
  191.     CERTGeneralName *pubLocation; /* General Name */
  192. };
  193. #endif /* _CRMFIT_H_ */