// 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; }