diff --git a/TransitTunnel.cpp b/TransitTunnel.cpp index a96f3d05..146b6572 100644 --- a/TransitTunnel.cpp +++ b/TransitTunnel.cpp @@ -17,22 +17,20 @@ namespace tunnel m_TunnelID (receiveTunnelID), m_NextTunnelID (nextTunnelID), m_NextIdent (nextIdent), m_NumTransmittedBytes (0) { - memcpy (m_LayerKey, layerKey, 32); - memcpy (m_IVKey, ivKey, 32); + m_ECBEncryption.SetKey (ivKey); + m_CBCEncryption.SetKey (layerKey); } void TransitTunnel::EncryptTunnelMsg (I2NPMessage * tunnelMsg) { uint8_t * payload = tunnelMsg->GetPayload () + 4; - m_ECBEncryption.SetKey (m_IVKey, 32); - m_ECBEncryption.ProcessData(payload, payload, 16); // iv - - m_CBCEncryption.SetKeyWithIV (m_LayerKey, 32, payload); - m_CBCEncryption.ProcessData(payload + 16, payload + 16, TUNNEL_DATA_ENCRYPTED_SIZE); // payload + + m_ECBEncryption.Encrypt ((i2p::crypto::ChipherBlock *)payload, (i2p::crypto::ChipherBlock *)payload); // iv - m_ECBEncryption.SetKey (m_IVKey, 32); - m_ECBEncryption.ProcessData(payload, payload, 16); // double iv encryption + m_CBCEncryption.SetIV (payload); + m_CBCEncryption.Encrypt (payload + 16, TUNNEL_DATA_ENCRYPTED_SIZE, payload + 16); // payload + m_ECBEncryption.Encrypt((i2p::crypto::ChipherBlock *)payload, (i2p::crypto::ChipherBlock *)payload); // double iv encryption } void TransitTunnel::HandleTunnelDataMsg (i2p::I2NPMessage * tunnelMsg) diff --git a/TransitTunnel.h b/TransitTunnel.h index feeeaa58..a85c2f2c 100644 --- a/TransitTunnel.h +++ b/TransitTunnel.h @@ -2,8 +2,7 @@ #define TRANSIT_TUNNEL_H__ #include -#include -#include +#include "aes.h" #include "I2NPProtocol.h" #include "TunnelEndpoint.h" #include "TunnelGateway.h" @@ -36,12 +35,10 @@ namespace tunnel uint32_t m_TunnelID, m_NextTunnelID; i2p::data::IdentHash m_NextIdent; - uint8_t m_LayerKey[32]; - uint8_t m_IVKey[32]; size_t m_NumTransmittedBytes; - CryptoPP::ECB_Mode::Encryption m_ECBEncryption; - CryptoPP::CBC_Mode::Encryption m_CBCEncryption; + i2p::crypto::ECBEncryption m_ECBEncryption; + i2p::crypto::CBCEncryption m_CBCEncryption; }; class TransitTunnelGateway: public TransitTunnel