Пример #1
0
    std::string OmnikeyReaderUnit::getReaderSerialNumber()
    {
        std::string ret;

        std::vector<unsigned char> ucReceivedData;

        //This Command is from ICAO Command Set (Test-Commands). If you use ICAO Test-Commands then the driver stop the tracking (the reader is « stuck » ).
        ucReceivedData = getDefaultPCSCReaderCardAdapter()->sendAPDUCommand(0xFF, 0x9A, 0x01, 0x05, 0x00);
        //After using this command you must "Close" the Test-Mode with the following command:
        size_t le = ucReceivedData.size() - 2;

        if (le > 0)
        {
            ret = BufferHelper::getStdString(ucReceivedData);
        }

        try
        {
            getDefaultPCSCReaderCardAdapter()->sendAPDUCommand(0xFF, 0x9A, 0x04, 0x01);
        }
        catch (std::exception&)
        {
        }

        return ret;
    }
Пример #2
0
 std::string ACSACRReaderUnit::getFirmwareVersion()
 {
     std::shared_ptr<ResultChecker> checker = getDefaultPCSCReaderCardAdapter()->getResultChecker();
     getDefaultPCSCReaderCardAdapter()->setResultChecker(std::shared_ptr<ResultChecker>());
     std::vector<unsigned char> res = getDefaultPCSCReaderCardAdapter()->sendAPDUCommand(0xFF, 0x00, 0x48, 0x00, 0x00);
     getDefaultPCSCReaderCardAdapter()->setResultChecker(checker);
     return BufferHelper::getStdString(res);
 }
    void OmnikeyXX21ReaderUnit::changeReaderKey(std::shared_ptr<ReaderMemoryKeyStorage> keystorage, const std::vector<unsigned char>& key)
    {
        EXCEPTION_ASSERT_WITH_LOG(keystorage, std::invalid_argument, "Key storage must be defined.");
        EXCEPTION_ASSERT_WITH_LOG(key.size() > 0, std::invalid_argument, "key cannot be empty.");

        std::shared_ptr<PCSCReaderCardAdapter> rca = getDefaultPCSCReaderCardAdapter();
        //rca.reset(new OmnikeyHIDiClassReaderCardAdapter());
        //rca->setReaderUnit(shared_from_this());

        //setIsSecureConnectionMode(true);
        //rca->initSecureModeSession(0xFF);
        rca->sendAPDUCommand(0x84, 0x82, (keystorage->getVolatile() ? 0x00 : 0x20), keystorage->getKeySlot(), static_cast<unsigned char>(key.size()), key);
        //rca->closeSecureModeSession();
        //setIsSecureConnectionMode(false);
    }