mirror of
https://github.com/ManchildProductions/UXP-Fixed.git
synced 2026-05-26 22:49:27 +00:00
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:
@@ -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()
|
||||
|
||||
|
||||
@@ -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 \
|
||||
|
||||
-143
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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, ¶ms->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, ¶ms->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, ¶ms->sk.key, filename, bltestBinary);
|
||||
break;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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),
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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 " }
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -6,6 +6,10 @@ CORE_DEPTH = ../..
|
||||
|
||||
MODULE = nss
|
||||
|
||||
ifdef ZLIB_INCLUDE_DIR
|
||||
INCLUDES += -I$(ZLIB_INCLUDE_DIR)
|
||||
endif
|
||||
|
||||
EXPORTS =
|
||||
|
||||
CSRCS = signtool.c \
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)'],
|
||||
},
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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'):
|
||||
|
||||
@@ -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,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/. */
|
||||
@@ -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/. */
|
||||
|
||||
@@ -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,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/. */
|
||||
@@ -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,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/. */
|
||||
@@ -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,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
Reference in New Issue
Block a user