Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP2:GA
mozilla-nss.1743
nss-CC-mpi_zeroize.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File nss-CC-mpi_zeroize.patch of Package mozilla-nss.1743
# HG changeset patch # Parent 9fc16a0c1b75ea6e809709f18249a96ba1a6eb56 # Parent 1e3e7cf1dee9cabe61f9fceb83e4213fbb6310bf Require MP_CRYPTO to be set to a non-zero value during compilation which ensures that any memory allocated for a mpi is zeroed before being freed. Also make sure that ALGORITHM_1 (the non-MPI) variant of GCM implementation isn't used, since it lacks the necessary zeroizations (and according to comment in gcm.c it is also noticeably slower). This patch has to be explicitly disabled in order to compile NSS without the automatic zeroization. diff --git a/lib/freebl/gcm.c b/lib/freebl/gcm.c --- a/lib/freebl/gcm.c +++ b/lib/freebl/gcm.c @@ -32,16 +32,22 @@ static SECStatus gcmHash_Update(gcmHashC static SECStatus gcmHash_Sync(gcmHashContext *ghash, unsigned int blocksize); static SECStatus gcmHash_Final(gcmHashContext *gcm, unsigned char *outbuf, unsigned int *outlen, unsigned int maxout, unsigned int blocksize); static SECStatus gcmHash_Reset(gcmHashContext *ghash, const unsigned char *inbuf, unsigned int inbufLen, unsigned int blocksize); +/* the ALGORITHM_1 implementation lacks any data structure zeroizations and is + * slower (see below) - cancel compilation if it somehow got requested */ +#ifdef GCM_USE_ALGORITHM_1 +#error "ALGORITHM_1 is not supported in this build" +#endif + /* compile time defines to select how the GF2 multiply is calculated. * There are currently 2 algorithms implemented here: MPI and ALGORITHM_1. * * MPI uses the GF2m implemented in mpi to support GF2 ECC. * ALGORITHM_1 is the Algorithm 1 in both NIST SP 800-38D and * "The Galois/Counter Mode of Operation (GCM)", McGrew & Viega. */ #if !defined(GCM_USE_ALGORITHM_1) && !defined(GCM_USE_MPI) diff --git a/lib/freebl/mpi/mpi.c b/lib/freebl/mpi/mpi.c --- a/lib/freebl/mpi/mpi.c +++ b/lib/freebl/mpi/mpi.c @@ -7,16 +7,20 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "mpi-priv.h" #if defined(OSF1) #include <c_asm.h> #endif +#if !MP_CRYPTO +#error "MP_CRYPTO has to be defined to make sure data is zeroed before being freed" +#endif + #if defined(__arm__) && \ ((defined(__thumb__) && !defined(__thumb2__)) || defined(__ARM_ARCH_3__)) /* 16-bit thumb or ARM v3 doesn't work inlined assember version */ #undef MP_ASSEMBLY_MULTIPLY #undef MP_ASSEMBLY_SQUARE #endif #if MP_LOGTAB
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor