Merge branch 'master' into frodo-aes

This commit is contained in:
Douglas Stebila 2019-04-11 13:48:50 -04:00
commit 518e8656be
6 changed files with 32 additions and 21 deletions

View File

@ -1,9 +1,9 @@
#include <stdint.h>
#include <string.h>
#include "thash.h"
#include "address.h"
#include "params.h"
#include "thash.h"
#include "fips202.h"

View File

@ -1,11 +1,11 @@
#include <stdint.h>
#include <string.h>
#include "utils.h"
#include "address.h"
#include "hash.h"
#include "params.h"
#include "thash.h"
#include "utils.h"
#include "wots.h"
// TODO clarify address expectations, and make them more uniform.

View File

@ -30,8 +30,11 @@ def run_subprocess(command, working_dir='.', env=None, expected_returncode=0):
env=env,
)
print(result.stdout.decode('utf-8'))
assert result.returncode == expected_returncode, \
"Got unexpected return code {}".format(result.returncode)
if expected_returncode is not None:
assert result.returncode == expected_returncode, \
"Got unexpected return code {}".format(result.returncode)
else:
return (result.returncode, result.stdout.decode('utf-8'))
return result.stdout.decode('utf-8')
@ -111,8 +114,10 @@ def permit_test(testname, thing, **args):
if isinstance(thing, pqclean.Implementation):
scheme = thing.scheme
else:
elif isinstance(thing, pqclean.Scheme):
scheme = thing
else:
return True
if 'PQCLEAN_ONLY_TYPES' in os.environ:
if not(scheme.type.lower() in os.environ['PQCLEAN_ONLY_TYPES'].lower().split(',')):

View File

@ -70,7 +70,7 @@ class Implementation:
def __init__(self, scheme, name):
self.scheme = scheme
self.name = name
def metadata(self):
for i in self.scheme.metadata()['implementations']:
if i['name'] == self.name:
@ -79,9 +79,6 @@ class Implementation:
def path(self, base='..') -> str:
return os.path.join(self.scheme.path(), self.name)
def namespace_prefix(self):
return 'PQCLEAN_{}_{}_'.format(self.scheme.name.upper(), self.name.upper()).replace('-', '')
def libname(self) -> str:
if os.name == 'nt':
return "lib{}_{}.lib".format(self.scheme.name, self.name)

View File

@ -12,7 +12,7 @@ import helpers
def test_common():
for d in os.listdir('common'):
primitive = re.sub(r"\.c$", "", d)
yield check_common, primitive
if helpers.permit_test('common', None): yield check_common, primitive
def check_common(primitive):

View File

@ -1,6 +1,7 @@
import os
from glob import glob
import sys
import unittest
import pqclean
import helpers
@ -17,18 +18,26 @@ def test_clang_tidy():
def check_tidy(implementation: pqclean.Implementation):
helpers.ensure_available('clang-tidy')
cfiles = glob(os.path.join(implementation.path(), '*.c'))
cfiles = implementation.cfiles()
common_files = glob(os.path.join('..', 'common', '*.c'))
helpers.run_subprocess(['clang-tidy',
'-quiet',
'-header-filter=.*'] +
additional_flags +
[*cfiles,
*common_files,
'--',
'-iquote', os.path.join('..', 'common'),
'-iquote', implementation.path(),
])
(returncode, _) = helpers.run_subprocess(
['clang-tidy',
'-quiet',
'-header-filter=.*',
*additional_flags,
*cfiles,
*common_files,
'--',
'-iquote', os.path.join('..', 'common'),
'-iquote', implementation.path()],
expected_returncode=None,
)
# Detect and gracefully avoid segfaults
if returncode == -11:
raise unittest.SkipTest("clang-tidy segfaulted")
else:
assert returncode == 0, "Clang-tidy returned %d" % returncode
if __name__ == "__main__":