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

CA认证

开发平台:

WINDOWS

  1. /*
  2.  * The contents of this file are subject to the Mozilla Public
  3.  * License Version 1.1 (the "License"); you may not use this file
  4.  * except in compliance with the License. You may obtain a copy of
  5.  * the License at http://www.mozilla.org/MPL/
  6.  * 
  7.  * Software distributed under the License is distributed on an "AS
  8.  * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  9.  * implied. See the License for the specific language governing
  10.  * rights and limitations under the License.
  11.  * 
  12.  * The Original Code is the Netscape security libraries.
  13.  * 
  14.  * The Initial Developer of the Original Code is Netscape
  15.  * Communications Corporation.  Portions created by Netscape are 
  16.  * Copyright (C) 1994-2000 Netscape Communications Corporation.  All
  17.  * Rights Reserved.
  18.  * 
  19.  * Contributor(s):
  20.  * 
  21.  * Alternatively, the contents of this file may be used under the
  22.  * terms of the GNU General Public License Version 2 or later (the
  23.  * "GPL"), in which case the provisions of the GPL are applicable 
  24.  * instead of those above.  If you wish to allow use of your 
  25.  * version of this file only under the terms of the GPL and not to
  26.  * allow others to use your version of this file under the MPL,
  27.  * indicate your decision by deleting the provisions above and
  28.  * replace them with the notice and other provisions required by
  29.  * the GPL.  If you do not delete the provisions above, a recipient
  30.  * may use your version of this file under either the MPL or the
  31.  * GPL.
  32.  */
  33. #ifndef _P12_H_
  34. #define _P12_H_
  35. #include "secoid.h"
  36. #include "key.h"
  37. #include "secpkcs7.h"
  38. #include "p12t.h"
  39. typedef int (* PKCS12OpenFunction)(void *arg);
  40. typedef int (* PKCS12ReadFunction)(void *arg, unsigned char *buffer, 
  41.    unsigned int *lenRead, unsigned int maxLen);
  42. typedef int (* PKCS12WriteFunction)(void *arg, unsigned char *buffer, 
  43.     unsigned int *bufLen, unsigned int *lenWritten);
  44. typedef int (* PKCS12CloseFunction)(void *arg);
  45. typedef SECStatus (* PKCS12UnicodeConvertFunction)(PRArenaPool *arena,
  46.    SECItem *dest, SECItem *src,
  47.    PRBool toUnicode, 
  48.    PRBool swapBytes);
  49. typedef void (* SEC_PKCS12EncoderOutputCallback)(void *arg, const char *buf,
  50.  unsigned long len);
  51. typedef void (* SEC_PKCS12DecoderOutputCallback)(void *arg, const char *buf,
  52.  unsigned long len);
  53. typedef SECItem * (* SEC_PKCS12NicknameCollisionCallback)(SECItem *old_nickname,
  54.   PRBool *cancel,
  55.   void *arg);
  56. typedef SECStatus (*digestOpenFn)(void *arg, PRBool readData);
  57. typedef SECStatus (*digestCloseFn)(void *arg, PRBool removeFile);
  58. typedef int (*digestIOFn)(void *arg, unsigned char *buf, 
  59.   unsigned long len);
  60. typedef struct SEC_PKCS12ExportContextStr SEC_PKCS12ExportContext;
  61. typedef struct SEC_PKCS12SafeInfoStr SEC_PKCS12SafeInfo;
  62. typedef struct SEC_PKCS12DecoderContextStr SEC_PKCS12DecoderContext;
  63. struct sec_PKCS12PasswordModeInfo {
  64.     SECItem *password;
  65.     SECOidTag algorithm;
  66. };
  67. struct sec_PKCS12PublicKeyModeInfo {
  68.     CERTCertificate *cert;
  69.     CERTCertDBHandle *certDb;
  70.     SECOidTag algorithm;
  71.     int keySize;
  72. };
  73. SEC_PKCS12SafeInfo *
  74. SEC_PKCS12CreatePubKeyEncryptedSafe(SEC_PKCS12ExportContext *p12ctxt,
  75.     CERTCertDBHandle *certDb,
  76.     CERTCertificate *signer,
  77.     CERTCertificate **recipients,
  78.     SECOidTag algorithm, int keysize);
  79. extern SEC_PKCS12SafeInfo *
  80. SEC_PKCS12CreatePasswordPrivSafe(SEC_PKCS12ExportContext *p12ctxt, 
  81.  SECItem *pwitem, SECOidTag privAlg);
  82. extern SEC_PKCS12SafeInfo *
  83. SEC_PKCS12CreateUnencryptedSafe(SEC_PKCS12ExportContext *p12ctxt);
  84. extern SECStatus
  85. SEC_PKCS12AddPasswordIntegrity(SEC_PKCS12ExportContext *p12ctxt,
  86.        SECItem *pwitem, SECOidTag integAlg);
  87. extern SECStatus
  88. SEC_PKCS12AddPublicKeyIntegrity(SEC_PKCS12ExportContext *p12ctxt,
  89. CERTCertificate *cert, CERTCertDBHandle *certDb,
  90. SECOidTag algorithm, int keySize);
  91. extern SEC_PKCS12ExportContext *
  92. SEC_PKCS12CreateExportContext(SECKEYGetPasswordKey pwfn, void *pwfnarg,  
  93.       PK11SlotInfo *slot, void *wincx);
  94. extern SECStatus
  95. SEC_PKCS12AddCert(SEC_PKCS12ExportContext *p12ctxt, 
  96.   SEC_PKCS12SafeInfo *safe, void *nestedDest,
  97.   CERTCertificate *cert, CERTCertDBHandle *certDb,
  98.   SECItem *keyId, PRBool includeCertChain);
  99. extern SECStatus
  100. SEC_PKCS12AddKeyForCert(SEC_PKCS12ExportContext *p12ctxt, 
  101. SEC_PKCS12SafeInfo *safe, 
  102. void *nestedDest, CERTCertificate *cert,
  103. PRBool shroudKey, SECOidTag algorithm, SECItem *pwitem,
  104. SECItem *keyId, SECItem *nickName);
  105. extern SECStatus
  106. SEC_PKCS12AddCertAndKey(SEC_PKCS12ExportContext *p12ctxt, 
  107. void *certSafe, void *certNestedDest, 
  108. CERTCertificate *cert, CERTCertDBHandle *certDb,
  109. void *keySafe, void *keyNestedDest, 
  110. PRBool shroudKey, SECItem *pwitem, SECOidTag algorithm);
  111. extern SECStatus
  112. SEC_PKCS12AddDERCertAndEncryptedKey(SEC_PKCS12ExportContext *p12ctxt, 
  113. void *certSafe, void *certNestedDest, SECItem *derCert,
  114. void *keySafe, void *keyNestedDest, 
  115. SECKEYEncryptedPrivateKeyInfo *epki, char *nickname);
  116. extern void *
  117. SEC_PKCS12CreateNestedSafeContents(SEC_PKCS12ExportContext *p12ctxt,
  118.    void *baseSafe, void *nestedDest);
  119. extern SECStatus
  120. SEC_PKCS12Encode(SEC_PKCS12ExportContext *p12exp, 
  121.  SEC_PKCS12EncoderOutputCallback output, void *outputarg);
  122. extern void
  123. SEC_PKCS12DestroyExportContext(SEC_PKCS12ExportContext *p12exp);
  124. extern SEC_PKCS12DecoderContext *
  125. SEC_PKCS12DecoderStart(SECItem *pwitem, PK11SlotInfo *slot, void *wincx,
  126.        digestOpenFn dOpen, digestCloseFn dClose,
  127.        digestIOFn dRead, digestIOFn dWrite, void *dArg);
  128. extern SECStatus
  129. SEC_PKCS12DecoderUpdate(SEC_PKCS12DecoderContext *p12dcx, unsigned char *data,
  130. unsigned long len);
  131. extern void
  132. SEC_PKCS12DecoderFinish(SEC_PKCS12DecoderContext *p12dcx);
  133. extern SECStatus
  134. SEC_PKCS12DecoderVerify(SEC_PKCS12DecoderContext *p12dcx);
  135. extern SECStatus
  136. SEC_PKCS12DecoderValidateBags(SEC_PKCS12DecoderContext *p12dcx,
  137.       SEC_PKCS12NicknameCollisionCallback nicknameCb);
  138. extern SECStatus
  139. SEC_PKCS12DecoderImportBags(SEC_PKCS12DecoderContext *p12dcx);
  140. CERTCertList *
  141. SEC_PKCS12DecoderGetCerts(SEC_PKCS12DecoderContext *p12dcx);
  142. #endif