Index: patches/nss-encrypt-with-sym-key.patch |
=================================================================== |
--- patches/nss-encrypt-with-sym-key.patch (revision 190723) |
+++ patches/nss-encrypt-with-sym-key.patch (working copy) |
@@ -1,120 +0,0 @@ |
-Index: mozilla/security/nss/lib/pk11wrap/pk11obj.c |
-=================================================================== |
---- mozilla/security/nss/lib/pk11wrap/pk11obj.c (revision 182578) |
-+++ mozilla/security/nss/lib/pk11wrap/pk11obj.c (working copy) |
-@@ -822,6 +822,93 @@ |
- return SECSuccess; |
- } |
- |
-+SECStatus |
-+PK11_EncryptWithSymKey(PK11SymKey *symKey, |
-+ CK_MECHANISM_TYPE mechanism, SECItem *param, |
-+ unsigned char *out, unsigned int *outLen, |
-+ unsigned int maxLen, |
-+ const unsigned char *data, unsigned dataLen) |
-+{ |
-+ PK11SlotInfo *slot = symKey->slot; |
-+ CK_MECHANISM mech = {0, NULL, 0 }; |
-+ CK_ULONG len = maxLen; |
-+ PRBool owner = PR_TRUE; |
-+ CK_SESSION_HANDLE session; |
-+ PRBool haslock = PR_FALSE; |
-+ CK_RV crv; |
-+ |
-+ mech.mechanism = mechanism; |
-+ if (param) { |
-+ mech.pParameter = param->data; |
-+ mech.ulParameterLen = param->len; |
-+ } |
-+ |
-+ session = pk11_GetNewSession(slot, &owner); |
-+ haslock = (!owner || !slot->isThreadSafe); |
-+ if (haslock) PK11_EnterSlotMonitor(slot); |
-+ crv = PK11_GETTAB(slot)->C_EncryptInit(session, &mech, symKey->objectID); |
-+ if (crv != CKR_OK) { |
-+ if (haslock) PK11_ExitSlotMonitor(slot); |
-+ pk11_CloseSession(slot,session,owner); |
-+ PORT_SetError( PK11_MapError(crv) ); |
-+ return SECFailure; |
-+ } |
-+ crv = PK11_GETTAB(slot)->C_Encrypt(session, (unsigned char *)data, |
-+ dataLen, out, &len); |
-+ if (haslock) PK11_ExitSlotMonitor(slot); |
-+ pk11_CloseSession(slot,session,owner); |
-+ *outLen = len; |
-+ if (crv != CKR_OK) { |
-+ PORT_SetError( PK11_MapError(crv) ); |
-+ return SECFailure; |
-+ } |
-+ return SECSuccess; |
-+} |
-+ |
-+SECStatus |
-+PK11_DecryptWithSymKey(PK11SymKey *symKey, |
-+ CK_MECHANISM_TYPE mechanism, SECItem *param, |
-+ unsigned char *out, unsigned int *outLen, |
-+ unsigned int maxLen, |
-+ const unsigned char *enc, unsigned encLen) |
-+{ |
-+ PK11SlotInfo *slot = symKey->slot; |
-+ CK_MECHANISM mech = {0, NULL, 0 }; |
-+ CK_ULONG len = maxLen; |
-+ PRBool owner = PR_TRUE; |
-+ CK_SESSION_HANDLE session; |
-+ PRBool haslock = PR_FALSE; |
-+ CK_RV crv; |
-+ |
-+ mech.mechanism = mechanism; |
-+ if (param) { |
-+ mech.pParameter = param->data; |
-+ mech.ulParameterLen = param->len; |
-+ } |
-+ |
-+ session = pk11_GetNewSession(slot, &owner); |
-+ haslock = (!owner || !slot->isThreadSafe); |
-+ if (haslock) PK11_EnterSlotMonitor(slot); |
-+ crv = PK11_GETTAB(slot)->C_DecryptInit(session, &mech, symKey->objectID); |
-+ if (crv != CKR_OK) { |
-+ if (haslock) PK11_ExitSlotMonitor(slot); |
-+ pk11_CloseSession(slot, session, owner); |
-+ PORT_SetError( PK11_MapError(crv) ); |
-+ return SECFailure; |
-+ } |
-+ |
-+ crv = PK11_GETTAB(slot)->C_Decrypt(session, (unsigned char *)enc, encLen, |
-+ out, &len); |
-+ if (haslock) PK11_ExitSlotMonitor(slot); |
-+ pk11_CloseSession(slot, session, owner); |
-+ *outLen = len; |
-+ if (crv != CKR_OK) { |
-+ PORT_SetError( PK11_MapError(crv) ); |
-+ return SECFailure; |
-+ } |
-+ return SECSuccess; |
-+} |
-+ |
- /* |
- * Now SSL 2.0 uses raw RSA stuff. These next to functions *must* use |
- * RSA keys, or they'll fail. We do the checks up front. If anyone comes |
-Index: mozilla/security/nss/lib/pk11wrap/pk11pub.h |
-=================================================================== |
---- mozilla/security/nss/lib/pk11wrap/pk11pub.h (revision 182578) |
-+++ mozilla/security/nss/lib/pk11wrap/pk11pub.h (working copy) |
-@@ -508,6 +508,17 @@ |
- void *wincx); |
- int PK11_GetPrivateModulusLen(SECKEYPrivateKey *key); |
- |
-+SECStatus PK11_EncryptWithSymKey(PK11SymKey *symKey, |
-+ CK_MECHANISM_TYPE mechanism, SECItem *param, |
-+ unsigned char *out, unsigned int *outLen, |
-+ unsigned int maxLen, |
-+ const unsigned char *data, unsigned dataLen); |
-+SECStatus PK11_DecryptWithSymKey(PK11SymKey *symkey, |
-+ CK_MECHANISM_TYPE mechanism, SECItem *param, |
-+ unsigned char *out, unsigned int *outLen, |
-+ unsigned int maxLen, |
-+ const unsigned char *enc, unsigned encLen); |
-+ |
- /* note: despite the name, this function takes a private key. */ |
- SECStatus PK11_PubDecryptRaw(SECKEYPrivateKey *key, unsigned char *data, |
- unsigned *outLen, unsigned int maxLen, unsigned char *enc, unsigned encLen); |