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

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. /*
  34.  * Public prototypes for base64 encoding/decoding.
  35.  *
  36.  * $Id: nssb64.h,v 1.2 2000/04/06 00:42:49 repka%netscape.com Exp $
  37.  */
  38. #ifndef _NSSB64_H_
  39. #define _NSSB64_H_
  40. #include "seccomon.h"
  41. #include "nssb64t.h"
  42. SEC_BEGIN_PROTOS
  43. /*
  44.  * Functions to start a base64 decoding/encoding context.
  45.  */
  46. extern NSSBase64Decoder *
  47. NSSBase64Decoder_Create (PRInt32 (*output_fn) (void *, const unsigned char *,
  48.        PRInt32),
  49.  void *output_arg);
  50. extern NSSBase64Encoder *
  51. NSSBase64Encoder_Create (PRInt32 (*output_fn) (void *, const char *, PRInt32),
  52.  void *output_arg);
  53. /*
  54.  * Push data through the decoder/encoder, causing the output_fn (provided
  55.  * to Create) to be called with the decoded/encoded data.
  56.  */
  57. extern SECStatus
  58. NSSBase64Decoder_Update (NSSBase64Decoder *data, const char *buffer,
  59.  PRUint32 size);
  60. extern SECStatus
  61. NSSBase64Encoder_Update (NSSBase64Encoder *data, const unsigned char *buffer,
  62.  PRUint32 size);
  63. /*
  64.  * When you're done processing, call this to close the context.
  65.  * If "abort_p" is false, then calling this may cause the output_fn
  66.  * to be called one last time (as the last buffered data is flushed out).
  67.  */
  68. extern SECStatus
  69. NSSBase64Decoder_Destroy (NSSBase64Decoder *data, PRBool abort_p);
  70. extern SECStatus
  71. NSSBase64Encoder_Destroy (NSSBase64Encoder *data, PRBool abort_p);
  72. /*
  73.  * Perform base64 decoding from an ascii string "inStr" to an Item.
  74.  * The length of the input must be provided as "inLen".  The Item
  75.  * may be provided (as "outItemOpt"); you can also pass in a NULL
  76.  * and the Item will be allocated for you.
  77.  *
  78.  * In any case, the data within the Item will be allocated for you.
  79.  * All allocation will happen out of the passed-in "arenaOpt", if non-NULL.
  80.  * If "arenaOpt" is NULL, standard allocation (heap) will be used and
  81.  * you will want to free the result via SECITEM_FreeItem.
  82.  *
  83.  * Return value is NULL on error, the Item (allocated or provided) otherwise.
  84.  */
  85. extern SECItem *
  86. NSSBase64_DecodeBuffer (PRArenaPool *arenaOpt, SECItem *outItemOpt,
  87. const char *inStr, unsigned int inLen);
  88. /*
  89.  * Perform base64 encoding of binary data "inItem" to an ascii string.
  90.  * The output buffer may be provided (as "outStrOpt"); you can also pass
  91.  * in a NULL and the buffer will be allocated for you.  The result will
  92.  * be null-terminated, and if the buffer is provided, "maxOutLen" must
  93.  * specify the maximum length of the buffer and will be checked to
  94.  * supply sufficient space space for the encoded result.  (If "outStrOpt"
  95.  * is NULL, "maxOutLen" is ignored.)
  96.  *
  97.  * If "outStrOpt" is NULL, allocation will happen out of the passed-in
  98.  * "arenaOpt", if *it* is non-NULL, otherwise standard allocation (heap)
  99.  * will be used.
  100.  *
  101.  * Return value is NULL on error, the output buffer (allocated or provided)
  102.  * otherwise.
  103.  */
  104. extern char *
  105. NSSBase64_EncodeItem (PRArenaPool *arenaOpt, char *outStrOpt,
  106.       unsigned int maxOutLen, SECItem *inItem);
  107. SEC_END_PROTOS
  108. #endif /* _NSSB64_H_ */