| /* This Source Code Form is subject to the terms of the Mozilla Public |
| * License, v. 2.0. If a copy of the MPL was not distributed with this |
| * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
| #ifndef _SECPKCS5_H_ |
| #define _SECPKCS5_H_ |
| #include "seccomon.h" |
| #include "secmodt.h" |
| |
| /* used for V2 PKCS 12 Draft Spec */ |
| typedef enum { |
| pbeBitGenIDNull = 0, |
| pbeBitGenCipherKey = 0x01, |
| pbeBitGenCipherIV = 0x02, |
| pbeBitGenIntegrityKey = 0x03 |
| } PBEBitGenID; |
| |
| typedef struct PBEBitGenContextStr PBEBitGenContext; |
| |
| SEC_BEGIN_PROTOS |
| |
| /* private */ |
| SECAlgorithmID * |
| sec_pkcs5CreateAlgorithmID(SECOidTag algorithm, SECOidTag cipherAlgorithm, |
| SECOidTag prfAlg, SECOidTag *pPbeAlgorithm, |
| int keyLengh, SECItem *salt, int iteration); |
| |
| /* Get the initialization vector. The password is passed in, hashing |
| * is performed, and the initialization vector is returned. |
| * algid is a pointer to a PBE algorithm ID |
| * pwitem is the password |
| * If an error occurs or the algorithm id is not a PBE algrithm, |
| * NULL is returned. Otherwise, the iv is returned in a secitem. |
| */ |
| SECItem * |
| SEC_PKCS5GetIV(SECAlgorithmID *algid, SECItem *pwitem, PRBool faulty3DES); |
| |
| SECOidTag SEC_PKCS5GetCryptoAlgorithm(SECAlgorithmID *algid); |
| PRBool SEC_PKCS5IsAlgorithmPBEAlg(SECAlgorithmID *algid); |
| PRBool SEC_PKCS5IsAlgorithmPBEAlgTag(SECOidTag algTag); |
| SECOidTag SEC_PKCS5GetPBEAlgorithm(SECOidTag algTag, int keyLen); |
| int SEC_PKCS5GetKeyLength(SECAlgorithmID *algid); |
| |
| /********************************************************************** |
| * Deprecated PBE functions. Use the PBE functions in pk11func.h |
| * instead. |
| **********************************************************************/ |
| |
| PBEBitGenContext * |
| PBE_CreateContext(SECOidTag hashAlgorithm, PBEBitGenID bitGenPurpose, |
| SECItem *pwitem, SECItem *salt, unsigned int bitsNeeded, |
| unsigned int iterations); |
| |
| void |
| PBE_DestroyContext(PBEBitGenContext *context); |
| |
| SECItem * |
| PBE_GenerateBits(PBEBitGenContext *context); |
| |
| SEC_END_PROTOS |
| |
| #endif /* _SECPKS5_H_ */ |