Issue #1693 - Update NSS to 3.59.1.1

This updates to MoonchildProductions/NSS@bd49b2b88 in the repo created for our
consumption of the library.
This commit is contained in:
Moonchild
2020-12-23 19:02:52 +00:00
parent 149d2ffa77
commit 029bcfe189
594 changed files with 504289 additions and 18776 deletions
@@ -0,0 +1,8 @@
4 Added functions:
[A] 'function SECStatus CERT_AddCertToListHeadWithData(CERTCertList*, CERTCertificate*, void*)' {CERT_AddCertToListHeadWithData@@NSS_3.59}
[A] 'function SECStatus CERT_AddCertToListTailWithData(CERTCertList*, CERTCertificate*, void*)' {CERT_AddCertToListTailWithData@@NSS_3.59}
[A] 'function PK11SymKey* PK11_PubUnwrapSymKeyWithMechanism(SECKEYPrivateKey*, CK_MECHANISM_TYPE, SECItem*, SECItem*, CK_MECHANISM_TYPE, CK_ATTRIBUTE_TYPE, int)' {PK11_PubUnwrapSymKeyWithMechanism@@NSS_3.59}
[A] 'function SECStatus PK11_PubWrapSymKeyWithMechanism(SECKEYPublicKey*, CK_MECHANISM_TYPE, SECItem*, PK11SymKey*, SECItem*)' {PK11_PubWrapSymKeyWithMechanism@@NSS_3.59}
@@ -0,0 +1,6 @@
2 Added functions:
[A] 'function PRBool NSS_IsPolicyLocked()' {NSS_IsPolicyLocked@@NSSUTIL_3.59}
[A] 'function void NSS_LockPolicy()' {NSS_LockPolicy@@NSSUTIL_3.59}
@@ -1,13 +0,0 @@
1 function with some indirect sub-type change:
[C]'function SECStatus SSL_GetPreliminaryChannelInfo(PRFileDesc*, SSLPreliminaryChannelInfo*, PRUintn)' at sslinfo.c:113:1 has some indirect sub-type changes:
parameter 2 of type 'SSLPreliminaryChannelInfo*' has sub-type changes:
in pointed to type 'typedef SSLPreliminaryChannelInfo' at sslt.h:424:1:
underlying type 'struct SSLPreliminaryChannelInfoStr' at sslt.h:373:1 changed:
type size changed from 192 to 288 (in bits)
3 data member insertions:
'PRBool SSLPreliminaryChannelInfoStr::peerDelegCred', at offset 192 (in bits) at sslt.h:418:1
'PRUint32 SSLPreliminaryChannelInfoStr::authKeyBits', at offset 224 (in bits) at sslt.h:419:1
'SSLSignatureScheme SSLPreliminaryChannelInfoStr::signatureScheme', at offset 256 (in bits) at sslt.h:420:1
@@ -1 +1 @@
NSS_3_47_BRANCH
NSS_3_58_BRANCH
@@ -1,67 +0,0 @@
#! /bin/bash
# Each buildbot-slave requires a bbenv.sh file that defines
# machine specific variables. This is an example file.
HOST=$(hostname | cut -d. -f1)
export HOST
# if your machine's IP isn't registered in DNS,
# you must set appropriate environment variables
# that can be resolved locally.
# For example, if localhost.localdomain works on your system, set:
#HOST=localhost
#DOMSUF=localdomain
#export DOMSUF
ARCH=$(uname -s)
ulimit -c unlimited 2> /dev/null
export NSPR_LOG_MODULES="pkix:1"
#export JAVA_HOME_32=
#export JAVA_HOME_64=
#enable if you have PKITS data
#export PKITS_DATA=$HOME/pkits/data/
NSS_BUILD_TARGET="clean nss_build_all"
JSS_BUILD_TARGET="clean all"
MAKE=gmake
AWK=awk
PATCH=patch
if [ "${ARCH}" = "SunOS" ]; then
AWK=nawk
PATCH=gpatch
ARCH=SunOS/$(uname -p)
fi
if [ "${ARCH}" = "Linux" -a -f /etc/system-release ]; then
VERSION=`sed -e 's; release ;;' -e 's; (.*)$;;' -e 's;Red Hat Enterprise Linux Server;RHEL;' -e 's;Red Hat Enterprise Linux Workstation;RHEL;' /etc/system-release`
ARCH=Linux/${VERSION}
echo ${ARCH}
fi
PROCESSOR=$(uname -p)
if [ "${PROCESSOR}" = "ppc64" ]; then
ARCH="${ARCH}/ppc64"
fi
if [ "${PROCESSOR}" = "powerpc" ]; then
ARCH="${ARCH}/ppc"
fi
PORT_64_DBG=8543
PORT_64_OPT=8544
PORT_32_DBG=8545
PORT_32_OPT=8546
if [ "${NSS_TESTS}" = "memleak" ]; then
PORT_64_DBG=8547
PORT_64_OPT=8548
PORT_32_DBG=8549
PORT_32_OPT=8550
fi
@@ -1,548 +0,0 @@
#! /bin/bash
# Ensure a failure of the first command inside a pipe
# won't be hidden by commands later in the pipe.
# (e.g. as in ./dosomething | grep)
set -o pipefail
proc_args()
{
while [ -n "$1" ]; do
OPT=$(echo $1 | cut -d= -f1)
VAL=$(echo $1 | cut -d= -f2)
case $OPT in
"--build-nss")
BUILD_NSS=1
;;
"--test-nss")
TEST_NSS=1
;;
"--check-abi")
CHECK_ABI=1
;;
"--build-jss")
BUILD_JSS=1
;;
"--test-jss")
TEST_JSS=1
;;
"--memtest")
NSS_TESTS="memleak"
export NSS_TESTS
;;
"--nojsssign")
NO_JSS_SIGN=1
;;
*)
echo "Usage: $0 ..."
echo " --memtest - run the memory leak tests"
echo " --nojsssign - try to sign jss"
echo " --build-nss"
echo " --build-jss"
echo " --test-nss"
echo " --test-jss"
echo " --check-abi"
exit 1
;;
esac
shift
done
}
set_env()
{
TOPDIR=$(pwd)
HGDIR=$(pwd)$(echo "/hg")
OUTPUTDIR=$(pwd)$(echo "/output")
LOG_ALL="${OUTPUTDIR}/all.log"
LOG_TMP="${OUTPUTDIR}/tmp.log"
echo "hello" |grep --line-buffered hello >/dev/null 2>&1
[ $? -eq 0 ] && GREP_BUFFER="--line-buffered"
}
print_log()
{
DATE=$(date "+TB [%Y-%m-%d %H:%M:%S]")
echo "${DATE} $*"
echo "${DATE} $*" >> ${LOG_ALL}
}
print_result()
{
TESTNAME=$1
RET=$2
EXP=$3
if [ ${RET} -eq ${EXP} ]; then
print_log "${TESTNAME} PASSED"
else
print_log "${TESTNAME} FAILED"
fi
}
print_env()
{
print_log "######## Environment variables ########"
uname -a | tee -a ${LOG_ALL}
if [ -e "/etc/redhat-release" ]; then
cat "/etc/redhat-release" | tee -a ${LOG_ALL}
fi
# don't print the MAIL command, it might contain a password
env | grep -v "^MAIL=" | tee -a ${LOG_ALL}
}
set_cycle()
{
BITS=$1
OPT=$2
if [ "${BITS}" = "64" ]; then
USE_64=1
JAVA_HOME=${JAVA_HOME_64}
PORT_DBG=${PORT_64_DBG}
PORT_OPT=${PORT_64_OPT}
else
USE_64=
JAVA_HOME=${JAVA_HOME_32}
PORT_DBG=${PORT_32_DBG}
PORT_OPT=${PORT_32_OPT}
fi
export USE_64
export JAVA_HOME
BUILD_OPT=
if [ "${OPT}" = "OPT" ]; then
BUILD_OPT=1
XPCLASS=xpclass.jar
PORT=${PORT_OPT}
else
BUILD_OPT=
XPCLASS=xpclass_dbg.jar
PORT=${PORT_DBG}
fi
export BUILD_OPT
PORT_JSS_SERVER=$(expr ${PORT} + 20)
PORT_JSSE_SERVER=$(expr ${PORT} + 40)
export PORT
export PORT_JSS_SERVER
export PORT_JSSE_SERVER
}
build_nss()
{
print_log "######## NSS - build - ${BITS} bits - ${OPT} ########"
print_log "$ cd ${HGDIR}/nss"
cd ${HGDIR}/nss
print_log "$ ${MAKE} ${NSS_BUILD_TARGET}"
#${MAKE} ${NSS_BUILD_TARGET} 2>&1 | tee -a ${LOG_ALL} | grep ${GREP_BUFFER} "^${MAKE}"
${MAKE} ${NSS_BUILD_TARGET} 2>&1 | tee -a ${LOG_ALL}
RET=$?
print_result "NSS - build - ${BITS} bits - ${OPT}" ${RET} 0
if [ ${RET} -eq 0 ]; then
return 0
else
tail -100 ${LOG_ALL}
return ${RET}
fi
}
build_jss()
{
print_log "######## JSS - build - ${BITS} bits - ${OPT} ########"
print_log "$ cd ${HGDIR}/jss"
cd ${HGDIR}/jss
print_log "$ ${MAKE} ${JSS_BUILD_TARGET}"
#${MAKE} ${JSS_BUILD_TARGET} 2>&1 | tee -a ${LOG_ALL} | grep ${GREP_BUFFER} "^${MAKE}"
${MAKE} ${JSS_BUILD_TARGET} 2>&1 | tee -a ${LOG_ALL}
RET=$?
print_result "JSS build - ${BITS} bits - ${OPT}" ${RET} 0
[ ${RET} -eq 0 ] || return ${RET}
print_log "$ cd ${HGDIR}/dist"
cd ${HGDIR}/dist
if [ -z "${NO_JSS_SIGN}" ]; then
print_log "cat ${TOPDIR}/keystore.pw | ${JAVA_HOME}/bin/jarsigner -keystore ${TOPDIR}/keystore -internalsf ${XPCLASS} jssdsa"
cat ${TOPDIR}/keystore.pw | ${JAVA_HOME}/bin/jarsigner -keystore ${TOPDIR}/keystore -internalsf ${XPCLASS} jssdsa >> ${LOG_ALL} 2>&1
RET=$?
print_result "JSS - sign JAR files - ${BITS} bits - ${OPT}" ${RET} 0
[ ${RET} -eq 0 ] || return ${RET}
fi
print_log "${JAVA_HOME}/bin/jarsigner -verify -certs ${XPCLASS}"
${JAVA_HOME}/bin/jarsigner -verify -certs ${XPCLASS} >> ${LOG_ALL} 2>&1
RET=$?
print_result "JSS - verify JAR files - ${BITS} bits - ${OPT}" ${RET} 0
[ ${RET} -eq 0 ] || return ${RET}
return 0
}
test_nss()
{
print_log "######## NSS - tests - ${BITS} bits - ${OPT} ########"
if [ "${OS_TARGET}" = "Android" ]; then
print_log "$ cd ${HGDIR}/nss/tests/remote"
cd ${HGDIR}/nss/tests/remote
print_log "$ make test_android"
make test_android 2>&1 | tee ${LOG_TMP} | grep ${GREP_BUFFER} ": #"
OUTPUTFILE=${HGDIR}/tests_results/security/*.1/output.log
else
print_log "$ cd ${HGDIR}/nss/tests"
cd ${HGDIR}/nss/tests
print_log "$ ./all.sh"
./all.sh 2>&1 | tee ${LOG_TMP} | egrep ${GREP_BUFFER} ": #|^\[.{10}\] "
OUTPUTFILE=${LOG_TMP}
fi
cat ${LOG_TMP} >> ${LOG_ALL}
tail -n2 ${HGDIR}/tests_results/security/*.1/results.html | grep END_OF_TEST >> ${LOG_ALL}
RET=$?
print_log "######## details of detected failures (if any) ########"
grep -B50 -w FAILED ${OUTPUTFILE}
[ $? -eq 1 ] || RET=1
print_result "NSS - tests - ${BITS} bits - ${OPT}" ${RET} 0
return ${RET}
}
check_abi()
{
print_log "######## NSS ABI CHECK - ${BITS} bits - ${OPT} ########"
print_log "######## creating temporary HG clones ########"
rm -rf ${HGDIR}/baseline
mkdir ${HGDIR}/baseline
BASE_NSS=`cat ${HGDIR}/nss/automation/abi-check/previous-nss-release`
hg clone -u "${BASE_NSS}" "${HGDIR}/nss" "${HGDIR}/baseline/nss"
if [ $? -ne 0 ]; then
echo "invalid tag in automation/abi-check/previous-nss-release"
return 1
fi
BASE_NSPR=NSPR_$(head -1 ${HGDIR}/baseline/nss/automation/release/nspr-version.txt | cut -d . -f 1-2 | tr . _)_BRANCH
hg clone -u "${BASE_NSPR}" "${HGDIR}/nspr" "${HGDIR}/baseline/nspr"
if [ $? -ne 0 ]; then
echo "nonexisting tag ${BASE_NSPR} derived from ${BASE_NSS} automation/release/nspr-version.txt"
# Assume that version hasn't been released yet, fall back to trunk
pushd "${HGDIR}/baseline/nspr"
hg update default
popd
fi
print_log "######## building baseline NSPR/NSS ########"
pushd ${HGDIR}/baseline/nss
print_log "$ ${MAKE} ${NSS_BUILD_TARGET}"
${MAKE} ${NSS_BUILD_TARGET} 2>&1 | tee -a ${LOG_ALL}
RET=$?
print_result "NSS - build - ${BITS} bits - ${OPT}" ${RET} 0
if [ ${RET} -ne 0 ]; then
tail -100 ${LOG_ALL}
return ${RET}
fi
popd
ABI_PROBLEM_FOUND=0
ABI_REPORT=${OUTPUTDIR}/abi-diff.txt
rm -f ${ABI_REPORT}
PREVDIST=${HGDIR}/baseline/dist
NEWDIST=${HGDIR}/dist
ALL_SOs="libfreebl3.so libfreeblpriv3.so libnspr4.so libnss3.so libnssckbi.so libnssdbm3.so libnsssysinit.so libnssutil3.so libplc4.so libplds4.so libsmime3.so libsoftokn3.so libssl3.so"
for SO in ${ALL_SOs}; do
if [ ! -f ${HGDIR}/nss/automation/abi-check/expected-report-$SO.txt ]; then
touch ${HGDIR}/nss/automation/abi-check/expected-report-$SO.txt
fi
abidiff --hd1 $PREVDIST/public/ --hd2 $NEWDIST/public \
$PREVDIST/*/lib/$SO $NEWDIST/*/lib/$SO \
> ${HGDIR}/nss/automation/abi-check/new-report-temp$SO.txt
RET=$?
cat ${HGDIR}/nss/automation/abi-check/new-report-temp$SO.txt \
| grep -v "^Functions changes summary:" \
| grep -v "^Variables changes summary:" \
> ${HGDIR}/nss/automation/abi-check/new-report-$SO.txt
rm -f ${HGDIR}/nss/automation/abi-check/new-report-temp$SO.txt
ABIDIFF_ERROR=$((($RET & 0x01) != 0))
ABIDIFF_USAGE_ERROR=$((($RET & 0x02) != 0))
ABIDIFF_ABI_CHANGE=$((($RET & 0x04) != 0))
ABIDIFF_ABI_INCOMPATIBLE_CHANGE=$((($RET & 0x08) != 0))
ABIDIFF_UNKNOWN_BIT_SET=$((($RET & 0xf0) != 0))
# If abidiff reports an error, or a usage error, or if it sets a result
# bit value this script doesn't know yet about, we'll report failure.
# For ABI changes, we don't yet report an error. We'll compare the
# result report with our whitelist. This allows us to silence changes
# that we're already aware of and have been declared acceptable.
REPORT_RET_AS_FAILURE=0
if [ $ABIDIFF_ERROR -ne 0 ]; then
print_log "abidiff reported ABIDIFF_ERROR."
REPORT_RET_AS_FAILURE=1
fi
if [ $ABIDIFF_USAGE_ERROR -ne 0 ]; then
print_log "abidiff reported ABIDIFF_USAGE_ERROR."
REPORT_RET_AS_FAILURE=1
fi
if [ $ABIDIFF_UNKNOWN_BIT_SET -ne 0 ]; then
print_log "abidiff reported ABIDIFF_UNKNOWN_BIT_SET."
REPORT_RET_AS_FAILURE=1
fi
if [ $ABIDIFF_ABI_CHANGE -ne 0 ]; then
print_log "Ignoring abidiff result ABI_CHANGE, instead we'll check for non-whitelisted differences."
fi
if [ $ABIDIFF_ABI_INCOMPATIBLE_CHANGE -ne 0 ]; then
print_log "Ignoring abidiff result ABIDIFF_ABI_INCOMPATIBLE_CHANGE, instead we'll check for non-whitelisted differences."
fi
if [ $REPORT_RET_AS_FAILURE -ne 0 ]; then
ABI_PROBLEM_FOUND=1
print_log "abidiff {$PREVDIST , $NEWDIST} for $SO FAILED with result $RET, or failed writing to ${HGDIR}/nss/automation/abi-check/new-report-$SO.txt"
fi
if [ ! -f ${HGDIR}/nss/automation/abi-check/expected-report-$SO.txt ]; then
ABI_PROBLEM_FOUND=1
print_log "FAILED to access report file: ${HGDIR}/nss/automation/abi-check/expected-report-$SO.txt"
fi
diff -wB -u ${HGDIR}/nss/automation/abi-check/expected-report-$SO.txt \
${HGDIR}/nss/automation/abi-check/new-report-$SO.txt >> ${ABI_REPORT}
if [ ! -f ${ABI_REPORT} ]; then
ABI_PROBLEM_FOUND=1
print_log "FAILED to compare exepcted and new report: ${HGDIR}/nss/automation/abi-check/new-report-$SO.txt"
fi
done
if [ -s ${ABI_REPORT} ]; then
print_log "FAILED: there are new unexpected ABI changes"
cat ${ABI_REPORT}
return 1
elif [ $ABI_PROBLEM_FOUND -ne 0 ]; then
print_log "FAILED: failure executing the ABI checks"
cat ${ABI_REPORT}
return 1
fi
return 0
}
test_jss()
{
print_log "######## JSS - tests - ${BITS} bits - ${OPT} ########"
print_log "$ cd ${HGDIR}/jss"
cd ${HGDIR}/jss
print_log "$ ${MAKE} platform"
PLATFORM=$(${MAKE} platform)
print_log "PLATFORM=${PLATFORM}"
print_log "$ cd ${HGDIR}/jss/org/mozilla/jss/tests"
cd ${HGDIR}/jss/org/mozilla/jss/tests
print_log "$ perl all.pl dist ${HGDIR}/dist/${PLATFORM}"
perl all.pl dist ${HGDIR}/dist/${PLATFORM} 2>&1 | tee ${LOG_TMP}
cat ${LOG_TMP} >> ${LOG_ALL}
tail -n2 ${LOG_TMP} | grep JSSTEST_RATE > /dev/null
RET=$?
grep FAIL ${LOG_TMP}
[ $? -eq 1 ] || RET=1
print_result "JSS - tests - ${BITS} bits - ${OPT}" ${RET} 0
return ${RET}
}
create_objdir_dist_link()
{
# compute relevant 'dist' OBJDIR_NAME subdirectory names for JSS and NSS
OS_TARGET=`uname -s`
OS_RELEASE=`uname -r | sed 's/-.*//' | sed 's/-.*//' | cut -d . -f1,2`
CPU_TAG=_`uname -m`
# OBJDIR_NAME_COMPILER appears to be defined for NSS but not JSS
OBJDIR_NAME_COMPILER=_cc
LIBC_TAG=_glibc
IMPL_STRATEGY=_PTH
if [ "${RUN_BITS}" = "64" ]; then
OBJDIR_TAG=_${RUN_BITS}_${RUN_OPT}.OBJ
else
OBJDIR_TAG=_${RUN_OPT}.OBJ
fi
# define NSS_OBJDIR_NAME
NSS_OBJDIR_NAME=${OS_TARGET}${OS_RELEASE}${CPU_TAG}${OBJDIR_NAME_COMPILER}
NSS_OBJDIR_NAME=${NSS_OBJDIR_NAME}${LIBC_TAG}${IMPL_STRATEGY}${OBJDIR_TAG}
print_log "create_objdir_dist_link(): NSS_OBJDIR_NAME='${NSS_OBJDIR_NAME}'"
# define JSS_OBJDIR_NAME
JSS_OBJDIR_NAME=${OS_TARGET}${OS_RELEASE}${CPU_TAG}
JSS_OBJDIR_NAME=${JSS_OBJDIR_NAME}${LIBC_TAG}${IMPL_STRATEGY}${OBJDIR_TAG}
print_log "create_objdir_dist_link(): JSS_OBJDIR_NAME='${JSS_OBJDIR_NAME}'"
if [ -e "${HGDIR}/dist/${NSS_OBJDIR_NAME}" ]; then
SOURCE=${HGDIR}/dist/${NSS_OBJDIR_NAME}
TARGET=${HGDIR}/dist/${JSS_OBJDIR_NAME}
ln -s ${SOURCE} ${TARGET} >/dev/null 2>&1
fi
}
build_and_test()
{
if [ -n "${BUILD_NSS}" ]; then
build_nss
[ $? -eq 0 ] || return 1
fi
if [ -n "${TEST_NSS}" ]; then
test_nss
[ $? -eq 0 ] || return 1
fi
if [ -n "${CHECK_ABI}" ]; then
check_abi
[ $? -eq 0 ] || return 1
fi
if [ -n "${BUILD_JSS}" ]; then
create_objdir_dist_link
build_jss
[ $? -eq 0 ] || return 1
fi
if [ -n "${TEST_JSS}" ]; then
test_jss
[ $? -eq 0 ] || return 1
fi
return 0
}
run_cycle()
{
print_env
build_and_test
RET=$?
grep ^TinderboxPrint ${LOG_ALL}
return ${RET}
}
prepare()
{
rm -rf ${OUTPUTDIR}.oldest >/dev/null 2>&1
mv ${OUTPUTDIR}.older ${OUTPUTDIR}.oldest >/dev/null 2>&1
mv ${OUTPUTDIR}.old ${OUTPUTDIR}.older >/dev/null 2>&1
mv ${OUTPUTDIR}.last ${OUTPUTDIR}.old >/dev/null 2>&1
mv ${OUTPUTDIR} ${OUTPUTDIR}.last >/dev/null 2>&1
mkdir -p ${OUTPUTDIR}
# Remove temporary test files from previous jobs, that weren't cleaned up
# by move_results(), e.g. caused by unexpected interruptions.
rm -rf ${HGDIR}/tests_results/
cd ${HGDIR}/nss
if [ -n "${FEWER_STRESS_ITERATIONS}" ]; then
sed -i 's/-c_1000_/-c_500_/g' tests/ssl/sslstress.txt
fi
return 0
}
move_results()
{
cd ${HGDIR}
if [ -n "${TEST_NSS}" ]; then
mv -f tests_results ${OUTPUTDIR}
fi
tar -c -z --dereference -f ${OUTPUTDIR}/dist.tgz dist
rm -rf dist
}
run_all()
{
set_cycle ${BITS} ${OPT}
prepare
run_cycle
RESULT=$?
print_log "### result of run_cycle is ${RESULT}"
move_results
return ${RESULT}
}
main()
{
VALID=0
RET=1
FAIL=0
for BITS in 32 64; do
echo ${RUN_BITS} | grep ${BITS} > /dev/null
[ $? -eq 0 ] || continue
for OPT in DBG OPT; do
echo ${RUN_OPT} | grep ${OPT} > /dev/null
[ $? -eq 0 ] || continue
VALID=1
set_env
run_all
RET=$?
print_log "### result of run_all is ${RET}"
if [ ${RET} -ne 0 ]; then
FAIL=${RET}
fi
done
done
if [ ${VALID} -ne 1 ]; then
echo "Need to set valid bits/opt values."
return 1
fi
return ${FAIL}
}
#function killallsub()
#{
# FINAL_RET=$?
# for proc in `jobs -p`
# do
# kill -9 $proc
# done
# return ${FINAL_RET}
#}
#trap killallsub EXIT
#IS_RUNNING_FILE="./build-is-running"
#if [ -a $IS_RUNNING_FILE ]; then
# echo "exiting, because old job is still running"
# exit 1
#fi
#touch $IS_RUNNING_FILE
echo "tinderbox args: $0 $@"
. ${ENVVARS}
proc_args "$@"
main
RET=$?
print_log "### result of main is ${RET}"
#rm $IS_RUNNING_FILE
exit ${RET}
@@ -1,6 +0,0 @@
IF EXIST ..\buildbot-is-building (
del ..\buildbot-is-building
shutdown /r /t 0
timeout /t 120
)
@@ -1,14 +0,0 @@
echo running > ..\buildbot-is-building
echo running: "%MOZILLABUILD%\msys\bin\bash" -c "hg/nss/automation/buildbot-slave/build.sh %*"
"%MOZILLABUILD%\msys\bin\bash" -c "hg/nss/automation/buildbot-slave/build.sh %*"
if %errorlevel% neq 0 (
set EXITCODE=1
) else (
set EXITCODE=0
)
del ..\buildbot-is-building
exit /b %EXITCODE%
@@ -1,4 +1,4 @@
4.24
4.29
# The first line of this file must contain the human readable NSPR
# version number, which is the minimum required version of NSPR
@@ -5,9 +5,9 @@
import os
import sys
import datetime
import shutil
import glob
import re
import tempfile
from optparse import OptionParser
from subprocess import check_call
from subprocess import check_output
@@ -32,136 +32,203 @@ abi_report_files = ['automation/abi-check/expected-report-libfreebl3.so.txt',
'automation/abi-check/expected-report-libsoftokn3.so.txt',
'automation/abi-check/expected-report-libssl3.so.txt']
def check_call_noisy(cmd, *args, **kwargs):
print "Executing command:", cmd
print("Executing command: {}".format(cmd))
check_call(cmd, *args, **kwargs)
o = OptionParser(usage="client.py [options] remove_beta | set_beta | print_library_versions | print_root_ca_version | set_root_ca_version | set_version_to_minor_release | set_version_to_patch_release | set_release_candidate_number | set_4_digit_release_number | create_nss_release_archive")
try:
options, args = o.parse_args()
action = args[0]
except IndexError:
o.print_help()
sys.exit(2)
def exit_with_failure(what):
print "failure: ", what
print("failure: {}".format(what))
sys.exit(2)
def check_files_exist():
if (not os.path.exists(nssutil_h) or not os.path.exists(softkver_h)
or not os.path.exists(nss_h) or not os.path.exists(nssckbi_h)):
or not os.path.exists(nss_h) or not os.path.exists(nssckbi_h)):
exit_with_failure("cannot find expected header files, must run from inside NSS hg directory")
def sed_inplace(sed_expression, filename):
backup_file = filename + '.tmp'
check_call_noisy(["sed", "-i.tmp", sed_expression, filename])
os.remove(backup_file)
class Replacement():
def __init__(self, regex="", repl=""):
self.regex = regex
self.repl = repl
self.matcher = re.compile(self.regex)
def replace(self, line):
return self.matcher.sub(self.repl, line)
def inplace_replace(replacements=[], filename=""):
for r in replacements:
if not isinstance(r, Replacement):
raise TypeError("Expecting a list of Replacement objects")
with tempfile.NamedTemporaryFile(mode="w", delete=False) as tmp_file:
with open(filename) as in_file:
for line in in_file:
for r in replacements:
line = r.replace(line)
tmp_file.write(line)
shutil.copystat(filename, tmp_file.name)
shutil.move(tmp_file.name, filename)
def toggle_beta_status(is_beta):
check_files_exist()
if (is_beta):
print "adding Beta status to version numbers"
sed_inplace('s/^\(#define *NSSUTIL_VERSION *\"[0-9.]\+\)\" *$/\\1 Beta\"/', nssutil_h)
sed_inplace('s/^\(#define *NSSUTIL_BETA *\)PR_FALSE *$/\\1PR_TRUE/', nssutil_h)
sed_inplace('s/^\(#define *SOFTOKEN_VERSION *\"[0-9.]\+\" *SOFTOKEN_ECC_STRING\) *$/\\1 \" Beta"/', softkver_h)
sed_inplace('s/^\(#define *SOFTOKEN_BETA *\)PR_FALSE *$/\\1PR_TRUE/', softkver_h)
sed_inplace('s/^\(#define *NSS_VERSION *\"[0-9.]\+\" *_NSS_CUSTOMIZED\) *$/\\1 \" Beta"/', nss_h)
sed_inplace('s/^\(#define *NSS_BETA *\)PR_FALSE *$/\\1PR_TRUE/', nss_h)
print("adding Beta status to version numbers")
inplace_replace(filename=nssutil_h, replacements=[
Replacement(regex=r'^(#define *NSSUTIL_VERSION *\"[0-9.]+)\" *$',
repl=r'\g<1> Beta"'),
Replacement(regex=r'^(#define *NSSUTIL_BETA *)PR_FALSE *$',
repl=r'\g<1>PR_TRUE')])
inplace_replace(filename=softkver_h, replacements=[
Replacement(regex=r'^(#define *SOFTOKEN_VERSION *\"[0-9.]+\" *SOFTOKEN_ECC_STRING) *$',
repl=r'\g<1> " Beta"'),
Replacement(regex=r'^(#define *SOFTOKEN_BETA *)PR_FALSE *$',
repl=r'\g<1>PR_TRUE')])
inplace_replace(filename=nss_h, replacements=[
Replacement(regex=r'^(#define *NSS_VERSION *\"[0-9.]+\" *_NSS_CUSTOMIZED) *$',
repl=r'\g<1> " Beta"'),
Replacement(regex=r'^(#define *NSS_BETA *)PR_FALSE *$',
repl=r'\g<1>PR_TRUE')])
else:
print "removing Beta status from version numbers"
sed_inplace('s/^\(#define *NSSUTIL_VERSION *\"[0-9.]\+\) *Beta\" *$/\\1\"/', nssutil_h)
sed_inplace('s/^\(#define *NSSUTIL_BETA *\)PR_TRUE *$/\\1PR_FALSE/', nssutil_h)
sed_inplace('s/^\(#define *SOFTOKEN_VERSION *\"[0-9.]\+\" *SOFTOKEN_ECC_STRING\) *\" *Beta\" *$/\\1/', softkver_h)
sed_inplace('s/^\(#define *SOFTOKEN_BETA *\)PR_TRUE *$/\\1PR_FALSE/', softkver_h)
sed_inplace('s/^\(#define *NSS_VERSION *\"[0-9.]\+\" *_NSS_CUSTOMIZED\) *\" *Beta\" *$/\\1/', nss_h)
sed_inplace('s/^\(#define *NSS_BETA *\)PR_TRUE *$/\\1PR_FALSE/', nss_h)
print "please run 'hg stat' and 'hg diff' to verify the files have been verified correctly"
print("removing Beta status from version numbers")
inplace_replace(filename=nssutil_h, replacements=[
Replacement(regex=r'^(#define *NSSUTIL_VERSION *\"[0-9.]+) *Beta\" *$',
repl=r'\g<1>"'),
Replacement(regex=r'^(#define *NSSUTIL_BETA *)PR_TRUE *$',
repl=r'\g<1>PR_FALSE')])
inplace_replace(filename=softkver_h, replacements=[
Replacement(regex=r'^(#define *SOFTOKEN_VERSION *\"[0-9.]+\" *SOFTOKEN_ECC_STRING) *\" *Beta\" *$',
repl=r'\g<1>'),
Replacement(regex=r'^(#define *SOFTOKEN_BETA *)PR_TRUE *$',
repl=r'\g<1>PR_FALSE')])
inplace_replace(filename=nss_h, replacements=[
Replacement(regex=r'^(#define *NSS_VERSION *\"[0-9.]+\" *_NSS_CUSTOMIZED) *\" *Beta\" *$',
repl=r'\g<1>'),
Replacement(regex=r'^(#define *NSS_BETA *)PR_TRUE *$',
repl=r'\g<1>PR_FALSE')])
print("please run 'hg stat' and 'hg diff' to verify the files have been verified correctly")
def print_beta_versions():
check_call_noisy(["egrep", "#define *NSSUTIL_VERSION|#define *NSSUTIL_BETA", nssutil_h])
check_call_noisy(["egrep", "#define *SOFTOKEN_VERSION|#define *SOFTOKEN_BETA", softkver_h])
check_call_noisy(["egrep", "#define *NSS_VERSION|#define *NSS_BETA", nss_h])
def remove_beta_status():
print "--- removing beta flags. Existing versions were:"
print("--- removing beta flags. Existing versions were:")
print_beta_versions()
toggle_beta_status(False)
print "--- finished modifications, new versions are:"
print("--- finished modifications, new versions are:")
print_beta_versions()
def set_beta_status():
print "--- adding beta flags. Existing versions were:"
print("--- adding beta flags. Existing versions were:")
print_beta_versions()
toggle_beta_status(True)
print "--- finished modifications, new versions are:"
print("--- finished modifications, new versions are:")
print_beta_versions()
def print_library_versions():
check_files_exist()
check_call_noisy(["egrep", "#define *NSSUTIL_VERSION|#define NSSUTIL_VMAJOR|#define *NSSUTIL_VMINOR|#define *NSSUTIL_VPATCH|#define *NSSUTIL_VBUILD|#define *NSSUTIL_BETA", nssutil_h])
check_call_noisy(["egrep", "#define *SOFTOKEN_VERSION|#define SOFTOKEN_VMAJOR|#define *SOFTOKEN_VMINOR|#define *SOFTOKEN_VPATCH|#define *SOFTOKEN_VBUILD|#define *SOFTOKEN_BETA", softkver_h])
check_call_noisy(["egrep", "#define *NSS_VERSION|#define NSS_VMAJOR|#define *NSS_VMINOR|#define *NSS_VPATCH|#define *NSS_VBUILD|#define *NSS_BETA", nss_h])
def print_root_ca_version():
check_files_exist()
check_call_noisy(["grep", "define *NSS_BUILTINS_LIBRARY_VERSION", nssckbi_h])
def ensure_arguments_after_action(how_many, usage):
if (len(sys.argv) != (2+how_many)):
if (len(sys.argv) != (2 + how_many)):
exit_with_failure("incorrect number of arguments, expected parameters are:\n" + usage)
def set_major_versions(major):
sed_inplace('s/^\(#define *NSSUTIL_VMAJOR *\).*$/\\1' + major + '/', nssutil_h)
sed_inplace('s/^\(#define *SOFTOKEN_VMAJOR *\).*$/\\1' + major + '/', softkver_h)
sed_inplace('s/^\(#define *NSS_VMAJOR *\).*$/\\1' + major + '/', nss_h)
for name, file in [["NSSUTIL_VMAJOR", nssutil_h],
["SOFTOKEN_VMAJOR", softkver_h],
["NSS_VMAJOR", nss_h]]:
inplace_replace(filename=file, replacements=[
Replacement(regex=r'^(#define *{} ?).*$'.format(name),
repl=r'\g<1>{}'.format(major))])
def set_minor_versions(minor):
sed_inplace('s/^\(#define *NSSUTIL_VMINOR *\).*$/\\1' + minor + '/', nssutil_h)
sed_inplace('s/^\(#define *SOFTOKEN_VMINOR *\).*$/\\1' + minor + '/', softkver_h)
sed_inplace('s/^\(#define *NSS_VMINOR *\).*$/\\1' + minor + '/', nss_h)
for name, file in [["NSSUTIL_VMINOR", nssutil_h],
["SOFTOKEN_VMINOR", softkver_h],
["NSS_VMINOR", nss_h]]:
inplace_replace(filename=file, replacements=[
Replacement(regex=r'^(#define *{} ?).*$'.format(name),
repl=r'\g<1>{}'.format(minor))])
def set_patch_versions(patch):
sed_inplace('s/^\(#define *NSSUTIL_VPATCH *\).*$/\\1' + patch + '/', nssutil_h)
sed_inplace('s/^\(#define *SOFTOKEN_VPATCH *\).*$/\\1' + patch + '/', softkver_h)
sed_inplace('s/^\(#define *NSS_VPATCH *\).*$/\\1' + patch + '/', nss_h)
for name, file in [["NSSUTIL_VPATCH", nssutil_h],
["SOFTOKEN_VPATCH", softkver_h],
["NSS_VPATCH", nss_h]]:
inplace_replace(filename=file, replacements=[
Replacement(regex=r'^(#define *{} ?).*$'.format(name),
repl=r'\g<1>{}'.format(patch))])
def set_build_versions(build):
sed_inplace('s/^\(#define *NSSUTIL_VBUILD *\).*$/\\1' + build + '/', nssutil_h)
sed_inplace('s/^\(#define *SOFTOKEN_VBUILD *\).*$/\\1' + build + '/', softkver_h)
sed_inplace('s/^\(#define *NSS_VBUILD *\).*$/\\1' + build + '/', nss_h)
for name, file in [["NSSUTIL_VBUILD", nssutil_h],
["SOFTOKEN_VBUILD", softkver_h],
["NSS_VBUILD", nss_h]]:
inplace_replace(filename=file, replacements=[
Replacement(regex=r'^(#define *{} ?).*$'.format(name),
repl=r'\g<1>{}'.format(build))])
def set_full_lib_versions(version):
sed_inplace('s/^\(#define *NSSUTIL_VERSION *\"\)\([0-9.]\+\)\(.*\)$/\\1' + version + '\\3/', nssutil_h)
sed_inplace('s/^\(#define *SOFTOKEN_VERSION *\"\)\([0-9.]\+\)\(.*\)$/\\1' + version + '\\3/', softkver_h)
sed_inplace('s/^\(#define *NSS_VERSION *\"\)\([0-9.]\+\)\(.*\)$/\\1' + version + '\\3/', nss_h)
for name, file in [["NSSUTIL_VERSION", nssutil_h],
["SOFTOKEN_VERSION", softkver_h],
["NSS_VERSION", nss_h]]:
inplace_replace(filename=file, replacements=[
Replacement(regex=r'^(#define *{} *\")([0-9.]+)(.*)$'.format(name),
repl=r'\g<1>{}\g<3>'.format(version))])
def set_root_ca_version():
ensure_arguments_after_action(2, "major_version minor_version")
major = args[1].strip()
minor = args[2].strip()
version = major + '.' + minor
sed_inplace('s/^\(#define *NSS_BUILTINS_LIBRARY_VERSION *\"\).*$/\\1' + version + '/', nssckbi_h)
sed_inplace('s/^\(#define *NSS_BUILTINS_LIBRARY_VERSION_MAJOR *\).*$/\\1' + major + '/', nssckbi_h)
sed_inplace('s/^\(#define *NSS_BUILTINS_LIBRARY_VERSION_MINOR *\).*$/\\1' + minor + '/', nssckbi_h)
inplace_replace(filename=nssckbi_h, replacements=[
Replacement(regex=r'^(#define *NSS_BUILTINS_LIBRARY_VERSION *\").*$',
repl=r'\g<1>{}"'.format(version)),
Replacement(regex=r'^(#define *NSS_BUILTINS_LIBRARY_VERSION_MAJOR ?).*$',
repl=r'\g<1>{}'.format(major)),
Replacement(regex=r'^(#define *NSS_BUILTINS_LIBRARY_VERSION_MINOR ?).*$',
repl=r'\g<1>{}'.format(minor))])
def set_all_lib_versions(version, major, minor, patch, build):
grep_major = check_output(['grep', 'define.*NSS_VMAJOR', nss_h])
grep_minor = check_output(['grep', 'define.*NSS_VMINOR', nss_h])
old_major = int(grep_major.split()[2]);
old_minor = int(grep_minor.split()[2]);
old_major = int(grep_major.split()[2])
old_minor = int(grep_minor.split()[2])
new_major = int(major)
new_minor = int(minor)
if (old_major < new_major or (old_major == new_major and old_minor < new_minor)):
print "You're increasing the minor (or major) version:"
print "- erasing ABI comparison expectations"
print("You're increasing the minor (or major) version:")
print("- erasing ABI comparison expectations")
new_branch = "NSS_" + str(old_major) + "_" + str(old_minor) + "_BRANCH"
print "- setting reference branch to the branch of the previous version: " + new_branch
print("- setting reference branch to the branch of the previous version: " + new_branch)
with open(abi_base_version_file, "w") as abi_base:
abi_base.write("%s\n" % new_branch)
for report_file in abi_report_files:
@@ -174,6 +241,7 @@ def set_all_lib_versions(version, major, minor, patch, build):
set_patch_versions(patch)
set_build_versions(build)
def set_version_to_minor_release():
ensure_arguments_after_action(2, "major_version minor_version")
major = args[1].strip()
@@ -183,6 +251,7 @@ def set_version_to_minor_release():
build = "0"
set_all_lib_versions(version, major, minor, patch, build)
def set_version_to_patch_release():
ensure_arguments_after_action(3, "major_version minor_version patch_release")
major = args[1].strip()
@@ -192,11 +261,13 @@ def set_version_to_patch_release():
build = "0"
set_all_lib_versions(version, major, minor, patch, build)
def set_release_candidate_number():
ensure_arguments_after_action(1, "release_candidate_number")
build = args[1].strip()
set_build_versions(build)
def set_4_digit_release_number():
ensure_arguments_after_action(4, "major_version minor_version patch_release 4th_digit_release_number")
major = args[1].strip()
@@ -206,21 +277,22 @@ def set_4_digit_release_number():
version = major + '.' + minor + '.' + patch + '.' + build
set_all_lib_versions(version, major, minor, patch, build)
def create_nss_release_archive():
ensure_arguments_after_action(3, "nss_release_version nss_hg_release_tag path_to_stage_directory")
nssrel = args[1].strip() #e.g. 3.19.3
nssreltag = args[2].strip() #e.g. NSS_3_19_3_RTM
stagedir = args[3].strip() #e.g. ../stage
nssrel = args[1].strip() # e.g. 3.19.3
nssreltag = args[2].strip() # e.g. NSS_3_19_3_RTM
stagedir = args[3].strip() # e.g. ../stage
with open('automation/release/nspr-version.txt') as nspr_version_file:
nsprrel = next(nspr_version_file).strip()
nspr_tar = "nspr-" + nsprrel + ".tar.gz"
nsprtar_with_path= stagedir + "/v" + nsprrel + "/src/" + nspr_tar
nsprtar_with_path = stagedir + "/v" + nsprrel + "/src/" + nspr_tar
if (not os.path.exists(nsprtar_with_path)):
exit_with_failure("cannot find nspr archive at expected location " + nsprtar_with_path)
nss_stagedir= stagedir + "/" + nssreltag + "/src"
nss_stagedir = stagedir + "/" + nssreltag + "/src"
if (os.path.exists(nss_stagedir)):
exit_with_failure("nss stage directory already exists: " + nss_stagedir)
@@ -230,7 +302,7 @@ def create_nss_release_archive():
check_call_noisy(["hg", "archive", "-r", nssreltag, "--prefix=nss-" + nssrel + "/nss",
stagedir + "/" + nssreltag + "/src/" + nss_tar, "-X", ".hgtags"])
check_call_noisy(["tar", "-xz", "-C", nss_stagedir, "-f", nsprtar_with_path])
print "changing to directory " + nss_stagedir
print("changing to directory " + nss_stagedir)
os.chdir(nss_stagedir)
check_call_noisy(["tar", "-xz", "-f", nss_tar])
check_call_noisy(["mv", "-i", "nspr-" + nsprrel + "/nspr", "nss-" + nssrel + "/"])
@@ -241,9 +313,23 @@ def create_nss_release_archive():
check_call_noisy(["tar", "-cz", "--remove-files", "-f", nss_nspr_tar, "nss-" + nssrel])
check_call("sha1sum " + nss_tar + " " + nss_nspr_tar + " > SHA1SUMS", shell=True)
check_call("sha256sum " + nss_tar + " " + nss_nspr_tar + " > SHA256SUMS", shell=True)
print "created directory " + nss_stagedir + " with files:"
print("created directory " + nss_stagedir + " with files:")
check_call_noisy(["ls", "-l"])
o = OptionParser(usage="client.py [options] " + " | ".join([
"remove_beta", "set_beta", "print_library_versions", "print_root_ca_version",
"set_root_ca_version", "set_version_to_minor_release",
"set_version_to_patch_release", "set_release_candidate_number",
"set_4_digit_release_number", "create_nss_release_archive"]))
try:
options, args = o.parse_args()
action = args[0]
except IndexError:
o.print_help()
sys.exit(2)
if action in ('remove_beta'):
remove_beta_status()
+2 -2
View File
@@ -34,7 +34,7 @@ let SpecChaCha20 n = do {
};
print "Proving equality for a single block...";
time (llvm_verify m "Hacl_Chacha20_chacha20" [] (SpecChaCha20 64));
time (llvm_verify m "Hacl_Chacha20_chacha20_encrypt" [] (SpecChaCha20 64));
print "Proving equality for multiple blocks...";
time (llvm_verify m "Hacl_Chacha20_chacha20" [] (SpecChaCha20 256));
time (llvm_verify m "Hacl_Chacha20_chacha20_encrypt" [] (SpecChaCha20 256));
@@ -34,9 +34,13 @@ RUN apt-get update \
pkg-config \
valgrind \
zlib1g-dev \
clang-format-3.9 \
&& rm -rf /var/lib/apt/lists/* \
&& apt-get autoremove -y && apt-get clean -y
RUN update-alternatives --install /usr/bin/clang-format \
clang-format $(which clang-format-3.9) 10
# Latest version of abigail-tools
RUN apt-get update \
&& apt-get install -y --no-install-recommends automake libtool libxml2-dev \
@@ -10,6 +10,8 @@ LABEL maintainer="Martin Thomson <martin.thomson@gmail.com>"
RUN dpkg --add-architecture i386
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
apt-transport-https \
apt-utils \
build-essential \
ca-certificates \
curl \
@@ -1,143 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
67H2IH//2sf8dw==
=fTDu
-----END PGP PUBLIC KEY BLOCK-----
@@ -1,31 +0,0 @@
FROM ubuntu:xenial
MAINTAINER Franziskus Kiefer <franziskuskiefer@gmail.com>
# Based on the HACL* image from Benjamin Beurdouche and
# the original F* formula with Daniel Fabian
# Pinned versions of HACL* (F* and KreMLin are pinned as submodules)
ENV haclrepo https://github.com/mitls/hacl-star.git
# Define versions of dependencies
ENV opamv 4.05.0
ENV haclversion 1442c015dab97cdf203ae238b1f3aeccf511bd1e
# Install required packages and set versions
ADD B6C8F98282B944E3B0D5C2530FC3042E345AD05D.asc /tmp/B6C8F98282B944E3B0D5C2530FC3042E345AD05D.asc
ADD setup.sh /tmp/setup.sh
RUN bash /tmp/setup.sh
# Create user, add scripts.
RUN useradd -ms /bin/bash worker
WORKDIR /home/worker
ADD bin /home/worker/bin
RUN chmod +x /home/worker/bin/*
USER worker
# Build F*, HACL*, verify. Install a few more dependencies.
ENV OPAMYES true
ENV PATH "/home/worker/hacl-star/dependencies/z3/bin:$PATH"
ADD setup-user.sh /tmp/setup-user.sh
ADD license.txt /tmp/license.txt
RUN bash /tmp/setup-user.sh
@@ -1,20 +0,0 @@
#!/usr/bin/env bash
set -v -e -x
if [ $(id -u) = 0 ]; then
# Drop privileges by re-running this script.
exec su worker $0
fi
# Default values for testing.
REVISION=${NSS_HEAD_REVISION:-default}
REPOSITORY=${NSS_HEAD_REPOSITORY:-https://hg.mozilla.org/projects/nss}
# Clone NSS.
for i in 0 2 5; do
sleep $i
hg clone -r $REVISION $REPOSITORY nss && exit 0
rm -rf nss
done
exit 1
@@ -1,15 +0,0 @@
/* Copyright 2016-2017 INRIA and Microsoft Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
@@ -1,25 +0,0 @@
#!/usr/bin/env bash
set -v -e -x
# Prepare build (OCaml packages)
opam init
echo ". /home/worker/.opam/opam-init/init.sh > /dev/null 2> /dev/null || true" >> .bashrc
opam switch -v ${opamv}
opam install ocamlfind batteries sqlite3 fileutils yojson ppx_deriving_yojson zarith pprint menhir ulex process fix wasm stdint
# Get the HACL* code
git clone ${haclrepo} hacl-star
git -C hacl-star checkout ${haclversion}
# Prepare submodules, and build, verify, test, and extract c code
# This caches the extracted c code (pins the HACL* version). All we need to do
# on CI now is comparing the code in this docker image with the one in NSS.
opam config exec -- make -C hacl-star prepare -j$(nproc)
make -C hacl-star -f Makefile.build snapshots/nss -j$(nproc)
KOPTS="-funroll-loops 5" make -C hacl-star/code/curve25519 test -j$(nproc)
make -C hacl-star/code/salsa-family test -j$(nproc)
make -C hacl-star/code/poly1305 test -j$(nproc)
# Cleanup.
rm -rf ~/.ccache ~/.cache
@@ -1,34 +0,0 @@
#!/usr/bin/env bash
set -v -e -x
# Update packages.
export DEBIAN_FRONTEND=noninteractive
apt-get -qq update
apt-get install --yes libssl-dev libsqlite3-dev g++-5 gcc-5 m4 make opam pkg-config python libgmp3-dev cmake curl libtool-bin autoconf wget locales
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 200
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 200
# Get clang-format-3.9
curl -LO https://releases.llvm.org/3.9.1/clang+llvm-3.9.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz
curl -LO https://releases.llvm.org/3.9.1/clang+llvm-3.9.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz.sig
# Verify the signature. The key used for verification was fetched via:
# gpg --keyserver pgp.key-server.io --recv-keys B6C8F98282B944E3B0D5C2530FC3042E345AD05D
# Use a local copy to workaround bug 1565013.
gpg --no-default-keyring --keyring tmp.keyring --import /tmp/B6C8F98282B944E3B0D5C2530FC3042E345AD05D.asc
gpg --no-default-keyring --keyring tmp.keyring --verify clang+llvm-3.9.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz.sig
# Install into /usr/local/.
tar xJvf *.tar.xz -C /usr/local --strip-components=1
# Cleanup.
rm *.tar.xz*
locale-gen en_US.UTF-8
dpkg-reconfigure locales
# Cleanup.
rm -rf ~/.ccache ~/.cache
apt-get autoremove -y
apt-get clean
apt-get autoclean
@@ -41,11 +41,6 @@ const FUZZ_IMAGE_32 = {
path: "automation/taskcluster/docker-fuzz32"
};
const HACL_GEN_IMAGE = {
name: "hacl",
path: "automation/taskcluster/docker-hacl"
};
const SAW_IMAGE = {
name: "saw",
path: "automation/taskcluster/docker-saw"
@@ -105,8 +100,20 @@ queue.filter(task => {
// Don't run all additional hardware tests on ARM.
if (task.group == "Cipher" && task.platform == "aarch64" && task.env &&
(task.env.NSS_DISABLE_PCLMUL == "1" || task.env.NSS_DISABLE_HW_AES == "1"
|| task.env.NSS_DISABLE_AVX == "1")) {
(task.env.NSS_DISABLE_PCLMUL == "1" || task.env.NSS_DISABLE_SSE4_1 == "1"
|| task.env.NSS_DISABLE_AVX == "1" || task.env.NSS_DISABLE_AVX2 == "1")) {
return false;
}
// Don't run ARM specific hardware tests on non-ARM.
// TODO: our server that runs task cluster doesn't support Intel SHA extensions.
if (task.group == "Cipher" && task.platform != "aarch64" && task.env &&
(task.env.NSS_DISABLE_HW_SHA1 == "1" || task.env.NSS_DISABLE_HW_SHA2 == "1")) {
return false;
}
// Don't run DBM builds on aarch64.
if (task.group == "DBM" && task.platform == "aarch64") {
return false;
}
@@ -500,7 +507,7 @@ async function scheduleLinux(name, overrides, args = "") {
}
// The task that generates certificates.
let task_cert = queue.scheduleTask(merge(build_base, {
let cert_base = merge(build_base, {
name: "Certificates",
command: [
"/bin/bash",
@@ -509,7 +516,8 @@ async function scheduleLinux(name, overrides, args = "") {
],
parent: task_build,
symbol: "Certs"
}));
});
let task_cert = queue.scheduleTask(cert_base);
// Schedule tests.
scheduleTests(task_build, task_cert, merge(base, {
@@ -592,6 +600,25 @@ async function scheduleLinux(name, overrides, args = "") {
symbol: "modular"
}));
if (base.collection != "make") {
let task_build_dbm = queue.scheduleTask(merge(extra_base, {
name: `${name} w/ legacy-db`,
command: [
"/bin/bash",
"-c",
checkout_and_gyp + "--enable-legacy-db"
],
symbol: "B",
group: "DBM",
}));
let task_cert_dbm = queue.scheduleTask(merge(cert_base, {
parent: task_build_dbm,
group: "DBM",
symbol: "Certs"
}));
}
return queue.submit();
}
@@ -830,11 +857,11 @@ async function scheduleWindows(name, base, build_script) {
workerType: "win2012r2",
env: {
PATH: "c:\\mozilla-build\\bin;c:\\mozilla-build\\python;" +
"c:\\mozilla-build\\msys\\local\\bin;c:\\mozilla-build\\7zip;" +
"c:\\mozilla-build\\info-zip;c:\\mozilla-build\\python\\Scripts;" +
"c:\\mozilla-build\\yasm;c:\\mozilla-build\\msys\\bin;" +
"c:\\Windows\\system32;c:\\mozilla-build\\upx391w;" +
"c:\\mozilla-build\\moztools-x64\\bin;c:\\mozilla-build\\wget",
"c:\\mozilla-build\\msys\\local\\bin;c:\\mozilla-build\\7zip;" +
"c:\\mozilla-build\\info-zip;c:\\mozilla-build\\python\\Scripts;" +
"c:\\mozilla-build\\yasm;c:\\mozilla-build\\msys\\bin;" +
"c:\\Windows\\system32;c:\\mozilla-build\\upx391w;" +
"c:\\mozilla-build\\moztools-x64\\bin;c:\\mozilla-build\\wget",
DOMSUF: "localdomain",
HOST: "localhost",
},
@@ -983,9 +1010,16 @@ function scheduleTests(task_build, task_cert, test_base) {
name: "Cipher tests", symbol: "Default", tests: "cipher", group: "Cipher"
}));
queue.scheduleTask(merge(cert_base_long, {
name: "Cipher tests", symbol: "NoAESNI", tests: "cipher",
name: "Cipher tests", symbol: "NoAES", tests: "cipher",
env: {NSS_DISABLE_HW_AES: "1"}, group: "Cipher"
}));
queue.scheduleTask(merge(cert_base_long, {
name: "Cipher tests", symbol: "NoSHA", tests: "cipher",
env: {
NSS_DISABLE_HW_SHA1: "1",
NSS_DISABLE_HW_SHA2: "1"
}, group: "Cipher"
}));
queue.scheduleTask(merge(cert_base_long, {
name: "Cipher tests", symbol: "NoPCLMUL", tests: "cipher",
env: {NSS_DISABLE_PCLMUL: "1"}, group: "Cipher"
@@ -994,6 +1028,10 @@ function scheduleTests(task_build, task_cert, test_base) {
name: "Cipher tests", symbol: "NoAVX", tests: "cipher",
env: {NSS_DISABLE_AVX: "1"}, group: "Cipher"
}));
queue.scheduleTask(merge(cert_base_long, {
name: "Cipher tests", symbol: "NoAVX2", tests: "cipher",
env: {NSS_DISABLE_AVX2: "1"}, group: "Cipher"
}));
queue.scheduleTask(merge(cert_base_long, {
name: "Cipher tests", symbol: "NoSSSE3|NEON", tests: "cipher",
env: {
@@ -1001,6 +1039,10 @@ function scheduleTests(task_build, task_cert, test_base) {
NSS_DISABLE_SSSE3: "1"
}, group: "Cipher"
}));
queue.scheduleTask(merge(cert_base_long, {
name: "Cipher tests", symbol: "NoSSE4.1", tests: "cipher",
env: {NSS_DISABLE_SSE4_1: "1"}, group: "Cipher"
}));
queue.scheduleTask(merge(cert_base, {
name: "EC tests", symbol: "EC", tests: "ec"
}));
@@ -1039,12 +1081,6 @@ function scheduleTests(task_build, task_cert, test_base) {
queue.scheduleTask(merge(ssl_base, {
name: "SSL tests (pkix)", symbol: "pkix", cycle: "pkix"
}));
queue.scheduleTask(merge(ssl_base, {
name: "SSL tests (sharedb)", symbol: "sharedb", cycle: "sharedb"
}));
queue.scheduleTask(merge(ssl_base, {
name: "SSL tests (upgradedb)", symbol: "upgradedb", cycle: "upgradedb"
}));
queue.scheduleTask(merge(ssl_base, {
name: "SSL tests (stress)", symbol: "stress", cycle: "sharedb",
env: {NSS_SSL_RUN: "stress"}
@@ -1135,7 +1171,7 @@ async function scheduleTools() {
queue.scheduleTask(merge(base, {
symbol: "hacl",
name: "hacl",
image: HACL_GEN_IMAGE,
image: LINUX_BUILDS_IMAGE,
command: [
"/bin/bash",
"-c",
@@ -1181,18 +1217,22 @@ async function scheduleTools() {
]
}));
queue.scheduleTask(merge(base, {
parent: task_saw,
symbol: "ChaCha20",
group: "SAW",
name: "chacha20.saw",
image: SAW_IMAGE,
command: [
"/bin/bash",
"-c",
"bin/checkout.sh && nss/automation/taskcluster/scripts/run_saw.sh chacha20"
]
}));
// TODO: The ChaCha20 saw verification is currently disabled because the new
// HACL 32-bit code can't be verified by saw right now to the best of
// my knowledge.
// Bug 1604130
// queue.scheduleTask(merge(base, {
// parent: task_saw,
// symbol: "ChaCha20",
// group: "SAW",
// name: "chacha20.saw",
// image: SAW_IMAGE,
// command: [
// "/bin/bash",
// "-c",
// "bin/checkout.sh && nss/automation/taskcluster/scripts/run_saw.sh chacha20"
// ]
// }));
queue.scheduleTask(merge(base, {
parent: task_saw,
@@ -1211,7 +1251,15 @@ async function scheduleTools() {
symbol: "Coverage",
name: "Coverage",
image: FUZZ_IMAGE,
type: "other",
features: ["allowPtrace"],
artifacts: {
public: {
expires: 24 * 7,
type: "directory",
path: "/home/worker/artifacts"
}
},
command: [
"/bin/bash",
"-c",
@@ -220,6 +220,9 @@ export async function submit() {
maps.forEach(map => { task = map(merge({}, task)) });
let log_id = `${task.name} @ ${task.platform}[${task.collection || "opt"}]`;
if (task.group) {
log_id = `${task.group}::${log_id}`;
}
console.log(`+ Submitting ${log_id}.`);
// Index that task for each tag specified
@@ -12,7 +12,7 @@ if [[ -f nss/nspr.patch && "$ALLOW_NSPR_PATCH" == "1" ]]; then
fi
# Build.
nss/build.sh -g -v --enable-libpkix "$@"
nss/build.sh -g -v --enable-libpkix -Denable_draft_hpke=1 "$@"
# Package.
if [[ $(uname) = "Darwin" ]]; then
@@ -97,7 +97,8 @@ abi_diff()
rm -f ${ABI_REPORT}
PREVDIST=${HGDIR}/baseline/dist
NEWDIST=${HGDIR}/dist
ALL_SOs="libfreebl3.so libfreeblpriv3.so libnspr4.so libnss3.so libnssckbi.so libnssdbm3.so libnsssysinit.so libnssutil3.so libplc4.so libplds4.so libsmime3.so libsoftokn3.so libssl3.so"
# libnssdbm3.so isn't built by default anymore, skip it.
ALL_SOs="libfreebl3.so libfreeblpriv3.so libnspr4.so libnss3.so libnssckbi.so libnsssysinit.so libnssutil3.so libplc4.so libplds4.so libsmime3.so libsoftokn3.so libssl3.so"
for SO in ${ALL_SOs}; do
if [ ! -f ${HGDIR}/nss/automation/abi-check/expected-report-$SO.txt ]; then
touch ${HGDIR}/nss/automation/abi-check/expected-report-$SO.txt
@@ -8,33 +8,25 @@ fi
set -e -x -v
# The docker image this is running in has the HACL* and NSS sources.
# The extracted C code from HACL* is already generated and the HACL* tests were
# successfully executed.
# The docker image this is running in has NSS sources.
# Get the HACL* source, containing a snapshot of the C code, extracted on the
# HACL CI.
# When bug 1593647 is resolved, extract the code on CI again.
git clone -q "https://github.com/project-everest/hacl-star" ~/hacl-star
git -C ~/hacl-star checkout -q e4311991b1526734f99f4e3a0058895a46c63e5c
# Verify HACL*. Taskcluster fails when we do this in the image build.
make -C hacl-star verify-nss -j$(nproc)
# Add license header to specs
spec_files=($(find ~/hacl-star/specs -type f -name '*.fst'))
for f in "${spec_files[@]}"; do
cat /tmp/license.txt "$f" > /tmp/tmpfile && mv /tmp/tmpfile "$f"
done
# Format the extracted C code.
cd ~/hacl-star/snapshots/nss
# Format the C snapshot.
cd ~/hacl-star/dist/mozilla
cp ~/nss/.clang-format .
find . -type f -name '*.[ch]' -exec clang-format -i {} \+
cd ~/hacl-star/dist/kremlin
cp ~/nss/.clang-format .
find . -type f -name '*.[ch]' -exec clang-format -i {} \+
# These diff commands will return 1 if there are differences and stop the script.
files=($(find ~/nss/lib/freebl/verified/ -type f -name '*.[ch]'))
for f in "${files[@]}"; do
diff $f $(basename "$f")
done
# Check that the specs didn't change either.
cd ~/hacl-star/specs
files=($(find ~/nss/lib/freebl/verified/specs -type f))
for f in "${files[@]}"; do
diff $f $(basename "$f")
file_name=$(basename "$f")
hacl_file=($(find ~/hacl-star/dist/mozilla/ ~/hacl-star/dist/kremlin/ -type f -name $file_name))
diff $hacl_file $f
done
@@ -19,7 +19,7 @@ pushd gyp
python -m virtualenv test-env
test-env/Scripts/python setup.py install
test-env/Scripts/python -m pip install --upgrade pip
test-env/Scripts/pip install --upgrade setuptools
test-env/Scripts/pip install --upgrade 'setuptools<45.0.0'
# Fool GYP.
touch "${VSPATH}/VC/vcvarsall.bat"
export GYP_MSVS_OVERRIDE_PATH="${VSPATH}"
@@ -38,7 +38,7 @@ if [[ -f nss/nspr.patch && "$ALLOW_NSPR_PATCH" == "1" ]]; then
fi
# Build with gyp.
./nss/build.sh -g -v --enable-libpkix "$@"
./nss/build.sh -g -v --enable-libpkix -Denable_draft_hpke=1 "$@"
# Package.
7z a public/build/dist.7z dist
+3 -2
View File
@@ -113,8 +113,8 @@ while [ $# -gt 0 ]; do
--fuzz) fuzz=1 ;;
--fuzz=oss) fuzz=1; fuzz_oss=1 ;;
--fuzz=tls) fuzz=1; fuzz_tls=1 ;;
--sancov) enable_sancov ;;
--sancov=?*) enable_sancov "${1#*=}" ;;
--sancov) enable_sancov; gyp_params+=(-Dcoverage=1) ;;
--sancov=?*) enable_sancov "${1#*=}"; gyp_params+=(-Dcoverage=1) ;;
--emit-llvm) gyp_params+=(-Demit_llvm=1 -Dsign_libs=0) ;;
--no-zdefs) gyp_params+=(-Dno_zdefs=1) ;;
--static) gyp_params+=(-Dstatic_libs=1) ;;
@@ -130,6 +130,7 @@ while [ $# -gt 0 ]; do
--enable-libpkix) gyp_params+=(-Ddisable_libpkix=0) ;;
--mozpkix-only) gyp_params+=(-Dmozpkix_only=1 -Ddisable_tests=1 -Dsign_libs=0) ;;
--disable-keylog) sslkeylogfile=0 ;;
--enable-legacy-db) gyp_params+=(-Ddisable_dbm=0) ;;
-D*) gyp_params+=("$1") ;;
*) show_help; exit 2 ;;
esac
+64 -20
View File
@@ -608,9 +608,11 @@ typedef enum {
bltestDES_CBC, /* . */
bltestDES_EDE_ECB, /* . */
bltestDES_EDE_CBC, /* . */
bltestRC2_ECB, /* . */
bltestRC2_CBC, /* . */
bltestRC4, /* . */
#ifndef NSS_DISABLE_DEPRECATED_RC2
bltestRC2_ECB, /* . */
bltestRC2_CBC, /* . */
#endif
bltestRC4, /* . */
#ifdef NSS_SOFTOKEN_DOES_RC5
bltestRC5_ECB, /* . */
bltestRC5_CBC, /* . */
@@ -622,21 +624,23 @@ typedef enum {
bltestAES_GCM, /* . */
bltestCAMELLIA_ECB, /* . */
bltestCAMELLIA_CBC, /* . */
bltestSEED_ECB, /* SEED algorithm */
bltestSEED_CBC, /* SEED algorithm */
bltestCHACHA20, /* ChaCha20 + Poly1305 */
bltestRSA, /* Public Key Ciphers */
bltestRSA_OAEP, /* . (Public Key Enc.) */
bltestRSA_PSS, /* . (Public Key Sig.) */
bltestECDSA, /* . (Public Key Sig.) */
bltestDSA, /* . (Public Key Sig.) */
bltestMD2, /* Hash algorithms */
bltestMD5, /* . */
bltestSHA1, /* . */
bltestSHA224, /* . */
bltestSHA256, /* . */
bltestSHA384, /* . */
bltestSHA512, /* . */
#ifndef NSS_DISABLE_DEPRECATED_SEED
bltestSEED_ECB, /* SEED algorithm */
bltestSEED_CBC, /* SEED algorithm */
#endif
bltestCHACHA20, /* ChaCha20 + Poly1305 */
bltestRSA, /* Public Key Ciphers */
bltestRSA_OAEP, /* . (Public Key Enc.) */
bltestRSA_PSS, /* . (Public Key Sig.) */
bltestECDSA, /* . (Public Key Sig.) */
bltestDSA, /* . (Public Key Sig.) */
bltestMD2, /* Hash algorithms */
bltestMD5, /* . */
bltestSHA1, /* . */
bltestSHA224, /* . */
bltestSHA256, /* . */
bltestSHA384, /* . */
bltestSHA512, /* . */
NUMMODES
} bltestCipherMode;
@@ -646,8 +650,10 @@ static char *mode_strings[] =
"des_cbc",
"des3_ecb",
"des3_cbc",
#ifndef NSS_DISABLE_DEPRECATED_RC2
"rc2_ecb",
"rc2_cbc",
#endif
"rc4",
#ifdef NSS_SOFTOKEN_DOES_RC5
"rc5_ecb",
@@ -660,8 +666,10 @@ static char *mode_strings[] =
"aes_gcm",
"camellia_ecb",
"camellia_cbc",
#ifndef NSS_DISABLE_DEPRECATED_SEED
"seed_ecb",
"seed_cbc",
#endif
"chacha20_poly1305",
"rsa",
"rsa_oaep",
@@ -792,8 +800,12 @@ struct bltestCipherInfoStr {
PRBool
is_symmkeyCipher(bltestCipherMode mode)
{
/* change as needed! */
/* change as needed! */
#ifndef NSS_DISABLE_DEPRECATED_SEED
if (mode >= bltestDES_ECB && mode <= bltestSEED_CBC)
#else
if (mode >= bltestDES_ECB && mode <= bltestCAMELLIA_CBC)
#endif
return PR_TRUE;
return PR_FALSE;
}
@@ -871,7 +883,9 @@ cipher_requires_IV(bltestCipherMode mode)
switch (mode) {
case bltestDES_CBC:
case bltestDES_EDE_CBC:
#ifndef NSS_DISABLE_DEPRECATED_RC2
case bltestRC2_CBC:
#endif
#ifdef NSS_SOFTOKEN_DOES_RC5
case bltestRC5_CBC:
#endif
@@ -880,7 +894,9 @@ cipher_requires_IV(bltestCipherMode mode)
case bltestAES_CTR:
case bltestAES_GCM:
case bltestCAMELLIA_CBC:
#ifndef NSS_DISABLE_DEPRECATED_SEED
case bltestSEED_CBC:
#endif
case bltestCHACHA20:
return PR_TRUE;
default:
@@ -1078,6 +1094,7 @@ des_Decrypt(void *cx, unsigned char *output, unsigned int *outputLen,
input, inputLen);
}
#ifndef NSS_DISABLE_DEPRECATED_RC2
SECStatus
rc2_Encrypt(void *cx, unsigned char *output, unsigned int *outputLen,
unsigned int maxOutputLen, const unsigned char *input,
@@ -1095,6 +1112,7 @@ rc2_Decrypt(void *cx, unsigned char *output, unsigned int *outputLen,
return RC2_Decrypt((RC2Context *)cx, output, outputLen, maxOutputLen,
input, inputLen);
}
#endif /* NSS_DISABLE_DEPRECATED_RC2 */
SECStatus
rc4_Encrypt(void *cx, unsigned char *output, unsigned int *outputLen,
@@ -1176,6 +1194,7 @@ camellia_Decrypt(void *cx, unsigned char *output, unsigned int *outputLen,
input, inputLen);
}
#ifndef NSS_DISABLE_DEPRECATED_SEED
SECStatus
seed_Encrypt(void *cx, unsigned char *output, unsigned int *outputLen,
unsigned int maxOutputLen, const unsigned char *input,
@@ -1193,6 +1212,7 @@ seed_Decrypt(void *cx, unsigned char *output, unsigned int *outputLen,
return SEED_Decrypt((SEEDContext *)cx, output, outputLen, maxOutputLen,
input, inputLen);
}
#endif /* NSS_DISABLE_DEPRECATED_SEED */
SECStatus
rsa_PublicKeyOp(void *cx, SECItem *output, const SECItem *input)
@@ -1361,6 +1381,7 @@ bltest_des_init(bltestCipherInfo *cipherInfo, PRBool encrypt)
return SECSuccess;
}
#ifndef NSS_DISABLE_DEPRECATED_RC2
SECStatus
bltest_rc2_init(bltestCipherInfo *cipherInfo, PRBool encrypt)
{
@@ -1406,6 +1427,7 @@ bltest_rc2_init(bltestCipherInfo *cipherInfo, PRBool encrypt)
cipherInfo->cipher.symmkeyCipher = rc2_Decrypt;
return SECSuccess;
}
#endif /* NSS_DISABLE_DEPRECATED_RC2 */
SECStatus
bltest_rc4_init(bltestCipherInfo *cipherInfo, PRBool encrypt)
@@ -1481,7 +1503,7 @@ bltest_aes_init(bltestCipherInfo *cipherInfo, PRBool encrypt)
unsigned char *params;
int len;
CK_AES_CTR_PARAMS ctrParams;
CK_GCM_PARAMS gcmParams;
CK_NSS_GCM_PARAMS gcmParams;
params = aesp->iv.buf.data;
switch (cipherInfo->mode) {
@@ -1587,6 +1609,7 @@ bltest_camellia_init(bltestCipherInfo *cipherInfo, PRBool encrypt)
return SECSuccess;
}
#ifndef NSS_DISABLE_DEPRECATED_SEED
SECStatus
bltest_seed_init(bltestCipherInfo *cipherInfo, PRBool encrypt)
{
@@ -1630,6 +1653,7 @@ bltest_seed_init(bltestCipherInfo *cipherInfo, PRBool encrypt)
return SECSuccess;
}
#endif /* NSS_DISABLE_DEPRECATED_SEED */
SECStatus
bltest_chacha20_init(bltestCipherInfo *cipherInfo, PRBool encrypt)
@@ -2245,12 +2269,14 @@ cipherInit(bltestCipherInfo *cipherInfo, PRBool encrypt)
cipherInfo->input.pBuf.len);
return bltest_des_init(cipherInfo, encrypt);
break;
#ifndef NSS_DISABLE_DEPRECATED_RC2
case bltestRC2_ECB:
case bltestRC2_CBC:
SECITEM_AllocItem(cipherInfo->arena, &cipherInfo->output.buf,
cipherInfo->input.pBuf.len);
return bltest_rc2_init(cipherInfo, encrypt);
break;
#endif /* NSS_DISABLE_DEPRECATED_RC2 */
case bltestRC4:
SECITEM_AllocItem(cipherInfo->arena, &cipherInfo->output.buf,
cipherInfo->input.pBuf.len);
@@ -2282,12 +2308,14 @@ cipherInit(bltestCipherInfo *cipherInfo, PRBool encrypt)
cipherInfo->input.pBuf.len);
return bltest_camellia_init(cipherInfo, encrypt);
break;
#ifndef NSS_DISABLE_DEPRECATED_SEED
case bltestSEED_ECB:
case bltestSEED_CBC:
SECITEM_AllocItem(cipherInfo->arena, &cipherInfo->output.buf,
cipherInfo->input.pBuf.len);
return bltest_seed_init(cipherInfo, encrypt);
break;
#endif /* NSS_DISABLE_DEPRECATED_SEED */
case bltestCHACHA20:
outlen = cipherInfo->input.pBuf.len + (encrypt ? 16 : 0);
SECITEM_AllocItem(cipherInfo->arena, &cipherInfo->output.buf, outlen);
@@ -2586,19 +2614,23 @@ cipherFinish(bltestCipherInfo *cipherInfo)
case bltestCAMELLIA_CBC:
Camellia_DestroyContext((CamelliaContext *)cipherInfo->cx, PR_TRUE);
break;
#ifndef NSS_DISABLE_DEPRECATED_SEED
case bltestSEED_ECB:
case bltestSEED_CBC:
SEED_DestroyContext((SEEDContext *)cipherInfo->cx, PR_TRUE);
break;
#endif /* NSS_DISABLE_DEPRECATED_SEED */
case bltestCHACHA20:
ChaCha20Poly1305_DestroyContext((ChaCha20Poly1305Context *)
cipherInfo->cx,
PR_TRUE);
break;
#ifndef NSS_DISABLE_DEPRECATED_RC2
case bltestRC2_ECB:
case bltestRC2_CBC:
RC2_DestroyContext((RC2Context *)cipherInfo->cx, PR_TRUE);
break;
#endif /* NSS_DISABLE_DEPRECATED_RC2 */
case bltestRC4:
RC4_DestroyContext((RC4Context *)cipherInfo->cx, PR_TRUE);
break;
@@ -2747,10 +2779,14 @@ print_td:
case bltestAES_GCM:
case bltestCAMELLIA_ECB:
case bltestCAMELLIA_CBC:
#ifndef NSS_DISABLE_DEPRECATED_SEED
case bltestSEED_ECB:
case bltestSEED_CBC:
#endif
#ifndef NSS_DISABLE_DEPRECATED_RC2
case bltestRC2_ECB:
case bltestRC2_CBC:
#endif
case bltestRC4:
if (td)
fprintf(stdout, "%8s", "symmkey");
@@ -2934,21 +2970,29 @@ get_params(PLArenaPool *arena, bltestParams *params,
load_file_data(arena, &params->ask.aad, filename, bltestBinary);
case bltestDES_CBC:
case bltestDES_EDE_CBC:
#ifndef NSS_DISABLE_DEPRECATED_RC2
case bltestRC2_CBC:
#endif
case bltestAES_CBC:
case bltestAES_CTS:
case bltestAES_CTR:
case bltestCAMELLIA_CBC:
#ifndef NSS_DISABLE_DEPRECATED_SEED
case bltestSEED_CBC:
#endif
sprintf(filename, "%s/tests/%s/%s%d", testdir, modestr, "iv", j);
load_file_data(arena, &params->sk.iv, filename, bltestBinary);
case bltestDES_ECB:
case bltestDES_EDE_ECB:
#ifndef NSS_DISABLE_DEPRECATED_RC2
case bltestRC2_ECB:
#endif
case bltestRC4:
case bltestAES_ECB:
case bltestCAMELLIA_ECB:
#ifndef NSS_DISABLE_DEPRECATED_SEED
case bltestSEED_ECB:
#endif
sprintf(filename, "%s/tests/%s/%s%d", testdir, modestr, "key", j);
load_file_data(arena, &params->sk.key, filename, bltestBinary);
break;
+524 -1
View File
@@ -1027,7 +1027,7 @@ aes_gcm(char *reqfn, int encrypt)
unsigned int tagbits;
unsigned int taglen = 0;
unsigned int ivlen;
CK_GCM_PARAMS params;
CK_NSS_GCM_PARAMS params;
SECStatus rv;
aesreq = fopen(reqfn, "r");
@@ -8231,6 +8231,527 @@ loser:
fclose(ikereq);
}
void
kbkdf(char *path)
{
/* == Parser data == */
char buf[610]; /* holds one line from the input REQUEST file. Needs to
* be large enough to hold the longest line:
* "KO = <600 hex digits>\n". */
CK_ULONG L;
unsigned char KI[64];
unsigned int KI_len = 64;
unsigned char KO[300];
unsigned int KO_len = 300;
/* This is used only with feedback mode. */
unsigned char IV[64];
unsigned int IV_len = 64;
/* These are only used in counter mode with counter location as
* MIDDLE_FIXED. */
unsigned char BeforeFixedInputData[50];
unsigned int BeforeFixedInputData_len = 50;
unsigned char AfterFixedInputData[10];
unsigned int AfterFixedInputData_len = 10;
/* These are used with every KDF type. */
unsigned char FixedInputData[60];
unsigned int FixedInputData_len = 60;
/* Counter locations:
*
* 0: not used
* 1: beginning
* 2: middle
* 3: end */
int ctr_location = 0;
CK_ULONG counter_bitlen = 0;
size_t buf_offset;
size_t offset;
FILE *kbkdf_req = NULL;
FILE *kbkdf_resp = NULL;
/* == PKCS#11 data == */
CK_RV crv;
CK_SLOT_ID slotList[10];
CK_SLOT_ID slotID;
CK_ULONG slotListCount = sizeof(slotList) / sizeof(slotList[0]);
CK_ULONG slotCount = 0;
CK_MECHANISM kdf = { 0 };
CK_MECHANISM_TYPE prf_mech = 0;
CK_BBOOL ck_true = CK_TRUE;
/* We never need more than 3 data parameters. */
CK_PRF_DATA_PARAM dataParams[3];
CK_ULONG dataParams_len = 3;
CK_SP800_108_COUNTER_FORMAT iterator = { CK_FALSE, 0 };
CK_SP800_108_KDF_PARAMS kdfParams = { 0 };
CK_SP800_108_FEEDBACK_KDF_PARAMS feedbackParams = { 0 };
CK_OBJECT_CLASS ck_secret_key = CKO_SECRET_KEY;
CK_KEY_TYPE ck_generic = CKK_GENERIC_SECRET;
CK_ATTRIBUTE prf_template[] = {
{ CKA_VALUE, &KI, sizeof(KI) },
{ CKA_CLASS, &ck_secret_key, sizeof(ck_secret_key) },
{ CKA_KEY_TYPE, &ck_generic, sizeof(ck_generic) },
{ CKA_DERIVE, &ck_true, sizeof(ck_true) }
};
CK_ULONG prf_template_count = sizeof(prf_template) / sizeof(prf_template[0]);
CK_ATTRIBUTE derive_template[] = {
{ CKA_CLASS, &ck_secret_key, sizeof(ck_secret_key) },
{ CKA_KEY_TYPE, &ck_generic, sizeof(ck_generic) },
{ CKA_DERIVE, &ck_true, sizeof(ck_true) },
{ CKA_VALUE_LEN, &L, sizeof(L) }
};
CK_ULONG derive_template_count = sizeof(derive_template) / sizeof(derive_template[0]);
CK_ATTRIBUTE output_key = { CKA_VALUE, KO, KO_len };
const CK_C_INITIALIZE_ARGS pk11args = {
NULL, NULL, NULL, NULL, CKF_LIBRARY_CANT_CREATE_OS_THREADS,
(void *)"flags=readOnly,noCertDB,noModDB", NULL
};
/* == Start up PKCS#11 == */
crv = NSC_Initialize((CK_VOID_PTR)&pk11args);
if (crv != CKR_OK) {
fprintf(stderr, "NSC_Initialize failed crv=0x%x\n", (unsigned int)crv);
goto done;
}
slotCount = slotListCount;
crv = NSC_GetSlotList(PR_TRUE, slotList, &slotCount);
if (crv != CKR_OK) {
fprintf(stderr, "NSC_GetSlotList failed crv=0x%x\n", (unsigned int)crv);
goto done;
}
if ((slotCount > slotListCount) || slotCount < 1) {
fprintf(stderr,
"NSC_GetSlotList returned too many or too few slots: %d slots max=%d min=1\n",
(int)slotCount, (int)slotListCount);
goto done;
}
slotID = slotList[0];
/* == Start parsing the file == */
kbkdf_req = fopen(path, "r");
kbkdf_resp = stdout;
while (fgets(buf, sizeof buf, kbkdf_req) != NULL) {
/* If we have a comment, check if it tells us the type of KDF to use.
* This differs per-file, so we have to parse it. */
if (buf[0] == '#' || buf[0] == '\n' || buf[0] == '\r') {
if (strncmp(buf, "# KDF Mode Supported: Counter Mode", 34) == 0) {
kdf.mechanism = CKM_SP800_108_COUNTER_KDF;
}
if (strncmp(buf, "# KDF Mode Supported: Feedback Mode", 35) == 0) {
kdf.mechanism = CKM_SP800_108_FEEDBACK_KDF;
}
if (strncmp(buf, "# KDF Mode Supported: DblPipeline Mode", 38) == 0) {
kdf.mechanism = CKM_SP800_108_DOUBLE_PIPELINE_KDF;
}
fputs(buf, kbkdf_resp);
continue;
}
/* [....] - context directive */
if (buf[0] == '[') {
/* PRF begins each new section. */
if (strncmp(buf, "[PRF=CMAC_AES128]", 17) == 0) {
prf_mech = CKM_AES_CMAC;
KI_len = 16;
} else if (strncmp(buf, "[PRF=CMAC_AES192]", 17) == 0) {
prf_mech = CKM_AES_CMAC;
KI_len = 24;
} else if (strncmp(buf, "[PRF=CMAC_AES256]", 17) == 0) {
prf_mech = CKM_AES_CMAC;
KI_len = 32;
} else if (strncmp(buf, "[PRF=HMAC_SHA1]", 15) == 0) {
prf_mech = CKM_SHA_1_HMAC;
KI_len = 20;
} else if (strncmp(buf, "[PRF=HMAC_SHA224]", 17) == 0) {
prf_mech = CKM_SHA224_HMAC;
KI_len = 28;
} else if (strncmp(buf, "[PRF=HMAC_SHA256]", 17) == 0) {
prf_mech = CKM_SHA256_HMAC;
KI_len = 32;
} else if (strncmp(buf, "[PRF=HMAC_SHA384]", 17) == 0) {
prf_mech = CKM_SHA384_HMAC;
KI_len = 48;
} else if (strncmp(buf, "[PRF=HMAC_SHA512]", 17) == 0) {
prf_mech = CKM_SHA512_HMAC;
KI_len = 64;
} else if (strncmp(buf, "[PRF=", 5) == 0) {
fprintf(stderr, "Invalid or unsupported PRF mechanism: %s\n", buf);
goto done;
}
/* Then comes counter, if present. */
if (strncmp(buf, "[CTRLOCATION=BEFORE_FIXED]", 26) == 0 ||
strncmp(buf, "[CTRLOCATION=BEFORE_ITER]", 24) == 0) {
ctr_location = 1;
}
if (strncmp(buf, "[CTRLOCATION=MIDDLE_FIXED]", 26) == 0 ||
strncmp(buf, "[CTRLOCATION=AFTER_ITER]", 24) == 0) {
ctr_location = 2;
}
if (strncmp(buf, "[CTRLOCATION=AFTER_FIXED]", 25) == 0) {
ctr_location = 3;
}
/* If counter is present, then we need to know its size. */
if (strncmp(buf, "[RLEN=", 6) == 0) {
if (sscanf(buf, "[RLEN=%lu_BITS]", &counter_bitlen) != 1) {
goto done;
}
}
fputs(buf, kbkdf_resp);
continue;
}
/* Each test contains a counter, an output length L, an input key KI,
* maybe an initialization vector IV, one of a couple of fixed data
* buffers, and finally the output key KO. */
/* First comes COUNT. */
if (strncmp(buf, "COUNT=", 6) == 0) {
/* Clear all out data fields on each test. */
memset(KI, 0, sizeof KI);
memset(KO, 0, sizeof KO);
memset(IV, 0, sizeof IV);
memset(BeforeFixedInputData, 0, sizeof BeforeFixedInputData);
memset(AfterFixedInputData, 0, sizeof AfterFixedInputData);
memset(FixedInputData, 0, sizeof FixedInputData);
/* Then reset lengths except KI: it was determined by PRF
* selection above. */
KO_len = 0;
IV_len = 0;
BeforeFixedInputData_len = 0;
AfterFixedInputData_len = 0;
FixedInputData_len = 0;
fputs(buf, kbkdf_resp);
continue;
}
/* Then comes L. */
if (strncmp(buf, "L = ", 4) == 0) {
if (sscanf(buf, "L = %lu", &L) != 1) {
goto done;
}
if ((L % 8) != 0) {
fprintf(stderr, "Assumption that L was length in bits incorrect: %lu - %s", L, buf);
fprintf(stderr, "Note that NSS only supports byte-aligned outputs and not bit-aligned outputs.\n");
goto done;
}
L = L / 8;
fputs(buf, kbkdf_resp);
continue;
}
/* Then comes KI. */
if (strncmp(buf, "KI = ", 5) == 0) {
buf_offset = 5;
for (offset = 0; offset < KI_len; offset++, buf_offset += 2) {
hex_to_byteval(buf + buf_offset, KI + offset);
}
fputs(buf, kbkdf_resp);
continue;
}
/* Then comes IVlen and IV, if present. */
if (strncmp(buf, "IVlen = ", 8) == 0) {
if (sscanf(buf, "IVlen = %u", &IV_len) != 1) {
goto done;
}
if ((IV_len % 8) != 0) {
fprintf(stderr, "Assumption that IV_len was length in bits incorrect: %u - %s. ", IV_len, buf);
fprintf(stderr, "Note that NSS only supports byte-aligned inputs and not bit-aligned inputs.\n");
goto done;
}
/* Need the IV length in bytes, not bits. */
IV_len = IV_len / 8;
fputs(buf, kbkdf_resp);
continue;
}
if (strncmp(buf, "IV = ", 5) == 0) {
buf_offset = 5;
for (offset = 0; offset < IV_len; offset++, buf_offset += 2) {
hex_to_byteval(buf + buf_offset, IV + offset);
}
fputs(buf, kbkdf_resp);
continue;
}
/* We might have DataBeforeCtr and DataAfterCtr if present. */
if (strncmp(buf, "DataBeforeCtrLen = ", 19) == 0) {
if (sscanf(buf, "DataBeforeCtrLen = %u", &BeforeFixedInputData_len) != 1) {
goto done;
}
fputs(buf, kbkdf_resp);
continue;
}
if (strncmp(buf, "DataBeforeCtrData = ", 20) == 0) {
buf_offset = 20;
for (offset = 0; offset < BeforeFixedInputData_len; offset++, buf_offset += 2) {
hex_to_byteval(buf + buf_offset, BeforeFixedInputData + offset);
}
fputs(buf, kbkdf_resp);
continue;
}
if (strncmp(buf, "DataAfterCtrLen = ", 18) == 0) {
if (sscanf(buf, "DataAfterCtrLen = %u", &AfterFixedInputData_len) != 1) {
goto done;
}
fputs(buf, kbkdf_resp);
continue;
}
if (strncmp(buf, "DataAfterCtrData = ", 19) == 0) {
buf_offset = 19;
for (offset = 0; offset < AfterFixedInputData_len; offset++, buf_offset += 2) {
hex_to_byteval(buf + buf_offset, AfterFixedInputData + offset);
}
fputs(buf, kbkdf_resp);
continue;
}
/* Otherwise, we might have FixedInputData, if present. */
if (strncmp(buf, "FixedInputDataByteLen = ", 24) == 0) {
if (sscanf(buf, "FixedInputDataByteLen = %u", &FixedInputData_len) != 1) {
goto done;
}
fputs(buf, kbkdf_resp);
continue;
}
if (strncmp(buf, "FixedInputData = ", 17) == 0) {
buf_offset = 17;
for (offset = 0; offset < FixedInputData_len; offset++, buf_offset += 2) {
hex_to_byteval(buf + buf_offset, FixedInputData + offset);
}
fputs(buf, kbkdf_resp);
continue;
}
/* Finally, run the KBKDF calculation when KO is passed. */
if (strncmp(buf, "KO = ", 5) == 0) {
CK_SESSION_HANDLE session;
CK_OBJECT_HANDLE prf_key;
CK_OBJECT_HANDLE derived_key;
/* Open the session. */
crv = NSC_OpenSession(slotID, 0, NULL, NULL, &session);
if (crv != CKR_OK) {
fprintf(stderr, "NSC_OpenSession failed crv=0x%x\n", (unsigned int)crv);
goto done;
}
/* Create the PRF key object. */
prf_template[0].ulValueLen = KI_len;
crv = NSC_CreateObject(session, prf_template, prf_template_count, &prf_key);
if (crv != CKR_OK) {
fprintf(stderr, "NSC_CreateObject (prf_key) failed crv=0x%x\n", (unsigned int)crv);
goto done;
}
/* Set up the KDF parameters. */
if (kdf.mechanism == CKM_SP800_108_COUNTER_KDF) {
/* Counter operates in one of three ways: counter before fixed
* input data, counter between fixed input data, and counter
* after fixed input data. In all cases, we have an iterator.
*/
iterator.ulWidthInBits = counter_bitlen;
if (ctr_location == 0 || ctr_location > 3) {
fprintf(stderr, "Expected ctr_location != 0 for Counter Mode KDF but got 0.\n");
goto done;
} else if (ctr_location == 1) {
/* Counter before */
dataParams[0].type = CK_SP800_108_ITERATION_VARIABLE;
dataParams[0].pValue = &iterator;
dataParams[0].ulValueLen = sizeof(iterator);
dataParams[1].type = CK_SP800_108_BYTE_ARRAY;
dataParams[1].pValue = FixedInputData;
dataParams[1].ulValueLen = FixedInputData_len;
dataParams_len = 2;
} else if (ctr_location == 2) {
/* Counter between */
dataParams[0].type = CK_SP800_108_BYTE_ARRAY;
dataParams[0].pValue = BeforeFixedInputData;
dataParams[0].ulValueLen = BeforeFixedInputData_len;
dataParams[1].type = CK_SP800_108_ITERATION_VARIABLE;
dataParams[1].pValue = &iterator;
dataParams[1].ulValueLen = sizeof(iterator);
dataParams[2].type = CK_SP800_108_BYTE_ARRAY;
dataParams[2].pValue = AfterFixedInputData;
dataParams[2].ulValueLen = AfterFixedInputData_len;
dataParams_len = 3;
} else {
/* Counter after */
dataParams[0].type = CK_SP800_108_BYTE_ARRAY;
dataParams[0].pValue = FixedInputData;
dataParams[0].ulValueLen = FixedInputData_len;
dataParams[1].type = CK_SP800_108_ITERATION_VARIABLE;
dataParams[1].pValue = &iterator;
dataParams[1].ulValueLen = sizeof(iterator);
dataParams_len = 2;
}
} else if (kdf.mechanism == CKM_SP800_108_FEEDBACK_KDF || kdf.mechanism == CKM_SP800_108_DOUBLE_PIPELINE_KDF) {
/* When counter_bitlen != 0, we have an optional counter. */
if (counter_bitlen != 0) {
iterator.ulWidthInBits = counter_bitlen;
if (ctr_location == 0 || ctr_location > 3) {
fprintf(stderr, "Expected ctr_location != 0 for Counter Mode KDF but got 0.\n");
goto done;
} else if (ctr_location == 1) {
/* Counter before */
dataParams[0].type = CK_SP800_108_OPTIONAL_COUNTER;
dataParams[0].pValue = &iterator;
dataParams[0].ulValueLen = sizeof(iterator);
dataParams[1].type = CK_SP800_108_ITERATION_VARIABLE;
dataParams[1].pValue = NULL;
dataParams[1].ulValueLen = 0;
dataParams[2].type = CK_SP800_108_BYTE_ARRAY;
dataParams[2].pValue = FixedInputData;
dataParams[2].ulValueLen = FixedInputData_len;
dataParams_len = 3;
} else if (ctr_location == 2) {
/* Counter between */
dataParams[0].type = CK_SP800_108_ITERATION_VARIABLE;
dataParams[0].pValue = NULL;
dataParams[0].ulValueLen = 0;
dataParams[1].type = CK_SP800_108_OPTIONAL_COUNTER;
dataParams[1].pValue = &iterator;
dataParams[1].ulValueLen = sizeof(iterator);
dataParams[2].type = CK_SP800_108_BYTE_ARRAY;
dataParams[2].pValue = FixedInputData;
dataParams[2].ulValueLen = FixedInputData_len;
dataParams_len = 3;
} else {
/* Counter after */
dataParams[0].type = CK_SP800_108_ITERATION_VARIABLE;
dataParams[0].pValue = NULL;
dataParams[0].ulValueLen = 0;
dataParams[1].type = CK_SP800_108_BYTE_ARRAY;
dataParams[1].pValue = FixedInputData;
dataParams[1].ulValueLen = FixedInputData_len;
dataParams[2].type = CK_SP800_108_OPTIONAL_COUNTER;
dataParams[2].pValue = &iterator;
dataParams[2].ulValueLen = sizeof(iterator);
dataParams_len = 3;
}
} else {
dataParams[0].type = CK_SP800_108_ITERATION_VARIABLE;
dataParams[0].pValue = NULL;
dataParams[0].ulValueLen = 0;
dataParams[1].type = CK_SP800_108_BYTE_ARRAY;
dataParams[1].pValue = FixedInputData;
dataParams[1].ulValueLen = FixedInputData_len;
dataParams_len = 2;
}
}
if (kdf.mechanism != CKM_SP800_108_FEEDBACK_KDF) {
kdfParams.prfType = prf_mech;
kdfParams.ulNumberOfDataParams = dataParams_len;
kdfParams.pDataParams = dataParams;
kdf.pParameter = &kdfParams;
kdf.ulParameterLen = sizeof(kdfParams);
} else {
feedbackParams.prfType = prf_mech;
feedbackParams.ulNumberOfDataParams = dataParams_len;
feedbackParams.pDataParams = dataParams;
feedbackParams.ulIVLen = IV_len;
if (IV_len == 0) {
feedbackParams.pIV = NULL;
} else {
feedbackParams.pIV = IV;
}
kdf.pParameter = &feedbackParams;
kdf.ulParameterLen = sizeof(feedbackParams);
}
crv = NSC_DeriveKey(session, &kdf, prf_key, derive_template, derive_template_count, &derived_key);
if (crv != CKR_OK) {
fprintf(stderr, "NSC_DeriveKey(derived_key) failed crv=0x%x\n", (unsigned int)crv);
goto done;
}
crv = NSC_GetAttributeValue(session, derived_key, &output_key, 1);
if (crv != CKR_OK) {
fprintf(stderr, "NSC_GetAttribute(derived_value) failed crv=0x%x\n", (unsigned int)crv);
goto done;
}
fputs("KO = ", kbkdf_resp);
to_hex_str(buf, KO, output_key.ulValueLen);
fputs(buf, kbkdf_resp);
fputs("\r\n", kbkdf_resp);
continue;
}
}
done:
if (kbkdf_req != NULL) {
fclose(kbkdf_req);
}
if (kbkdf_resp != stdout && kbkdf_resp != NULL) {
fclose(kbkdf_resp);
}
return;
}
int
main(int argc, char **argv)
{
@@ -8410,6 +8931,8 @@ main(int argc, char **argv)
ikev1_psk(argv[2]);
} else if (strcmp(argv[1], "ikev2") == 0) {
ikev2(argv[2]);
} else if (strcmp(argv[1], "kbkdf") == 0) {
kbkdf(argv[2]);
}
return 0;
}
+6 -3
View File
@@ -17,6 +17,7 @@
#include "basicutil.h"
#include <stdarg.h>
#include <stddef.h>
#include <sys/stat.h>
#include <errno.h>
@@ -632,7 +633,8 @@ void
SECU_PrintPRandOSError(const char *progName)
{
char buffer[513];
PRInt32 errLen = PR_GetErrorTextLength();
PRInt32 errLenInt = PR_GetErrorTextLength();
size_t errLen = errLenInt < 0 ? 0 : (size_t)errLenInt;
if (errLen > 0 && errLen < sizeof buffer) {
PR_GetErrorText(buffer);
}
@@ -739,7 +741,6 @@ SECU_HexString2SECItem(PLArenaPool *arena, SECItem *item, const char *str)
int byteval = 0;
int tmp = PORT_Strlen(str);
PORT_Assert(arena);
PORT_Assert(item);
if ((tmp % 2) != 0) {
@@ -760,7 +761,9 @@ SECU_HexString2SECItem(PLArenaPool *arena, SECItem *item, const char *str)
} else if ((str[i] >= 'A') && (str[i] <= 'F')) {
tmp = str[i] - 'A' + 10;
} else {
/* item is in arena and gets freed by the caller */
if (!arena) {
SECITEM_FreeItem(item, PR_FALSE);
}
return NULL;
}
+13 -15
View File
@@ -102,7 +102,7 @@ const Constant _consts[] = {
mkEntry(CKF_WRAP, MechanismFlags),
mkEntry(CKF_UNWRAP, MechanismFlags),
mkEntry(CKF_DERIVE, MechanismFlags),
mkEntry(CKF_EC_FP, MechanismFlags),
mkEntry(CKF_EC_F_P, MechanismFlags),
mkEntry(CKF_EC_F_2M, MechanismFlags),
mkEntry(CKF_EC_ECPARAMETERS, MechanismFlags),
mkEntry(CKF_EC_NAMEDCURVE, MechanismFlags),
@@ -128,7 +128,6 @@ const Constant _consts[] = {
mkEntry(CKO_SECRET_KEY, Object),
mkEntry(CKO_HW_FEATURE, Object),
mkEntry(CKO_DOMAIN_PARAMETERS, Object),
mkEntry(CKO_KG_PARAMETERS, Object),
mkEntry(CKO_NSS_CRL, Object),
mkEntry(CKO_NSS_SMIME, Object),
mkEntry(CKO_NSS_TRUST, Object),
@@ -255,8 +254,8 @@ const Constant _consts[] = {
mkEntry2(CKA_TRUST_TIME_STAMPING, Attribute, Trust),
mkEntry2(CKA_CERT_SHA1_HASH, Attribute, None),
mkEntry2(CKA_CERT_MD5_HASH, Attribute, None),
mkEntry2(CKA_NETSCAPE_DB, Attribute, None),
mkEntry2(CKA_NETSCAPE_TRUST, Attribute, Trust),
mkEntry2(CKA_NSS_DB, Attribute, None),
mkEntry2(CKA_NSS_TRUST, Attribute, Trust),
mkEntry(CKM_RSA_PKCS, Mechanism),
mkEntry(CKM_RSA_9796, Mechanism),
@@ -473,16 +472,16 @@ const Constant _consts[] = {
mkEntry(CKM_DH_PKCS_PARAMETER_GEN, Mechanism),
mkEntry(CKM_NSS_AES_KEY_WRAP, Mechanism),
mkEntry(CKM_NSS_AES_KEY_WRAP_PAD, Mechanism),
mkEntry(CKM_NETSCAPE_PBE_SHA1_DES_CBC, Mechanism),
mkEntry(CKM_NETSCAPE_PBE_SHA1_TRIPLE_DES_CBC, Mechanism),
mkEntry(CKM_NETSCAPE_PBE_SHA1_40_BIT_RC2_CBC, Mechanism),
mkEntry(CKM_NETSCAPE_PBE_SHA1_128_BIT_RC2_CBC, Mechanism),
mkEntry(CKM_NETSCAPE_PBE_SHA1_40_BIT_RC4, Mechanism),
mkEntry(CKM_NETSCAPE_PBE_SHA1_128_BIT_RC4, Mechanism),
mkEntry(CKM_NETSCAPE_PBE_SHA1_FAULTY_3DES_CBC, Mechanism),
mkEntry(CKM_NETSCAPE_PBE_SHA1_HMAC_KEY_GEN, Mechanism),
mkEntry(CKM_NETSCAPE_PBE_MD5_HMAC_KEY_GEN, Mechanism),
mkEntry(CKM_NETSCAPE_PBE_MD2_HMAC_KEY_GEN, Mechanism),
mkEntry(CKM_NSS_PBE_SHA1_DES_CBC, Mechanism),
mkEntry(CKM_NSS_PBE_SHA1_TRIPLE_DES_CBC, Mechanism),
mkEntry(CKM_NSS_PBE_SHA1_40_BIT_RC2_CBC, Mechanism),
mkEntry(CKM_NSS_PBE_SHA1_128_BIT_RC2_CBC, Mechanism),
mkEntry(CKM_NSS_PBE_SHA1_40_BIT_RC4, Mechanism),
mkEntry(CKM_NSS_PBE_SHA1_128_BIT_RC4, Mechanism),
mkEntry(CKM_NSS_PBE_SHA1_FAULTY_3DES_CBC, Mechanism),
mkEntry(CKM_NSS_PBE_SHA1_HMAC_KEY_GEN, Mechanism),
mkEntry(CKM_NSS_PBE_MD5_HMAC_KEY_GEN, Mechanism),
mkEntry(CKM_NSS_PBE_MD2_HMAC_KEY_GEN, Mechanism),
mkEntry(CKM_TLS_PRF_GENERAL, Mechanism),
mkEntry(CKM_NSS_TLS_PRF_GENERAL_SHA256, Mechanism),
@@ -520,7 +519,6 @@ const Constant _consts[] = {
mkEntry(CKR_KEY_FUNCTION_NOT_PERMITTED, Result),
mkEntry(CKR_KEY_NOT_WRAPPABLE, Result),
mkEntry(CKR_KEY_UNEXTRACTABLE, Result),
mkEntry(CKR_KEY_PARAMS_INVALID, Result),
mkEntry(CKR_MECHANISM_INVALID, Result),
mkEntry(CKR_MECHANISM_PARAM_INVALID, Result),
mkEntry(CKR_OBJECT_HANDLE_INVALID, Result),
+65 -11
View File
@@ -494,23 +494,30 @@ SECU_ReadDERFromFile(SECItem *der, PRFileDesc *inFile, PRBool ascii,
if (ascii) {
/* First convert ascii to binary */
SECItem filedata;
char *asc, *body;
/* Read in ascii data */
rv = SECU_FileToItem(&filedata, inFile);
if (rv != SECSuccess)
return rv;
asc = (char *)filedata.data;
if (!asc) {
if (!filedata.data) {
fprintf(stderr, "unable to read data from input file\n");
return SECFailure;
}
/* need one additional byte for zero terminator */
rv = SECITEM_ReallocItemV2(NULL, &filedata, filedata.len + 1);
if (rv != SECSuccess) {
PORT_Free(filedata.data);
return rv;
}
char *asc = (char *)filedata.data;
asc[filedata.len - 1] = '\0';
if (warnOnPrivateKeyInAsciiFile && strstr(asc, "PRIVATE KEY")) {
fprintf(stderr, "Warning: ignoring private key. Consider to use "
"pk12util.\n");
}
char *body;
/* check for headers and trailers and remove them */
if ((body = strstr(asc, "-----BEGIN")) != NULL) {
char *trailer = NULL;
@@ -528,14 +535,7 @@ SECU_ReadDERFromFile(SECItem *der, PRFileDesc *inFile, PRBool ascii,
return SECFailure;
}
} else {
/* need one additional byte for zero terminator */
rv = SECITEM_ReallocItemV2(NULL, &filedata, filedata.len + 1);
if (rv != SECSuccess) {
PORT_Free(filedata.data);
return rv;
}
body = (char *)filedata.data;
body[filedata.len - 1] = '\0';
body = asc;
}
/* Convert to binary */
@@ -4159,3 +4159,57 @@ exportKeyingMaterials(PRFileDesc *fd,
return SECSuccess;
}
SECStatus
readPSK(const char *arg, SECItem *psk, SECItem *label)
{
SECStatus rv = SECFailure;
char *str = PORT_Strdup(arg);
if (!str) {
goto cleanup;
}
char *pskBytes = strtok(str, ":");
if (!pskBytes) {
goto cleanup;
}
if (PORT_Strncasecmp(pskBytes, "0x", 2) != 0) {
goto cleanup;
}
psk = SECU_HexString2SECItem(NULL, psk, &pskBytes[2]);
if (!psk || !psk->data || psk->len != strlen(&str[2]) / 2) {
goto cleanup;
}
SECItem labelItem = { siBuffer, NULL, 0 };
char *inLabel = strtok(NULL, ":");
if (inLabel) {
labelItem.data = (unsigned char *)PORT_Strdup(inLabel);
if (!labelItem.data) {
goto cleanup;
}
labelItem.len = strlen(inLabel);
if (PORT_Strncasecmp(inLabel, "0x", 2) == 0) {
rv = SECU_SECItemHexStringToBinary(&labelItem);
if (rv != SECSuccess) {
SECITEM_FreeItem(&labelItem, PR_FALSE);
goto cleanup;
}
}
rv = SECSuccess;
} else {
PRUint8 defaultLabel[] = { 'C', 'l', 'i', 'e', 'n', 't', '_',
'i', 'd', 'e', 'n', 't', 'i', 't', 'y' };
SECItem src = { siBuffer, defaultLabel, sizeof(defaultLabel) };
rv = SECITEM_CopyItem(NULL, &labelItem, &src);
}
if (rv == SECSuccess) {
*label = labelItem;
}
cleanup:
PORT_Free(str);
return rv;
}
+2
View File
@@ -424,6 +424,8 @@ SECStatus exportKeyingMaterials(PRFileDesc *fd,
const secuExporter *exporters,
unsigned int exporterCount);
SECStatus readPSK(const char *arg, SECItem *psk, SECItem *label);
/*
*
* Error messaging
+2 -2
View File
@@ -415,7 +415,7 @@ main(int argc, char **argv)
return 1;
}
if (argc || !argv[1] || strlen(argv[1]) == 0) {
if (argc < 2 || !argv[1] || strlen(argv[1]) == 0) {
rv += testMD5(initCtx);
rv += testSHA1(initCtx);
rv += testSHA224(initCtx);
@@ -428,7 +428,7 @@ main(int argc, char **argv)
rv += testSHA1(initCtx);
} else if (strcmp(argv[1], "SHA224") == 0) {
rv += testSHA224(initCtx);
} else if (strcmp(argv[1], "SHA226") == 0) {
} else if (strcmp(argv[1], "SHA256") == 0) {
rv += testSHA256(initCtx);
} else if (strcmp(argv[1], "SHA384") == 0) {
rv += testSHA384(initCtx);
-2
View File
@@ -889,8 +889,6 @@ Pk11Install_Platform_Generate(Pk11Install_Platform* _this,
errStr = Pk11Install_PlatformName_Generate(&_this->equivName,
subval->string);
if (errStr) {
tmp = PR_smprintf("%s: %s",
Pk11Install_PlatformName_GetString(&_this->name), errStr);
tmp = PR_smprintf("%s: %s",
Pk11Install_PlatformName_GetString(&_this->name), errStr);
PR_smprintf_free(errStr);
+2 -2
View File
@@ -45,7 +45,7 @@ aes_encrypt_buf(
SECItem key_item;
PK11SlotInfo *slot = NULL;
PK11SymKey *symKey = NULL;
CK_GCM_PARAMS gcm_params;
CK_NSS_GCM_PARAMS gcm_params;
SECItem param;
/* Import key into NSS. */
@@ -102,7 +102,7 @@ aes_decrypt_buf(
SECItem key_item;
PK11SlotInfo *slot = NULL;
PK11SymKey *symKey = NULL;
CK_GCM_PARAMS gcm_params;
CK_NSS_GCM_PARAMS gcm_params;
SECItem param;
if (inputlen + tagsize > sizeof(concatenated)) {
+1 -1
View File
@@ -16,7 +16,7 @@
#include <string.h>
#include <stdarg.h>
#if defined(XP_UNIX) && !defined(NO_FORK_CHECK)
#if defined(XP_UNIX) && defined(DO_FORK_CHECK)
#include <unistd.h>
#include <sys/wait.h>
#else
+96 -13
View File
@@ -138,6 +138,8 @@ static SECItem bigBuf;
static int configureDHE = -1; /* -1: don't configure, 0 disable, >=1 enable*/
static int configureReuseECDHE = -1; /* -1: don't configure, 0 refresh, >=1 reuse*/
static int configureWeakDHE = -1; /* -1: don't configure, 0 disable, >=1 enable*/
SECItem psk = { siBuffer, NULL, 0 };
SECItem pskLabel = { siBuffer, NULL, 0 };
static PRThread *acceptorThread;
@@ -167,7 +169,7 @@ PrintUsageHeader(const char *progName)
" [ T <good|revoked|unknown|badsig|corrupted|none|ocsp>] [-A ca]\n"
" [-C SSLCacheEntries] [-S dsa_nickname] [-Q]\n"
" [-I groups] [-J signatureschemes] [-e ec_nickname]\n"
" -U [0|1] -H [0|1|2] -W [0|1]\n"
" -U [0|1] -H [0|1|2] -W [0|1] [-z externalPsk]\n"
"\n",
progName);
}
@@ -241,7 +243,11 @@ PrintParameterUsage()
" LABEL[:OUTPUT-LENGTH[:CONTEXT]]\n"
" where LABEL and CONTEXT can be either a free-form string or\n"
" a hex string if it is preceded by \"0x\"; OUTPUT-LENGTH\n"
" is a decimal integer.\n",
" is a decimal integer.\n"
"-z Configure a TLS 1.3 External PSK with the given hex string for a key.\n"
" To specify a label, use ':' as a delimiter. For example:\n"
" 0xAAAABBBBCCCCDDDD:mylabel. Otherwise, the default label of\n"
" 'Client_identity' will be used.\n",
stderr);
}
@@ -1841,6 +1847,32 @@ handshakeCallback(PRFileDesc *fd, void *client_data)
}
}
static SECStatus
importPsk(PRFileDesc *model_sock)
{
SECU_PrintAsHex(stdout, &psk, "Using External PSK", 0);
PK11SlotInfo *slot = NULL;
PK11SymKey *symKey = NULL;
slot = PK11_GetInternalSlot();
if (!slot) {
errWarn("PK11_GetInternalSlot failed");
return SECFailure;
}
symKey = PK11_ImportSymKey(slot, CKM_HKDF_KEY_GEN, PK11_OriginUnwrap,
CKA_DERIVE, &psk, NULL);
PK11_FreeSlot(slot);
if (!symKey) {
errWarn("PK11_ImportSymKey failed\n");
return SECFailure;
}
SECStatus rv = SSL_AddExternalPsk(model_sock, symKey,
(const PRUint8 *)pskLabel.data,
pskLabel.len, ssl_hash_sha256);
PK11_FreeSymKey(symKey);
return rv;
}
void
server_main(
PRFileDesc *listen_sock,
@@ -2050,6 +2082,13 @@ server_main(
}
}
if (psk.data) {
rv = importPsk(model_sock);
if (rv != SECSuccess) {
errExit("importPsk failed");
}
}
if (MakeCertOK)
SSL_BadCertHook(model_sock, myBadCertHandler, NULL);
@@ -2125,6 +2164,20 @@ haveAChild(int argc, char **argv, PRProcessAttr *attr)
return newProcess;
}
#ifdef XP_UNIX
void
sigusr1_parent_handler(int sig)
{
PRProcess *process;
int i;
fprintf(stderr, "SIG_USER: Parent got sig_user, killing children (%d).\n", numChildren);
for (i = 0; i < numChildren; i++) {
process = child[i];
PR_KillProcess(process); /* it would be nice to kill with a sigusr signal */
}
}
#endif
void
beAGoodParent(int argc, char **argv, int maxProcs, PRFileDesc *listen_sock)
{
@@ -2134,6 +2187,19 @@ beAGoodParent(int argc, char **argv, int maxProcs, PRFileDesc *listen_sock)
PRInt32 exitCode;
PRStatus rv;
#ifdef XP_UNIX
struct sigaction act;
/* set up the signal handler */
act.sa_handler = sigusr1_parent_handler;
sigemptyset(&act.sa_mask);
act.sa_flags = 0;
if (sigaction(SIGUSR1, &act, NULL)) {
fprintf(stderr, "Error installing signal handler.\n");
exit(1);
}
#endif
rv = PR_SetFDInheritable(listen_sock, PR_TRUE);
if (rv != PR_SUCCESS)
errExit("PR_SetFDInheritable");
@@ -2264,10 +2330,9 @@ main(int argc, char **argv)
/* please keep this list of options in ASCII collating sequence.
** numbers, then capital letters, then lower case, alphabetical.
** XXX: 'B', and 'q' were used in the past but removed
** in 3.28, please leave some time before resuing those.
** 'z' was removed in 3.39. */
** in 3.28, please leave some time before resuing those. */
optstate = PL_CreateOptState(argc, argv,
"2:A:C:DEGH:I:J:L:M:NP:QRS:T:U:V:W:YZa:bc:d:e:f:g:hi:jk:lmn:op:rst:uvw:x:y");
"2:A:C:DEGH:I:J:L:M:NP:QRS:T:U:V:W:YZa:bc:d:e:f:g:hi:jk:lmn:op:rst:uvw:x:yz:");
while ((status = PL_GetNextOpt(optstate)) == PL_OPT_OK) {
++optionsFound;
switch (optstate->option) {
@@ -2489,6 +2554,16 @@ main(int argc, char **argv)
zeroRTT = PR_TRUE;
break;
case 'z':
rv = readPSK(optstate->value, &psk, &pskLabel);
if (rv != SECSuccess) {
PL_DestroyOptState(optstate);
fprintf(stderr, "Bad PSK specified.\n");
Usage(progName);
exit(1);
}
break;
case 'Q':
enableALPN = PR_TRUE;
break;
@@ -2588,7 +2663,8 @@ main(int argc, char **argv)
exit(14);
}
if (pidFile) {
envString = PR_GetEnvSecure(envVarName);
if (!envString && pidFile) {
FILE *tmpfile = fopen(pidFile, "w+");
if (tmpfile) {
@@ -2613,13 +2689,6 @@ main(int argc, char **argv)
if (!tmp)
tmp = PR_GetEnvSecure("TEMP");
/* Call the NSS initialization routines */
rv = NSS_Initialize(dir, certPrefix, certPrefix, SECMOD_DB, NSS_INIT_READONLY);
if (rv != SECSuccess) {
fputs("NSS_Init failed.\n", stderr);
exit(8);
}
if (envString) {
/* we're one of the children in a multi-process server. */
listen_sock = PR_GetInheritedFD(inheritableSockName);
@@ -2642,6 +2711,12 @@ main(int argc, char **argv)
if (rv != SECSuccess)
errExit("SSL_InheritMPServerSIDCache");
hasSidCache = PR_TRUE;
/* Call the NSS initialization routines */
rv = NSS_Initialize(dir, certPrefix, certPrefix, SECMOD_DB, NSS_INIT_READONLY);
if (rv != SECSuccess) {
fputs("NSS_Init failed.\n", stderr);
exit(8);
}
} else if (maxProcs > 1) {
/* we're going to be the parent in a multi-process server. */
listen_sock = getBoundListenSocket(port);
@@ -2652,6 +2727,12 @@ main(int argc, char **argv)
beAGoodParent(argc, argv, maxProcs, listen_sock);
exit(99); /* should never get here */
} else {
/* Call the NSS initialization routines */
rv = NSS_Initialize(dir, certPrefix, certPrefix, SECMOD_DB, NSS_INIT_READONLY);
if (rv != SECSuccess) {
fputs("NSS_Init failed.\n", stderr);
exit(8);
}
/* we're an ordinary single process server. */
listen_sock = getBoundListenSocket(port);
prStatus = PR_SetFDInheritable(listen_sock, PR_FALSE);
@@ -2838,6 +2919,8 @@ cleanup:
if (antiReplay) {
SSL_ReleaseAntiReplayContext(antiReplay);
}
SECITEM_ZfreeItem(&psk, PR_FALSE);
SECITEM_ZfreeItem(&pskLabel, PR_FALSE);
if (NSS_Shutdown() != SECSuccess) {
SECU_PrintError(progName, "NSS_Shutdown");
if (loggerThread) {
+2 -2
View File
@@ -483,8 +483,8 @@ static const tuple_str errStrings[] = {
{ CKR_MUTEX_NOT_LOCKED, "CKR_MUTEX_NOT_LOCKED " },
{ CKR_FUNCTION_REJECTED, "CKR_FUNCTION_REJECTED " },
{ CKR_VENDOR_DEFINED, "CKR_VENDOR_DEFINED " },
{ 0xCE534351, "CKR_NETSCAPE_CERTDB_FAILED " },
{ 0xCE534352, "CKR_NETSCAPE_KEYDB_FAILED " }
{ 0xCE534351, "CKR_NSS_CERTDB_FAILED " },
{ 0xCE534352, "CKR_NSS_KEYDB_FAILED " }
};
+4
View File
@@ -6,6 +6,10 @@ CORE_DEPTH = ../..
MODULE = nss
ifdef ZLIB_INCLUDE_DIR
INCLUDES += -I$(ZLIB_INCLUDE_DIR)
endif
EXPORTS =
CSRCS = signtool.c \
+55 -5
View File
@@ -109,6 +109,8 @@ SSLNamedGroup *enabledGroups = NULL;
unsigned int enabledGroupsCount = 0;
const SSLSignatureScheme *enabledSigSchemes = NULL;
unsigned int enabledSigSchemeCount = 0;
SECItem psk = { siBuffer, NULL, 0 };
SECItem pskLabel = { siBuffer, NULL, 0 };
const char *
signatureSchemeName(SSLSignatureScheme scheme)
@@ -229,7 +231,7 @@ PrintUsageHeader()
" [-r N] [-w passwd] [-W pwfile] [-q [-t seconds]]\n"
" [-I groups] [-J signatureschemes]\n"
" [-A requestfile] [-L totalconnections] [-P {client,server}]\n"
" [-N encryptedSniKeys] [-Q]\n"
" [-N encryptedSniKeys] [-Q] [-z externalPsk]\n"
"\n",
progName);
}
@@ -325,6 +327,12 @@ PrintParameterUsage()
"%-20s a hex string if it is preceded by \"0x\"; OUTPUT-LENGTH\n"
"%-20s is a decimal integer.\n",
"-x", "", "", "", "", "");
fprintf(stderr,
"%-20s Configure a TLS 1.3 External PSK with the given hex string for a key\n"
"%-20s To specify a label, use ':' as a delimiter. For example\n"
"%-20s 0xAAAABBBBCCCCDDDD:mylabel. Otherwise, the default label of\n"
"%-20s 'Client_identity' will be used.\n",
"-z externalPsk", "", "", "");
}
static void
@@ -1230,6 +1238,31 @@ connectToServer(PRFileDesc *s, PRPollDesc *pollset)
return SECSuccess;
}
static SECStatus
importPsk(PRFileDesc *s)
{
SECU_PrintAsHex(stdout, &psk, "Using External PSK", 0);
PK11SlotInfo *slot = NULL;
PK11SymKey *symKey = NULL;
slot = PK11_GetInternalSlot();
if (!slot) {
SECU_PrintError(progName, "PK11_GetInternalSlot failed");
return SECFailure;
}
symKey = PK11_ImportSymKey(slot, CKM_HKDF_KEY_GEN, PK11_OriginUnwrap,
CKA_DERIVE, &psk, NULL);
PK11_FreeSlot(slot);
if (!symKey) {
SECU_PrintError(progName, "PK11_ImportSymKey failed");
return SECFailure;
}
SECStatus rv = SSL_AddExternalPsk(s, symKey, (const PRUint8 *)pskLabel.data,
pskLabel.len, ssl_hash_sha256);
PK11_FreeSymKey(symKey);
return rv;
}
static int
run()
{
@@ -1498,6 +1531,15 @@ run()
}
}
if (psk.data) {
rv = importPsk(s);
if (rv != SECSuccess) {
SECU_PrintError(progName, "importPsk failed");
error = 1;
goto done;
}
}
serverCertAuth.dbHandle = CERT_GetDefaultCertDB();
SSL_AuthCertificateHook(s, ownAuthCertificate, &serverCertAuth);
@@ -1752,11 +1794,8 @@ main(int argc, char **argv)
}
}
/* Note: 'z' was removed in 3.39
* Please leave some time before reusing these.
*/
optstate = PL_CreateOptState(argc, argv,
"46A:BCDEFGHI:J:KL:M:N:OP:QR:STUV:W:X:YZa:bc:d:fgh:m:n:op:qr:st:uvw:x:");
"46A:BCDEFGHI:J:KL:M:N:OP:QR:STUV:W:X:YZa:bc:d:fgh:m:n:op:qr:st:uvw:x:z:");
while ((optstatus = PL_GetNextOpt(optstate)) == PL_OPT_OK) {
switch (optstate->option) {
case '?':
@@ -2015,6 +2054,15 @@ main(int argc, char **argv)
Usage();
}
break;
case 'z':
rv = readPSK(optstate->value, &psk, &pskLabel);
if (rv != SECSuccess) {
PL_DestroyOptState(optstate);
fprintf(stderr, "Bad PSK specified.\n");
Usage();
}
break;
}
}
PL_DestroyOptState(optstate);
@@ -2210,6 +2258,8 @@ done:
PORT_Free(host);
PORT_Free(zeroRttData);
PORT_Free(encryptedSNIKeys);
SECITEM_ZfreeItem(&psk, PR_FALSE);
SECITEM_ZfreeItem(&pskLabel, PR_FALSE);
if (enabledGroups) {
PORT_Free(enabledGroups);
+1 -1
View File
@@ -21,7 +21,7 @@ ifeq ($(USE_PTHREADS),1)
endif
DEFAULT_COMPILER = gcc
DEFINES += -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_POSIX_SOURCE
DEFINES += -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_POSIX_SOURCE -DSQL_MEASURE_USE_TEMP_DIR
ifeq ($(OS_TARGET),Android)
ifndef ANDROID_NDK
+7 -7
View File
@@ -291,6 +291,13 @@ OVERVIEW of "rules.mk":
CATEGORY/rule:: Purpose
=================== =======================================
$(PUBLIC_EXPORT_DIR):: create directory used to
house public "C" header files
$(PRIVATE_EXPORT_DIR):: create directory used to
house private "C" header
files
GENERAL
-------
all:: "default" all-encompassing rule which
@@ -517,13 +524,6 @@ OVERVIEW of "rules.mk":
CATEGORY/rule:: Purpose
=================== =============================
$(PUBLIC_EXPORT_DIR):: create directory used to
house public "C" header files
$(PRIVATE_EXPORT_DIR):: create directory used to
house private "C" header
files
$(SOURCE_XP_DIR)/
release/include:: create directory used to
house "C" header files
+2 -1
View File
@@ -35,6 +35,7 @@ DEFAULT_COMPILER = cc
ifdef NS_USE_GCC
CC = gcc
OS_CFLAGS += -Wall -Wno-format -Werror-implicit-function-declaration -Wno-switch
OS_CFLAGS += -D__EXTENSIONS__
CCC = g++
CCC += -Wall -Wno-format
ASFLAGS += -x assembler-with-cpp
@@ -65,7 +66,7 @@ endif
RANLIB = echo
CPU_ARCH = sparc
OS_DEFINES += -DSVR4 -DSYSV -D__svr4 -D__svr4__ -DSOLARIS -D_REENTRANT -D__EXTENSIONS__
OS_DEFINES += -DSVR4 -DSYSV -D__svr4 -D__svr4__ -DSOLARIS -D_REENTRANT
ifeq ($(OS_TEST),i86pc)
ifeq ($(USE_64),1)
+2 -1
View File
@@ -10,7 +10,7 @@
# OS_TEST (from uname -m)
# OS_RELEASE (from uname -v and/or -r)
# OS_TARGET User defined, or set to OS_ARCH
# CPU_ARCH (from unmame -m or -p, ONLY on WINNT)
# CPU_ARCH (from uname -m or -p, ONLY on WINNT)
# OS_CONFIG OS_TARGET + OS_RELEASE
# OBJDIR_TAG (uses GCOV_TAG, 64BIT_TAG)
# OBJDIR_NAME
@@ -116,6 +116,7 @@ ifeq ($(OS_ARCH),Linux)
OS_RELEASE := $(word 1,$(OS_RELEASE)).$(word 2,$(OS_RELEASE))
endif
KERNEL = Linux
include $(CORE_DEPTH)/coreconf/Linux.mk
endif
# Since all uses of OS_ARCH that follow affect only userland, we can
+41 -12
View File
@@ -12,7 +12,7 @@
# chromium uses pymod_do_main, but gyp doesn't set a sensible
# Python sys.path (gyp_chromium does).
'python%': '<(python)',
'host_arch%': '<!(<(python) <(DEPTH)/coreconf/detect_host_arch.py)',
'host_arch%': '<!("<(python)" <(DEPTH)/coreconf/detect_host_arch.py)',
},
'python%': '<(python)',
'host_arch%': '<(host_arch)',
@@ -37,7 +37,7 @@
},{
'use_system_sqlite%': 0,
}],
['OS=="mac" or OS=="ios" or OS=="win"', {
['OS=="mac" or OS=="ios" or OS=="solaris" or OS=="win"', {
'cc_use_gnu_ld%': 0,
}, {
'cc_use_gnu_ld%': 1,
@@ -66,12 +66,12 @@
],
}],
['"<(GENERATOR)"=="ninja"', {
'cc_is_clang%': '<!(<(python) <(DEPTH)/coreconf/check_cc.py clang)',
'cc_is_clang%': '<!("<(python)" <(DEPTH)/coreconf/check_cc.py clang)',
}, {
'cc_is_clang%': '0',
}],
['"<(GENERATOR)"=="ninja"', {
'cc_is_gcc%': '<!(<(python) <(DEPTH)/coreconf/check_cc.py gcc)',
'cc_is_gcc%': '<!("<(python)" <(DEPTH)/coreconf/check_cc.py gcc)',
}, {
'cc_is_gcc%': '0',
}],
@@ -97,11 +97,17 @@
'cc_use_gnu_ld%': '<(cc_use_gnu_ld)',
# Some defaults
'disable_arm_hw_aes%': 0,
'disable_arm_hw_sha1%': 0,
'disable_arm_hw_sha2%': 0,
'disable_tests%': 0,
'disable_chachapoly%': 0,
'disable_dbm%': 0,
'disable_deprecated_seed%': 0,
'disable_deprecated_rc2%': 0,
'disable_dbm%': 1,
'disable_libpkix%': 1,
'disable_werror%': 0,
'disable_altivec%': 0,
'disable_arm32_neon%': 0,
'mozilla_client%': 0,
'comm_client%': 0,
'moz_fold_libs%': 0,
@@ -124,6 +130,9 @@
'only_dev_random%': 1,
'disable_fips%': 1,
'mozpkix_only%': 0,
'coverage%': 0,
'softfp_cflags%': '',
'enable_draft_hpke%': 0,
},
'target_defaults': {
# Settings specific to targets should go here.
@@ -198,7 +207,7 @@
},
},
}],
[ 'target_arch=="arm64" or target_arch=="aarch64" or target_arch=="sparc64" or target_arch=="ppc64" or target_arch=="ppc64le" or target_arch=="s390x" or target_arch=="mips64"', {
[ 'target_arch=="arm64" or target_arch=="aarch64" or target_arch=="sparc64" or target_arch=="ppc64" or target_arch=="ppc64le" or target_arch=="s390x" or target_arch=="mips64" or target_arch=="e2k"', {
'defines': [
'NSS_USE_64',
],
@@ -358,6 +367,7 @@
'_DEFAULT_SOURCE', # for <endian.h> functions, strdup, realpath, and getentropy
'_BSD_SOURCE', # for the above in glibc <= 2.19
'_POSIX_SOURCE', # for <signal.h>
'SQL_MEASURE_USE_TEMP_DIR', # use tmpdir for the access calls
],
}],
[ 'OS=="dragonfly" or OS=="freebsd"', {
@@ -387,6 +397,11 @@
'_REENTRANT',
],
}],
[ 'OS!="mac" and OS!="ios" and OS!="solaris" and OS!="win"', {
'ldflags': [
'-z', 'noexecstack',
],
}],
[ 'OS!="mac" and OS!="ios" and OS!="win"', {
'cflags': [
'-fPIC',
@@ -400,9 +415,6 @@
'cflags_cc': [
'-std=c++11',
],
'ldflags': [
'-z', 'noexecstack',
],
'conditions': [
[ 'target_arch=="ia32"', {
'cflags': ['-m32'],
@@ -432,11 +444,11 @@
}],
[ 'disable_werror==0 and OS!="android" and OS!="win"', {
'cflags': [
'<!@(<(python) <(DEPTH)/coreconf/werror.py)',
'<!@("<(python)" <(DEPTH)/coreconf/werror.py)',
],
'xcode_settings': {
'OTHER_CFLAGS': [
'<!@(<(python) <(DEPTH)/coreconf/werror.py)',
'<!@("<(python)" <(DEPTH)/coreconf/werror.py)',
],
},
}],
@@ -559,11 +571,26 @@
'NSS_DISABLE_DBM',
],
}],
[ 'enable_draft_hpke==1', {
'defines': [
'NSS_ENABLE_DRAFT_HPKE',
],
}],
[ 'disable_libpkix==1', {
'defines': [
'NSS_DISABLE_LIBPKIX',
],
}],
[ 'disable_deprecated_seed==1', {
'defines': [
'NSS_DISABLE_DEPRECATED_SEED',
],
}],
[ 'disable_deprecated_rc2==1', {
'defines': [
'NSS_DISABLE_DEPRECATED_RC2',
],
}],
],
},
# Common settings for debug should go here.
@@ -590,9 +617,11 @@
'Optimization': '<(debug_optimization_level)',
'BasicRuntimeChecks': '3',
'RuntimeLibrary': '2', # /MD
'DebugInformationFormat': '3',
},
'VCLinkerTool': {
'LinkIncremental': '1',
'GenerateDebugInformation' : 'true',
},
'VCResourceCompilerTool': {
'PreprocessorDefinitions': ['DEBUG'],
@@ -635,7 +664,7 @@
},
},
'conditions': [
[ 'cc_use_gnu_ld==1', {
[ 'cc_use_gnu_ld==1 or OS=="solaris"', {
'variables': {
'process_map_file': ['/bin/sh', '-c', '/usr/bin/env grep -v ";-" >(mapfile) | sed -e "s,;+,," -e "s; DATA ;;" -e "s,;;,," -e "s,;.*,;," > >@(_outputs)'],
},
+53
View File
@@ -136,6 +136,33 @@ ifndef MK_RULESET
include $(CORE_DEPTH)/coreconf/ruleset.mk
endif
#######################################################################
# Master "Core Components" macros for Hardware features #
#######################################################################
ifndef NSS_DISABLE_AVX2
ifneq ($(CPU_ARCH),x86_64)
# Disable AVX2 entirely on non-Intel platforms
NSS_DISABLE_AVX2 = 1
$(warning CPU_ARCH is not x86_64, disabling -mavx2)
else
# Clang reports its version as an older gcc, but it's OK
ifndef CC_IS_CLANG
ifneq (,$(filter 0 1 2 3,$(word 1,$(GCC_VERSION))))
NSS_DISABLE_AVX2 = 1
endif
ifeq (4,$(word 1,$(GCC_VERSION)))
ifeq (,$(filter 8 9,$(word 2,$(GCC_VERSION))))
NSS_DISABLE_AVX2 = 1
endif
endif
endif
ifeq (1,$(NSS_DISABLE_AVX2))
$(warning Unable to find gcc 4.8 or greater, disabling -mavx2)
export NSS_DISABLE_AVX2
endif
endif
endif #ndef NSS_DISABLE_AVX2
#######################################################################
# [15.0] Dependencies.
#######################################################################
@@ -162,14 +189,30 @@ ifdef NSS_DISABLE_DBM
DEFINES += -DNSS_DISABLE_DBM
endif
ifdef NSS_DISABLE_AVX2
DEFINES += -DNSS_DISABLE_AVX2
endif
ifdef NSS_DISABLE_CHACHAPOLY
DEFINES += -DNSS_DISABLE_CHACHAPOLY
endif
ifdef NSS_DISABLE_DEPRECATED_SEED
DEFINES += -DNSS_DISABLE_DEPRECATED_SEED
endif
ifdef NSS_DISABLE_DEPRECATED_RC2
DEFINES += -DNSS_DISABLE_DEPRECATED_RC2
endif
ifdef NSS_PKIX_NO_LDAP
DEFINES += -DNSS_PKIX_NO_LDAP
endif
ifdef NSS_ENABLE_DRAFT_HPKE
DEFINES += -DNSS_ENABLE_DRAFT_HPKE
endif
# FIPS support requires startup tests to be executed at load time of shared modules.
# For performance reasons, these tests are disabled by default.
# When compiling binaries that must support FIPS mode,
@@ -196,6 +239,16 @@ DEFINES += -DPKIX_OBJECT_LEAK_TEST
endif
endif
# Avoid building with Neon acceleration on Arm32
ifdef NSS_DISABLE_ARM32_NEON
DEFINES += -DNSS_DISABLE_ARM32_NEON
endif
# Avoid building with PowerPC's Altivec acceleration
ifdef NSS_DISABLE_ALTIVEC
DEFINES += -DNSS_DISABLE_ALTIVEC
endif
# This allows all library and tools code to use the util function
# implementations directly from libnssutil3, rather than the wrappers
# in libnss3 which are present for binary compatibility only
-1
View File
@@ -10,4 +10,3 @@
*/
#error "Do not include this header file."
@@ -15,6 +15,8 @@ def main():
host_arch = 'x64'
elif fnmatch.fnmatch(host_arch, 'i?86') or host_arch == 'i86pc':
host_arch = 'ia32'
elif host_arch == 'arm64':
pass
elif host_arch.startswith('arm'):
host_arch = 'arm'
elif host_arch.startswith('mips'):
+2 -2
View File
@@ -810,7 +810,7 @@ ifneq ($(BUILD_OPT),)
REGDATE = $(subst \ ,, $(shell $(PERL) $(CORE_DEPTH)/$(MODULE)/scripts/now))
endif
tests:: $(REGRESSION_SPEC)
tests:: $(REGRESSION_SPEC)
cd $(PLATFORM); \
../$(SOURCE_MD_DIR)/bin/regress$(PROG_SUFFIX) specfile=../$(REGRESSION_SPEC) progress $(EXTRA_REGRESS_OPTIONS); \
if test ! -d $(TESTS_DIR); then \
@@ -824,7 +824,7 @@ ifneq ($(BUILD_OPT),)
echo "then run 'reporter specfile=$(RESULTS_DIR)/rptspec'"
endif
else
tests::
tests::
@echo Error: you didn't specify REGRESSION_SPEC in your manifest.mn file!;
endif
+1
View File
@@ -1,4 +1,5 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* 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/. */
+2
View File
@@ -1,4 +1,5 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* 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/. */
@@ -22,6 +23,7 @@ class DataBuffer {
DataBuffer(const DataBuffer& other) : data_(nullptr), len_(0) {
Assign(other);
}
explicit DataBuffer(size_t l) : data_(nullptr), len_(0) { Allocate(l); }
~DataBuffer() { delete[] data_; }
DataBuffer& operator=(const DataBuffer& other) {
@@ -1,4 +1,5 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* 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/. */
+6
View File
@@ -1,4 +1,5 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* 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/. */
@@ -10,6 +11,7 @@
#include "cert.h"
#include "keyhi.h"
#include "p12.h"
#include "pk11hpke.h"
#include "pk11pqg.h"
#include "pk11pub.h"
#include "pkcs11uri.h"
@@ -26,6 +28,9 @@ struct ScopedDelete {
void operator()(CERTSubjectPublicKeyInfo* spki) {
SECKEY_DestroySubjectPublicKeyInfo(spki);
}
void operator()(HpkeContext* context) {
PK11_HPKE_DestroyContext(context, true);
}
void operator()(PK11Context* context) { PK11_DestroyContext(context, true); }
void operator()(PK11GenericObject* obj) { PK11_DestroyGenericObject(obj); }
void operator()(PK11SlotInfo* slot) { PK11_FreeSlot(slot); }
@@ -69,6 +74,7 @@ SCOPED(CERTCertificateList);
SCOPED(CERTDistNames);
SCOPED(CERTName);
SCOPED(CERTSubjectPublicKeyInfo);
SCOPED(HpkeContext);
SCOPED(PK11Context);
SCOPED(PK11GenericObject);
SCOPED(PK11SlotInfo);
+1
View File
@@ -1,4 +1,5 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* 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/. */
+3
View File
@@ -1,4 +1,5 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* 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/. */
@@ -11,6 +12,7 @@
struct ScopedDeleteSSL {
void operator()(SSLAeadContext* ctx) { SSL_DestroyAead(ctx); }
void operator()(SSLMaskingContext* ctx) { SSL_DestroyMaskingContext(ctx); }
void operator()(SSLAntiReplayContext* ctx) {
SSL_ReleaseAntiReplayContext(ctx);
}
@@ -33,6 +35,7 @@ struct ScopedMaybeDeleteSSL {
SCOPED(SSLAeadContext);
SCOPED(SSLAntiReplayContext);
SCOPED(SSLMaskingContext);
SCOPED(SSLResumptionTokenInfo);
#undef SCOPED
+1
View File
@@ -1,4 +1,5 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* 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/. */
+1
View File
@@ -1,4 +1,5 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* 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/. */
+6
View File
@@ -1,4 +1,5 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* 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/. */
@@ -73,6 +74,11 @@ const uint8_t kTlsFakeChangeCipherSpec[] = {
0x01 // Value
};
const uint8_t kCtDtlsCiphertext = 0x20;
const uint8_t kCtDtlsCiphertextMask = 0xE0;
const uint8_t kCtDtlsCiphertext16bSeqno = 0x08;
const uint8_t kCtDtlsCiphertextLengthPresent = 0x04;
static const uint8_t kTls13PskKe = 0;
static const uint8_t kTls13PskDhKe = 1;
static const uint8_t kTls13PskAuth = 0;
+1
View File
@@ -1,4 +1,5 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* 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/. */
@@ -1,4 +1,5 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* 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/. */
@@ -1,4 +1,5 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* 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/. */
@@ -1,4 +1,5 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* 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/. */
@@ -1,4 +1,5 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* 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/. */
@@ -0,0 +1,818 @@
/* vim: set ts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* 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/. */
/* This file is generated from sources in nss/gtests/common/wycheproof
* automatically and should not be touched manually.
* Generation is trigged by calling python3 genTestVectors.py */
#ifndef cbc_vectors_h__
#define cbc_vectors_h__
#include "testvectors_base/test-structs.h"
const AesCbcTestVector kCbcWycheproofVectors[] = {
{1, "e34f15c7bd819930fe9d66e0c166e61c", "",
"da9520f7d3520277035173299388bee2", "b10ab60153276941361000414aed0a9d",
true},
{2, "e09eaa5a3f5e56d279d5e7a03373f6ea", "ef4eab37181f98423e53e947e7050fd0",
"c9ee3cd746bf208c65ca9e72a266d54f",
"d1fa697f3e2e04d64f1a0da203813ca5bc226a0b1d42287b2a5b994a66eaf14a", true},
{3, "9bd3902ed0996c869b572272e76f3889",
"a7ba19d49ee1ea02f098aa8e30c740d893a4456ccc294040484ed8a00a55f93e",
"8b2e86a9a185cfa6f51c7cc595b822bc",
"514cbc69aced506926deacdeb0cc0a5a07d540f65d825b65c7db0075cf930a06e0124ae59"
"8461cab0b3251baa853e377",
true},
{4, "75ce184447cada672e02290310d224f7",
"c774810a31a6421ad8eaafd5c22fa2455e2c167fee4a0b73ff927b2d96c69da1e939407b8"
"6b1c19bcfc69c434c3cf8a2",
"2717d10eb2eea3b39ec257e43307a260",
"137c824d7f7dc36f24216dde37c2e1c10cee533f6453de92e44b898fc3037d2e9e19d67a9"
"6387136dd9717a56e28614a5c177158f402ce2936fd98d1feb6a817",
true},
{5, "e1e726677f4893890f8c027f9d8ef80d", "3f",
"155fd397579b0b5d991d42607f2cc9ad", "599d77aca16910b42d8b4ac9560efe1b",
true},
{6, "b151f491c4c006d1f28214aa3da9a985", "27d9",
"4eb836be6808db264cb1111a3283b394", "74e20bf03a0ad4b49edc86a1b19c3d1d",
true},
{7, "c36ff15f72777ee21deec07b63c1a0cd", "50b428",
"a8446c27ea9068d8d924d5c4eac91157", "3f7a26558ba51cf352219d34c46907ae",
true},
{8, "32b9c5c78c3a0689a86052420fa1e8fc", "0b9262ec",
"ef026d27da3702d7bb72e5e364a8f8f2", "c29d1463baccc558fd720c897da5bb98",
true},
{9, "43151bbaef367277ebfc97509d0aa49c", "eaa91273e7",
"c9defd3929dcd6c355c144e9750dd869", "e24a717914f9cc8eaa1dc96f7840d6af",
true},
{10, "481440298525cc261f8159159aedf62d", "6123c556c5cc",
"ce91e0454b0123f1ead0f158826459e9", "f080e487f4e5b7aed793ea95ffe4bb30",
true},
{11, "9ca26eb88731efbf7f810d5d95e196ac", "7e48f06183aa40",
"1cb7bc8fe00523e7743d3cd9f483d6fe", "27cadee413ed901f51c9366d731d95f6",
true},
{12, "48f0d03e41cc55c4b58f737b5acdea32", "f4a133aa6d5985a0",
"a345f084229dbfe0ceab6c6939571532", "59bf12427b51a3aee0c9d3c540d04d24",
true},
{13, "1c958849f31996b28939ce513087d1be", "b0d2fee11b8e2f86b7",
"e5b6f73f132355b7be7d977bea068dfc", "1a0a18355f8ca4e6e2cf31da18d070da",
true},
{14, "39de0ebea97c09b2301a90009a423253", "81e5c33b4c620852f044",
"c7cd10ca949ea03e7d4ba204b69e09b8", "cef498ea61715a27f400418d1d5bfbf0",
true},
{15, "91656d8fc0aced60ddb1c4006d0dde53", "7b3e440fe566790064b2ec",
"bb8c9af30821dfeb7124392a554d9f01", "7ab43ddc45835ce40d2280bcea6a63f2",
true},
{16, "af7d5134720b5386158d51ea126e7cf9", "7cc6fcc925c20f3c83b5567c",
"54c3b90ca6e933f9094334d0263d3775", "c70b457c945ad40895cf4c8be3ce7c66",
true},
{17, "4ed56753de6f75a032ebabca3ce27971", "0c8c0f5619d9f8da5339281285",
"9a2c5e91d4f0b9b9da64b46c5c2c8cb2", "f9900afee2acfe63f8f15d81bbf64c39",
true},
{18, "beba50c936b696c15e25046dffb23a64", "821ea8532fbabffb6e3d212e9b46",
"cf7951501104e1434309e6b936ec1742", "da4137bd8ac78e75a700b3de806f2d6f",
true},
{19, "501d81ebf912ddb87fbe3b7aac1437bc", "2368e3c3636b5e8e94d2081adbf798",
"90f5cf4fbfd2e2a1ab8eef402617bd5c", "fed05321d11d978e2ec32527ecfce06c",
true},
{20, "831e664c9e3f0c3094c0b27b9d908eb2",
"26603bb76dd0a0180791c4ed4d3b058807", "54f2459e40e002763144f4752cde2fb5",
"8d55dc10584e243f55d2bdbb5758b7fabcd58c8d3785f01c7e3640b2a1dadcd9", true},
{21, "cbffc6c8c7f76f46349c32d666f4efb0",
"6df067add738195fd55ac2e76b476971b9a0e6d8",
"088e01c2c65b26e7ad6af7b92ea09d73",
"e9199842355ea0c3dbf1b2a94fef1c802a95d024df9e407883cf5bf1f02c3cdc", true},
{22, "fda6a01194beb462953d7e6c49b32dac",
"f60ae3b036abcab78c98fc1d4b67970c0955cb6fe24483f8907fd73319679b",
"d9c9468796a2f5741b84d2d41430c5d3",
"19beb4db2be0f3aff0083583038b2281a77c85b5f345ba4d2bc7f742a14f9247", true},
{23, "efd9caa8ac68e9e29acdae57e93bcea8",
"3e1d2001f1e475b972738936443a5f51eedaf802a66fadf2406cfaadb0549149fcb9f485e"
"534dc2d",
"c98b47808add45c0c891983ec4b09846",
"84904fc92bd2e7590aa268e667370327b9446f41067dd40d3e5091a63a0d5687e4926e00c"
"c3cb461c3b85d80ee2da818",
true},
{24, "37e4dbdc436258d5a9adb9f205c77cf3",
"24a874aec067116ad22eb55846ded3f5e86919a135585c929a86d92b2958fed110e52e338"
"04887243584a6a94402cc9a105e0c940ec335bd2890f16dcce3fc8bd02873c80ade6f1ac0"
"8683130bcca454",
"08e9410de244d3f40607ebae38fa74e7",
"1d1391593a336be4b207295ad0542bc4ef2f39053066e12c38f71603f377fd42f4f0b2b5a"
"42cdfeaee2af039f06fcf347abe171af3157ff07f3cdd3b33e11a60caecf9890325c132ee"
"b66ab847278d165c26bca7c30486bb2fd83b63c5ff7ae0",
true},
{25, "db4f3e5e3795cc09a073fa6a81e5a6bc", "",
"23468aa734f5f0f19827316ff168e94f", "aa62606a287476777b92d8e4c4e53028",
false},
{26, "db4f3e5e3795cc09a073fa6a81e5a6bc", "6162636465666768",
"23468aa734f5f0f19827316ff168e94f", "ada437b682c92384b6c23ec10a21b3d8",
false},
{27, "db4f3e5e3795cc09a073fa6a81e5a6bc", "303132333435363738396162636465",
"23468aa734f5f0f19827316ff168e94f", "26c5b3e540ee3dd6b52d14afd01a44f8",
false},
{28, "db4f3e5e3795cc09a073fa6a81e5a6bc", "30313233343536373839414243444546",
"23468aa734f5f0f19827316ff168e94f",
"fbcbdfdaaf17980be939c0b243266ecbc0deb417e98aba3ee12fea2921f8ae51", false},
{29, "db4f3e5e3795cc09a073fa6a81e5a6bc",
"3031323334353637383941424344454647", "23468aa734f5f0f19827316ff168e94f",
"fbcbdfdaaf17980be939c0b243266ecb1188ff22f6563f6173440547d1e0dfd8", false},
{30, "db4f3e5e3795cc09a073fa6a81e5a6bc", "",
"23468aa734f5f0f19827316ff168e94f", "726570a34cea08139d9f836579102a0e",
false},
{31, "db4f3e5e3795cc09a073fa6a81e5a6bc", "6162636465666768",
"23468aa734f5f0f19827316ff168e94f", "c8ef7ac3fd659ce7157d72a25f0a5048",
false},
{32, "db4f3e5e3795cc09a073fa6a81e5a6bc", "303132333435363738396162636465",
"23468aa734f5f0f19827316ff168e94f", "6123c889bbc766acd4bca4cb982f9978",
false},
{33, "db4f3e5e3795cc09a073fa6a81e5a6bc", "30313233343536373839414243444546",
"23468aa734f5f0f19827316ff168e94f",
"fbcbdfdaaf17980be939c0b243266ecb442cd16f7410fca70924b573f7967e84", false},
{34, "db4f3e5e3795cc09a073fa6a81e5a6bc",
"3031323334353637383941424344454647", "23468aa734f5f0f19827316ff168e94f",
"fbcbdfdaaf17980be939c0b243266ecbb20f899b0e7c1d65b931af94b5c44c25", false},
{35, "db4f3e5e3795cc09a073fa6a81e5a6bc", "",
"23468aa734f5f0f19827316ff168e94f", "50aeed98a820c5a037a5aa4d4ef3090b",
false},
{36, "db4f3e5e3795cc09a073fa6a81e5a6bc", "6162636465666768",
"23468aa734f5f0f19827316ff168e94f", "25ee339006f948f42713543c62467ef9",
false},
{37, "db4f3e5e3795cc09a073fa6a81e5a6bc", "303132333435363738396162636465",
"23468aa734f5f0f19827316ff168e94f", "97914574676ed5b8db0b6f3931195b3f",
false},
{38, "db4f3e5e3795cc09a073fa6a81e5a6bc", "30313233343536373839414243444546",
"23468aa734f5f0f19827316ff168e94f",
"fbcbdfdaaf17980be939c0b243266ecb2874a1e2d28dd18e5573df9fd59fd789", false},
{39, "db4f3e5e3795cc09a073fa6a81e5a6bc",
"3031323334353637383941424344454647", "23468aa734f5f0f19827316ff168e94f",
"fbcbdfdaaf17980be939c0b243266ecbb547c4fddbdcd3e02f438a2e48587594", false},
{40, "db4f3e5e3795cc09a073fa6a81e5a6bc", "",
"23468aa734f5f0f19827316ff168e94f",
"d17ccbb26f0aa95f397b20063547349bac24c5429cbea591e96595cccc11451b", false},
{41, "db4f3e5e3795cc09a073fa6a81e5a6bc", "6162636465666768",
"23468aa734f5f0f19827316ff168e94f",
"fc07025e81d43efa85f92afdf8781b1e88598e12d6812df43733e93414b9e901", false},
{42, "db4f3e5e3795cc09a073fa6a81e5a6bc", "303132333435363738396162636465",
"23468aa734f5f0f19827316ff168e94f",
"deb1746f4e9e0be4a21825b071b6e93303031651e0c59091e2ae0fbcce11b987", false},
{43, "db4f3e5e3795cc09a073fa6a81e5a6bc", "30313233343536373839414243444546",
"23468aa734f5f0f19827316ff168e94f",
"fbcbdfdaaf17980be939c0b243266ecb563d35096fde10ccb6f768438c9eb4ec90f399b76"
"924c716e9f94143263306c6",
false},
{44, "db4f3e5e3795cc09a073fa6a81e5a6bc",
"3031323334353637383941424344454647", "23468aa734f5f0f19827316ff168e94f",
"fbcbdfdaaf17980be939c0b243266ecbc8fd2e2c5362acf5212bd47859aa827d8469b87b0"
"e6adafe3dba98c1885b6345",
false},
{45, "db4f3e5e3795cc09a073fa6a81e5a6bc", "",
"23468aa734f5f0f19827316ff168e94f", "ca5dd2d09bd56eec9e8acaeca20af68e",
false},
{46, "db4f3e5e3795cc09a073fa6a81e5a6bc", "6162636465666768",
"23468aa734f5f0f19827316ff168e94f", "01e53a5ec9b0957c45f79ed0f4b2b982",
false},
{47, "db4f3e5e3795cc09a073fa6a81e5a6bc", "30313233343536373839414243444546",
"23468aa734f5f0f19827316ff168e94f",
"fbcbdfdaaf17980be939c0b243266ecbd3909bb3457e5b946ff709be9a2ed84d", false},
{48, "db4f3e5e3795cc09a073fa6a81e5a6bc",
"3031323334353637383941424344454647", "23468aa734f5f0f19827316ff168e94f",
"fbcbdfdaaf17980be939c0b243266ecbc5ab3ab637166a6a067b82b5672c08f8", false},
{49, "db4f3e5e3795cc09a073fa6a81e5a6bc", "",
"23468aa734f5f0f19827316ff168e94f", "ba0726bd6dea11382b19c842e2ddead2",
false},
{50, "db4f3e5e3795cc09a073fa6a81e5a6bc", "6162636465666768",
"23468aa734f5f0f19827316ff168e94f", "22f18b85c729903744fb8db5ed2840d4",
false},
{51, "db4f3e5e3795cc09a073fa6a81e5a6bc", "30313233343536373839414243444546",
"23468aa734f5f0f19827316ff168e94f",
"fbcbdfdaaf17980be939c0b243266ecb6b103fbe43519a18880b7e6d9153e1c2", false},
{52, "db4f3e5e3795cc09a073fa6a81e5a6bc",
"3031323334353637383941424344454647", "23468aa734f5f0f19827316ff168e94f",
"fbcbdfdaaf17980be939c0b243266ecbe00bdb15b8a61285447498700d35e0c6", false},
{53, "db4f3e5e3795cc09a073fa6a81e5a6bc", "",
"23468aa734f5f0f19827316ff168e94f", "d17ccbb26f0aa95f397b20063547349b",
false},
{54, "db4f3e5e3795cc09a073fa6a81e5a6bc", "6162636465666768",
"23468aa734f5f0f19827316ff168e94f", "2056dfa339fa00be6836999411a98c76",
false},
{55, "db4f3e5e3795cc09a073fa6a81e5a6bc", "303132333435363738396162636465",
"23468aa734f5f0f19827316ff168e94f", "f92628f6418d8d9c9afac233861b3835",
false},
{56, "db4f3e5e3795cc09a073fa6a81e5a6bc", "30313233343536373839414243444546",
"23468aa734f5f0f19827316ff168e94f",
"fbcbdfdaaf17980be939c0b243266ecbc0c41093b495a7d5a080d976493fd0e7", false},
{57, "db4f3e5e3795cc09a073fa6a81e5a6bc",
"3031323334353637383941424344454647", "23468aa734f5f0f19827316ff168e94f",
"fbcbdfdaaf17980be939c0b243266ecb6770446a5ccaa26f7d4f970cc5834eba", false},
{58, "db4f3e5e3795cc09a073fa6a81e5a6bc", "",
"23468aa734f5f0f19827316ff168e94f", "4ff3e623fdd432608c183f40864177af",
false},
{59, "db4f3e5e3795cc09a073fa6a81e5a6bc", "6162636465666768",
"23468aa734f5f0f19827316ff168e94f", "6a1ef1e6ae6a788777aabd9ccf3cf43a",
false},
{60, "db4f3e5e3795cc09a073fa6a81e5a6bc", "30313233343536373839414243444546",
"23468aa734f5f0f19827316ff168e94f",
"fbcbdfdaaf17980be939c0b243266ecbee1345cd513161b241f4ae2799b0327f", false},
{61, "db4f3e5e3795cc09a073fa6a81e5a6bc",
"3031323334353637383941424344454647", "23468aa734f5f0f19827316ff168e94f",
"fbcbdfdaaf17980be939c0b243266ecbe0d539beef6f2d4f7cda4fd9f4f05570", false},
{62, "3d6bf9edae6d881eade0ff8c7076a4835b71320c1f36b631", "",
"db20f9a6f4d6b4e478f1a4b9d4051d34", "ff0c315873b4b1872abef2353b792ef0",
true},
{63, "f4bfa5aa4f0f4d62cf736cd2969c43d580fdb92f2753bedb",
"0e239f239705b282ce2200fe20de1165", "69a76dc4da64d89c580eb75ae975ec39",
"7dbd573e4db58a318edfe29f199d8cda538a49f36486337c2711163e55fd5d0b", true},
{64, "9d11abc1fcb248a436598e695be12c3c2ed90a18ba09d62c",
"aa5182cae2a8fb068c0b3fb2be3e57ae523d13dffd1a944587707c2b67447f3f",
"6525667350930fb945dd1895a3abfcd1",
"bd0258909e5b72438d95ca4b29c8a79c6228fd06a3b2fa06f7659654c7b24610f23f2fb16"
"313b7d3614cb0cd16fabb8e",
true},
{65, "7e41d83181659a2c38da5ead353cdb04c2b4d4a3cfe58e25",
"8a32d11c7a11aa72e13381632b1310f4fd90fc209a6a350e61c069a561871214f9c04fc1d"
"f7354cbe4d8d639c525d324",
"3943d8fddd5bb2a59772df31a31a8fff",
"6cbeacf8de25d7dd9dcdc087bf2f80873b1eb335400589076f8d2bf81e294c5d72b85eb8a"
"c9558b0de9e9fbee4b18716e5220c507fbb9d319a08f67816765ca6",
true},
{66, "915429743435c28997a33b33b6574a953d81dae0e7032e6a", "58",
"1379d48493f743e6a149deb3b9bab31e", "519925956d32e4fa350b1144f088e4e8",
true},
{67, "f0c288ba26b284f9fb321b444a6517b3cdda1a799d55fdff", "0f7e",
"48c7f44b43a1279d820733e6cb30617a", "bfb90aa7de1bdeed5bdc5703bdfd9630",
true},
{68, "6b55e4d4fd6847a80a6bfb0dcc0aa93f9fd797fc5c50292e", "33f530",
"2c287b38cc30c8c351b087b91a6a97ba", "b1a25816908c086f26037d10b7be9ad9",
true},
{69, "1eb21a9e995a8e45c9e71ecbd6fe615b3e0318007c64b644", "3aa73c48",
"61f6060919c9c09ef06be28f39c344aa", "74dbdecbfa94b71d2d6ef03200c7d095",
true},
{70, "710e2d5d4a9f0bc7e50796655e046a18cc5769d7764355da", "7e4c690a88",
"7682005907bfef3ce00196a17ad2246d", "10c860aaee23c3c3c1b9306b189dd80d",
true},
{71, "d8c09ea400779b63e774bdacd0cb7b5dd6f736ca23d52acf", "e9520280973b",
"1f6c912997ce007701e5fdf407c6b421", "673dcd444386930a0cc577fab4501e5c",
true},
{72, "8e67e9a0863b55bed408866f1cbc05357abe3f9d79f406f2", "4880b412287a0b",
"5854033ae50de090678432781a168b6c", "059e5f72a81d8820add8eae8fabcdd42",
true},
{73, "28d8da67806410e5565bcc5a9d7ab9fb357413fa0158378c", "004e3f4a4e6db955",
"003b2d86d8b636c58cf664565572d5e6", "c412159fd5ae20d771b7d2e734124d6a",
true},
{74, "dc968dd89fd602bb7eca6f3a8a13e4f59c08d02a514b1934",
"41a25354efeb1bc3b8", "3f22b50f888ab9424ba871d15aac55b7",
"4aba571c2c5ab9a6140f16efc68c8ec1", true},
{75, "7658951c0f620d82afd92756cc2d7983b79da3e56fdd1b78",
"f0e82fb5c5666f4af49f", "e4b8dde04b49fa6b88bfccd8d70c21d1",
"66d1b9152a8cd1a88eab341c775070b4", true},
{76, "d9574c3a221b986690931faac5258d9d3c52362b2cb9b054",
"178ea8404ba54ee4e4522c", "7753f616cd8796c9b8a3bbfbe6cb1e7f",
"d9377788e2881a48f9347786db7df51f", true},
{77, "704409bab28085c44981f28f75dd143a4f747106f63f262e",
"cda5709e7f115624e74ab031", "eae9ee19ccb7f8b087675709c4d35f73",
"db825f4434ea3bb53576fa7385fb7dfe", true},
{78, "d8d06ef6a53bbff5c8f12d791b8f4c67e574bf440736d1cc",
"a1171eae1979f48345dd9485a0", "a6aaff339a729d30a7ec1328db36d23e",
"3e7287df2a5ed9de4d817e352bd47ea7", true},
{79, "71129e781613f39d9ac39fbde2628b44c250c14deb5ef9e2",
"967593cc64bcbf7f3c58d04cb82b", "92fda71e88c70d18ed71b992735a2150",
"17c3ade4b469ae614760039a8fa6250e", true},
{80, "850fc859e9f7b89a367611dee6698f33962d8245ca8dc331",
"586f4f171af116519061a8e0e77940", "ed6596c86b98123ad2f3c573e974d051",
"9cafecff2a28d02f732573f65a2cadca", true},
{81, "cfd3f68873d81a27d2bfce876c79f6e609074dec39e34614",
"b1973cb25aa87ef9d1a8888b0a0f5c04c6", "c45b52a240eba3bdde5dfd57f3d474fb",
"401ad889bdb9d38816c782e00b168ccccde9bf75f4be868ceb91237e8b37b750", true},
{82, "b7f165bced1613da5e747fdf9255832d30c07f2deeb5a326",
"289647ea8d0ff31375a82aa1c620903048bb1d0e",
"07ece5fe02266e073499fd4d66929034",
"455d516e87851e6c894578a0f7126e0acbc7cfbb1d80296647ab89a79dfa6f71", true},
{83, "9bbe6e004fb260dadb02b68b78954f1da5e6a2d02e0aeefe",
"665423092ce95b927e98b8082030f58e33f3ec1b0c29532c2f421855f00f97",
"d799157bc1f77c182027be918b30783a",
"cbf541330a5a9bda24984976b0cf96ba08ef521fa2cdb3df839128570e222ac4", true},
{84, "1381fbd5e79045d40f29790fc1a436c95b040a046ebf0b0f",
"d575dce596dd0a2cd1c18dab7eb0948fafb8669969a48b6314493bfb8daf8acacd51382f9"
"bb5b357",
"fdf97645e4192ba84728bbf6683f79de",
"03225f08592efca14ad8ecf822465e8be4157465d0be150dd3d645b6fef1b19ca7bbaa594"
"0b2a7895fa2b0ee55b0d4ec",
true},
{85, "1bb4ed0e8435e20729f48c1b7e3af6e69e4cebf0731131cf",
"6d29dab6a0568c961ab3c825e0d89940cef06c63ade7e557cd3e92792eaf23c8cd5a0f029"
"c63b1cdce4754ccfad7a73c7c9e50ffe081e9136f5e9a424077339de12ea43572afe1b034"
"e833e5887763aa",
"059685f59247eea5d3f2a1532cb9d6b2",
"27ad00313f328f0d3e6c3238ab560cb7243a9f54f7dff79b5a7a879439993d458017f09e8"
"d3f694098bc19e61fe54085138664abb51a5b328cf2c9ce5d59726fff5e1b7553c143d9e0"
"493c51cab23ff2ecdad91bd72bb12b32f3b611f9a4225d",
true},
{86, "9e20311eaf2eaf3e3a04bc52564e67313c84940a2996e3f2", "",
"a3fe6f76e8f582830bbe83574a7bb729", "2c010faa25c68c3b30b8c1491c316d5f",
false},
{87, "9e20311eaf2eaf3e3a04bc52564e67313c84940a2996e3f2", "6162636465666768",
"a3fe6f76e8f582830bbe83574a7bb729", "818454d433154a8e00e8f590b8a1c38c",
false},
{88, "9e20311eaf2eaf3e3a04bc52564e67313c84940a2996e3f2",
"303132333435363738396162636465", "a3fe6f76e8f582830bbe83574a7bb729",
"0a7423fae3f4c8d4633f839d36f2e9ff", false},
{89, "9e20311eaf2eaf3e3a04bc52564e67313c84940a2996e3f2",
"30313233343536373839414243444546", "a3fe6f76e8f582830bbe83574a7bb729",
"a7cfcdabcc5a2736a2708c1cb0b61432e83f6e522c371e6e71bde539595b70b7", false},
{90, "9e20311eaf2eaf3e3a04bc52564e67313c84940a2996e3f2",
"3031323334353637383941424344454647", "a3fe6f76e8f582830bbe83574a7bb729",
"a7cfcdabcc5a2736a2708c1cb0b6143254d15f47701fa54f5957828f386e1d97", false},
{91, "9e20311eaf2eaf3e3a04bc52564e67313c84940a2996e3f2", "",
"a3fe6f76e8f582830bbe83574a7bb729", "6ded36cc7603e514014dfb7199900676",
false},
{92, "9e20311eaf2eaf3e3a04bc52564e67313c84940a2996e3f2", "6162636465666768",
"a3fe6f76e8f582830bbe83574a7bb729", "839f772f8e5f50afdc02f954094869fe",
false},
{93, "9e20311eaf2eaf3e3a04bc52564e67313c84940a2996e3f2",
"303132333435363738396162636465", "a3fe6f76e8f582830bbe83574a7bb729",
"eefe3553c099c187929b287e54f95726", false},
{94, "9e20311eaf2eaf3e3a04bc52564e67313c84940a2996e3f2",
"30313233343536373839414243444546", "a3fe6f76e8f582830bbe83574a7bb729",
"a7cfcdabcc5a2736a2708c1cb0b61432d0531a2641d40467353542d79ce20ea8", false},
{95, "9e20311eaf2eaf3e3a04bc52564e67313c84940a2996e3f2",
"3031323334353637383941424344454647", "a3fe6f76e8f582830bbe83574a7bb729",
"a7cfcdabcc5a2736a2708c1cb0b61432aaf08a090ecf66167ba5958100be7950", false},
{96, "9e20311eaf2eaf3e3a04bc52564e67313c84940a2996e3f2", "",
"a3fe6f76e8f582830bbe83574a7bb729", "c0e402c8bbdda18c8ddd86470bd4b244",
false},
{97, "9e20311eaf2eaf3e3a04bc52564e67313c84940a2996e3f2", "6162636465666768",
"a3fe6f76e8f582830bbe83574a7bb729", "dc185d4572565e01131e471ec4c48125",
false},
{98, "9e20311eaf2eaf3e3a04bc52564e67313c84940a2996e3f2",
"303132333435363738396162636465", "a3fe6f76e8f582830bbe83574a7bb729",
"3ad1ddf3c3b320398785e6ec6544e9a2", false},
{99, "9e20311eaf2eaf3e3a04bc52564e67313c84940a2996e3f2",
"30313233343536373839414243444546", "a3fe6f76e8f582830bbe83574a7bb729",
"a7cfcdabcc5a2736a2708c1cb0b614325876f90cfbbdbcd85e8252d37c44c638", false},
{100, "9e20311eaf2eaf3e3a04bc52564e67313c84940a2996e3f2",
"3031323334353637383941424344454647", "a3fe6f76e8f582830bbe83574a7bb729",
"a7cfcdabcc5a2736a2708c1cb0b61432d18f57216b0e6426d911998a0e44156b", false},
{101, "9e20311eaf2eaf3e3a04bc52564e67313c84940a2996e3f2", "",
"a3fe6f76e8f582830bbe83574a7bb729",
"f1605abb4e6628347c616da350fe243043a8d7b6aea244ca013f45241d802213", false},
{102, "9e20311eaf2eaf3e3a04bc52564e67313c84940a2996e3f2",
"6162636465666768", "a3fe6f76e8f582830bbe83574a7bb729",
"a5f027fb9514ec8844534d452c940feb2c1807f57ed628156cf753f2ab698356", false},
{103, "9e20311eaf2eaf3e3a04bc52564e67313c84940a2996e3f2",
"303132333435363738396162636465", "a3fe6f76e8f582830bbe83574a7bb729",
"f346fbc9744d723c42bbb2a4c934cdd4f1019e58c226cb2491fed621271a38f3", false},
{104, "9e20311eaf2eaf3e3a04bc52564e67313c84940a2996e3f2",
"30313233343536373839414243444546", "a3fe6f76e8f582830bbe83574a7bb729",
"a7cfcdabcc5a2736a2708c1cb0b6143263eb325d36e13aa1d3dd1d7e071700104c7eb3e22"
"e0859aa06296bc3194bb909",
false},
{105, "9e20311eaf2eaf3e3a04bc52564e67313c84940a2996e3f2",
"3031323334353637383941424344454647", "a3fe6f76e8f582830bbe83574a7bb729",
"a7cfcdabcc5a2736a2708c1cb0b61432219485d41584bd110a6d7a9cad472815d93921c48"
"d4bcb509fdf2e63d7627c37",
false},
{106, "9e20311eaf2eaf3e3a04bc52564e67313c84940a2996e3f2", "",
"a3fe6f76e8f582830bbe83574a7bb729", "215571a18a70140f3a0fd4c1b2dd6316",
false},
{107, "9e20311eaf2eaf3e3a04bc52564e67313c84940a2996e3f2",
"6162636465666768", "a3fe6f76e8f582830bbe83574a7bb729",
"2529985ec0ec3cf4bd22746e00d7bdc6", false},
{108, "9e20311eaf2eaf3e3a04bc52564e67313c84940a2996e3f2",
"30313233343536373839414243444546", "a3fe6f76e8f582830bbe83574a7bb729",
"a7cfcdabcc5a2736a2708c1cb0b614329a8058657ac4a150e995cf83efccf051", false},
{109, "9e20311eaf2eaf3e3a04bc52564e67313c84940a2996e3f2",
"3031323334353637383941424344454647", "a3fe6f76e8f582830bbe83574a7bb729",
"a7cfcdabcc5a2736a2708c1cb0b614328a068626780ba600f880bd5323f8ac15", false},
{110, "9e20311eaf2eaf3e3a04bc52564e67313c84940a2996e3f2", "",
"a3fe6f76e8f582830bbe83574a7bb729", "13e75f9ffe2afa81b9a2e7faf74aab6d",
false},
{111, "9e20311eaf2eaf3e3a04bc52564e67313c84940a2996e3f2",
"6162636465666768", "a3fe6f76e8f582830bbe83574a7bb729",
"a382197fe491f5c3f91b629dc47c3d58", false},
{112, "9e20311eaf2eaf3e3a04bc52564e67313c84940a2996e3f2",
"30313233343536373839414243444546", "a3fe6f76e8f582830bbe83574a7bb729",
"a7cfcdabcc5a2736a2708c1cb0b614320b842e5d6e32660263ff814a0277659f", false},
{113, "9e20311eaf2eaf3e3a04bc52564e67313c84940a2996e3f2",
"3031323334353637383941424344454647", "a3fe6f76e8f582830bbe83574a7bb729",
"a7cfcdabcc5a2736a2708c1cb0b614321d2f736515cfe17921800eb392e0139d", false},
{114, "9e20311eaf2eaf3e3a04bc52564e67313c84940a2996e3f2", "",
"a3fe6f76e8f582830bbe83574a7bb729", "f1605abb4e6628347c616da350fe2430",
false},
{115, "9e20311eaf2eaf3e3a04bc52564e67313c84940a2996e3f2",
"6162636465666768", "a3fe6f76e8f582830bbe83574a7bb729",
"b3602ff0f797cbbdde35105d27e55b94", false},
{116, "9e20311eaf2eaf3e3a04bc52564e67313c84940a2996e3f2",
"303132333435363738396162636465", "a3fe6f76e8f582830bbe83574a7bb729",
"0334c1bc34b597f60a639e74d8b45c4e", false},
{117, "9e20311eaf2eaf3e3a04bc52564e67313c84940a2996e3f2",
"30313233343536373839414243444546", "a3fe6f76e8f582830bbe83574a7bb729",
"a7cfcdabcc5a2736a2708c1cb0b61432c3f9fe42d9715035bcda97d27405ced7", false},
{118, "9e20311eaf2eaf3e3a04bc52564e67313c84940a2996e3f2",
"3031323334353637383941424344454647", "a3fe6f76e8f582830bbe83574a7bb729",
"a7cfcdabcc5a2736a2708c1cb0b61432362b014a9abdaf25ae1f6dfb99d03d9d", false},
{119, "9e20311eaf2eaf3e3a04bc52564e67313c84940a2996e3f2", "",
"a3fe6f76e8f582830bbe83574a7bb729", "97ab405b86c388f144cf74fbb9358493",
false},
{120, "9e20311eaf2eaf3e3a04bc52564e67313c84940a2996e3f2",
"6162636465666768", "a3fe6f76e8f582830bbe83574a7bb729",
"691f6009802f0fb4920928db7eca1349", false},
{121, "9e20311eaf2eaf3e3a04bc52564e67313c84940a2996e3f2",
"30313233343536373839414243444546", "a3fe6f76e8f582830bbe83574a7bb729",
"a7cfcdabcc5a2736a2708c1cb0b61432a99fc96a6fa0c9fcb18de1672d74914d", false},
{122, "9e20311eaf2eaf3e3a04bc52564e67313c84940a2996e3f2",
"3031323334353637383941424344454647", "a3fe6f76e8f582830bbe83574a7bb729",
"a7cfcdabcc5a2736a2708c1cb0b61432dd1bb2e98102322fb1aa92c979d4c7c3", false},
{123, "7bf9e536b66a215c22233fe2daaa743a898b9acb9f7802de70b40e3d6e43ef97",
"", "eb38ef61717e1324ae064e86f1c3e797", "e7c166554d1bb32792c981fa674cc4d8",
true},
{124, "612e837843ceae7f61d49625faa7e7494f9253e20cb3adcea686512b043936cd",
"cc37fae15f745a2f40e2c8b192f2b38d", "9ec7b863ac845cad5e4673da21f5b6a9",
"299295be47e9f5441fe83a7a811c4aeb2650333e681e69fa6b767d28a6ccf282", true},
{125, "96e1e4896fb2cd05f133a6a100bc5609a7ac3ca6d81721e922dadd69ad07a892",
"91a17e4dfcc3166a1add26ff0e7c12056e8a654f28a6de24f4ba739ceb5b5b18",
"e70d83a77a2ce722ac214c00837acedf",
"a615a39ff8f59f82cf72ed13e1b01e32459700561be112412961365c7a0b58aa7a16d68c0"
"65e77ebe504999051476bd7",
true},
{126, "649e373e681ef52e3c10ac265484750932a9918f28fb824f7cb50adab39781fe",
"39b447bd3a01983c1cb761b456d69000948ceb870562a536126a0d18a8e7e49b16de8fe67"
"2f13d0808d8b7d957899917",
"bd003c0a9d804c29f053a77cb380cb47",
"ed3ed8ecdbabc0a8c06259e913f3ab9a1f1dc6d05e5dfdd9c80e1008f3423064d54068129"
"1bbd3e159820fee3ff190a68fe506d8ab9e62c8e7b3816093336dbc",
true},
{127, "e754076ceab3fdaf4f9bcab7d4f0df0cbbafbc87731b8f9b7cd2166472e8eebc",
"40", "014d2e13dfbcb969ba3bb91442d52eca",
"42c0b89a706ed2606cd94f9cb361fa51", true},
{128, "ea3b016bdd387dd64d837c71683808f335dbdc53598a4ea8c5f952473fafaf5f",
"6601", "fae3e2054113f6b3b904aadbfe59655c",
"b90c326b72eb222ddb4dae47f2bc223c", true},
{129, "73d4709637857dafab6ad8b2b0a51b06524717fedf100296644f7cfdaae1805b",
"f1d300", "203cd3e0068e43d38b6f2e48a188f252",
"567c45c5e6d570bef583d21cac43757d", true},
{130, "d5c81b399d4c0d1583a13da56de6d2dc45a66e7b47c24ab1192e246dc961dd77",
"2ae63cbf", "abcf220eede012279c3a2d33295ff273",
"c45afe62fc9351ad0fc9b03bc2f3a91f", true},
{131, "2521203fa0dddf59d837b2830f87b1aa61f958155df3ca4d1df2457cb4284dc8",
"af3a015ea1", "01373953578902909ae4f6cb0a72587c",
"281fa533d0740cc6cdf94dd1a5f7402d", true},
{132, "665a02bc265a66d01775091da56726b6668bfd903cb7af66fb1b78a8a062e43c",
"3f56935def3f", "3fb0d5ecd06c71150748b599595833cb",
"3f3f39697bd7e88d85a14132be1cbc48", true},
{133, "facd75b22221380047305bc981f570e2a1af38928ea7e2059e3af5fc6b82b493",
"57bb86beed156f", "27a2db6114ece34fb6c23302d9ba07c6",
"379990d91557614836381d5026fa04a0", true},
{134, "505aa98819809ef63b9a368a1e8bc2e922da45b03ce02d9a7966b15006dba2d5",
"2e4e7ef728fe11af", "9b2b631e3f24bdc814a14abb3416059e",
"7ecefe24caa78a68f4031d40fdb9a43a", true},
{135, "f942093842808ba47f64e427f7351dde6b9546e66de4e7d60aa6f328182712cf",
"852a21d92848e627c7", "92cfc4eb146b18b73fc76483fc5e1229",
"ffe4ec8baf4af40ab2e7f4d6193fae9c", true},
{136, "64be162b39c6e5f1fed9c32d9f674d9a8cde6eaa2443214d86bd4a1fb53b81b4",
"195a3b292f93baff0a2c", "4ceed8dcb75b6259dad737bdef96f099",
"ef96215e7950e7be8aae78b9ec8aaf39", true},
{137, "b259a555d44b8a20c5489e2f38392ddaa6be9e35b9833b67e1b5fdf6cb3e4c6c",
"afd73117330c6e8528a6e4", "2d4cead3f1120a2b4b59419d04951e20",
"4ed0eac75b05868078303875f82fb4f0", true},
{138, "2c6fc62daa77ba8c6881b3dd6989898fef646663cc7b0a3db8228a707b85f2dc",
"0ff54d6b6759120c2e8a51e3", "a10392634143c2a3332fa0fb3f72200a",
"f4d298caea7c390fc8c7f558f584f852", true},
{139, "abab815d51df29f740e4e2079fb798e0152836e6ab57d1536ae8929e52c06eb8",
"f0058d412a104e53d820b95a7f", "38b916a7ad3a9251ae3bd8865ca3a688",
"5e1c00e2ec829f92b87c6adf5c25262d", true},
{140, "3d5da1af83f7287458bff7a7651ea5d8db72259401333f6b82096996dd7eaf19",
"aacc36972f183057919ff57b49e1", "bfcc3ac44d12e42d780c1188ac64b57f",
"bf3a04ddb2dbfe7c6dc9e15aa67be25d", true},
{141, "c19bdf314c6cf64381425467f42aefa17c1cc9358be16ce31b1d214859ce86aa",
"5d066a92c300e9b6ddd63a7c13ae33", "35bc82e3503b95044c6406a8b2c2ecff",
"fdcfa77f5bd09326b4c11f9281b72474", true},
{142, "73216fafd0022d0d6ee27198b2272578fa8f04dd9f44467fbb6437aa45641bf7",
"d5247b8f6c3edcbfb1d591d13ece23d2f5", "4b74bd981ea9d074757c3e2ef515e5fb",
"fbea776fb1653635f88e2937ed2450ba4e9063e96d7cdba04928f01cb85492fe", true},
{143, "c2039f0d05951aa8d9fbdf68be58a37cf99bd1afcedda286a9db470c3729ca92",
"ed5b5e28e9703bdf5c7b3b080f2690a605fcd0d9",
"9a1d8ccc24c5e4d3995480af236be103",
"3a79bb6084c7116b58afe52d7181a0aacee1caa11df959090e2e7b0073d74817", true},
{144, "4f097858a1aec62cf18f0966b2b120783aa4ae9149d3213109740506ae47adfe",
"ee53d8e5039e82d9fcca114e375a014febfea117a7e709d9008d43858e3660",
"400aab92803bcbb44a96ef789655b34e",
"642b11efb79b49e5d038bc7aa29b8c6c3ce0bf11c3a69670eb565799908be66d", true},
{145, "5f99f7d60653d79f088dd07ef306b65e057d36e053fa1c9f6854425c019fd4df",
"fcc9212c23675c5d69a1266c77389bc955e453daba20034aabbcd502a1b73e05af30f8b76"
"22abdbc",
"6eedf45753ffe38f2407fbc28ab5959c",
"a9b051354f0cf61f11921b330e60f996de796aeb68140a0f9c5962e1f48e4805262fb6f53"
"b26d9bb2fa0e359efe14734",
true},
{146, "95aaa5df4ccb529e9b2dc929e770c1f419f8e8933bfb36f632f532b3dcad2ba6",
"f5735567b7c8312f116517788b091cc6cb1d474b010a77910154fd11c3b2f0cd19f713b63"
"d66492e8cc7ee8ad714783f46c305a26416e11ff4b99ec5ce2550593cc5ec1b86ba6a66d1"
"0f82bdff827055",
"f88551c6aa197f9ad80251c2e32d7663",
"5074f46f1a6d0eeff070d623172eb15bbfc83e7d16466a00c9da5f4545eecf44adbf60cf9"
"ac9aa1a3ec5eca22d4a34a7b21ca44d214c9d04ab1cb0b2c07001de9adb46f3c12f8f4843"
"6b516a409bf6cbdf1871dee3115d5cbb7943558b68867e",
true},
{147, "7c78f34dbce8f0557d43630266f59babd1cb92ba624bd1a8f45a2a91c84a804a",
"", "f010f61c31c9aa8fa0d5be5f6b0f2f70", "e07558d746574528fb813f34e3fb7719",
false},
{148, "7c78f34dbce8f0557d43630266f59babd1cb92ba624bd1a8f45a2a91c84a804a",
"6162636465666768", "f010f61c31c9aa8fa0d5be5f6b0f2f70",
"c01af61276368818a8295f7d4b5bb2fd", false},
{149, "7c78f34dbce8f0557d43630266f59babd1cb92ba624bd1a8f45a2a91c84a804a",
"303132333435363738396162636465", "f010f61c31c9aa8fa0d5be5f6b0f2f70",
"97dd9716f06be49160399a5b212250ae", false},
{150, "7c78f34dbce8f0557d43630266f59babd1cb92ba624bd1a8f45a2a91c84a804a",
"30313233343536373839414243444546", "f010f61c31c9aa8fa0d5be5f6b0f2f70",
"8881e9e02fa9e3037b397957ba1fb7ce783bb4b4e18d7c646f38e0bb8ff92896", false},
{151, "7c78f34dbce8f0557d43630266f59babd1cb92ba624bd1a8f45a2a91c84a804a",
"3031323334353637383941424344454647", "f010f61c31c9aa8fa0d5be5f6b0f2f70",
"8881e9e02fa9e3037b397957ba1fb7ce64679a46621b792f643542a735f0bbbf", false},
{152, "7c78f34dbce8f0557d43630266f59babd1cb92ba624bd1a8f45a2a91c84a804a",
"", "f010f61c31c9aa8fa0d5be5f6b0f2f70", "c007ddffb76b95208505fe7f3be96172",
false},
{153, "7c78f34dbce8f0557d43630266f59babd1cb92ba624bd1a8f45a2a91c84a804a",
"6162636465666768", "f010f61c31c9aa8fa0d5be5f6b0f2f70",
"e9b7719c4c2b9fa6b94cb50e87b28156", false},
{154, "7c78f34dbce8f0557d43630266f59babd1cb92ba624bd1a8f45a2a91c84a804a",
"303132333435363738396162636465", "f010f61c31c9aa8fa0d5be5f6b0f2f70",
"77b31f474c4bd489dbadd532643d1fa5", false},
{155, "7c78f34dbce8f0557d43630266f59babd1cb92ba624bd1a8f45a2a91c84a804a",
"30313233343536373839414243444546", "f010f61c31c9aa8fa0d5be5f6b0f2f70",
"8881e9e02fa9e3037b397957ba1fb7cea0166e9e1c0122cb2e2983fc0fac7176", false},
{156, "7c78f34dbce8f0557d43630266f59babd1cb92ba624bd1a8f45a2a91c84a804a",
"3031323334353637383941424344454647", "f010f61c31c9aa8fa0d5be5f6b0f2f70",
"8881e9e02fa9e3037b397957ba1fb7ce6f0effa789cbb0b875cc53cc8f7b3caf", false},
{157, "7c78f34dbce8f0557d43630266f59babd1cb92ba624bd1a8f45a2a91c84a804a",
"", "f010f61c31c9aa8fa0d5be5f6b0f2f70", "4dd5f910c94700235c9ed239160e34e2",
false},
{158, "7c78f34dbce8f0557d43630266f59babd1cb92ba624bd1a8f45a2a91c84a804a",
"6162636465666768", "f010f61c31c9aa8fa0d5be5f6b0f2f70",
"94d18b5923f8f3608ae7ad494fbb517e", false},
{159, "7c78f34dbce8f0557d43630266f59babd1cb92ba624bd1a8f45a2a91c84a804a",
"303132333435363738396162636465", "f010f61c31c9aa8fa0d5be5f6b0f2f70",
"0c92886dbcb030b873123a25d224da42", false},
{160, "7c78f34dbce8f0557d43630266f59babd1cb92ba624bd1a8f45a2a91c84a804a",
"30313233343536373839414243444546", "f010f61c31c9aa8fa0d5be5f6b0f2f70",
"8881e9e02fa9e3037b397957ba1fb7ce851be67798a2937cd6681165da6dce03", false},
{161, "7c78f34dbce8f0557d43630266f59babd1cb92ba624bd1a8f45a2a91c84a804a",
"3031323334353637383941424344454647", "f010f61c31c9aa8fa0d5be5f6b0f2f70",
"8881e9e02fa9e3037b397957ba1fb7ce45658a37aaebc51098866b0894007e8e", false},
{162, "7c78f34dbce8f0557d43630266f59babd1cb92ba624bd1a8f45a2a91c84a804a",
"", "f010f61c31c9aa8fa0d5be5f6b0f2f70",
"524236e25956e950713bec0d3d579068f34e4d18c4ccab081317dae526fe7fca", false},
{163, "7c78f34dbce8f0557d43630266f59babd1cb92ba624bd1a8f45a2a91c84a804a",
"6162636465666768", "f010f61c31c9aa8fa0d5be5f6b0f2f70",
"d29eb845640c3a8878f51bc50e290aa4a65a34a93728fe8f82fdb8d3d2b7c648", false},
{164, "7c78f34dbce8f0557d43630266f59babd1cb92ba624bd1a8f45a2a91c84a804a",
"303132333435363738396162636465", "f010f61c31c9aa8fa0d5be5f6b0f2f70",
"c34563be2952277c0f5c67ae1d6f847118730dd7f6a502ceef3c4bce5999f7aa", false},
{165, "7c78f34dbce8f0557d43630266f59babd1cb92ba624bd1a8f45a2a91c84a804a",
"30313233343536373839414243444546", "f010f61c31c9aa8fa0d5be5f6b0f2f70",
"8881e9e02fa9e3037b397957ba1fb7cec0f74a1aa92fd9c96f9d15d193d1695c1eb33486e"
"269277612f90f509f0535c2",
false},
{166, "7c78f34dbce8f0557d43630266f59babd1cb92ba624bd1a8f45a2a91c84a804a",
"3031323334353637383941424344454647", "f010f61c31c9aa8fa0d5be5f6b0f2f70",
"8881e9e02fa9e3037b397957ba1fb7ce151ade309ec5200bacdd83b57ce794cd2b3bf9f89"
"57def829e8465f7db266f9e",
false},
{167, "7c78f34dbce8f0557d43630266f59babd1cb92ba624bd1a8f45a2a91c84a804a",
"", "f010f61c31c9aa8fa0d5be5f6b0f2f70", "fb38cbef13f1d5be9c0ac7ed9cbe023c",
false},
{168, "7c78f34dbce8f0557d43630266f59babd1cb92ba624bd1a8f45a2a91c84a804a",
"6162636465666768", "f010f61c31c9aa8fa0d5be5f6b0f2f70",
"18cf8988abe9a2463a3a75db1fac8bcc", false},
{169, "7c78f34dbce8f0557d43630266f59babd1cb92ba624bd1a8f45a2a91c84a804a",
"30313233343536373839414243444546", "f010f61c31c9aa8fa0d5be5f6b0f2f70",
"8881e9e02fa9e3037b397957ba1fb7cee16d6fc4b4d3cdf6f915996e437fd4cc", false},
{170, "7c78f34dbce8f0557d43630266f59babd1cb92ba624bd1a8f45a2a91c84a804a",
"3031323334353637383941424344454647", "f010f61c31c9aa8fa0d5be5f6b0f2f70",
"8881e9e02fa9e3037b397957ba1fb7cea8f41f61ead6e9936cbe7ee5a1163b9b", false},
{171, "7c78f34dbce8f0557d43630266f59babd1cb92ba624bd1a8f45a2a91c84a804a",
"", "f010f61c31c9aa8fa0d5be5f6b0f2f70", "a05c14da0109093c195b4998812fe150",
false},
{172, "7c78f34dbce8f0557d43630266f59babd1cb92ba624bd1a8f45a2a91c84a804a",
"6162636465666768", "f010f61c31c9aa8fa0d5be5f6b0f2f70",
"c477877250c8e4ca2869f35c4757cdb4", false},
{173, "7c78f34dbce8f0557d43630266f59babd1cb92ba624bd1a8f45a2a91c84a804a",
"30313233343536373839414243444546", "f010f61c31c9aa8fa0d5be5f6b0f2f70",
"8881e9e02fa9e3037b397957ba1fb7ce69f57c6e99c7b9df7d4879ccd15caf3d", false},
{174, "7c78f34dbce8f0557d43630266f59babd1cb92ba624bd1a8f45a2a91c84a804a",
"3031323334353637383941424344454647", "f010f61c31c9aa8fa0d5be5f6b0f2f70",
"8881e9e02fa9e3037b397957ba1fb7ce77f89a247c928f147748ce6bc8fc4b67", false},
{175, "7c78f34dbce8f0557d43630266f59babd1cb92ba624bd1a8f45a2a91c84a804a",
"", "f010f61c31c9aa8fa0d5be5f6b0f2f70", "524236e25956e950713bec0d3d579068",
false},
{176, "7c78f34dbce8f0557d43630266f59babd1cb92ba624bd1a8f45a2a91c84a804a",
"6162636465666768", "f010f61c31c9aa8fa0d5be5f6b0f2f70",
"e03b6f2ae1c963b6dfa40b42d34314b7", false},
{177, "7c78f34dbce8f0557d43630266f59babd1cb92ba624bd1a8f45a2a91c84a804a",
"303132333435363738396162636465", "f010f61c31c9aa8fa0d5be5f6b0f2f70",
"df14f4cbbccca57b9727d68270a1b6c1", false},
{178, "7c78f34dbce8f0557d43630266f59babd1cb92ba624bd1a8f45a2a91c84a804a",
"30313233343536373839414243444546", "f010f61c31c9aa8fa0d5be5f6b0f2f70",
"8881e9e02fa9e3037b397957ba1fb7ceea228bf1edd41c390e2eef140142bc00", false},
{179, "7c78f34dbce8f0557d43630266f59babd1cb92ba624bd1a8f45a2a91c84a804a",
"3031323334353637383941424344454647", "f010f61c31c9aa8fa0d5be5f6b0f2f70",
"8881e9e02fa9e3037b397957ba1fb7ce3937e0e9abf7f672a34a500ba8e9099a", false},
{180, "7c78f34dbce8f0557d43630266f59babd1cb92ba624bd1a8f45a2a91c84a804a",
"", "f010f61c31c9aa8fa0d5be5f6b0f2f70", "32ac6057df2a5d1e2e5131348c6ebc4e",
false},
{181, "7c78f34dbce8f0557d43630266f59babd1cb92ba624bd1a8f45a2a91c84a804a",
"6162636465666768", "f010f61c31c9aa8fa0d5be5f6b0f2f70",
"df4a7c3b9f4756d30fca0d18e9b28960", false},
{182, "7c78f34dbce8f0557d43630266f59babd1cb92ba624bd1a8f45a2a91c84a804a",
"30313233343536373839414243444546", "f010f61c31c9aa8fa0d5be5f6b0f2f70",
"8881e9e02fa9e3037b397957ba1fb7ceae2855c47c7988873d57f901e049494b", false},
{183, "7c78f34dbce8f0557d43630266f59babd1cb92ba624bd1a8f45a2a91c84a804a",
"3031323334353637383941424344454647", "f010f61c31c9aa8fa0d5be5f6b0f2f70",
"8881e9e02fa9e3037b397957ba1fb7ce0714c8de200b27ac91d9257fc93c13be",
false}};
#endif // cbc_vectors_h__
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,841 @@
/* vim: set ts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* 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/. */
/* This file is generated from sources in nss/gtests/common/wycheproof
* automatically and should not be touched manually.
* Generation is trigged by calling python3 genTestVectors.py */
#ifndef hmac_sha256_vectors_h__
#define hmac_sha256_vectors_h__
#include "testvectors_base/test-structs.h"
const HmacTestVector kHmacSha256WycheproofVectors[] = {
{1, "empty message",
"1e225cafb90339bba1b24076d4206c3e79c355805d851682bc818baa4f5a7779", "",
"b175b57d89ea6cb606fb3363f2538abd73a4c00b4a1386905bac809004cf1933", false},
{2, "short message",
"8159fd15133cd964c9a6964c94f0ea269a806fd9f43f0da58b6cd1b33d189b2a", "77",
"dfc5105d5eecf7ae7b8b8de3930e7659e84c4172f2555142f1e568fc1872ad93", false},
{3, "short message",
"85a7cbaae825bb82c9b6f6c5c2af5ac03d1f6daa63d2a93c189948ec41b9ded9", "a59b",
"0fe2f13bba2198f6dda1a084be928e304e9cb16a56bc0b7b939a073280244373", false},
{4, "short message",
"48f3029334e55cfbd574ccc765fb2c3685aab1f4837d23370874a3e634c3a76d",
"c7b8b2",
"6c13f79bb2d5b6f9a315fe8fd6cbb5cb817a660687009deccd88c377429e596d", false},
{5, "short message",
"de8b5b5b2f09645be47ecb6407a4e1d9c6b33ae3c2d22517d3357da0357a3139",
"cc021d65",
"e87538eb167e62d7cb236690ff3f034a9c12d417aa8dfa694d7405f9e1f85fe8", false},
{6, "short message",
"b7938910f518f13205ca1492c669001a14ff913c8ab4a0dc3564e7418e91297c",
"a4a6ef6ebd",
"01a93f4ed216d0b280896301e366aa67b25e6b6a5a6e84f291a13391c6e496c5", false},
{7, "short message",
"1bb997ff4de8a5a391de5c08a33bc2c7c2891e47ad5b9c63110192f78b98fe78",
"667e015df7fc",
"06b5d8c5392323a802bc5cdd0b3c527454a873d9651c368836eaa4ad982ba546", false},
{8, "short message",
"32fdeda39f98b4f4426c2d2ac00ab5dd4bfabb68f311447256ed6d3d3a51b154",
"4163a9f77e41f5",
"1b0103729f48c2772bb132aef9ebd6dd6aafc9145df6d5c514b233ee92ef4a00", false},
{9, "short message",
"233e4fdee70bcc20235b6977ddfc05b0df66f5635d827c66e5a63cdb16a24938",
"fdb2ee4b6d1a0ac2",
"120b26ee1355c134c262513c7922deb6c4fd90303de4cd61b9f9cd08f22d6e18", false},
{10, "short message",
"b984c6734e0bd12b1737b2fc7a1b3803b4dfec402140a57b9eccc35414ae661b",
"dea584d0e2a14ad5fd",
"88bc2282e5fce47ec6d9895395cd47fff91a0cdc589a8fd56d8d344616533a3d", false},
{11, "short message",
"d0caf1456ac5e255fa6afd61a79dc8c716f5358a298a508271363fe1ff983561",
"18261dc806913c534666",
"f678f081d83cf126ad6bd52c2dffd786214f519c47452b85a97458d0c10c3ee5", false},
{12, "short message",
"835bc8241ed817735ec9d3d0e2df4c173ee4dded4a8ef0c04a96c48f11820463",
"26f8083e944bacf04e9a4d",
"e0e46cd7d1a75b3d102893da64def46e455308761f1d908786628ca7ee22a0eb", false},
{13, "short message",
"055f95c9461b0809575eccdfa5cdd06275f25d30915c4eb8db40e1acd3ab7591",
"bfb7d6a08dbaa5225f320887",
"e76d5c8c070a6b3c4824e9f342dc3056e63819509e1def98b585aeba0d638a00", false},
{14, "short message",
"e40f7a3eb88ddec4c6347ea4d67610756c82c8ebcc237629bf873ccabc32984a",
"7fe43febc78474649e45bf99b2",
"aa57d020aa24ad823472c2b80ff2d0cf475f7de0068f9a59e8112fede53a3581", false},
{15, "short message",
"b020ad1de1c141f7ec615ee5701521773f9b232e4d06376c382894ce51a61f48",
"81c7581a194b5e71b41146a582c1",
"f45c72603cc160c0762f703407844a7781dfe0f1ddf0aaf4ccd8205e94469aed", false},
{16, "short message",
"9f3fd61a105202648ecff6074c95e502c1c51acd32ec538a5cce89ef841f7989",
"2a76f2acdace42e3b779724946912c",
"0226ee13cc05e2340135b3f4b27a9da1a160f6170fe805dadd98a3711ec9c421", false},
{17, "", "6fa353868c82e5deeedac7f09471a61bf749ab5498239e947e012eee3c82d7c4",
"aeed3e4d4cb9bbb60d482e98c126c0f5",
"9ed7f0e73812a27a87a3808ee0c89a6456499e835974ba57c5aab2a0d8c69e93", false},
{18, "", "5300489494ca86221c91d6d953952ae1a5e097139dc9cf1179c2f56433753824",
"90fea6cf2bd811b449f333ee9233e57697",
"5b692cba13b54fffc3adcbb0e015cc011fbfd61235303ff0ad2a49775083bf22", false},
{19, "", "383e7c5c13476a62268423ef0500479f9e86e236c5a081c6449189e6afdf2af5",
"3202705af89f9555c540b0e1276911d01971abb2c35c78b2",
"4e4901592ba46476408d758435c7d1b489d2689afd84ceaaee78bfb91fd9391d", false},
{20, "", "186e248ad824e1eb93329a7fdcd565b6cb4eaf3f85b90b910777128d8c538d27",
"92ef9ff52f46eccc7e38b9ee19fd2de3b37726c8e6ce9e1b96db5dda4c317902",
"3fc1d73dd4a8858c1fc3d8c4a3f33ed5ad0c70210038394a5902cb26fe287348", false},
{21, "long message",
"28855c7efc8532d92567300933cc1ca2d0586f55dcc9f054fcca2f05254fbf7f",
"9c09207ff0e6e582cb3747dca954c94d45c05e93f1e6f21179cf0e25b4cede74b5479d32f"
"5166935c86f0441905865",
"788c0589000fb7f0b5d51f1596472bc9ec413421a43df96ee32b02b5d275ffe3", false},
{22, "long message",
"8e540cb30c94836ae2a5950f355d482a7002e255207e94fda3f7ef1a099013a0",
"d6500f95e11262e308bf3df4df4b855f33e857563d4543f195639a0a17b442eb9fdcc1367"
"d2eee75c8f805730b89290f",
"39697e70ce741feb33dedc069f00b5627fd9b837d10cbdd5b6d19cfbd511dd2c", false},
{23, "long message",
"69c50d5274358188cff4c0fae742243d4e8a5e5ba55d94ff40edd90f6a43dd10",
"1ac5255aff052828d8ea21b376f1ebdd4bb879949913900405aebce83e48feb6813b5e9c8"
"9f94501a8ade41b26b815c521",
"4b0b4d0416fa2e11586fbfa7fb11261e69991dfa34019b9893d69a2be8c1fc80", false},
{24, "long message",
"23209b7c5aadcbd13f7279af1a86d3c7ae8f179d1bcaaad0dff9a15302e78dbf",
"84bdac37e1af35d9356404e2787d47ece58348dea76a4a46e8aade3463d4db8c94a051be3"
"733b38d756984865d56c60e8025f15e3f968f093e7fb7ebc7e31189c5692d15ed4256737b"
"9b1894e5809503aaa1c9983fb096aa21916361eeb6ef455b129723a1a1ddf9deddea20852"
"9a648",
"4a85c479d1650dbd73bc5248074a55ff50218bddaa8d1fddaaf44946dc19aefb", false},
{25, "long message",
"7c9cc667cae175f448faa96647319633b2d48531373ae7d316c44ddd8b9f69cf",
"9233c1d73b498c5106ff88951e07b9652cb0ddae740737ec205c9876d094978bfc947f7dc"
"937119fd6a93915b19b625958a7a22363aa2ac33fb869ed16b303336ab740a0498a2df66a"
"6599da710094481a7b544bd955b6f97135ba4673401db2db144a6e287041e47a51ed9b6ba"
"956c13508c1c0c25310105239ab73629e30",
"ca1b80441d333909c2bb30769650055051ed20f17de8ee953cb9070af56c704f", false},
{26, "long message",
"82314540564ea3ce30591e97f68b2602de40fa29f773c2508327471b8348e8c4",
"6a6d2f45cebf2757ae16ea33c68617671d77f8fdf80bed8fc5cdc5c8b7086bd28e7eb3eec"
"c7163491104e5309455e67f836579b82a1da3bf5991a8e2b2f189a49e05700e46c409ed5d"
"e77780a5f389e3f13dad406c9d55675329c5c921f07034180937c0f6ef34a2308b6ff3e1a"
"0e9dc1ea65f5632730e8744d1db2c40a6595b",
"0900b3e6535d34f90e2c335775e86bf38ee7e3d26fb60cd9cdf639eb3496b94c", false},
{27, "long message",
"d115acc9a636915241795f48852052e07b51273ae2448251ec1d0d0f9807f3db",
"696d2456de853fa028f486fef437b6b6d1b530a8475e299db3a9005ae9cef8401985b7d31"
"e172e8f439ccd1ad1ec44c9b86b78f3f243c1305b53bc21abad7a8fc5256311bfd34c98e3"
"7dfdc649e7ae4bda08cf2994b063c0c7106ed0b02a1f48af9191cbfb0d6a953b7e04327df"
"e8c93779cb574ba9cba575d01674e83621aa0c5f400d6e6cd24b301e33c9f3303e73bf357"
"408c1be86c2489c09de998ff2ef32df554f1247d9313ce1a7160115d06f4c18d6556ff798"
"6ef8a55e2adcfa27e4c69c71cc2ff01639e9d49bd9ed0687f530ffeb0890132457df20880"
"81bc4a2f7f0a9f4dcea2c80d991db7f3747a1803d7619aaf3dd382c69536a0bcdb931cbe",
"82f92977f0b605eaada510ffceb53ad75fde16a8029f1b75b406a84270dbb8b7", false},
{28, "Flipped bit 0 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"d28b42096d80f45f826b44a9d5607de72496a415d3f4a1a8c88e3bb9da8dc1cb", true},
{29, "Flipped bit 0 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f",
"d9b99f2709a3ca74172cbe93824c1f29b23a0c1e9c21bd851ff2d2c39dbef14e", true},
{30, "Flipped bit 1 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"d18b42096d80f45f826b44a9d5607de72496a415d3f4a1a8c88e3bb9da8dc1cb", true},
{31, "Flipped bit 1 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f",
"dab99f2709a3ca74172cbe93824c1f29b23a0c1e9c21bd851ff2d2c39dbef14e", true},
{32, "Flipped bit 7 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"538b42096d80f45f826b44a9d5607de72496a415d3f4a1a8c88e3bb9da8dc1cb", true},
{33, "Flipped bit 7 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f",
"58b99f2709a3ca74172cbe93824c1f29b23a0c1e9c21bd851ff2d2c39dbef14e", true},
{34, "Flipped bit 8 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"d38a42096d80f45f826b44a9d5607de72496a415d3f4a1a8c88e3bb9da8dc1cb", true},
{35, "Flipped bit 8 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f",
"d8b89f2709a3ca74172cbe93824c1f29b23a0c1e9c21bd851ff2d2c39dbef14e", true},
{36, "Flipped bit 31 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"d38b42896d80f45f826b44a9d5607de72496a415d3f4a1a8c88e3bb9da8dc1cb", true},
{37, "Flipped bit 31 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f",
"d8b99fa709a3ca74172cbe93824c1f29b23a0c1e9c21bd851ff2d2c39dbef14e", true},
{38, "Flipped bit 32 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"d38b42096c80f45f826b44a9d5607de72496a415d3f4a1a8c88e3bb9da8dc1cb", true},
{39, "Flipped bit 32 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f",
"d8b99f2708a3ca74172cbe93824c1f29b23a0c1e9c21bd851ff2d2c39dbef14e", true},
{40, "Flipped bit 33 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"d38b42096f80f45f826b44a9d5607de72496a415d3f4a1a8c88e3bb9da8dc1cb", true},
{41, "Flipped bit 33 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f",
"d8b99f270ba3ca74172cbe93824c1f29b23a0c1e9c21bd851ff2d2c39dbef14e", true},
{42, "Flipped bit 63 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"d38b42096d80f4df826b44a9d5607de72496a415d3f4a1a8c88e3bb9da8dc1cb", true},
{43, "Flipped bit 63 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f",
"d8b99f2709a3caf4172cbe93824c1f29b23a0c1e9c21bd851ff2d2c39dbef14e", true},
{44, "Flipped bit 64 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"d38b42096d80f45f836b44a9d5607de72496a415d3f4a1a8c88e3bb9da8dc1cb", true},
{45, "Flipped bit 64 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f",
"d8b99f2709a3ca74162cbe93824c1f29b23a0c1e9c21bd851ff2d2c39dbef14e", true},
{46, "Flipped bit 71 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"d38b42096d80f45f026b44a9d5607de72496a415d3f4a1a8c88e3bb9da8dc1cb", true},
{47, "Flipped bit 71 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f",
"d8b99f2709a3ca74972cbe93824c1f29b23a0c1e9c21bd851ff2d2c39dbef14e", true},
{48, "Flipped bit 77 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"d38b42096d80f45f824b44a9d5607de72496a415d3f4a1a8c88e3bb9da8dc1cb", true},
{49, "Flipped bit 77 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f",
"d8b99f2709a3ca74170cbe93824c1f29b23a0c1e9c21bd851ff2d2c39dbef14e", true},
{50, "Flipped bit 80 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"d38b42096d80f45f826b45a9d5607de72496a415d3f4a1a8c88e3bb9da8dc1cb", true},
{51, "Flipped bit 80 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f",
"d8b99f2709a3ca74172cbf93824c1f29b23a0c1e9c21bd851ff2d2c39dbef14e", true},
{52, "Flipped bit 96 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"d38b42096d80f45f826b44a9d4607de72496a415d3f4a1a8c88e3bb9da8dc1cb", true},
{53, "Flipped bit 96 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f",
"d8b99f2709a3ca74172cbe93834c1f29b23a0c1e9c21bd851ff2d2c39dbef14e", true},
{54, "Flipped bit 97 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"d38b42096d80f45f826b44a9d7607de72496a415d3f4a1a8c88e3bb9da8dc1cb", true},
{55, "Flipped bit 97 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f",
"d8b99f2709a3ca74172cbe93804c1f29b23a0c1e9c21bd851ff2d2c39dbef14e", true},
{56, "Flipped bit 103 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"d38b42096d80f45f826b44a955607de72496a415d3f4a1a8c88e3bb9da8dc1cb", true},
{57, "Flipped bit 103 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f",
"d8b99f2709a3ca74172cbe93024c1f29b23a0c1e9c21bd851ff2d2c39dbef14e", true},
{58, "Flipped bit 248 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"d38b42096d80f45f826b44a9d5607de72496a415d3f4a1a8c88e3bb9da8dc1ca", true},
{59, "Flipped bit 248 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f",
"d8b99f2709a3ca74172cbe93824c1f29b23a0c1e9c21bd851ff2d2c39dbef14f", true},
{60, "Flipped bit 249 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"d38b42096d80f45f826b44a9d5607de72496a415d3f4a1a8c88e3bb9da8dc1c9", true},
{61, "Flipped bit 249 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f",
"d8b99f2709a3ca74172cbe93824c1f29b23a0c1e9c21bd851ff2d2c39dbef14c", true},
{62, "Flipped bit 254 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"d38b42096d80f45f826b44a9d5607de72496a415d3f4a1a8c88e3bb9da8dc18b", true},
{63, "Flipped bit 254 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f",
"d8b99f2709a3ca74172cbe93824c1f29b23a0c1e9c21bd851ff2d2c39dbef10e", true},
{64, "Flipped bit 255 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"d38b42096d80f45f826b44a9d5607de72496a415d3f4a1a8c88e3bb9da8dc14b", true},
{65, "Flipped bit 255 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f",
"d8b99f2709a3ca74172cbe93824c1f29b23a0c1e9c21bd851ff2d2c39dbef1ce", true},
{66, "Flipped bits 0 and 64 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"d28b42096d80f45f836b44a9d5607de72496a415d3f4a1a8c88e3bb9da8dc1cb", true},
{67, "Flipped bits 0 and 64 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f",
"d9b99f2709a3ca74162cbe93824c1f29b23a0c1e9c21bd851ff2d2c39dbef14e", true},
{68, "Flipped bits 31 and 63 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"d38b42896d80f4df826b44a9d5607de72496a415d3f4a1a8c88e3bb9da8dc1cb", true},
{69, "Flipped bits 31 and 63 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f",
"d8b99fa709a3caf4172cbe93824c1f29b23a0c1e9c21bd851ff2d2c39dbef14e", true},
{70, "Flipped bits 63 and 127 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"d38b42096d80f4df826b44a9d5607d672496a415d3f4a1a8c88e3bb9da8dc1cb", true},
{71, "Flipped bits 63 and 127 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f",
"d8b99f2709a3caf4172cbe93824c1fa9b23a0c1e9c21bd851ff2d2c39dbef14e", true},
{72, "all bits of tag flipped",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"2c74bdf6927f0ba07d94bb562a9f8218db695bea2c0b5e573771c44625723e34", true},
{73, "all bits of tag flipped",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f",
"274660d8f65c358be8d3416c7db3e0d64dc5f3e163de427ae00d2d3c62410eb1", true},
{74, "Tag changed to all zero",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"0000000000000000000000000000000000000000000000000000000000000000", true},
{75, "Tag changed to all zero",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f",
"0000000000000000000000000000000000000000000000000000000000000000", true},
{76, "tag changed to all 1",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", true},
{77, "tag changed to all 1",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f",
"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", true},
{78, "msbs changed in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"530bc289ed0074df02ebc42955e0fd67a416249553742128480ebb395a0d414b", true},
{79, "msbs changed in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f",
"58391fa789234af497ac3e1302cc9fa932ba8c9e1ca13d059f7252431d3e71ce", true},
{80, "lsbs changed in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"d28a43086c81f55e836a45a8d4617ce62597a514d2f5a0a9c98f3ab8db8cc0ca", true},
{81, "lsbs changed in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f",
"d9b89e2608a2cb75162dbf92834d1e28b33b0d1f9d20bc841ef3d3c29cbff04f", true},
{82, "empty message",
"7bf9e536b66a215c22233fe2daaa743a898b9acb9f7802de70b40e3d6e43ef97", "",
"f4605585949747de26f3ee98a738b172", false},
{83, "short message",
"e754076ceab3fdaf4f9bcab7d4f0df0cbbafbc87731b8f9b7cd2166472e8eebc", "40",
"0dc00d7217bbafe8d78bf961189b8fd2", false},
{84, "short message",
"ea3b016bdd387dd64d837c71683808f335dbdc53598a4ea8c5f952473fafaf5f", "6601",
"ff296b368d3bf059cc48682f6949ccaa", false},
{85, "short message",
"73d4709637857dafab6ad8b2b0a51b06524717fedf100296644f7cfdaae1805b",
"f1d300", "2d02bd1c25b1fe52b1ead07374d6e883", false},
{86, "short message",
"d5c81b399d4c0d1583a13da56de6d2dc45a66e7b47c24ab1192e246dc961dd77",
"2ae63cbf", "4d9e8bddf9b7a1218309d5988aa1b0d9", false},
{87, "short message",
"2521203fa0dddf59d837b2830f87b1aa61f958155df3ca4d1df2457cb4284dc8",
"af3a015ea1", "cb8a4b413350b42f4ac3533cc7f47864", false},
{88, "short message",
"665a02bc265a66d01775091da56726b6668bfd903cb7af66fb1b78a8a062e43c",
"3f56935def3f", "1cfce745db1ca7de9a1d4420e612ca55", false},
{89, "short message",
"facd75b22221380047305bc981f570e2a1af38928ea7e2059e3af5fc6b82b493",
"57bb86beed156f", "0bde0d0c756df09d4f6da81b299a3adf", false},
{90, "short message",
"505aa98819809ef63b9a368a1e8bc2e922da45b03ce02d9a7966b15006dba2d5",
"2e4e7ef728fe11af", "406a5c2bd3e6a9595f9b7dff608d59a7", false},
{91, "short message",
"f942093842808ba47f64e427f7351dde6b9546e66de4e7d60aa6f328182712cf",
"852a21d92848e627c7", "0b1bf9e98d0a794fa55c09b63e25799f", false},
{92, "short message",
"64be162b39c6e5f1fed9c32d9f674d9a8cde6eaa2443214d86bd4a1fb53b81b4",
"195a3b292f93baff0a2c", "71f33f6021d90858cadb1353d7fbe8d7", false},
{93, "short message",
"b259a555d44b8a20c5489e2f38392ddaa6be9e35b9833b67e1b5fdf6cb3e4c6c",
"afd73117330c6e8528a6e4", "4b8d76372ebe5e5caa56ca4e5c59cdd3", false},
{94, "short message",
"2c6fc62daa77ba8c6881b3dd6989898fef646663cc7b0a3db8228a707b85f2dc",
"0ff54d6b6759120c2e8a51e3", "c580c542846a96e84ea77701778455bf", false},
{95, "short message",
"abab815d51df29f740e4e2079fb798e0152836e6ab57d1536ae8929e52c06eb8",
"f0058d412a104e53d820b95a7f", "13cdb005059338f0f28e2d8ce1af5d0a", false},
{96, "short message",
"3d5da1af83f7287458bff7a7651ea5d8db72259401333f6b82096996dd7eaf19",
"aacc36972f183057919ff57b49e1", "bd993e4428cbc0e275e4d80b6f520363", false},
{97, "short message",
"c19bdf314c6cf64381425467f42aefa17c1cc9358be16ce31b1d214859ce86aa",
"5d066a92c300e9b6ddd63a7c13ae33", "86c9f4dde0b257a7053a7b03c7504409",
false},
{98, "", "612e837843ceae7f61d49625faa7e7494f9253e20cb3adcea686512b043936cd",
"cc37fae15f745a2f40e2c8b192f2b38d", "b96bcacafac30094f18ac5039e7b3656",
false},
{99, "", "73216fafd0022d0d6ee27198b2272578fa8f04dd9f44467fbb6437aa45641bf7",
"d5247b8f6c3edcbfb1d591d13ece23d2f5", "6e597c4c3861a380c06854b446fc2a87",
false},
{100, "",
"0427a70e257528f3ab70640bba1a5de12cf3885dd4c8e284fbbb55feb35294a5",
"13937f8544f44270d01175a011f7670e93fa6ba7ef02336e",
"f731aaf2f04023d621f10495344679a0", false},
{101, "",
"96e1e4896fb2cd05f133a6a100bc5609a7ac3ca6d81721e922dadd69ad07a892",
"91a17e4dfcc3166a1add26ff0e7c12056e8a654f28a6de24f4ba739ceb5b5b18",
"95243eb1a9d448174ae4fccf4a53ebfe", false},
{102, "long message",
"41201567be4e6ea06de2295fd0e6e8a7d862bb57311894f525d8adeabba4a3e4",
"58c8c73bdd3f350c97477816eae4d0789c9369c0e99c248902c700bc29ed986425985eb3f"
"a55709b73bf620cd9b1cb",
"343367207f71425d8f81f3110b0405f6", false},
{103, "long message",
"649e373e681ef52e3c10ac265484750932a9918f28fb824f7cb50adab39781fe",
"39b447bd3a01983c1cb761b456d69000948ceb870562a536126a0d18a8e7e49b16de8fe67"
"2f13d0808d8b7d957899917",
"151618eec4f503f3b63b539de0a58966", false},
{104, "long message",
"7b0d237f7b536e2c6950990e61b361b384333dda690045c591321a4e3f79747f",
"3d6283d11c0219b525620e9bf5b9fd887d3f0f707acb1fbdffab0d97a5c6d07fc547762e0"
"e7dd7c43ad35fab1c790f8047",
"ce201c0dcfdc3f2bef360609a31fb19e", false},
{105, "long message",
"17c92663741f012e5bb6714e614c2d155948617f10936269d954c58aba2ae62d",
"7fdd6a15c861d0313f6635d77dc55e115ff18c8ab063b5d03eab472eeca87a378188f2581"
"3515cf90b6cffa94a8ff36b29d65603eab3fbd2aa9500b261e184049893dc6ca2010becac"
"163053f211070bdda621b8bd8af77e450268603b52db34c90be836dfebddef42303f724e6"
"3bf0f",
"76e8dfd94db4af9d79d9718eec46cb2d", false},
{106, "long message",
"424c6b22606fcc094ae82fc5d3cbe484174c2211b3ec778091cac34a8e38a152",
"d96ff062e2490e8e0c54c5a8b89e85b25a66d93d7c2b93bdfef846b70d38672746a4b988d"
"08f15a5c527ca4f2c80e53f7c6ac0521bc57ebe38209180cbf934e0bbeb58cfb63d75da64"
"af41d09ce174af1896f42522910fced35ea000402e95fd3ac7aa6d5e0a6b533b0879bc466"
"019b3a5e6b16e4bd1ea6cdfc9ccc1d6f0f0",
"eda709c7009714c372d0d6a63dfde469", false},
{107, "long message",
"15d553c8da433d53cdc7f15087a70349caab57b379a4078928ce9b99302e31a6",
"d6c0c53b73f74fb426adfdc143d70db7f7a8f8ed32a2faef263cf9ab117537b6b9d1728bd"
"1000c1f28906c6ce6ad21862bfa4d689c1a8ebe3868b992098b7f981b2af5189a6adedff5"
"3a6c70c83693f5c8d6385a9a8a4dca017c5716ac4d5b9765c5ca2ab5f9867e02795198c0b"
"9527e07d08af52dbcb91ceb3d8b412a2b2402",
"8ca1402bf8fc23442ac2067be925b828", false},
{108, "long message",
"ffe559468a1031dfb3ced2e381e74b5821a36d9abf5f2e59895a7fdca0fa56a0",
"238899a84a3cf15202a1fbef4741e133fb24c009a0cd83854c6d1d7c9266d4c3eafe6d1df"
"c18f13845ccdad7fe277627b5fd5ff2555ce6dfde1ee078540a0a3590c6d9bf2fb63ba9af"
"be9380e797be7cd017645c5a3613eef38ef89e3b7461e6e700ff2b4deef5636c9d2198b14"
"3f797ca1820a3dcc5d462ebf4a8c4c09eb202a23592eb9524082c79adda8fcd56d256041a"
"26bf8f523962ba911ce5a5786570d65be3c4df722ed8830302065febdf944715298a1fbb7"
"d10b68d7da2bf889324314ce51e815c7fbf03aa0a8358aff3a86eb7a33f9a4923660db304"
"7e793bebb0c6918f4395d400381723fdae2832c36efc8e368a68f30f6351c3bc942cd560",
"a830b313f4936dea56a3aefd6a3ebe7d", false},
{109, "Flipped bit 0 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"d28b42096d80f45f826b44a9d5607de7", true},
{110, "Flipped bit 0 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f", "d9b99f2709a3ca74172cbe93824c1f29",
true},
{111, "Flipped bit 1 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"d18b42096d80f45f826b44a9d5607de7", true},
{112, "Flipped bit 1 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f", "dab99f2709a3ca74172cbe93824c1f29",
true},
{113, "Flipped bit 7 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"538b42096d80f45f826b44a9d5607de7", true},
{114, "Flipped bit 7 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f", "58b99f2709a3ca74172cbe93824c1f29",
true},
{115, "Flipped bit 8 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"d38a42096d80f45f826b44a9d5607de7", true},
{116, "Flipped bit 8 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f", "d8b89f2709a3ca74172cbe93824c1f29",
true},
{117, "Flipped bit 31 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"d38b42896d80f45f826b44a9d5607de7", true},
{118, "Flipped bit 31 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f", "d8b99fa709a3ca74172cbe93824c1f29",
true},
{119, "Flipped bit 32 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"d38b42096c80f45f826b44a9d5607de7", true},
{120, "Flipped bit 32 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f", "d8b99f2708a3ca74172cbe93824c1f29",
true},
{121, "Flipped bit 33 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"d38b42096f80f45f826b44a9d5607de7", true},
{122, "Flipped bit 33 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f", "d8b99f270ba3ca74172cbe93824c1f29",
true},
{123, "Flipped bit 63 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"d38b42096d80f4df826b44a9d5607de7", true},
{124, "Flipped bit 63 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f", "d8b99f2709a3caf4172cbe93824c1f29",
true},
{125, "Flipped bit 64 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"d38b42096d80f45f836b44a9d5607de7", true},
{126, "Flipped bit 64 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f", "d8b99f2709a3ca74162cbe93824c1f29",
true},
{127, "Flipped bit 71 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"d38b42096d80f45f026b44a9d5607de7", true},
{128, "Flipped bit 71 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f", "d8b99f2709a3ca74972cbe93824c1f29",
true},
{129, "Flipped bit 77 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"d38b42096d80f45f824b44a9d5607de7", true},
{130, "Flipped bit 77 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f", "d8b99f2709a3ca74170cbe93824c1f29",
true},
{131, "Flipped bit 80 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"d38b42096d80f45f826b45a9d5607de7", true},
{132, "Flipped bit 80 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f", "d8b99f2709a3ca74172cbf93824c1f29",
true},
{133, "Flipped bit 96 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"d38b42096d80f45f826b44a9d4607de7", true},
{134, "Flipped bit 96 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f", "d8b99f2709a3ca74172cbe93834c1f29",
true},
{135, "Flipped bit 97 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"d38b42096d80f45f826b44a9d7607de7", true},
{136, "Flipped bit 97 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f", "d8b99f2709a3ca74172cbe93804c1f29",
true},
{137, "Flipped bit 103 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"d38b42096d80f45f826b44a955607de7", true},
{138, "Flipped bit 103 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f", "d8b99f2709a3ca74172cbe93024c1f29",
true},
{139, "Flipped bit 120 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"d38b42096d80f45f826b44a9d5607de6", true},
{140, "Flipped bit 120 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f", "d8b99f2709a3ca74172cbe93824c1f28",
true},
{141, "Flipped bit 121 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"d38b42096d80f45f826b44a9d5607de5", true},
{142, "Flipped bit 121 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f", "d8b99f2709a3ca74172cbe93824c1f2b",
true},
{143, "Flipped bit 126 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"d38b42096d80f45f826b44a9d5607da7", true},
{144, "Flipped bit 126 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f", "d8b99f2709a3ca74172cbe93824c1f69",
true},
{145, "Flipped bit 127 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"d38b42096d80f45f826b44a9d5607d67", true},
{146, "Flipped bit 127 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f", "d8b99f2709a3ca74172cbe93824c1fa9",
true},
{147, "Flipped bits 0 and 64 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"d28b42096d80f45f836b44a9d5607de7", true},
{148, "Flipped bits 0 and 64 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f", "d9b99f2709a3ca74162cbe93824c1f29",
true},
{149, "Flipped bits 31 and 63 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"d38b42896d80f4df826b44a9d5607de7", true},
{150, "Flipped bits 31 and 63 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f", "d8b99fa709a3caf4172cbe93824c1f29",
true},
{151, "Flipped bits 63 and 127 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"d38b42096d80f4df826b44a9d5607d67", true},
{152, "Flipped bits 63 and 127 in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f", "d8b99f2709a3caf4172cbe93824c1fa9",
true},
{153, "all bits of tag flipped",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"2c74bdf6927f0ba07d94bb562a9f8218", true},
{154, "all bits of tag flipped",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f", "274660d8f65c358be8d3416c7db3e0d6",
true},
{155, "Tag changed to all zero",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"00000000000000000000000000000000", true},
{156, "Tag changed to all zero",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f", "00000000000000000000000000000000",
true},
{157, "tag changed to all 1",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"ffffffffffffffffffffffffffffffff", true},
{158, "tag changed to all 1",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f", "ffffffffffffffffffffffffffffffff",
true},
{159, "msbs changed in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"530bc289ed0074df02ebc42955e0fd67", true},
{160, "msbs changed in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f", "58391fa789234af497ac3e1302cc9fa9",
true},
{161, "lsbs changed in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", "",
"d28a43086c81f55e836a45a8d4617ce6", true},
{162, "lsbs changed in tag",
"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
"000102030405060708090a0b0c0d0e0f", "d9b89e2608a2cb75162dbf92834d1e28",
true},
{163, "short key", "a349ac0a9f9f74e48e099cc3dbf9a9c9", "",
"3a8437b877b75cc08a4d8d7559a8fc6869a58c713da63d1d4b350d59b597e30c", false},
{164, "short key", "ac686ba0f1a51b4ec4f0b30492b7f556",
"2fa43a14ae500507deb95ab5bd32b0fe",
"008532a53d0c0ab22027ae249023375374e2239b959609e8339b05a15742a675", false},
{165, "short key", "73ef9ef1a4225e51e3c1db3ace1fa24f",
"ffad380d9aabb0acede5c1bf112925cdfc3d379fc2376a4fe2644490d0430ac3",
"9c7cb9f7c207ec46d1e3c55764731c4ab5ddbae4e1401e52a895df0cff4787c9", false},
{166, "short key", "e34f15c7bd819930fe9d66e0c166e61c", "",
"1d765ab9e29892f7bfec2975ad4bc2dc", false},
{167, "short key", "e09eaa5a3f5e56d279d5e7a03373f6ea",
"ef4eab37181f98423e53e947e7050fd0", "cfc19ec07902ec8be489606d8f40d172",
false},
{168, "short key", "9bd3902ed0996c869b572272e76f3889",
"a7ba19d49ee1ea02f098aa8e30c740d893a4456ccc294040484ed8a00a55f93e",
"ac50adad9785a89c7282d8ab881dc615", false},
{169, "long key",
"8a0c46eb8a2959e39865330079763341e7439dab149694ee57e0d61ec73d947e1d5301cd9"
"74e18a5e0d1cf0d2c37e8aadd9fd589d57ef32e47024a99bc3f70c077",
"", "f5bfb940561fb4db73ebba49bf2e4893bb0cca618a71b7ecf6aca38231e167ea",
false},
{170, "long key",
"2877ebb81f80334fd00516337446c5cf5ad4a3a2e197269e5b0ad1889dfe2b4b0aaa676fa"
"c55b36ce3affc7f1092ab89c53273a837bd5bc94d1a9d9e5b02e9856f",
"ba448db88f154f775028fdecf9e6752d",
"1690ed4180642899e0deb9ec2270374e8b0a484217f5a682c524316eca219b64", false},
{171, "long key",
"21178e26bc28ffc27c06f762ba190a627075856d7ca6feab79ac63149b17126e34fd9e559"
"0e0e90aac801df09505d8af2dd0a2703b352c573ac9d2cb063927f2af",
"7d5f1d6b993452b1b53a4375760d10a20d46a0ab9ec3943fc4b07a2ce735e731",
"e542ac8ac8f364bae4b7da8b7a0777df350f001de4e8cfa2d9ef0b15019496ec", false},
{172, "long key",
"813e0c078c221375e80590ace6774eafd2d2c242350988d02efa550e05aecbe100c1b8bf1"
"54c932cf9e57177015c816c42bc7fbc71ceaa5328c7316b7f0f30330f",
"", "bb6ab66f51e53fa086c9c61a26ca27e0", false},
{173, "long key",
"5713343096b0aaf0562a6b92c1a15535924160475a4e4233589159728c562e3b2ad96f740"
"c6a4da2bc3f768ce98c9bd66bac28d1646ff592028c940d455f35eeb4",
"71712de2fac1fb855673bff72af64257", "c18165b8b97db1ca5e2486a32b39731e",
false},
{174, "long key",
"7208afbecf5f1f34828f98b719414e280716de64f5edd1ae1c774153cd2022337bb20fade"
"1b7856f1dbfd40e2b4307f1293ceff1692ee90d8c90b5fdf953ab01a5",
"43b53302b604d613e62db002044a4782d572ac8fbd3cd0ece91b43bc52e18e98",
"2fecfe45d79339c57dddba68ab34f5f1", false}};
#endif // hmac_sha256_vectors_h__
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,233 @@
/* vim: set ts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* 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/. */
#ifndef hpke_vectors_h__
#define hpke_vectors_h__
#include "pk11hpke.h"
#include <vector>
typedef struct hpke_encrypt_vector_str {
std::string pt;
std::string aad;
std::string ct;
} hpke_encrypt_vector;
typedef struct hpke_export_vector_str {
std::string ctxt;
size_t len;
std::string exported;
} hpke_export_vector;
/* Note: The following test vec values are implicitly checked via:
* shared_secret: secret derivation
* key_sched_context: key/nonce derivations
* secret: key/nonce derivations
* exporter_secret: export vectors */
typedef struct hpke_vector_str {
uint32_t test_id;
HpkeModeId mode;
HpkeKemId kem_id;
HpkeKdfId kdf_id;
HpkeAeadId aead_id;
std::string info;
std::string pkcs8_e;
std::string pkcs8_r;
std::string psk;
std::string psk_id;
std::string enc;
std::string key;
std::string nonce;
std::vector<hpke_encrypt_vector> encrypt_vecs;
std::vector<hpke_export_vector> export_vecs;
} hpke_vector;
const hpke_vector kHpkeTestVectors[] = {
// A.1. DHKEM(X25519, HKDF-SHA256), HKDF-SHA256, AES-128-GCM, Base mode
{0,
static_cast<HpkeModeId>(0),
static_cast<HpkeKemId>(32),
static_cast<HpkeKdfId>(1),
static_cast<HpkeAeadId>(1),
"4f6465206f6e2061204772656369616e2055726e",
"3067020100301406072a8648ce3d020106092b06010401da470f01044c304a"
"02010104208c490e5b0c7dbe0c6d2192484d2b7a0423b3b4544f2481095a9"
"9dbf238fb350fa1230321008a07563949fac6232936ed6f36c4fa735930ecd"
"eaef6734e314aeac35a56fd0a",
"3067020100301406072a8648ce3d020106092b06010401da470f01044c304a"
"02010104205a8aa0d2476b28521588e0c704b14db82cdd4970d340d293a957"
"6deaee9ec1c7a1230321008756e2580c07c1d2ffcb662f5fadc6d6ff13da85"
"abd7adfecf984aaa102c1269",
"",
"",
"8a07563949fac6232936ed6f36c4fa735930ecdeaef6734e314aeac35a56fd0a",
"550ee0b7ec1ea2532f2e2bac87040a4c",
"2b855847756795a57229559a",
{// Encryptions
{"4265617574792069732074727574682c20747275746820626561757479",
"436f756e742d30",
"971ba65db526758ea30ae748cd769bc8d90579b62a037816057f24ce4274"
"16bd47c05ed1c2446ac8e19ec9ae79"},
{"4265617574792069732074727574682c20747275746820626561757479",
"436f756e742d31",
"f18f1ec397667ca069b9a6ee0bebf0890cd5caa34bb9875b3600ca0142cb"
"a774dd35f2aafd79a02a08ca5f2806"},
{"4265617574792069732074727574682c20747275746820626561757479",
"436f756e742d32",
"51a8dea350fe6e753f743ec17c956de4cbdfa35f3018fc6a12752c51d137"
"2c5093959f18c7253da9c953c6cfbe"}},
{// Exports
{"436f6e746578742d30", 32,
"0df04ac640d34a56561419bab20a68e6b7331070208004f89c7b973f4c47"
"2e92"},
{"436f6e746578742d31", 32,
"723c2c8f80e6b827e72bd8e80973a801a05514afe3d4bc46e82e505dceb9"
"53aa"},
{"436f6e746578742d32", 32,
"38010c7d5d81093a11b55e2403a258e9a195bcf066817b332dd996b0a9bc"
"bc9a"},
{"436f6e746578742d33", 32,
"ebf6ab4c3186131de9b2c3c0bc3e2ad21dfcbc4efaf050cd0473f5b1535a"
"8b6d"},
{"436f6e746578742d34", 32,
"c4823eeb3efd2d5216b2d3b16e542bf57470dc9b9ea9af6bce85b151a358"
"9d90"}}},
// A.1. DHKEM(X25519, HKDF-SHA256), HKDF-SHA256, AES-128-GCM, PSK mode
{1,
static_cast<HpkeModeId>(1),
static_cast<HpkeKemId>(32),
static_cast<HpkeKdfId>(1),
static_cast<HpkeAeadId>(1),
"4f6465206f6e2061204772656369616e2055726e",
"3067020100301406072a8648ce3d020106092b06010401da470f01044c304a020"
"1010420e7d2b539792a48a24451303ccd0cfe77176b6cb06823c439edfd217458"
"a1398aa12303210008d39d3e7f9b586341b6004dafba9679d2bd9340066edb247"
"e3e919013efcd0f",
"3067020100301406072a8648ce3d020106092b06010401da470f01044c304a020"
"10104204b41ef269169090551fcea177ecdf622bca86d82298e21cd93119b804c"
"cc5eaba123032100a5c85773bed3a831e7096f7df4ff5d1d8bac48fc97bfac366"
"141efab91892a3a",
"5db3b80a81cb63ca59470c83414ef70a",
"456e6e796e20447572696e206172616e204d6f726961",
"08d39d3e7f9b586341b6004dafba9679d2bd9340066edb247e3e919013efcd0f",
"811e9b2d7a10f4f9d58786bf8a534ca6",
"b79b0c5a8c3808e238b10411",
{// Encryptions
{"4265617574792069732074727574682c20747275746820626561757479",
"436f756e742d30",
"fb68f911b4e4033d1547f646ea30c9cee987fb4b4a8c30918e5de6e96de32fc"
"63466f2fc05e09aeff552489741"},
{"4265617574792069732074727574682c20747275746820626561757479",
"436f756e742d31",
"85e7472fbb7e2341af35fb2a0795df9a85caa99a8f584056b11d452bc160470"
"672e297f9892ce2c5020e794ae1"},
{"4265617574792069732074727574682c20747275746820626561757479",
"436f756e742d32",
"74229b7491102bcf94cf7633888bc48baa4e5a73cc544bfad4ff61585506fac"
"b44b359ade03c0b2b35c6430e4c"}},
{// Exports
{"436f6e746578742d30", 32,
"bd292b132fae00243851451c3f3a87e9e11c3293c14d61b114b7e12e07245ffd"},
{"436f6e746578742d31", 32,
"695de26bc9336caee01cb04826f6e224f4d2108066ab17fc18f0c993dce05f24"},
{"436f6e746578742d32", 32,
"c53f26ef1bf4f5fd5469d807c418a0e103d035c76ccdbc6afb5bc42b24968f6c"},
{"436f6e746578742d33", 32,
"8cea4a595dfe3de84644ca8ea7ea9401a345f0db29bb4beebc2c471afc602ec4"},
{"436f6e746578742d34", 32,
"e6313f12f6c2054c69018f273211c54fcf2439d90173392eaa34b4caac929068"}}},
// A.2. DHKEM(X25519, HKDF-SHA256), HKDF-SHA256, ChaCha20Poly1305, Base mode
{2,
static_cast<HpkeModeId>(0),
static_cast<HpkeKemId>(32),
static_cast<HpkeKdfId>(1),
static_cast<HpkeAeadId>(3),
"4f6465206f6e2061204772656369616e2055726e",
"3067020100301406072a8648ce3d020106092b06010401da470f01044c304a020"
"10104205006a9a0f0138b9b5d577ed4a67c4f795aee8fc146ac63d7a4167765be"
"3ad7dca123032100716281787b035b2fee90455d951fa70b3db6cc92f13bedfd7"
"58c3487994b7020",
"3067020100301406072a8648ce3d020106092b06010401da470f01044c304a020"
"101042062139576dcbf9878ccd56262d1b28dbea897821c03370d81971513cc74"
"aea3ffa1230321001ae26f65041b36ad69eb392c198bfd33df1c6ff17a910cb3e"
"49db7506b6a4e7f",
"",
"",
"716281787b035b2fee90455d951fa70b3db6cc92f13bedfd758c3487994b7020",
"1d5e71e2885ddadbcc479798cc65ea74d308f2a9e99c0cc7fe480adce66b5722",
"8354a7fcfef97d4bbef6d24e",
{// Encryptions
{"4265617574792069732074727574682c20747275746820626561757479",
"436f756e742d30",
"fa4632a400962c98143e58450e75d879365359afca81a5f5b5997c6555647ec"
"302045a80c57d3e2c2abe7e1ced"},
{"4265617574792069732074727574682c20747275746820626561757479",
"436f756e742d31",
"8313fcbf760714f5a93b6864820e48dcec3ddd476ad4408ff1c1a1f7bfb8cb8"
"699fada4a9e59bf8086eb1c0635"},
{"4265617574792069732074727574682c20747275746820626561757479",
"436f756e742d32",
"020f2856d95b85e1def9549bf327c484d327616f1e213045f117be4c287571a"
"b983958f74766cbc6f8197c8d8d"}},
{// Exports
{"436f6e746578742d30", 32,
"22bbe971392c685b55e13544cdaf976f36b89dc1dbe1296c2884971a5aa9e331"},
{"436f6e746578742d31", 32,
"5c0fa72053a2622d8999b726446db9ef743e725e2cb040afac2d83eae0d41981"},
{"436f6e746578742d32", 32,
"72b0f9999fd37ac2b948a07dadd01132587501a5a9460d596c1f7383299a2442"},
{"436f6e746578742d33", 32,
"73d2308ed5bdd63aacd236effa0db2d3a30742b6293a924d95a372e76d90486b"},
{"436f6e746578742d34", 32,
"d4f8878dbc471935e86cdee08746e53837bbb4b6013003bebb0bc1cc3e074085"}}},
// A.2. DHKEM(X25519, HKDF-SHA256), HKDF-SHA256, ChaCha20Poly1305, PSK mode
{3,
static_cast<HpkeModeId>(1),
static_cast<HpkeKemId>(32),
static_cast<HpkeKdfId>(1),
static_cast<HpkeAeadId>(3),
"4f6465206f6e2061204772656369616e2055726e",
"3067020100301406072a8648ce3d020106092b06010401da470f01044c304a020"
"10104204bfdb62b95ae2a1f29f20ea49e24aa2673e0d240c6e967f668f55ed5de"
"e996dca123032100f4639297e3305b03d34dd5d86522ddc6ba11a608a0003670a"
"30734823cdd3763",
"3067020100301406072a8648ce3d020106092b06010401da470f01044c304a020"
"1010420a6ab4e1bb782d580d837843089d65ebe271a0ee9b5a951777cecf1293c"
"58c150a123032100c49b46ed73ecb7d3a6a3e44f54b8f00f9ab872b57dd79ded6"
"6d7231a14c64144",
"5db3b80a81cb63ca59470c83414ef70a",
"456e6e796e20447572696e206172616e204d6f726961",
"f4639297e3305b03d34dd5d86522ddc6ba11a608a0003670a30734823cdd3763",
"396c06a52b39d0930594aa2c6944561cc1741f638557a12bef1c1cad349157c9",
"baa4ecf96b5d6d536d0d7210",
{// Encryptions
{"4265617574792069732074727574682c20747275746820626561757479",
"436f756e742d30",
"f97ca72675b8199e8ffec65b4c200d901110b177b246f241b6f9716fb60b35b"
"32a6d452675534b591e8141468a"},
{"4265617574792069732074727574682c20747275746820626561757479",
"436f756e742d31",
"57796e2b9dd0ddf807f1a7cb5884dfc50e61468c4fd69fa03963731e51674ca"
"88fee94eeac3290734e1627ded6"},
{"4265617574792069732074727574682c20747275746820626561757479",
"436f756e742d32",
"b514150af1057151687d0036a9b4a3ad50fb186253f839d8433622baa85719e"
"d5d2532017a0ce7b9ca0007f276"}},
{// Exports
{"436f6e746578742d30", 32,
"735400cd9b9193daffe840f412074728ade6b1978e9ae27957aacd588dbd7c9e"},
{"436f6e746578742d31", 32,
"cf4e351e1943d171ff2d88726f18160086ecbec52a8151dba8cf5ba0737a6097"},
{"436f6e746578742d32", 32,
"8e23b44d4f23dd906d1c100580a670d171132c9786212c4ca2876a1541a84fae"},
{"436f6e746578742d33", 32,
"56252a940ece53d4013eb619b444ee1d019a08eec427ded2b6dbf24be624a4a0"},
{"436f6e746578742d34", 32,
"fc6cdca9ce8ab062401478ffd16ee1c07e2b15d7c781d4227f07c6043d937fad"}}}};
#endif // hpke_vectors_h__
@@ -1,3 +1,4 @@
/* vim: set ts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* 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/. */
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More