keyhi.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.  * key.h - public data structures and prototypes for the private key library
  34.  *
  35.  * $Id: keyhi.h,v 1.1 2000/03/31 19:45:18 relyea%netscape.com Exp $
  36.  */
  37. #ifndef _KEYHI_H_
  38. #define _KEYHI_H_
  39. #include "plarena.h"
  40. #include "seccomon.h"
  41. #include "secoidt.h"
  42. #include "secdert.h"
  43. #include "keythi.h"
  44. #include "certt.h"
  45. #include "secpkcs5.h"
  46. SEC_BEGIN_PROTOS
  47. /*
  48. ** Destroy a subject-public-key-info object.
  49. */
  50. extern void SECKEY_DestroySubjectPublicKeyInfo(CERTSubjectPublicKeyInfo *spki);
  51. /*
  52. ** Copy subject-public-key-info "src" to "dst". "dst" is filled in
  53. ** appropriately (memory is allocated for each of the sub objects).
  54. */
  55. extern SECStatus SECKEY_CopySubjectPublicKeyInfo(PRArenaPool *arena,
  56.      CERTSubjectPublicKeyInfo *dst,
  57.      CERTSubjectPublicKeyInfo *src);
  58. /*
  59. ** Update the PQG parameters for a cert's public key.
  60. ** Only done for DSA and Fortezza certs
  61. */
  62. extern SECStatus
  63. SECKEY_UpdateCertPQG(CERTCertificate * subjectCert);
  64. /* Compare the KEA parameters of two public keys.  
  65.  * Only used by fortezza.      */
  66. extern SECStatus
  67. SECKEY_KEAParamCompare(CERTCertificate *cert1,CERTCertificate *cert2);
  68. /*
  69. ** Return the strength of the public key
  70. */
  71. extern unsigned SECKEY_PublicKeyStrength(SECKEYPublicKey *pubk);
  72. /*
  73. ** Make a copy of the private key "privKey"
  74. */
  75. extern SECKEYPrivateKey *SECKEY_CopyPrivateKey(SECKEYPrivateKey *privKey);
  76. /*
  77. ** Make a copy of the public key "pubKey"
  78. */
  79. extern SECKEYPublicKey *SECKEY_CopyPublicKey(SECKEYPublicKey *pubKey);
  80. /*
  81. ** Convert a private key "privateKey" into a public key
  82. */
  83. extern SECKEYPublicKey *SECKEY_ConvertToPublicKey(SECKEYPrivateKey *privateKey);
  84. /*
  85.  * create a new RSA key pair. The public Key is returned...
  86.  */
  87. SECKEYPrivateKey *SECKEY_CreateRSAPrivateKey(int keySizeInBits,
  88.    SECKEYPublicKey **pubk, void *cx);
  89. /*
  90. ** Create a subject-public-key-info based on a public key.
  91. */
  92. extern CERTSubjectPublicKeyInfo *
  93. SECKEY_CreateSubjectPublicKeyInfo(SECKEYPublicKey *k);
  94. /*
  95. ** Decode a DER encoded public key into an SECKEYPublicKey structure.
  96. */
  97. extern SECKEYPublicKey *SECKEY_DecodeDERPublicKey(SECItem *pubkder);
  98. /*
  99. ** Convert a base64 ascii encoded DER public key to our internal format.
  100. */
  101. extern SECKEYPublicKey *SECKEY_ConvertAndDecodePublicKey(char *pubkstr);
  102. /*
  103. ** Convert a base64 ascii encoded DER public key and challenge to spki,
  104. ** and verify the signature and challenge data are correct
  105. */
  106. extern CERTSubjectPublicKeyInfo *
  107. SECKEY_ConvertAndDecodePublicKeyAndChallenge(char *pkacstr, char *challenge,
  108. void *cx);
  109. /*
  110. ** Decode a DER encoded subject public key info into a
  111. ** CERTSubjectPublicKeyInfo structure.
  112. */
  113. extern CERTSubjectPublicKeyInfo *
  114. SECKEY_DecodeDERSubjectPublicKeyInfo(SECItem *spkider);
  115. /*
  116. ** Convert a base64 ascii encoded DER subject public key info to our
  117. ** internal format.
  118. */
  119. extern CERTSubjectPublicKeyInfo *
  120. SECKEY_ConvertAndDecodeSubjectPublicKeyInfo(char *spkistr);
  121. /*
  122. ** Destroy a private key object.
  123. ** "key" the object
  124. */
  125. extern void SECKEY_DestroyPrivateKey(SECKEYPrivateKey *key);
  126. /*
  127. ** Destroy a public key object.
  128. ** "key" the object
  129. */
  130. extern void SECKEY_DestroyPublicKey(SECKEYPublicKey *key);
  131. /* Destroy and zero out a private key info structure.  for now this
  132.  * function zero's out memory allocated in an arena for the key 
  133.  * since PORT_FreeArena does not currently do this.  
  134.  *
  135.  * NOTE -- If a private key info is allocated in an arena, one should 
  136.  * not call this function with freeit = PR_FALSE.  The function should 
  137.  * destroy the arena.  
  138.  */
  139. extern void
  140. SECKEY_DestroyPrivateKeyInfo(SECKEYPrivateKeyInfo *pvk, PRBool freeit);
  141. /* Destroy and zero out an encrypted private key info.
  142.  *
  143.  * NOTE -- If a encrypted private key info is allocated in an arena, one should 
  144.  * not call this function with freeit = PR_FALSE.  The function should 
  145.  * destroy the arena.  
  146.  */
  147. extern void
  148. SECKEY_DestroyEncryptedPrivateKeyInfo(SECKEYEncryptedPrivateKeyInfo *epki,
  149.       PRBool freeit);
  150. /* Copy private key info structure.  
  151.  *  poolp is the arena into which the contents of from is to be copied.
  152.  * NULL is a valid entry.
  153.  *  to is the destination private key info
  154.  *  from is the source private key info
  155.  * if either from or to is NULL or an error occurs, SECFailure is 
  156.  * returned.  otherwise, SECSuccess is returned.
  157.  */
  158. extern SECStatus
  159. SECKEY_CopyPrivateKeyInfo(PRArenaPool *poolp,
  160.   SECKEYPrivateKeyInfo *to,
  161.   SECKEYPrivateKeyInfo *from);
  162. /* Copy encrypted private key info structure.  
  163.  *  poolp is the arena into which the contents of from is to be copied.
  164.  * NULL is a valid entry.
  165.  *  to is the destination encrypted private key info
  166.  *  from is the source encrypted private key info
  167.  * if either from or to is NULL or an error occurs, SECFailure is 
  168.  * returned.  otherwise, SECSuccess is returned.
  169.  */
  170. extern SECStatus
  171. SECKEY_CopyEncryptedPrivateKeyInfo(PRArenaPool *poolp,
  172.    SECKEYEncryptedPrivateKeyInfo *to,
  173.    SECKEYEncryptedPrivateKeyInfo *from);
  174. /*
  175.  * Accessor functions for key type of public and private keys.
  176.  */
  177. KeyType SECKEY_GetPrivateKeyType(SECKEYPrivateKey *privKey);
  178. KeyType SECKEY_GetPublicKeyType(SECKEYPublicKey *pubKey);
  179. SEC_END_PROTOS
  180. #endif /* _KEYHI_H_ */