Skip to content

Commit 2fcc59e

Browse files
updating logic for token
1 parent 076b1e1 commit 2fcc59e

File tree

1 file changed

+25
-60
lines changed
  • .github/scripts/ppc64le/self-hosted-builder/helpers

1 file changed

+25
-60
lines changed

.github/scripts/ppc64le/self-hosted-builder/helpers/app_token.sh

Lines changed: 25 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -11,74 +11,39 @@
1111

1212
set -o pipefail
1313

14-
_GITHUB_HOST=${GITHUB_HOST:="github.com"}
14+
APP_ID=$(cat $1) # Path to appid.env
15+
PRIVATE_KEY_PATH=$2 # Path to key_private.pem
16+
echo "APP_PRIVATE_KEY path: $APP_PRIVATE_KEY"
1517

16-
# If URL is not github.com then use the enterprise api endpoint
17-
if [[ ${GITHUB_HOST} = "github.com" ]]; then
18-
URI="https://api.${_GITHUB_HOST}"
19-
else
20-
URI="https://${_GITHUB_HOST}/api/v3"
21-
fi
18+
# Generate JWT
19+
header='{"alg":"RS256","typ":"JWT"}'
20+
payload="{\"iat\":$(date +%s),\"exp\":$(( $(date +%s) + 600 )),\"iss\":${APP_ID}}"
2221

23-
API_VERSION=v3
24-
API_HEADER="Accept: application/vnd.github.${API_VERSION}+json"
25-
CONTENT_LENGTH_HEADER="Content-Length: 0"
26-
APP_INSTALLATIONS_URI="${URI}/app/installations"
22+
header_base64=$(echo -n "$header" | openssl base64 | tr -d '=' | tr '/+' '_-' | tr -d '\n')
23+
payload_base64=$(echo -n "$payload" | openssl base64 | tr -d '=' | tr '/+' '_-' | tr -d '\n')
2724

25+
signature=$(echo -n "${header_base64}.${payload_base64}" | \
26+
openssl dgst -sha256 -sign "${APP_PRIVATE_KEY}" | \
27+
openssl base64 | tr -d '=' | tr '/+' '_-' | tr -d '\n')
2828

29-
# JWT parameters based off
30-
# https://docs.github.com/en/developers/apps/building-github-apps/authenticating-with-github-apps#authenticating-as-a-github-app
31-
#
32-
# JWT token issuance and expiration parameters
33-
JWT_IAT_DRIFT=60
34-
JWT_EXP_DELTA=600
35-
36-
JWT_JOSE_HEADER='{
37-
"alg": "RS256",
38-
"typ": "JWT"
39-
}'
40-
29+
echo "Contents of APP_PRIVATE_KEY:"
30+
cat "$APP_PRIVATE_KEY"
4131

42-
build_jwt_payload() {
43-
now=$(date +%s)
44-
iat=$((now - JWT_IAT_DRIFT))
45-
jq -c \
46-
--arg iat_str "${iat}" \
47-
--arg exp_delta_str "${JWT_EXP_DELTA}" \
48-
--arg app_id_str "${APP_ID}" \
49-
'
50-
($iat_str | tonumber) as $iat
51-
| ($exp_delta_str | tonumber) as $exp_delta
52-
| ($app_id_str | tonumber) as $app_id
53-
| .iat = $iat
54-
| .exp = ($iat + $exp_delta)
55-
| .iss = $app_id
56-
' <<< "{}" | tr -d '\n'
57-
}
5832

59-
base64url() {
60-
base64 | tr '+/' '-_' | tr -d '=\n'
61-
}
33+
generated_jwt="${header_base64}.${payload_base64}.${signature}"
6234

63-
rs256_sign() {
64-
openssl dgst -binary -sha256 -sign <(echo "$1")
65-
}
35+
echo $generated_jwt
36+
# API_VERSION=v3
37+
# API_HEADER="Accept: application/vnd.github+json"
6638

67-
request_access_token() {
68-
jwt_payload=$(build_jwt_payload)
69-
encoded_jwt_parts=$(base64url <<<"${JWT_JOSE_HEADER}").$(base64url <<<"${jwt_payload}")
70-
encoded_mac=$(echo -n "$encoded_jwt_parts" | rs256_sign "${APP_PRIVATE_KEY}" | base64url)
71-
generated_jwt="${encoded_jwt_parts}.${encoded_mac}"
39+
# auth_header="Authorization: Bearer ${generated_jwt}"
7240

73-
auth_header="Authorization: Bearer ${generated_jwt}"
41+
# app_installations_response=$(curl -sX POST \
42+
# -H "${auth_header}" \
43+
# -H "${API_HEADER}" \
44+
# --url "https://api.github.com/app/installations/${INSTALL_ID}/access_tokens" \
45+
# )
7446

75-
app_installations_response=$(curl -sX POST \
76-
-H "${auth_header}" \
77-
-H "${API_HEADER}" \
78-
--header "X-GitHub-Api-Version: 2022-11-28" \
79-
--url "https://api.github.com/app/installations/${INSTALL_ID}/access_tokens" \
80-
)
81-
echo "$app_installations_response" | jq --raw-output '.token'
82-
}
47+
# echo "$app_installations_response" | jq --raw-output '.token'
8348

84-
request_access_token
49+
#echo "ACCESS_TOKEN=${jwt}" > "${DST_FILE}"

0 commit comments

Comments
 (0)