latest_tag = max(valid_tags, key=aws_lc_version_string_to_num)
return "AWS_LC_VERSION={}".format(latest_tag[1:])
+@functools.lru_cache(5)
+def determine_aws_lc_branch(ssl):
+ branch = ssl.split("=branch-", 1)[1]
+ headers = {}
+ if environ.get("GITHUB_TOKEN") is not None:
+ headers["Authorization"] = "token {}".format(environ.get("GITHUB_TOKEN"))
+ url = "https://api.github.com/repos/aws/aws-lc/commits/{}".format(branch)
+ request = urllib.request.Request(url, headers=headers)
+ with urllib.request.urlopen(request) as response:
+ commit = json.loads(response.read().decode("utf-8"))
+ sha = commit["sha"]
+ url = "https://raw.githubusercontent.com/aws/aws-lc/{}/include/openssl/base.h".format(sha)
+ request = urllib.request.Request(url, headers=headers)
+ with urllib.request.urlopen(request) as response:
+ header = response.read().decode("utf-8")
+ release = re.search(r'^#define AWSLC_VERSION_NUMBER_STRING "([^"]+)"', header, re.MULTILINE).group(1)
+ return "AWS_LC_VERSION=git-{}".format(sha), "AWS_LC_VERSION={}+{}".format(release, sha[:8])
+
def aws_lc_fips_version_string_to_num(version_string):
return tuple(map(int, version_string[12:].split('.')))
"QUICTLS_VERSION=OpenSSL_1_1_1w-quic1",
"WOLFSSL_VERSION=5.7.0",
"AWS_LC_VERSION=1.39.0",
+ "AWS_LC_VERSION=branch-fips-2024-09-27",
+ "AWS_LC_VERSION=branch-fips-2025-09-12-lts",
# "BORINGSSL=yes",
]
]
for ssl in ssl_versions:
+ ssl_name = None
flags = ["USE_OPENSSL=1"]
skipdup=0
if "WOLFSSL" in ssl:
if ssl != "stock":
flags.append("SSL_LIB=${HOME}/opt/lib")
flags.append("SSL_INC=${HOME}/opt/include")
+ if ssl.startswith("AWS_LC_VERSION=branch-"):
+ ssl, ssl_name = determine_aws_lc_branch(ssl)
if "LIBRESSL" in ssl and "latest" in ssl:
ssl = determine_latest_libressl(ssl)
skipdup=1
matrix.append(
{
- "name": "{}, {}, ssl={}".format(os, CC, clean_ssl(ssl)),
+ "name": "{}, {}, ssl={}".format(os, CC, clean_ssl(ssl_name or ssl)),
"os": os,
"TARGET": TARGET,
"CC": CC,
fetch-depth: 100
#
-# Github Action cache key cannot contain comma, so we calculate it based on job name
+# Github Action cache key cannot contain comma, so we calculate it based on job name and SSL source
#
- name: Generate cache key
id: generate-cache-key
run: |
- echo "key=$(echo ${{ matrix.name }} | sha256sum | awk '{print $1}')" >> $GITHUB_OUTPUT
+ echo "key=$(echo ${{ matrix.name }} ${{ matrix.ssl }} | sha256sum | awk '{print $1}')" >> $GITHUB_OUTPUT
- name: Cache SSL libs
if: ${{ matrix.ssl && matrix.ssl != 'stock' && matrix.ssl != 'BORINGSSL=yes' && !contains(matrix.ssl, 'QUICTLS') }}
download_aws_lc () {
if [ ! -f "${BUILDSSL_TMPDIR}/aws-lc-${AWS_LC_VERSION}.tar.gz" ]; then
- if [ "${AWS_LC_VERSION#*FIPS}" != "${AWS_LC_VERSION}" ]; then
- WGETFILE="${AWS_LC_VERSION}.tar.gz"
+ if [ "${AWS_LC_VERSION%%-*}" = "git" ]; then
+ WGETFILE="${AWS_LC_VERSION#git-}.tar.gz"
+ elif [ "${AWS_LC_VERSION#*FIPS}" != "${AWS_LC_VERSION}" ]; then
+ WGETFILE="refs/tags/${AWS_LC_VERSION}.tar.gz"
else
- WGETFILE="v${AWS_LC_VERSION}.tar.gz"
+ WGETFILE="refs/tags/v${AWS_LC_VERSION}.tar.gz"
fi
wget -q -O "${BUILDSSL_TMPDIR}/aws-lc-${AWS_LC_VERSION}.tar.gz" \
- "https://github.com/aws/aws-lc/archive/refs/tags/${WGETFILE}"
+ "https://github.com/aws/aws-lc/archive/${WGETFILE}"
fi
}