From 705419f30589ee1410102363992f608972340747 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 29 Sep 2026 21:39:05 +0000 Subject: [PATCH 1/2] Initial plan From 44419dc98808d95c171b587fa9858b5c93d36afd Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 29 Sep 2026 21:41:00 +0000 Subject: [PATCH 2/2] Fix sign job: ensure python3 is available before OTP generation Co-authored-by: ChrisPulman <4910015+ChrisPulman@users.noreply.github.com> --- .github/workflows/BuildDeploy.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/BuildDeploy.yml b/.github/workflows/BuildDeploy.yml index a8fe0d2..8db95af 100644 --- a/.github/workflows/BuildDeploy.yml +++ b/.github/workflows/BuildDeploy.yml @@ -300,6 +300,10 @@ jobs: fi sleep 20 + if ! command -v python3 >/dev/null 2>&1; then + apt-get update && apt-get install -y --no-install-recommends python3 + fi + OTP="$(python3 -c 'import os,hmac,hashlib,base64,struct,time;from urllib.parse import urlparse,parse_qs;q=parse_qs(urlparse(os.environ["CERTUM_OTP_URI"]).query);s=q["secret"][0];digits=int(q.get("digits",["6"])[0]);period=int(q.get("period",["30"])[0]);algo={"SHA1":hashlib.sha1,"SHA256":hashlib.sha256,"SHA512":hashlib.sha512}[q.get("algorithm",["SHA1"])[0].upper()];key=base64.b32decode(s+"="*((8-len(s)%8)%8));h=hmac.new(key,struct.pack(">Q",int(time.time()//period)),algo).digest();o=h[-1]&0xF;print(str((int.from_bytes(h[o:o+4],"big")&0x7fffffff)%(10**digits)).zfill(digits))')" echo "::add-mask::$OTP"