in src/lambdas/r8s_api_handler/processors/license_manager_client_processor.py [0:0]
def post(self, event: dict):
_LOG.info(
f'{POST_METHOD} License Manager Client-Key event: {event}'
)
self.check_properly_encoded_key(event)
kid = event.get(KEY_ID_ATTR)
alg = event.get(ALGORITHM_ATTR)
raw_prk = event.get('private_key')
frmt = event.get(FORMAT_ATTR)
# Decoding is taking care of within the validation layer.
if self.settings_service. \
get_license_manager_client_key_data(value=False):
return build_response(
code=RESPONSE_BAD_REQUEST_CODE,
content='License Manager Client-Key already exists.'
)
prk = self.key_management_service.import_key(
alg=alg, key_value=raw_prk
)
puk = self._derive_puk(prk=prk)
if not puk:
return build_response(
code=RESPONSE_BAD_REQUEST_CODE,
content='Improper private-key.'
)
if not prk:
return build_response(
content=UNSUPPORTED_ALG_TEMPLATE.format(alg=alg),
code=RESPONSE_RESOURCE_NOT_FOUND_CODE
)
prk = self.key_management_service.instantiate_managed_key(
alg=alg, key=prk,
kid=self.license_manager_service.derive_client_private_key_id(
kid=kid
)
)
message = KEY_OF_ENTITY_TEMPLATE.format(
key='PublicKey', kid=prk.kid, uid=prk.alg, entity='algorithm'
)
_LOG.info(message + ' has been instantiated.')
self.key_management_service.save_key(
kid=prk.kid, key=prk.key, frmt=frmt
)
managed_puk = self.key_management_service.instantiate_managed_key(
kid=kid, alg=alg, key=puk
)
setting = self.settings_service.create_license_manager_client_key_data(
kid=kid, alg=alg
)
_LOG.info(f'Persisting License Manager Client-Key data:'
f' {setting.value}.')
self.settings_service.save(setting=setting)
return build_response(
code=RESPONSE_OK_CODE,
content=self._response_dto(
exported_key=managed_puk.export_key(frmt=frmt),
value_attr=PUBLIC_KEY_ATTR
)
)