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

CA认证

开发平台:

WINDOWS

  1. /*
  2.  * crypto.h - public data structures and prototypes 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: secdig.h,v 1.1 2000/03/31 19:39:43 relyea%netscape.com Exp $
  36.  */
  37. #ifndef _SECDIG_H_
  38. #define _SECDIG_H_
  39. #include "secdigt.h"
  40. #include "seccomon.h"
  41. #include "secasn1t.h" 
  42. #include "secdert.h"
  43. extern const SEC_ASN1Template sgn_DigestInfoTemplate[];
  44. extern DERTemplate SGNDigestInfoTemplate[];
  45. SEC_BEGIN_PROTOS
  46. /****************************************/
  47. /*
  48. ** Digest-info functions
  49. */
  50. /*
  51. ** Create a new digest-info object
  52. **  "algorithm" one of SEC_OID_MD2, SEC_OID_MD5, or SEC_OID_SHA1
  53. **  "sig" the raw signature data (from MD2 or MD5)
  54. **  "sigLen" the length of the signature data
  55. **
  56. ** NOTE: this is a low level routine used to prepare some data for PKCS#1
  57. ** digital signature formatting.
  58. **
  59. ** XXX It might be nice to combine the create and encode functions.
  60. ** I think that is all anybody ever wants to do anyway.
  61. */
  62. extern SGNDigestInfo *SGN_CreateDigestInfo(SECOidTag algorithm,
  63.    unsigned char *sig,
  64.    unsigned int sigLen);
  65. /*
  66. ** Destroy a digest-info object
  67. */
  68. extern void SGN_DestroyDigestInfo(SGNDigestInfo *info);
  69. /*
  70. ** Encode a digest-info object
  71. ** "poolp" is where to allocate the result from; it can be NULL in
  72. ** which case generic heap allocation (XP_ALLOC) will be used
  73. ** "dest" is where to store the result; it can be NULL, in which case
  74. ** it will be allocated (from poolp or heap, as explained above)
  75. ** "diginfo" is the object to be encoded
  76. ** The return value is NULL if any error occurred, otherwise it is the
  77. ** resulting SECItem (either allocated or the same as the "dest" parameter).
  78. **
  79. ** XXX It might be nice to combine the create and encode functions.
  80. ** I think that is all anybody ever wants to do anyway.
  81. */
  82. extern SECItem *SGN_EncodeDigestInfo(PRArenaPool *poolp, SECItem *dest,
  83.      SGNDigestInfo *diginfo);
  84. /*
  85. ** Decode a DER encoded digest info objct.
  86. **  didata is thr source of the encoded digest.  
  87. ** The return value is NULL if an error occurs.  Otherwise, a
  88. ** digest info object which is allocated within it's own
  89. ** pool is returned.  The digest info should be deleted
  90. ** by later calling SGN_DestroyDigestInfo.
  91. */
  92. extern SGNDigestInfo *SGN_DecodeDigestInfo(SECItem *didata);
  93. /*
  94. ** Copy digest info.
  95. **  poolp is the arena to which the digest will be copied.
  96. **  a is the destination digest, it must be non-NULL.
  97. **  b is the source digest
  98. ** This function is for copying digests.  It allows digests
  99. ** to be copied into a specified pool.  If the digest is in
  100. ** the same pool as other data, you do not want to delete
  101. ** the digest by calling SGN_DestroyDigestInfo.  
  102. ** A return value of SECFailure indicates an error.  A return
  103. ** of SECSuccess indicates no error occured.
  104. */
  105. extern SECStatus  SGN_CopyDigestInfo(PRArenaPool *poolp,
  106. SGNDigestInfo *a, 
  107. SGNDigestInfo *b);
  108. /*
  109. ** Compare two digest-info objects, returning the difference between
  110. ** them.
  111. */
  112. extern SECComparison SGN_CompareDigestInfo(SGNDigestInfo *a, SGNDigestInfo *b);
  113. SEC_END_PROTOS
  114. #endif /* _SECDIG_H_ */