Merge branch 'master' into nist-kat

This commit is contained in:
Douglas Stebila 2019-04-16 14:19:20 -04:00
commit 24938353ac
20 changed files with 33 additions and 24 deletions

View File

@ -2,7 +2,7 @@
<!-- Type some lines about your submission --> <!-- Type some lines about your submission -->
<!-- If you are not submitting a new scheme, we suggest removing the following lines -->
#### Manually checked properties #### Manually checked properties
<!-- These checkboxes serve for the maintainers of PQClean to verify your submission. Please do not check them yourself. --> <!-- These checkboxes serve for the maintainers of PQClean to verify your submission. Please do not check them yourself. -->

View File

@ -26,9 +26,8 @@ See the section [API](#API) below.
type: <kem|signature> type: <kem|signature>
claimed-nist-level: <N> claimed-nist-level: <N>
length-public-key: <N> # KEM and signature length-public-key: <N> # KEM and signature
length-secret-key: <N> # KEM and signature
length-ciphertext: <N> # KEM only length-ciphertext: <N> # KEM only
length-shared-secret: <N> # KEM only length-shared-secret: <N> # KEM only
length-signature: <N> # Signature only length-signature: <N> # Signature only
testvectors-sha256: sha256sum of output of testvectors testvectors-sha256: sha256sum of output of testvectors
principal-submitter: Eve principal-submitter: Eve
@ -38,6 +37,7 @@ See the section [API](#API) below.
- ... - ...
implementations: implementations:
- name: clean - name: clean
length-secret-key: <N> # KEM and signature
version: <some version indicator> version: <some version indicator>
``` ```

0
crypto_kem/ntruhps2048509/clean/api.h Executable file → Normal file
View File

0
crypto_kem/ntruhps2048509/clean/crypto_sort.c Executable file → Normal file
View File

0
crypto_kem/ntruhps2048509/clean/crypto_sort.h Executable file → Normal file
View File

0
crypto_kem/ntruhps2048509/clean/kem.c Executable file → Normal file
View File

0
crypto_kem/ntruhps2048509/clean/owcpa.c Executable file → Normal file
View File

0
crypto_kem/ntruhps2048509/clean/owcpa.h Executable file → Normal file
View File

0
crypto_kem/ntruhps2048509/clean/pack3.c Executable file → Normal file
View File

0
crypto_kem/ntruhps2048509/clean/packq.c Executable file → Normal file
View File

0
crypto_kem/ntruhps2048509/clean/params.h Executable file → Normal file
View File

0
crypto_kem/ntruhps2048509/clean/poly.c Executable file → Normal file
View File

0
crypto_kem/ntruhps2048509/clean/poly.h Executable file → Normal file
View File

0
crypto_kem/ntruhps2048509/clean/sample.c Executable file → Normal file
View File

0
crypto_kem/ntruhps2048509/clean/sample.h Executable file → Normal file
View File

0
crypto_kem/ntruhps2048509/clean/verify.c Executable file → Normal file
View File

0
crypto_kem/ntruhps2048509/clean/verify.h Executable file → Normal file
View File

View File

@ -68,7 +68,7 @@ static void base_w(unsigned int *output, const size_t out_len,
bits += 8; bits += 8;
} }
bits -= SPX_WOTS_LOGW; bits -= SPX_WOTS_LOGW;
output[out] = (total >> bits) & (SPX_WOTS_W - 1); output[out] = (unsigned int)((total >> bits) & (SPX_WOTS_W - 1));
out++; out++;
} }
} }

View File

@ -73,3 +73,7 @@ clean:
$(RM) $(DEST_DIR)/test_aes $(RM) $(DEST_DIR)/test_aes
$(RM) $(DEST_DIR)/test_fips202 $(RM) $(DEST_DIR)/test_fips202
$(RM) $(DEST_DIR)/test_sha2 $(RM) $(DEST_DIR)/test_sha2
.PHONY: distclean
distclean:
$(RM) -r $(DEST_DIR)

View File

@ -14,14 +14,14 @@ import helpers
def test_functest(): def test_functest():
for scheme in pqclean.Scheme.all_schemes(): for scheme in pqclean.Scheme.all_schemes():
for implementation in scheme.implementations: for implementation in scheme.implementations:
if helpers.permit_test('functest', implementation): if helpers.permit_test('functest', implementation):
yield check_functest, implementation yield check_functest, implementation
def test_functest_sanitizers(): def test_functest_sanitizers():
for scheme in pqclean.Scheme.all_schemes(): for scheme in pqclean.Scheme.all_schemes():
for implementation in scheme.implementations: for implementation in scheme.implementations:
if helpers.permit_test('functest_sanitizers', implementation): if helpers.permit_test('functest_sanitizers', implementation):
yield check_functest_sanitizers, implementation yield check_functest_sanitizers, implementation
@ -41,39 +41,44 @@ def check_functest(implementation):
) )
@helpers.skip_windows @helpers.skip_windows()
def check_functest_sanitizers(implementation): def check_functest_sanitizers(implementation):
env = None env = None
if platform.machine() == 'ppc' and os.environ.get('CC', 'gcc') == 'clang': if platform.machine() == 'ppc' and os.environ.get('CC', 'gcc') == 'clang':
raise unittest.SkipTest("Clang does not support ASAN on ppc") raise unittest.SkipTest("Clang does not support ASAN on ppc")
elif platform.machine() in ['armv7l', 'aarch64']: elif platform.machine() in ['armv7l', 'aarch64']:
env = {'ASAN_OPTIONS': 'detect_leaks=0'} env = {'ASAN_OPTIONS': 'detect_leaks=0'}
elif platform.system() == 'Darwin':
raise unittest.SkipTest('valgrind is not reliable on OSX')
else: else:
print("Supported platform: {}".format(platform.machine())) print("Supported platform: {}".format(platform.machine()))
helpers.ensure_available('valgrind')
helpers.make('clean-scheme', 'functest', helpers.make('clean-scheme', 'functest',
TYPE=implementation.scheme.type, TYPE=implementation.scheme.type,
SCHEME=implementation.scheme.name, SCHEME=implementation.scheme.name,
IMPLEMENTATION=implementation.name, IMPLEMENTATION=implementation.name,
EXTRAFLAGS='-fsanitize=address,undefined', EXTRAFLAGS='-g -fsanitize=address,undefined',
working_dir=os.path.join('..', 'test'), working_dir=os.path.join('..', 'test'),
env=env) env=env)
helpers.run_subprocess( try:
[os.path.join('..', 'bin', 'functest_{}_{}{}'.format( helpers.run_subprocess(
implementation.scheme.name, [os.path.join('..', 'bin', 'functest_{}_{}{}'.format(
implementation.name, implementation.scheme.name,
'.exe' if os.name == 'nt' else '' implementation.name,
))], '.exe' if os.name == 'nt' else ''
os.path.join('..', 'bin'), ))],
env=env, os.path.join('..', 'bin'),
) env=env,
# Remove files with ASAN library compiled in )
helpers.make('clean-scheme', except AssertionError as e:
TYPE=implementation.scheme.type, raise e
SCHEME=implementation.scheme.name, finally:
IMPLEMENTATION=implementation.name, # Remove files with ASAN library compiled in
working_dir=os.path.join('..', 'test')) helpers.make('clean-scheme',
TYPE=implementation.scheme.type,
SCHEME=implementation.scheme.name,
IMPLEMENTATION=implementation.name,
working_dir=os.path.join('..', 'test'))
if __name__ == '__main__': if __name__ == '__main__':