/*! @file @id $Id$ */ // 1 2 3 4 5 6 7 8 // 45678901234567890123456789012345678901234567890123456789012345678901234567890 #ifndef SUISSE_ID_DEMO_HXX #define SUISSE_ID_DEMO_HXX #include #include #include // implements a status cycle for text user interface class TextualCycle: public suisseid::StatusCycle { public: // just pass the card to parent TextualCycle(std::shared_ptr card): StatusCycle(card) { } protected: // callback: ask user for transport pin virtual PinPukChange pinChangeTransportPin() { PinPukChange pinpuk; std::cout<<"Enter Transport PIN: "; std::cin>>pinpuk.oldpin; std::cout<<"Enter New PIN: "; std::cin>>pinpuk.newpin; return pinpuk; } // callback: ask user for puk virtual PinPukChange pinChangePuk() { PinPukChange pinpuk; std::cout<<"Enter PUK to unlock PKCS#15 PIN: "; std::cin>>pinpuk.oldpin; std::cout<<"Enter New PKCS#15 PIN: "; std::cin>>pinpuk.newpin; return pinpuk; } // callback: tell user that transport pin is locked virtual void transportPinLocked() { std::cout<<"Transport PIN is Locked!"<>pin; if (pin=="x") { std::cout<slot()); try { // log into the card using the user's pin session.login(pin); } catch (const cryptoki::wrong_pin& x) { std::cout<<"**** Wrong PIN!"<