1.1.12
by Devid Antonio Filoni
Import upstream version 1.8.1.16+nobinonly |
1 |
/* ***** BEGIN LICENSE BLOCK *****
|
2 |
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
3 |
*
|
|
4 |
* The contents of this file are subject to the Mozilla Public License Version
|
|
5 |
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
6 |
* the License. You may obtain a copy of the License at
|
|
7 |
* http://www.mozilla.org/MPL/
|
|
8 |
*
|
|
9 |
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
10 |
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
11 |
* for the specific language governing rights and limitations under the
|
|
12 |
* License.
|
|
13 |
*
|
|
14 |
* The Original Code is the Netscape security libraries.
|
|
15 |
*
|
|
16 |
* The Initial Developer of the Original Code is
|
|
17 |
* Netscape Communications Corporation.
|
|
18 |
* Portions created by the Initial Developer are Copyright (C) 1994-2000
|
|
19 |
* the Initial Developer. All Rights Reserved.
|
|
20 |
*
|
|
21 |
* Contributor(s):
|
|
22 |
*
|
|
23 |
* Alternatively, the contents of this file may be used under the terms of
|
|
24 |
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
25 |
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
26 |
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
27 |
* of those above. If you wish to allow use of your version of this file only
|
|
28 |
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
29 |
* use your version of this file under the terms of the MPL, indicate your
|
|
30 |
* decision by deleting the provisions above and replace them with the notice
|
|
31 |
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
32 |
* the provisions above, a recipient may use your version of this file under
|
|
33 |
* the terms of any one of the MPL, the GPL or the LGPL.
|
|
34 |
*
|
|
35 |
* ***** END LICENSE BLOCK ***** */
|
|
36 |
#ifndef _SECPKCS5_H_
|
|
37 |
#define _SECPKCS5_H_
|
|
38 |
#include "seccomon.h" |
|
39 |
#include "secmodt.h" |
|
40 |
||
41 |
/* used for V2 PKCS 12 Draft Spec */
|
|
42 |
typedef enum { |
|
43 |
pbeBitGenIDNull = 0, |
|
44 |
pbeBitGenCipherKey = 0x01, |
|
45 |
pbeBitGenCipherIV = 0x02, |
|
46 |
pbeBitGenIntegrityKey = 0x03 |
|
47 |
} PBEBitGenID; |
|
48 |
||
49 |
typedef struct PBEBitGenContextStr PBEBitGenContext; |
|
50 |
||
51 |
SEC_BEGIN_PROTOS
|
|
52 |
||
53 |
SECAlgorithmID * |
|
54 |
SEC_PKCS5CreateAlgorithmID(SECOidTag algorithm, SECItem *salt, int iteration); |
|
55 |
||
56 |
/* Get the initialization vector. The password is passed in, hashing
|
|
57 |
* is performed, and the initialization vector is returned.
|
|
58 |
* algid is a pointer to a PBE algorithm ID
|
|
59 |
* pwitem is the password
|
|
60 |
* If an error occurs or the algorithm id is not a PBE algrithm,
|
|
61 |
* NULL is returned. Otherwise, the iv is returned in a secitem.
|
|
62 |
*/
|
|
63 |
SECItem * |
|
64 |
SEC_PKCS5GetIV(SECAlgorithmID *algid, SECItem *pwitem, PRBool faulty3DES); |
|
65 |
||
66 |
SECOidTag SEC_PKCS5GetCryptoAlgorithm(SECAlgorithmID *algid); |
|
67 |
PRBool SEC_PKCS5IsAlgorithmPBEAlg(SECAlgorithmID *algid); |
|
68 |
SECOidTag SEC_PKCS5GetPBEAlgorithm(SECOidTag algTag, int keyLen); |
|
69 |
int SEC_PKCS5GetKeyLength(SECAlgorithmID *algid); |
|
70 |
||
71 |
/**********************************************************************
|
|
72 |
* Deprecated PBE fucntions. Use the PBE functions in pk11func.h
|
|
73 |
* instead.
|
|
74 |
**********************************************************************/
|
|
75 |
||
76 |
PBEBitGenContext * |
|
77 |
PBE_CreateContext(SECOidTag hashAlgorithm, PBEBitGenID bitGenPurpose, |
|
78 |
SECItem *pwitem, SECItem *salt, unsigned int bitsNeeded, |
|
79 |
unsigned int iterations); |
|
80 |
||
81 |
void
|
|
82 |
PBE_DestroyContext(PBEBitGenContext *context); |
|
83 |
||
84 |
||
85 |
SECItem * |
|
86 |
PBE_GenerateBits(PBEBitGenContext *context); |
|
87 |
||
88 |
SEC_END_PROTOS
|
|
89 |
||
90 |
#endif /* _SECPKS5_H_ */ |