ByteVec EstEidCard::getSignCert() { mManager.writeLog("[%s:%d]", __FUNCTION__, __LINE__); ByteVec tmp; FCI fileInfo; mManager.beginTransaction(mConnection); try { selectMF(true); selectDF(FILEID_APP,true); fileInfo = selectEF(0xDDCE); tmp = readEFAndTruncate(fileInfo.fileLength ); } catch(CardError &e) { if(e.SW1 == 0x69 && e.SW2 == 0x85) //If Invalid condition try again once { tmp.clear(); tmp = readEFAndTruncate(fileInfo.fileLength ); mManager.endTransaction(mConnection); } } mManager.endTransaction(mConnection); return tmp; }
void CipherKeyImpl::getRandomBytes(ByteVec& vec, std::size_t count) { Poco::RandomInputStream random; vec.clear(); vec.reserve(count); for (int i = 0; i < count; ++i) vec.push_back(static_cast<unsigned char>(random.get())); }
MojErr MojBuffer::toByteVec(ByteVec& vecOut) const { vecOut.clear(); for (ChunkList::ConstIterator i = m_chunks.begin(); i != m_chunks.end(); ++i) { const MojByte* base = (i == m_chunks.begin()) ? m_readPos : (*i)->data(); MojErr err = vecOut.append(base, base + (*i)->dataSize()); MojErrCheck(err); } return MojErrNone; }
ByteVec EstEidCard::calcSignSHA512(const ByteVec &hash,KeyType keyId,const PinString &pin,bool withOID) { mManager.writeLog("[%s:%d]", __FUNCTION__, __LINE__); ByteVec tmp; mManager.beginTransaction(mConnection); try { prepareSign_internal(keyId,pin); tmp = calcSign_internal(SHA512,keyId,hash,withOID); } catch(CardError &e) { if(e.SW1 == 0x69 && e.SW2 == 0x85) //If Invalid condition try again once { tmp.clear(); prepareSign_internal(keyId,pin); tmp = calcSign_internal(SHA512,keyId,hash,withOID); } } mManager.endTransaction(mConnection, false); return tmp; }