28 using BusyHandler = std::function<WorkflowControl (
WorkflowRequest&,
const QSharedPointer<WorkflowRequest>&,
const QSharedPointer<WorkflowRequest>&)>;
31 const std::function<QSharedPointer<WorkflowController>(
const QSharedPointer<WorkflowContext>& pContext)> mGeneratorController;
32 const std::function<QSharedPointer<WorkflowContext>()> mGeneratorContext;
33 const BusyHandler mBusyHandler;
35 QSharedPointer<WorkflowController> mController;
36 QSharedPointer<WorkflowContext> mContext;
38 template<
typename Controller,
typename Context,
typename ... Args>
39 static auto getGenerator(Args&& ... pArgs)
41 const auto& controller = [](
const QSharedPointer<WorkflowContext>& pContext){
42 return QSharedPointer<Controller>::create(pContext.staticCast<Context>());
45 const auto& context = [pArgs ...]()
mutable {
46 return QSharedPointer<Context>::create(std::forward<Args>(pArgs) ...);
49 return qMakePair(controller, context);
53 template<
typename Controller,
typename Context,
typename Request =
WorkflowRequest,
typename ... Args>
56 auto [controller, context] = getGenerator<Controller, Context, Args...>(std::forward<Args>(pArgs) ...);
57 return QSharedPointer<Request>::create(controller, context);
61 template<
typename Controller,
typename Context,
typename Request =
WorkflowRequest,
typename ... Args>
64 auto [controller, context] = getGenerator<Controller, Context, Args...>(std::forward<Args>(pArgs) ...);
65 return QSharedPointer<Request>::create(controller, context, pBusyHandler);
69 WorkflowRequest(
const std::function<QSharedPointer<WorkflowController>(
const QSharedPointer<WorkflowContext>& pContext)>& pGeneratorController,
70 const std::function<QSharedPointer<WorkflowContext>()>& pGeneratorContext,
71 const BusyHandler& pBusyHandler = BusyHandler());
76 [[nodiscard]] QSharedPointer<WorkflowController>
getController()
const;
77 [[nodiscard]] QSharedPointer<WorkflowContext>
getContext()
const;
78 [[nodiscard]] WorkflowControl
handleBusyWorkflow(
const QSharedPointer<WorkflowRequest>& pActiveWorkflow,
const QSharedPointer<WorkflowRequest>& pWaitingWorkflow);
Definition: WorkflowController.h:20
Definition: WorkflowRequest.h:25
Action getAction() const
Definition: WorkflowRequest.cpp:41
void initialize()
Definition: WorkflowRequest.cpp:26
QSharedPointer< WorkflowContext > getContext() const
Definition: WorkflowRequest.cpp:53
static QSharedPointer< WorkflowRequest > createWorkflowRequest(Args &&... pArgs)
Definition: WorkflowRequest.h:54
QSharedPointer< WorkflowController > getController() const
Definition: WorkflowRequest.cpp:47
WorkflowControl handleBusyWorkflow(const QSharedPointer< WorkflowRequest > &pActiveWorkflow, const QSharedPointer< WorkflowRequest > &pWaitingWorkflow)
Definition: WorkflowRequest.cpp:59
bool isInitialized() const
Definition: WorkflowRequest.cpp:35
WorkflowRequest(const std::function< QSharedPointer< WorkflowController >(const QSharedPointer< WorkflowContext > &pContext)> &pGeneratorController, const std::function< QSharedPointer< WorkflowContext >()> &pGeneratorContext, const BusyHandler &pBusyHandler=BusyHandler())
static QSharedPointer< WorkflowRequest > createWorkflowRequestHandler(const BusyHandler &pBusyHandler, Args &&... pArgs)
Definition: WorkflowRequest.h:62
Implementation of GeneralAuthenticate response APDUs.
Definition: CommandApdu.h:16
defineEnumType(KnownOid, ID_SIGNED_DATA, EC_PS_PUBLICKEY, STANDARDIZED_DOMAINPARAMETERS, BSI_DE_PROTOCOLS_SMARTCARD, ID_PK, ID_PK_DH, ID_PK_ECDH, ID_PS_PK, ID_PS_PK_ECDH_ESCHNORR, ID_TA, ID_TA_RSA, ID_TA_RSA_V1_5_SHA_1, ID_TA_RSA_V1_5_SHA_256, ID_TA_RSA_PSS_SHA_1, ID_TA_RSA_PSS_SHA_256, ID_TA_RSA_V1_5_SHA_512, ID_TA_RSA_PSS_SHA_512, ID_TA_ECDSA, ID_TA_ECDSA_SHA_1, ID_TA_ECDSA_SHA_224, ID_TA_ECDSA_SHA_256, ID_TA_ECDSA_SHA_384, ID_TA_ECDSA_SHA_512, ID_CA, ID_CA_DH, ID_CA_DH_3DES_CBC_CBC, ID_CA_DH_AES_CBC_CMAC_128, ID_CA_DH_AES_CBC_CMAC_192, ID_CA_DH_AES_CBC_CMAC_256, ID_CA_ECDH, ID_CA_ECDH_3DES_CBC_CBC, ID_CA_ECDH_AES_CBC_CMAC_128, ID_CA_ECDH_AES_CBC_CMAC_192, ID_CA_ECDH_AES_CBC_CMAC_256, ID_PACE, ID_PACE_DH_GM, ID_PACE_DH_GM_3DES_CBC_CBC, ID_PACE_DH_GM_AES_CBC_CMAC_128, ID_PACE_DH_GM_AES_CBC_CMAC_192, ID_PACE_DH_GM_AES_CBC_CMAC_256, ID_PACE_ECDH_GM, ID_PACE_ECDH_GM_3DES_CBC_CBC, ID_PACE_ECDH_GM_AES_CBC_CMAC_128, ID_PACE_ECDH_GM_AES_CBC_CMAC_192, ID_PACE_ECDH_GM_AES_CBC_CMAC_256, ID_PACE_DH_IM, ID_PACE_DH_IM_3DES_CBC_CBC, ID_PACE_DH_IM_AES_CBC_CMAC_128, ID_PACE_DH_IM_AES_CBC_CMAC_192, ID_PACE_DH_IM_AES_CBC_CMAC_256, ID_PACE_ECDH_IM, ID_PACE_ECDH_IM_3DES_CBC_CBC, ID_PACE_ECDH_IM_AES_CBC_CMAC_128, ID_PACE_ECDH_IM_AES_CBC_CMAC_192, ID_PACE_ECDH_IM_AES_CBC_CMAC_256, ID_PACE_ECDH_CAM, ID_PACE_ECDH_CAM_AES_CBC_CMAC_128, ID_PACE_ECDH_CAM_AES_CBC_CMAC_192, ID_PACE_ECDH_CAM_AES_CBC_CMAC_256, ID_RI, ID_RI_DH, ID_RI_DH_SHA_1, ID_RI_DH_SHA_224, ID_RI_DH_SHA_256, ID_RI_DH_SHA_384, ID_RI_DH_SHA_512, ID_RI_ECDH, ID_RI_ECDH_SHA_1, ID_RI_ECDH_SHA_224, ID_RI_ECDH_SHA_256, ID_RI_ECDH_SHA_384, ID_RI_ECDH_SHA_512, ID_CI, ID_EID_SECURITY, ID_PT, ID_PS, ID_PSA, ID_PSA_ECDH_ECSCHNORR, ID_PSA_ECDH_ECSCHNORR_SHA_256, ID_PSA_ECDH_ECSCHNORR_SHA_384, ID_PSA_ECDH_ECSCHNORR_SHA_512, ID_PASSWORDTYPE, ID_PASSWORDTYPE_MRZ, ID_PASSWORDTYPE_CAN, ID_PASSWORDTYPE_PIN, ID_PASSWORDTYPE_PUK, ID_AUXILIARY_DATA, ID_DATE_OF_BIRTH, ID_DATE_OF_EXPIRY, ID_MUNICIPALITY_ID, ID_PSM_MESSAGE, ID_SECURITY_OBJECT, ID_ROLES, ID_IS, ID_AT, ID_ST, ID_EXTENSIONS, ID_DESCRIPTION, ID_PLAIN_FORMAT, ID_HTML_FORMAT, ID_PFD_FORMAT, ID_SECTOR, ID_EID_TYPE, ID_CARD_EID_TYPE, ID_MOBILE_EID_TYPE, ID_MOBILE_EID_TYPE_SE_CERTIFIED, ID_MOBILE_EID_TYPE_SE_ENDORSED, ID_MOBILE_EID_TYPE_HW_KEYSTORE) class Oid
Definition: Oid.h:21