Back to index

lightning-sunbird  0.9+nobinonly
secpkcs5.h
Go to the documentation of this file.
00001 /* ***** BEGIN LICENSE BLOCK *****
00002  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
00003  *
00004  * The contents of this file are subject to the Mozilla Public License Version
00005  * 1.1 (the "License"); you may not use this file except in compliance with
00006  * the License. You may obtain a copy of the License at
00007  * http://www.mozilla.org/MPL/
00008  *
00009  * Software distributed under the License is distributed on an "AS IS" basis,
00010  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
00011  * for the specific language governing rights and limitations under the
00012  * License.
00013  *
00014  * The Original Code is the Netscape security libraries.
00015  *
00016  * The Initial Developer of the Original Code is
00017  * Netscape Communications Corporation.
00018  * Portions created by the Initial Developer are Copyright (C) 1994-2000
00019  * the Initial Developer. All Rights Reserved.
00020  *
00021  * Contributor(s):
00022  *
00023  * Alternatively, the contents of this file may be used under the terms of
00024  * either the GNU General Public License Version 2 or later (the "GPL"), or
00025  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
00026  * in which case the provisions of the GPL or the LGPL are applicable instead
00027  * of those above. If you wish to allow use of your version of this file only
00028  * under the terms of either the GPL or the LGPL, and not to allow others to
00029  * use your version of this file under the terms of the MPL, indicate your
00030  * decision by deleting the provisions above and replace them with the notice
00031  * and other provisions required by the GPL or the LGPL. If you do not delete
00032  * the provisions above, a recipient may use your version of this file under
00033  * the terms of any one of the MPL, the GPL or the LGPL.
00034  *
00035  * ***** END LICENSE BLOCK ***** */
00036 #ifndef _SECPKCS5_H_
00037 #define _SECPKCS5_H_
00038 #include "seccomon.h"
00039 #include "secmodt.h"
00040 
00041 /* used for V2 PKCS 12 Draft Spec */
00042 typedef enum {
00043     pbeBitGenIDNull = 0,
00044     pbeBitGenCipherKey = 0x01,
00045     pbeBitGenCipherIV = 0x02,
00046     pbeBitGenIntegrityKey = 0x03
00047 } PBEBitGenID;
00048 
00049 typedef struct PBEBitGenContextStr PBEBitGenContext;
00050 
00051 SEC_BEGIN_PROTOS
00052 
00053 SECAlgorithmID *
00054 SEC_PKCS5CreateAlgorithmID(SECOidTag algorithm, SECItem *salt, int iteration);
00055 
00056 /* Get the initialization vector.  The password is passed in, hashing
00057  * is performed, and the initialization vector is returned.
00058  *  algid is a pointer to a PBE algorithm ID
00059  *  pwitem is the password
00060  * If an error occurs or the algorithm id is not a PBE algrithm,
00061  * NULL is returned.  Otherwise, the iv is returned in a secitem.
00062  */
00063 SECItem *
00064 SEC_PKCS5GetIV(SECAlgorithmID *algid, SECItem *pwitem, PRBool faulty3DES);
00065 
00066 SECOidTag SEC_PKCS5GetCryptoAlgorithm(SECAlgorithmID *algid);
00067 PRBool SEC_PKCS5IsAlgorithmPBEAlg(SECAlgorithmID *algid);
00068 SECOidTag SEC_PKCS5GetPBEAlgorithm(SECOidTag algTag, int keyLen);
00069 int SEC_PKCS5GetKeyLength(SECAlgorithmID *algid);
00070 
00071 /**********************************************************************
00072  * Deprecated PBE fucntions.  Use the PBE functions in pk11func.h
00073  * instead.
00074  **********************************************************************/
00075 
00076 PBEBitGenContext *
00077 PBE_CreateContext(SECOidTag hashAlgorithm, PBEBitGenID bitGenPurpose,
00078         SECItem *pwitem, SECItem *salt, unsigned int bitsNeeded,
00079         unsigned int iterations);
00080 
00081 void
00082 PBE_DestroyContext(PBEBitGenContext *context);
00083 
00084 
00085 SECItem *
00086 PBE_GenerateBits(PBEBitGenContext *context);
00087 
00088 SEC_END_PROTOS
00089 
00090 #endif /* _SECPKS5_H_ */