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

CA认证

开发平台:

WINDOWS

  1. /*
  2.  * blapit.h - public data structures for the crypto library
  3.  *
  4.  * The contents of this file are subject to the Mozilla Public
  5.  * License Version 1.1 (the "License"); you may not use this file
  6.  * except in compliance with the License. You may obtain a copy of
  7.  * the License at http://www.mozilla.org/MPL/
  8.  * 
  9.  * Software distributed under the License is distributed on an "AS
  10.  * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  11.  * implied. See the License for the specific language governing
  12.  * rights and limitations under the License.
  13.  * 
  14.  * The Original Code is the Netscape security libraries.
  15.  * 
  16.  * The Initial Developer of the Original Code is Netscape
  17.  * Communications Corporation.  Portions created by Netscape are 
  18.  * Copyright (C) 1994-2000 Netscape Communications Corporation.  All
  19.  * Rights Reserved.
  20.  * 
  21.  * Contributor(s):
  22.  * 
  23.  * Alternatively, the contents of this file may be used under the
  24.  * terms of the GNU General Public License Version 2 or later (the
  25.  * "GPL"), in which case the provisions of the GPL are applicable 
  26.  * instead of those above.  If you wish to allow use of your 
  27.  * version of this file only under the terms of the GPL and not to
  28.  * allow others to use your version of this file under the MPL,
  29.  * indicate your decision by deleting the provisions above and
  30.  * replace them with the notice and other provisions required by
  31.  * the GPL.  If you do not delete the provisions above, a recipient
  32.  * may use your version of this file under either the MPL or the
  33.  * GPL.
  34.  *
  35.  * $Id: blapit.h,v 1.2 2000/06/20 16:22:35 chrisk%netscape.com Exp $
  36.  */
  37. #ifndef _BLAPIT_H_
  38. #define _BLAPIT_H_
  39. #include "seccomon.h"
  40. #include "plarena.h"
  41. /* RC2 operation modes */
  42. #define NSS_RC2 0
  43. #define NSS_RC2_CBC 1
  44. /* RC5 operation modes */
  45. #define NSS_RC5                 0
  46. #define NSS_RC5_CBC             1
  47. /* DES operation modes */
  48. #define NSS_DES 0
  49. #define NSS_DES_CBC 1
  50. #define NSS_DES_EDE3 2
  51. #define NSS_DES_EDE3_CBC 3
  52. #define DES_KEY_LENGTH 8 /* Bytes */
  53. #define DSA_SIGNATURE_LEN  40 /* Bytes */
  54. #define DSA_SUBPRIME_LEN 20 /* Bytes */
  55. /*
  56.  * Number of bytes each hash algorithm produces
  57.  */
  58. #define MD2_LENGTH 16 /* Bytes */
  59. #define MD5_LENGTH 16 /* Bytes */
  60. #define SHA1_LENGTH 20 /* Bytes */
  61. /*
  62.  * The FIPS 186 algorithm for generating primes P and Q allows only 9
  63.  * distinct values for the length of P, and only one value for the
  64.  * length of Q.
  65.  * The algorithm uses a variable j to indicate which of the 9 lengths
  66.  * of P is to be used.
  67.  * The following table relates j to the lengths of P and Q in bits.
  68.  *
  69.  * j bits in P bits in Q
  70.  * _ _________ _________
  71.  * 0  512 160
  72.  * 1  576 160
  73.  * 2  640 160
  74.  * 3  704 160
  75.  * 4  768 160
  76.  * 5  832 160
  77.  * 6  896 160
  78.  * 7  960 160
  79.  * 8 1024 160
  80.  *
  81.  * The FIPS-186 compliant PQG generator takes j as an input parameter.
  82.  */
  83. /*
  84.  * function takes desired number of bits in P,
  85.  * returns index (0..8) or -1 if number of bits is invalid.
  86.  */
  87. #define PQG_PBITS_TO_INDEX(bits) ((((bits)-512) % 64) ? -1 : ((bits)-512)/64)
  88. /*
  89.  * function takes index (0-8)
  90.  * returns number of bits in P for that index, or -1 if index is invalid.
  91.  */
  92. #define PQG_INDEX_TO_PBITS(j) (((unsigned)(j) > 8) ? -1 : (512 + 64 * (j)))
  93. /***************************************************************************
  94. ** Opaque objects 
  95. */
  96. struct DESContextStr        ;
  97. struct RC2ContextStr        ;
  98. struct RC4ContextStr        ;
  99. struct RC5ContextStr        ;
  100. struct MD2ContextStr        ;
  101. struct MD5ContextStr        ;
  102. struct SHA1ContextStr       ;
  103. typedef struct DESContextStr        DESContext;
  104. typedef struct RC2ContextStr        RC2Context;
  105. typedef struct RC4ContextStr        RC4Context;
  106. typedef struct RC5ContextStr        RC5Context;
  107. typedef struct MD2ContextStr        MD2Context;
  108. typedef struct MD5ContextStr        MD5Context;
  109. typedef struct SHA1ContextStr       SHA1Context;
  110. /***************************************************************************
  111. ** RSA Public and Private Key structures
  112. */
  113. /* member names from PKCS#1, section 7.1 */
  114. struct RSAPublicKeyStr {
  115.     PRArenaPool * arena;
  116.     SECItem modulus;
  117.     SECItem publicExponent;
  118. };
  119. typedef struct RSAPublicKeyStr RSAPublicKey;
  120. /* member names from PKCS#1, section 7.2 */
  121. struct RSAPrivateKeyStr {
  122.     PRArenaPool * arena;
  123.     SECItem version;
  124.     SECItem modulus;
  125.     SECItem publicExponent;
  126.     SECItem privateExponent;
  127.     SECItem prime1;
  128.     SECItem prime2;
  129.     SECItem exponent1;
  130.     SECItem exponent2;
  131.     SECItem coefficient;
  132. };
  133. typedef struct RSAPrivateKeyStr RSAPrivateKey;
  134. /***************************************************************************
  135. ** DSA Public and Private Key and related structures
  136. */
  137. struct PQGParamsStr {
  138.     PRArenaPool *arena;
  139.     SECItem prime;    /* p */
  140.     SECItem subPrime; /* q */
  141.     SECItem base;     /* g */
  142.     /* XXX chrisk: this needs to be expanded to hold j and validationParms (RFC2459 7.3.2) */
  143. };
  144. typedef struct PQGParamsStr PQGParams;
  145. struct PQGVerifyStr {
  146.     PRArenaPool * arena; /* includes this struct, seed, & h. */
  147.     unsigned int  counter;
  148.     SECItem       seed;
  149.     SECItem       h;
  150. };
  151. typedef struct PQGVerifyStr PQGVerify;
  152. struct DSAPublicKeyStr {
  153.     PQGParams params;
  154.     SECItem publicValue;
  155. };
  156. typedef struct DSAPublicKeyStr DSAPublicKey;
  157. struct DSAPrivateKeyStr {
  158.     PQGParams params;
  159.     SECItem publicValue;
  160.     SECItem privateValue;
  161. };
  162. typedef struct DSAPrivateKeyStr DSAPrivateKey;
  163. /***************************************************************************
  164. ** Diffie-Hellman Public and Private Key and related structures
  165. ** Structure member names suggested by PKCS#3.
  166. */
  167. struct DHParamsStr {
  168.     PRArenaPool * arena;
  169.     SECItem prime; /* p */
  170.     SECItem base; /* g */
  171. };
  172. typedef struct DHParamsStr DHParams;
  173. struct DHPublicKeyStr {
  174.     PRArenaPool * arena;
  175.     SECItem prime;
  176.     SECItem base;
  177.     SECItem publicValue;
  178. };
  179. typedef struct DHPublicKeyStr DHPublicKey;
  180. struct DHPrivateKeyStr {
  181.     PRArenaPool * arena;
  182.     SECItem prime;
  183.     SECItem base;
  184.     SECItem publicValue;
  185.     SECItem privateValue;
  186. };
  187. typedef struct DHPrivateKeyStr DHPrivateKey;
  188. #endif /* _BLAPIT_H_ */