def post()

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
            )
        )