Skip to main content
Guide
DG-3049
Version
1.0
Status
Active
Created date
Updated date

The following code samples are written in Python and provided as samples only.

Use of the samples are for illustrative purpose only.

create_jwk.py

# create_jwk.py
# !pip3 install python_jwt
 
import python_jwt as jwt
import jwcrypto.jwk as jwk
import datetime
 
print("\n Create a JWK with 2048bit RSA keypair\n")
 
key = jwk.JWK.generate(kty='RSA', size=2048, kid='eee9f17a3b598fd86417a980b591fbe6')
 
pub_key = key.export_public()
priv_key = key.export_private()
 
print("\n Public key\n", pub_key)
print("\n Private key\n", priv_key)

create_jwt.py

# create_jwt.py
# !pip3 install python_jwt
 
import jwcrypto.jwt as jwt
import jwcrypto.jwk as jwk
import datetime
from pathlib import Path
 
header = {
  "alg": "RS256",
  "kid": "eee9f17a3b598fd86417a980b591fbe6",
  "typ": "JWT"
}
 
claims = {
  "iss": "8b0914e0-09b4-47d7-9fc9-eb3ddaf2f7aa",
  "sub": "8b0914e0-09b4-47d7-9fc9-eb3ddaf2f7aa",
  "aud": "https://pca-svt.digitalhealth.gov.au/PcaAuthApi/v2/auth/token",
  "exp": "1352660008",
  "jti": "rand0m-n0n-reusable-jwt-1d-123"
}
 
def get_signing_key(filename):
    with open(filename) as priv_file:
        key = jwk.JWK.from_json(priv_file.read())
        return key
     
print("\n# Encoded JWT with RS256 Signature\n")
file_path = (Path(__file__).parent / "../json/my-private-key.json").resolve()
rsa_signing_jwk = get_signing_key(file_path)
Token = jwt.JWT(header, claims)
Token.make_signed_token(rsa_signing_jwk)
print(Token.serialize())

Back: API referenceHome 

Trade marks of the Australian Digital Health Agency: 
Provider Connect Australia™, Helping healthcare providers stay connected™

PCA logo
PCA logo

On this page