diff --git a/TransitTunnel.cpp b/TransitTunnel.cpp index 146b6572..65b0be4f 100644 --- a/TransitTunnel.cpp +++ b/TransitTunnel.cpp @@ -17,20 +17,12 @@ namespace tunnel m_TunnelID (receiveTunnelID), m_NextTunnelID (nextTunnelID), m_NextIdent (nextIdent), m_NumTransmittedBytes (0) { - m_ECBEncryption.SetKey (ivKey); - m_CBCEncryption.SetKey (layerKey); + m_Encryption.SetKeys (layerKey, ivKey); } void TransitTunnel::EncryptTunnelMsg (I2NPMessage * tunnelMsg) - { - uint8_t * payload = tunnelMsg->GetPayload () + 4; - - m_ECBEncryption.Encrypt ((i2p::crypto::ChipherBlock *)payload, (i2p::crypto::ChipherBlock *)payload); // iv - - 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 + { + m_Encryption.Encrypt (tunnelMsg->GetPayload () + 4); } void TransitTunnel::HandleTunnelDataMsg (i2p::I2NPMessage * tunnelMsg) diff --git a/TransitTunnel.h b/TransitTunnel.h index a85c2f2c..ebd7ffd5 100644 --- a/TransitTunnel.h +++ b/TransitTunnel.h @@ -37,8 +37,7 @@ namespace tunnel i2p::data::IdentHash m_NextIdent; size_t m_NumTransmittedBytes; - i2p::crypto::ECBEncryption m_ECBEncryption; - i2p::crypto::CBCEncryption m_CBCEncryption; + i2p::crypto::TunnelEncryption m_Encryption; }; class TransitTunnelGateway: public TransitTunnel diff --git a/aes.h b/aes.h index 541baf4e..46500d7f 100644 --- a/aes.h +++ b/aes.h @@ -143,7 +143,7 @@ namespace crypto { public: - void SetKeys (uint8_t * layerKey, uint8_t * ivKey) + void SetKeys (const uint8_t * layerKey, const uint8_t * ivKey) { m_LayerEncryption.SetKey (layerKey); m_IVEncryption.SetKey (ivKey); @@ -165,7 +165,7 @@ namespace crypto { public: - void SetKeys (uint8_t * layerKey, uint8_t * ivKey) + void SetKeys (const uint8_t * layerKey, const uint8_t * ivKey) { m_LayerDecryption.SetKey (layerKey); m_IVDecryption.SetKey (ivKey);