Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
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()));
}
Ejemplo n.º 3
0
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;
}
Ejemplo n.º 4
0
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;
}