1
/* This Source Code Form is subject to the terms of the Mozilla Public
2
* License, v. 2.0. If a copy of the MPL was not distributed with this
3
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
11
#define PKCS12_NULL 0x0000
13
typedef struct pkcs12SuiteMapStr {
15
unsigned int keyLengthBits; /* in bits */
21
static pkcs12SuiteMap pkcs12SuiteMaps[] = {
22
{ SEC_OID_RC4, 40, PKCS12_RC4_40, PR_FALSE, PR_FALSE},
23
{ SEC_OID_RC4, 128, PKCS12_RC4_128, PR_FALSE, PR_FALSE},
24
{ SEC_OID_RC2_CBC, 40, PKCS12_RC2_CBC_40, PR_FALSE, PR_TRUE},
25
{ SEC_OID_RC2_CBC, 128, PKCS12_RC2_CBC_128, PR_FALSE, PR_FALSE},
26
{ SEC_OID_DES_CBC, 64, PKCS12_DES_56, PR_FALSE, PR_FALSE},
27
{ SEC_OID_DES_EDE3_CBC, 192, PKCS12_DES_EDE3_168, PR_FALSE, PR_FALSE},
28
{ SEC_OID_UNKNOWN, 0, PKCS12_NULL, PR_FALSE, PR_FALSE},
29
{ SEC_OID_UNKNOWN, 0, 0L, PR_FALSE, PR_FALSE}
32
/* determine if algid is an algorithm which is allowed */
34
SEC_PKCS12DecryptionAllowed(SECAlgorithmID *algid)
36
unsigned int keyLengthBits;
40
algId = SEC_PKCS5GetCryptoAlgorithm(algid);
41
if(algId == SEC_OID_UNKNOWN) {
45
keyLengthBits = (unsigned int)(SEC_PKCS5GetKeyLength(algid) * 8);
48
while(pkcs12SuiteMaps[i].algTag != SEC_OID_UNKNOWN) {
49
if((pkcs12SuiteMaps[i].algTag == algId) &&
50
(pkcs12SuiteMaps[i].keyLengthBits == keyLengthBits)) {
52
return pkcs12SuiteMaps[i].allowed;
60
/* is any encryption allowed? */
62
SEC_PKCS12IsEncryptionAllowed(void)
67
while(pkcs12SuiteMaps[i].algTag != SEC_OID_UNKNOWN) {
68
if(pkcs12SuiteMaps[i].allowed == PR_TRUE) {
79
SEC_PKCS12EnableCipher(long which, int on)
84
while(pkcs12SuiteMaps[i].suite != 0L) {
85
if(pkcs12SuiteMaps[i].suite == (unsigned long)which) {
87
pkcs12SuiteMaps[i].allowed = PR_TRUE;
89
pkcs12SuiteMaps[i].allowed = PR_FALSE;
100
SEC_PKCS12SetPreferredCipher(long which, int on)
103
PRBool turnedOff = PR_FALSE;
104
PRBool turnedOn = PR_FALSE;
107
while(pkcs12SuiteMaps[i].suite != 0L) {
108
if(pkcs12SuiteMaps[i].preferred == PR_TRUE) {
109
pkcs12SuiteMaps[i].preferred = PR_FALSE;
112
if(pkcs12SuiteMaps[i].suite == (unsigned long)which) {
113
pkcs12SuiteMaps[i].preferred = PR_TRUE;
119
if((turnedOn) && (turnedOff)) {