Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_017ic4b7rnC7jppGGdHGESvy
35 lines
2.3 KiB
Bash
Executable File
35 lines
2.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# KDF API (JEP 510, final in JDK 25): regenerates every file in output/.
|
|
# JDK25=/path/to/jdk-25 ./run.sh needs python3 with `cryptography` and the openssl CLI for steps 05 and 06
|
|
set -uo pipefail
|
|
unset JAVA_TOOL_OPTIONS
|
|
HERE="$(cd "$(dirname "$0")" && pwd)"
|
|
JDK25="${JDK25:-/opt/jdks/jdk-25.0.4.1+1}"
|
|
OUT="$HERE/output"; mkdir -p "$OUT"; B="$(mktemp -d)"; trap 'rm -rf "$B"' EXIT
|
|
cd "$HERE"
|
|
J="$JDK25/bin"
|
|
echo "javac: $("$J/javac" -version 2>&1)"
|
|
"$J/javac" --release 25 -Xlint:all -d "$B" src/*.java || exit 1
|
|
run() { echo "\$ java -cp classes $* ($("$J/java" -version 2>&1 | sed -n 2p | sed 's/.*(build \(.*\))/\1/'))"; "$J/java" -Xmx512m -cp "$B" "$@" 2>&1; echo "exit=$?"; }
|
|
|
|
{ echo "\$ javap javax.crypto.KDF javax.crypto.KDFParameters javax.crypto.KDFSpi javax.crypto.spec.HKDFParameterSpec 'javax.crypto.spec.HKDFParameterSpec\$Builder' ... ($("$J/java" -version 2>&1 | sed -n 2p | sed 's/.*(build \(.*\))/\1/'))"
|
|
"$J/javap" javax.crypto.KDF javax.crypto.KDFParameters javax.crypto.KDFSpi javax.crypto.spec.HKDFParameterSpec \
|
|
'javax.crypto.spec.HKDFParameterSpec$Builder' 'javax.crypto.spec.HKDFParameterSpec$Extract' \
|
|
'javax.crypto.spec.HKDFParameterSpec$Expand' 'javax.crypto.spec.HKDFParameterSpec$ExtractThenExpand' 2>&1 | grep -v '^Compiled from'
|
|
echo; echo "\$ javap -v javax.crypto.KDF | grep -ci PreviewFeature (0 = not a preview API)"
|
|
"$J/javap" -v javax.crypto.KDF | grep -ci PreviewFeature
|
|
echo "\$ unzip -p src.zip java.base/javax/crypto/KDF.java | grep @since"
|
|
unzip -p "$JDK25/lib/src.zip" java.base/javax/crypto/KDF.java | grep -m1 '@since'
|
|
} > "$OUT/01-api-shape.txt"
|
|
|
|
run ApiTour > "$OUT/02-api-tour.txt"
|
|
run Rfc5869Vectors > "$OUT/03-rfc5869-vectors.txt"
|
|
{ run RefCheck; echo; run Interop interop/cases.tsv; } > "$OUT/04-interop-java-vs-python-vs-reference.txt"
|
|
{ python3 -I -c 'import cryptography; print("python cryptography", cryptography.__version__)'
|
|
python3 -I interop/gen_cases.py "$B/regen.tsv" && cmp "$B/regen.tsv" interop/cases.tsv && echo "cases.tsv regenerates byte-identically"
|
|
python3 -I interop/openssl_check.py interop/cases.tsv; } > "$OUT/05-interop-python-openssl.txt" 2>&1
|
|
run Tenants > "$OUT/06-tenants.txt"
|
|
run Mistakes > "$OUT/07-mistakes.txt"
|
|
grep -l 'FAIL' "$OUT"/*.txt && echo "SOME CHECK FAILED" && exit 1
|
|
echo "all outputs regenerated, no FAIL lines"
|