upstream: estructure sntrup761.sh to process all files in a single

list, which will make it easier to reorder.  Re-inline int32_MINMAX.  ok
tobhe@

OpenBSD-Commit-ID: d145c6c19b08bb93c9e14bfaa7af589d90f144c0
This commit is contained in:
dtucker@openbsd.org 2021-01-04 21:58:58 +00:00 committed by Damien Miller
parent 4d96a3ebab
commit 91bac5e95b
3 changed files with 33 additions and 41 deletions

View File

@ -1,20 +0,0 @@
/* $OpenBSD: int32_minmax.inc,v 1.1 2020/12/30 14:13:28 tobhe Exp $ */
/*
* Public Domain, Authors:
* - Daniel J. Bernstein
* - Chitchanok Chuengsatiansup
* - Tanja Lange
* - Christine van Vredendaal
*/
#define int32_MINMAX(a,b) \
do { \
int64_t ab = (int64_t)b ^ (int64_t)a; \
int64_t c = (int64_t)b - (int64_t)a; \
c ^= ab & (c ^ b); \
c >>= 31; \
c &= ab; \
a ^= c; \
b ^= c; \
} while(0)

View File

@ -1,4 +1,4 @@
/* $OpenBSD: sntrup761.c,v 1.3 2021/01/03 18:05:21 tobhe Exp $ */ /* $OpenBSD: sntrup761.c,v 1.4 2021/01/04 21:58:58 dtucker Exp $ */
/* /*
* Public Domain, Authors: * Public Domain, Authors:
@ -12,10 +12,21 @@
#include <string.h> #include <string.h>
#include "crypto_api.h" #include "crypto_api.h"
#include "int32_minmax.inc"
#define CRYPTO_NAMESPACE(s) s #define CRYPTO_NAMESPACE(s) s
/* from supercop-20201130/crypto_sort/int32/portable4/int32_minmax.inc */
#define int32_MINMAX(a,b) \
do { \
int64_t ab = (int64_t)b ^ (int64_t)a; \
int64_t c = (int64_t)b - (int64_t)a; \
c ^= ab & (c ^ b); \
c >>= 31; \
c &= ab; \
a ^= c; \
b ^= c; \
} while(0)
/* from supercop-20201130/crypto_sort/int32/portable4/sort.c */ /* from supercop-20201130/crypto_sort/int32/portable4/sort.c */
#define int32 crypto_int32 #define int32 crypto_int32

View File

@ -1,9 +1,12 @@
#!/bin/sh #!/bin/sh
# $OpenBSD: sntrup761.sh,v 1.3 2021/01/03 18:05:21 tobhe Exp $ # $OpenBSD: sntrup761.sh,v 1.4 2021/01/04 21:58:58 dtucker Exp $
# Placed in the Public Domain. # Placed in the Public Domain.
# #
AUTHOR="supercop-20201130/crypto_kem/sntrup761/ref/implementors" AUTHOR="supercop-20201130/crypto_kem/sntrup761/ref/implementors"
FILES=" FILES="
supercop-20201130/crypto_sort/int32/portable4/int32_minmax.inc
supercop-20201130/crypto_sort/int32/portable4/sort.c
supercop-20201130/crypto_sort/uint32/useint32/sort.c
supercop-20201130/crypto_kem/sntrup761/ref/uint64.h supercop-20201130/crypto_kem/sntrup761/ref/uint64.h
supercop-20201130/crypto_kem/sntrup761/ref/uint16.h supercop-20201130/crypto_kem/sntrup761/ref/uint16.h
supercop-20201130/crypto_kem/sntrup761/ref/uint32.h supercop-20201130/crypto_kem/sntrup761/ref/uint32.h
@ -20,10 +23,6 @@ FILES="
supercop-20201130/crypto_kem/sntrup761/ref/Encode.c supercop-20201130/crypto_kem/sntrup761/ref/Encode.c
supercop-20201130/crypto_kem/sntrup761/ref/kem.c supercop-20201130/crypto_kem/sntrup761/ref/kem.c
" "
SORT_I32="
supercop-20201130/crypto_sort/int32/portable4/sort.c
"
SORT_U32="supercop-20201130/crypto_sort/uint32/useint32/sort.c"
### ###
set -e set -e
@ -38,29 +37,31 @@ echo ' */'
echo echo
echo '#include <string.h>' echo '#include <string.h>'
echo '#include "crypto_api.h"' echo '#include "crypto_api.h"'
echo '#include "int32_minmax.inc"'
echo echo
echo '#define CRYPTO_NAMESPACE(s) s' echo '#define CRYPTO_NAMESPACE(s) s'
echo echo
for i in $SORT_I32; do
echo "/* from $i */"
grep \
-v '#include' $i | \
sed -e "s/void crypto_sort/static void crypto_sort_int32/g"
echo
done
echo "/* from $SORT_U32 */"
grep \
-v '#include' $SORT_U32 | \
sed -e "s/void crypto_sort/static void crypto_sort_uint32/g"
echo
for i in $FILES; do for i in $FILES; do
echo "/* from $i */" echo "/* from $i */"
grep \ grep \
-v '#include' $i | \ -v '#include' $i | \
sed -e "s/crypto_kem_/crypto_kem_sntrup761_/g" \ case "$i" in
# Use int64_t for intermediate values in int32_MINMAX to prevent signed
# 32-bit integer overflow when called by crypto_sort_uint32.
*/int32_minmax.inc)
sed -e "s/int32 ab = b ^ a/int64_t ab = (int64_t)b ^ (int64_t)a/" \
-e "s/int32 c = b - a/int64_t c = (int64_t)b - (int64_t)a/"
;;
*/int32/portable4/sort.c)
sed -e "s/void crypto_sort/static void crypto_sort_int32/g"
;;
*/uint32/useint32/sort.c)
sed -e "s/void crypto_sort/static void crypto_sort_uint32/g"
;;
*)
sed -e "s/crypto_kem_/crypto_kem_sntrup761_/g" \
-e "s/^extern void /static void /" \ -e "s/^extern void /static void /" \
-e "s/^void /static void /" \ -e "s/^void /static void /" \
-e "/^typedef int32_t int32;$/d" -e "/^typedef int32_t int32;$/d"
esac
echo echo
done done