Павел Анфимов, вот мой код:
#include "stdafx.h"
#include <common.h>
#include <codecvt>
using namespace std;
using namespace rutoken::pkicore;
int main()
{
try {
cout << boolalpha;
/**********************************************************************
* Инициализируем pkicore, передав путь до директории с библиотекой *
* rtPKCS11ECP. *
**********************************************************************/
rutoken::pkicore::initialize(".");
SCOPE_EXIT() {
/**********************************************************************
* Завершаем работу с pkicore при выходе из текущего блока. *
**********************************************************************/
rutoken::pkicore::deinitialize();
};
/**********************************************************************
* Получаем список подключенных устройств и продолжаем работу с первым *
* доступным устройством. *
**********************************************************************/
auto devices = Pkcs11Device::enumerate();
if (devices.empty()) {
throw runtime_error("There must be at least one device connected");
}
auto device = move(devices.front());
/**********************************************************************
* Получаем список сертификатов на устройстве. *
**********************************************************************/
auto certs = device.enumerateCerts();
cout << certs.size() << " certificates have been found\n" << endl;
/**********************************************************************
* Выводим серийные номера сертификатов. *
**********************************************************************/
for (size_t i = 0; i != certs.size(); ++i) {
auto& cert = certs[i];
vector<uint8_t> v_ID = cert.getSerialNumber();
string ID(v_ID.begin(), v_ID.end());
cout << "Serial Number: " << ID << "\n\n\n";
}
}
catch (const exception& e) {
cerr << e.what() << endl;
system("pause");
return 1;
}
system("pause");
return 0;
}
На выходе символы в какой-то непонятной для меня кодировке. Например, получил "цлч\x17з\f\v/" вместо "F6 EB F7 17 E7 0C 0B 2F"