Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- bool CCipher::SetUp(bool bPolarity)
- {
- const CryptoPP::SecByteBlock& kShared = m_pkKeyAgreement->GetShared();
- if (kShared.size() < 2)
- {
- return false;
- }
- int32_t iHint0 = kShared.BytePtr()[*(kShared.BytePtr()) % kShared.size()];
- int32_t iHint1 = kShared.BytePtr()[*(kShared.BytePtr() + 1) % kShared.size()];
- BlockCipherAlgorithm* pkDetail0 = BlockCipherAlgorithm::Pick(iHint0);
- BlockCipherAlgorithm* pkDetail1 = BlockCipherAlgorithm::Pick(iHint1);
- uint32_t uKeyLength0 = pkDetail0->GetDefaultKeyLength();
- uint32_t uIvLength0 = pkDetail0->GetBlockSize();
- if (kShared.size() < uKeyLength0 || kShared.size() < uIvLength0)
- {
- delete pkDetail0;
- delete pkDetail1;
- return false;
- }
- uint32_t uKeyLength1 = pkDetail1->GetDefaultKeyLength();
- uint32_t uIvLength1 = pkDetail1->GetBlockSize();
- if (kShared.size() < uKeyLength1 || kShared.size() < uIvLength1)
- {
- delete pkDetail0;
- delete pkDetail1;
- return false;
- }
- CryptoPP::SecByteBlock kKey0(uKeyLength0), kIv0(uIvLength0);
- CryptoPP::SecByteBlock kKey1(uKeyLength1), kIv1(uIvLength1);
- uint32_t uOffset = 0;
- kKey0.Assign(kShared, uKeyLength0);
- uOffset = uKeyLength0;
- uOffset = std::min<uint32_t>(uKeyLength0, kShared.size() - uKeyLength1);
- kKey1.Assign(kShared.BytePtr() + uOffset, uKeyLength1);
- uOffset = kShared.size() - uIvLength0;
- kIv0.Assign(kShared.BytePtr() + uOffset, uIvLength0);
- uOffset = (uOffset < uIvLength1 ? 0 : uOffset - uIvLength1);
- kIv1.Assign(kShared.BytePtr() + uOffset, uIvLength1);
- if (bPolarity)
- {
- m_pkEncoder = pkDetail1->CreateEncoder(kKey1, kKey1.size(), kIv1);
- m_pkDecoder = pkDetail0->CreateDecoder(kKey0, kKey0.size(), kIv0);
- }
- else
- {
- m_pkEncoder = pkDetail0->CreateEncoder(kKey0, kKey0.size(), kIv0);
- m_pkDecoder = pkDetail1->CreateDecoder(kKey1, kKey1.size(), kIv1);
- }
- delete pkDetail0;
- delete pkDetail1;
- set_activated(true);
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement