Exemplo n.º 1
0
	IdentityEx::IdentityEx(const uint8_t * publicKey, const uint8_t * signingKey, SigningKeyType type)
	{	
		memcpy (m_StandardIdentity.publicKey, publicKey, sizeof (m_StandardIdentity.publicKey));
		if (type == SIGNING_KEY_TYPE_ECDSA_SHA256_P256)
		{
			memcpy (m_StandardIdentity.signingKey + 64, signingKey, 64);
			m_StandardIdentity.certificate.type = CERTIFICATE_TYPE_KEY;
			m_ExtendedLen = 4; // 4 bytes extra
			m_StandardIdentity.certificate.length = htobe16 (4); 
			m_ExtendedBuffer = new uint8_t[m_ExtendedLen];
			*(uint16_t *)m_ExtendedBuffer = htobe16 (SIGNING_KEY_TYPE_ECDSA_SHA256_P256);
			*(uint16_t *)(m_ExtendedBuffer + 2) = htobe16 (CRYPTO_KEY_TYPE_ELGAMAL);
			uint8_t buf[DEFAULT_IDENTITY_SIZE + 4];
			ToBuffer (buf, DEFAULT_IDENTITY_SIZE + 4);
			CryptoPP::SHA256().CalculateDigest(m_IdentHash, buf, GetFullLen ());
		}
		else // DSA-SHA1
		{
			memcpy (m_StandardIdentity.signingKey, signingKey, sizeof (m_StandardIdentity.signingKey));
			memset (&m_StandardIdentity.certificate, 0, sizeof (m_StandardIdentity.certificate));
			m_IdentHash = m_StandardIdentity.Hash ();
			m_ExtendedLen = 0;
			m_ExtendedBuffer = nullptr;
		}	
		CreateVerifier ();
	}	
Exemplo n.º 2
0
std::vector<boost::asio::const_buffer> Reply::toBuffers(){
    std::vector<boost::asio::const_buffer> buffers;
    buffers.push_back(ToBuffer(status));
    BOOST_FOREACH(const Header & h, headers) {
        buffers.push_back(boost::asio::buffer(h.name));
        buffers.push_back(boost::asio::buffer(seperators));
        buffers.push_back(boost::asio::buffer(h.value));
        buffers.push_back(boost::asio::buffer(crlf));
    }
Exemplo n.º 3
0
std::vector<boost::asio::const_buffer> Reply::HeaderstoBuffers()
{
    std::vector<boost::asio::const_buffer> buffers;
    buffers.push_back(ToBuffer(status));
    for (std::size_t i = 0; i < headers.size(); ++i)
    {
        Header &current_header = headers[i];
        buffers.push_back(boost::asio::buffer(current_header.name));
        buffers.push_back(boost::asio::buffer(seperators));
        buffers.push_back(boost::asio::buffer(current_header.value));
        buffers.push_back(boost::asio::buffer(crlf));
    }
    buffers.push_back(boost::asio::buffer(crlf));
    return buffers;
}
Exemplo n.º 4
0
std::vector<boost::asio::const_buffer> Reply::toBuffers()
{
    std::vector<boost::asio::const_buffer> buffers;
    buffers.push_back(ToBuffer(status));
    for (const Header &h : headers)
    {
        buffers.push_back(boost::asio::buffer(h.name));
        buffers.push_back(boost::asio::buffer(seperators));
        buffers.push_back(boost::asio::buffer(h.value));
        buffers.push_back(boost::asio::buffer(crlf));
    }
    buffers.push_back(boost::asio::buffer(crlf));
    buffers.push_back(boost::asio::buffer(content));
    return buffers;
}