Example #1
0
// Reads a key data from a stream 
PIStream &Key::operator<<(PIStream &in)
{
	// Read packet header
	PacketHeader header;
	in >> header;
	if (!header.valid()) {
		throw "Invalid packet header";
	}
	if (header.type() != PacketHeader::TYPE_SECRET_KEY) {
		throw Utils::strprintf("Invalid packet type %d (not a secret key)", header.type());
	}
	uint32_t headerOff = in.pos();

	// Read public key
	in >> m_version;
	if (m_version < 2 || 4 < m_version) {
		throw Utils::strprintf("Unspported key version %d", m_version);
	}
	in >> m_time;
	if (m_version < 4) {
		in >> m_expire;
	}