Павел Анфимов, вот мой код:
#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"