in source/core-api/custom_resources/generate_keys.py [0:0]
def create(event, _):
"""
This function is responsible for generating public and private keys.
Keys generated are stored in Secrets Manager.
"""
print(event)
# key id
kid = uuid.uuid4().hex
# create JWK format keys
keypair = jwk.JWK.generate(kid=kid, alg='RS256', kty='RSA', size=2048)
# get the private and public JWK from the pair
private_jwk = keypair.export_private(as_dict=True)
print("Private key generated.")
public_jwk = keypair.export_public(as_dict=True)
print("Public key generated")
print(f"{json.dumps(public_jwk, indent=4)}")
# store pub/private keys in secrets manager
try:
response = secrets_client.create_secret(
Name=f"{SECRET_NAME_PREFIX}/jwk-private",
Description="Private JWK",
SecretString=json.dumps(private_jwk))
if response["ResponseMetadata"]["HTTPStatusCode"] == 200:
print("Private key saved in secrets manager.")
response = secrets_client.create_secret(
Name=f"{SECRET_NAME_PREFIX}/jwk-public",
Description="Public JWK",
SecretString=json.dumps(public_jwk))
if response["ResponseMetadata"]["HTTPStatusCode"] == 200:
print("Public key saved in secrets manager.")
except Exception as exception:
print(exception)
raise exception