Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(561)

Unified Diff: nss/mozilla/security/nss/lib/freebl/ReviewComments

Issue 10919163: Add GCM, CTR, and CTS modes to AES. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/third_party/
Patch Set: Fix comments as rsleevi suggested, fix a 32-bit bug and miscellaneous issues Created 8 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | nss/mozilla/security/nss/lib/freebl/blapii.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: nss/mozilla/security/nss/lib/freebl/ReviewComments
===================================================================
--- nss/mozilla/security/nss/lib/freebl/ReviewComments (revision 0)
+++ nss/mozilla/security/nss/lib/freebl/ReviewComments (revision 0)
@@ -0,0 +1,98 @@
+Issues:
+
+1. The |param| input parameter to CTR_CreateContext, CTR_InitContext, etc.
+should be a const void * or a pointer to a concrete type, rather than
+const unsigned char *. Should we change the type to const void * or a
+a pointer to a concrete type, such as const CK_AES_CTR_PARAMS * ?
+
+2. lib/freebl should not use PKCS #11 types defined in pkcs11t.h, such as
+CK_AES_CTR_PARAMS. In addition, ctr.c was written to support any suitable
+block cipher, but CK_AES_CTR_PARAMS is AES-specific.
+
+3. ctr_GetNextCtr does not handle counter rollover.
+
+4. Only single-part operations are supported for CTS and GCM.
+CTS_EncryptUpdate can only be called once on each operation context.
+
+5. Why is the XOR operation defined as a function (ctr_xor) in CTR but as
+a macro (XOR_BLOCK and GCM_XOR) in CTS and GCM?
+
+6. The GCM code for 64-bit block ciphers is not tested. I recommend removing
+it.
+
+7. CK_AES_GCM_PARAMS and CK_AES_CCM_PARAMS were renamed CK_GCM_PARAMS and
+CK_CCM_PARAMS in PKCS #11 v2.30 draft.
+
+8. In ctr.c, ctr->bufPtr satisfies the following invariant:
+ 0 < ctr->bufPtr <= blocksize
+I can make ctr->bufPtr behave like ghash->bufLen in gcm.c. Want me to do
+that?
+
+9. I found two bugs in CTS_DecryptUpdate where you convert the input buffer
+from CS-1 to CS-2. Since you didn't provide tests for CTS, I didn't try to
+fix these bugs.
+
+======================================================================
+
+Patch set 1:
+
+Original patch by rrelyea, except manifest.mn.
+
+======================================================================
+
+Patch set 2:
+
+Move lib/util/pkcs11t.h to this patch because lib/freebl needs the
+pkcs11t.h changes.
+
+======================================================================
+
+Patch set 3:
+
+Remove the RCS Id lines from new files. I seem to remember we decided to
+remove RCS Id lines from NSS source files.
+
+Add comments. Remove blank lines, spaces at the end of lines. Fix typos.
+
+Change freeblDestroyFunc to return void instead of SECStatus.
+
+Check that blocksize is <= the sizes of various block buffers.
+
+Change BITS_PER_BYTE (deprecated NSPR macro name) to PR_BITS_PER_BYTE.
+
+Fix a bug in ctr_GetNextCtr: *counterPtr should be pre-incremented.
+
+CTR_Update does not need the local cipherblock buffer. It can just use
+ctr->buffer when ctr->buffer is empty.
+
+Mark internal functions as static.
+
+Change some variables of type int to unsigned int.
+
+Use NSS_SecureMemcmp instead of PORT_Memcmp to check the GCM authentication
+tag.
+
+Make AES_InitContext support the three new modes (CTS, CTR, and GCM),
+so that AES_CreateContext and AES_InitContext differ only in whether
+the AESContext structure is allocated.
rjrejyea 2012/09/19 22:52:48 OK, so this is a bad idea, but it's not obvious wh
wtc 2012/09/20 23:27:23 Bob: thanks for the info. The reason for the asymm
+
+AES_DestroyContext should still call cx->destroy when freeit is false.
+
+======================================================================
+
+Patch set 3:
wtc 2012/09/18 01:03:40 This is a typo. This should say "Patch set 4".
+
+Add comments. Fix typos.
+
+Change some variables of type int to unsigned int.
+
+Improve the input validation in CTR_InitContext.
+
+Fix a bug in the generation of pre-counter block for 64-bit block ciphers
+in GCM_CreateContext. Note that the spec is gcm-revised-spec.pdf, dated
+May 31, 2005.
+
+Declare poly_128 and poly_64 as const.
+
+Fix a 32-bit bug in GCM code. cLen must be a 64-bit unsigned integer, so
+declaring cLen as unsigned long is not portable.
« no previous file with comments | « no previous file | nss/mozilla/security/nss/lib/freebl/blapii.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698