OLD | NEW |
1 Index: mozilla/security/nss/lib/pk11wrap/pk11obj.c | 1 Index: mozilla/security/nss/lib/pk11wrap/pk11obj.c |
2 =================================================================== | 2 =================================================================== |
3 --- mozilla/security/nss/lib/pk11wrap/pk11obj.c»(revision 182578) | 3 --- mozilla/security/nss/lib/pk11wrap/pk11obj.c»(revision 190722) |
4 +++ mozilla/security/nss/lib/pk11wrap/pk11obj.c (working copy) | 4 +++ mozilla/security/nss/lib/pk11wrap/pk11obj.c (working copy) |
5 @@ -822,6 +822,93 @@ | 5 @@ -822,6 +822,93 @@ |
6 return SECSuccess; | 6 return SECSuccess; |
7 } | 7 } |
8 | 8 |
9 +SECStatus | 9 +SECStatus |
10 +PK11_EncryptWithSymKey(PK11SymKey *symKey, | 10 +PK11_Decrypt(PK11SymKey *symKey, |
11 + CK_MECHANISM_TYPE mechanism, SECItem *param, | 11 + CK_MECHANISM_TYPE mechanism, SECItem *param, |
12 + unsigned char *out, unsigned int *outLen, | 12 + unsigned char *out, unsigned int *outLen, |
13 + unsigned int maxLen, | 13 + unsigned int maxLen, |
14 + const unsigned char *data, unsigned dataLen) | 14 + const unsigned char *enc, unsigned encLen) |
15 +{ | 15 +{ |
16 + PK11SlotInfo *slot = symKey->slot; | 16 + PK11SlotInfo *slot = symKey->slot; |
17 + CK_MECHANISM mech = {0, NULL, 0 }; | 17 + CK_MECHANISM mech = {0, NULL, 0 }; |
18 + CK_ULONG len = maxLen; | 18 + CK_ULONG len = maxLen; |
19 + PRBool owner = PR_TRUE; | 19 + PRBool owner = PR_TRUE; |
20 + CK_SESSION_HANDLE session; | 20 + CK_SESSION_HANDLE session; |
21 + PRBool haslock = PR_FALSE; | 21 + PRBool haslock = PR_FALSE; |
22 + CK_RV crv; | 22 + CK_RV crv; |
23 + | 23 + |
24 + mech.mechanism = mechanism; | 24 + mech.mechanism = mechanism; |
25 + if (param) { | 25 + if (param) { |
26 + mech.pParameter = param->data; | 26 + mech.pParameter = param->data; |
27 + mech.ulParameterLen = param->len; | 27 + mech.ulParameterLen = param->len; |
28 + } | 28 + } |
29 + | 29 + |
30 + session = pk11_GetNewSession(slot, &owner); | 30 + session = pk11_GetNewSession(slot, &owner); |
31 + haslock = (!owner || !slot->isThreadSafe); | 31 + haslock = (!owner || !slot->isThreadSafe); |
32 + if (haslock) PK11_EnterSlotMonitor(slot); | 32 + if (haslock) PK11_EnterSlotMonitor(slot); |
33 + crv = PK11_GETTAB(slot)->C_EncryptInit(session, &mech, symKey->objectID); | 33 + crv = PK11_GETTAB(slot)->C_DecryptInit(session, &mech, symKey->objectID); |
34 + if (crv != CKR_OK) { | 34 + if (crv != CKR_OK) { |
35 + if (haslock) PK11_ExitSlotMonitor(slot); | 35 + if (haslock) PK11_ExitSlotMonitor(slot); |
36 +» pk11_CloseSession(slot,session,owner); | 36 +» pk11_CloseSession(slot, session, owner); |
37 + PORT_SetError( PK11_MapError(crv) ); | 37 + PORT_SetError( PK11_MapError(crv) ); |
38 + return SECFailure; | 38 + return SECFailure; |
39 + } | 39 + } |
40 + crv = PK11_GETTAB(slot)->C_Encrypt(session, (unsigned char *)data, | 40 + |
41 + dataLen, out, &len); | 41 + crv = PK11_GETTAB(slot)->C_Decrypt(session, (unsigned char *)enc, encLen, |
| 42 + out, &len); |
42 + if (haslock) PK11_ExitSlotMonitor(slot); | 43 + if (haslock) PK11_ExitSlotMonitor(slot); |
43 + pk11_CloseSession(slot,session,owner); | 44 + pk11_CloseSession(slot, session, owner); |
44 + *outLen = len; | 45 + *outLen = len; |
45 + if (crv != CKR_OK) { | 46 + if (crv != CKR_OK) { |
46 + PORT_SetError( PK11_MapError(crv) ); | 47 + PORT_SetError( PK11_MapError(crv) ); |
47 + return SECFailure; | 48 + return SECFailure; |
48 + } | 49 + } |
49 + return SECSuccess; | 50 + return SECSuccess; |
50 +} | 51 +} |
51 + | 52 + |
52 +SECStatus | 53 +SECStatus |
53 +PK11_DecryptWithSymKey(PK11SymKey *symKey, | 54 +PK11_Encrypt(PK11SymKey *symKey, |
54 + CK_MECHANISM_TYPE mechanism, SECItem *param, | 55 + CK_MECHANISM_TYPE mechanism, SECItem *param, |
55 + unsigned char *out, unsigned int *outLen, | 56 + unsigned char *out, unsigned int *outLen, |
56 + unsigned int maxLen, | 57 + unsigned int maxLen, |
57 + const unsigned char *enc, unsigned encLen) | 58 + const unsigned char *data, unsigned int dataLen) |
58 +{ | 59 +{ |
59 + PK11SlotInfo *slot = symKey->slot; | 60 + PK11SlotInfo *slot = symKey->slot; |
60 + CK_MECHANISM mech = {0, NULL, 0 }; | 61 + CK_MECHANISM mech = {0, NULL, 0 }; |
61 + CK_ULONG len = maxLen; | 62 + CK_ULONG len = maxLen; |
62 + PRBool owner = PR_TRUE; | 63 + PRBool owner = PR_TRUE; |
63 + CK_SESSION_HANDLE session; | 64 + CK_SESSION_HANDLE session; |
64 + PRBool haslock = PR_FALSE; | 65 + PRBool haslock = PR_FALSE; |
65 + CK_RV crv; | 66 + CK_RV crv; |
66 + | 67 + |
67 + mech.mechanism = mechanism; | 68 + mech.mechanism = mechanism; |
68 + if (param) { | 69 + if (param) { |
69 + mech.pParameter = param->data; | 70 + mech.pParameter = param->data; |
70 + mech.ulParameterLen = param->len; | 71 + mech.ulParameterLen = param->len; |
71 + } | 72 + } |
72 + | 73 + |
73 + session = pk11_GetNewSession(slot, &owner); | 74 + session = pk11_GetNewSession(slot, &owner); |
74 + haslock = (!owner || !slot->isThreadSafe); | 75 + haslock = (!owner || !slot->isThreadSafe); |
75 + if (haslock) PK11_EnterSlotMonitor(slot); | 76 + if (haslock) PK11_EnterSlotMonitor(slot); |
76 + crv = PK11_GETTAB(slot)->C_DecryptInit(session, &mech, symKey->objectID); | 77 + crv = PK11_GETTAB(slot)->C_EncryptInit(session, &mech, symKey->objectID); |
77 + if (crv != CKR_OK) { | 78 + if (crv != CKR_OK) { |
78 + if (haslock) PK11_ExitSlotMonitor(slot); | 79 + if (haslock) PK11_ExitSlotMonitor(slot); |
79 +» pk11_CloseSession(slot, session, owner); | 80 +» pk11_CloseSession(slot,session,owner); |
80 + PORT_SetError( PK11_MapError(crv) ); | 81 + PORT_SetError( PK11_MapError(crv) ); |
81 + return SECFailure; | 82 + return SECFailure; |
82 + } | 83 + } |
83 + | 84 + crv = PK11_GETTAB(slot)->C_Encrypt(session, (unsigned char *)data, |
84 + crv = PK11_GETTAB(slot)->C_Decrypt(session, (unsigned char *)enc, encLen, | 85 + dataLen, out, &len); |
85 + out, &len); | |
86 + if (haslock) PK11_ExitSlotMonitor(slot); | 86 + if (haslock) PK11_ExitSlotMonitor(slot); |
87 + pk11_CloseSession(slot, session, owner); | 87 + pk11_CloseSession(slot,session,owner); |
88 + *outLen = len; | 88 + *outLen = len; |
89 + if (crv != CKR_OK) { | 89 + if (crv != CKR_OK) { |
90 + PORT_SetError( PK11_MapError(crv) ); | 90 + PORT_SetError( PK11_MapError(crv) ); |
91 + return SECFailure; | 91 + return SECFailure; |
92 + } | 92 + } |
93 + return SECSuccess; | 93 + return SECSuccess; |
94 +} | 94 +} |
95 + | 95 + |
96 /* | 96 /* |
97 * Now SSL 2.0 uses raw RSA stuff. These next to functions *must* use | 97 * Now SSL 2.0 uses raw RSA stuff. These next to functions *must* use |
98 * RSA keys, or they'll fail. We do the checks up front. If anyone comes | 98 * RSA keys, or they'll fail. We do the checks up front. If anyone comes |
99 Index: mozilla/security/nss/lib/pk11wrap/pk11pub.h | 99 Index: mozilla/security/nss/lib/pk11wrap/pk11pub.h |
100 =================================================================== | 100 =================================================================== |
101 --- mozilla/security/nss/lib/pk11wrap/pk11pub.h»(revision 182578) | 101 --- mozilla/security/nss/lib/pk11wrap/pk11pub.h»(revision 190722) |
102 +++ mozilla/security/nss/lib/pk11wrap/pk11pub.h (working copy) | 102 +++ mozilla/security/nss/lib/pk11wrap/pk11pub.h (working copy) |
| 103 @@ -266,7 +266,7 @@ |
| 104 CK_MECHANISM_TYPE PK11_MapSignKeyType(KeyType keyType); |
| 105 |
| 106 /********************************************************************** |
| 107 - * Symetric, Public, and Private Keys |
| 108 + * Symmetric, Public, and Private Keys |
| 109 **********************************************************************/ |
| 110 void PK11_FreeSymKey(PK11SymKey *key); |
| 111 PK11SymKey *PK11_ReferenceSymKey(PK11SymKey *symKey); |
103 @@ -508,6 +508,17 @@ | 112 @@ -508,6 +508,17 @@ |
104 void *wincx); | 113 void *wincx); |
105 int PK11_GetPrivateModulusLen(SECKEYPrivateKey *key); | 114 int PK11_GetPrivateModulusLen(SECKEYPrivateKey *key); |
106 | 115 |
107 +SECStatus PK11_EncryptWithSymKey(PK11SymKey *symKey, | 116 +SECStatus PK11_Decrypt(PK11SymKey *symkey, |
108 +» » » CK_MECHANISM_TYPE mechanism, SECItem *param, | 117 +» » CK_MECHANISM_TYPE mechanism, SECItem *param, |
109 +» » » unsigned char *out, unsigned int *outLen, | 118 +» » unsigned char *out, unsigned int *outLen, |
110 +» » » unsigned int maxLen, | 119 +» » unsigned int maxLen, |
111 +» » » const unsigned char *data, unsigned dataLen); | 120 +» » const unsigned char *enc, unsigned int encLen); |
112 +SECStatus PK11_DecryptWithSymKey(PK11SymKey *symkey, | 121 +SECStatus PK11_Encrypt(PK11SymKey *symKey, |
113 +» » » CK_MECHANISM_TYPE mechanism, SECItem *param, | 122 +» » CK_MECHANISM_TYPE mechanism, SECItem *param, |
114 +» » » unsigned char *out, unsigned int *outLen, | 123 +» » unsigned char *out, unsigned int *outLen, |
115 +» » » unsigned int maxLen, | 124 +» » unsigned int maxLen, |
116 +» » » const unsigned char *enc, unsigned encLen); | 125 +» » const unsigned char *data, unsigned int dataLen); |
117 + | 126 + |
118 /* note: despite the name, this function takes a private key. */ | 127 /* note: despite the name, this function takes a private key. */ |
119 SECStatus PK11_PubDecryptRaw(SECKEYPrivateKey *key, unsigned char *data, | 128 SECStatus PK11_PubDecryptRaw(SECKEYPrivateKey *key, unsigned char *data, |
120 unsigned *outLen, unsigned int maxLen, unsigned char *enc, unsigned encLen); | 129 unsigned *outLen, unsigned int maxLen, unsigned char *enc, unsigned encLen); |
OLD | NEW |