Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/kornelski/7z.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'CPP/7zip/Crypto/WzAES/WzAES.cpp')
-rwxr-xr-xCPP/7zip/Crypto/WzAES/WzAES.cpp37
1 files changed, 12 insertions, 25 deletions
diff --git a/CPP/7zip/Crypto/WzAES/WzAES.cpp b/CPP/7zip/Crypto/WzAES/WzAES.cpp
index 106f2d94..704ea9fc 100755
--- a/CPP/7zip/Crypto/WzAES/WzAES.cpp
+++ b/CPP/7zip/Crypto/WzAES/WzAES.cpp
@@ -47,12 +47,12 @@ void CBaseCoder::EncryptData(Byte *data, UInt32 size)
{
if (++_counter[0] == 0)
_counter[1]++;
- UInt32 outBuf[4];
- AesEncode32(_counter, outBuf, Aes.rkey, Aes.numRounds2);
- SetUi32(_buffer, outBuf[0]);
- SetUi32(_buffer + 4, outBuf[1]);
- SetUi32(_buffer + 8, outBuf[2]);
- SetUi32(_buffer + 12, outBuf[3]);
+ UInt32 temp[4];
+ Aes_Encode32(&Aes, temp, _counter);
+ SetUi32(_buffer, temp[0]);
+ SetUi32(_buffer + 4, temp[1]);
+ SetUi32(_buffer + 8, temp[2]);
+ SetUi32(_buffer + 12, temp[3]);
pos = 0;
}
*data++ ^= _buffer[pos++];
@@ -115,17 +115,10 @@ STDMETHODIMP CBaseCoder::Init()
for (int i = 0; i < 4; i++)
_counter[i] = 0;
- AesSetKeyEncode(&Aes, buf, keySize);
+ Aes_SetKeyEncode(&Aes, buf, keySize);
return S_OK;
}
-static HRESULT SafeWrite(ISequentialOutStream *outStream, const Byte *data, UInt32 size)
-{
- UInt32 processedSize;
- RINOK(WriteStream(outStream, data, size, &processedSize));
- return ((processedSize == size) ? S_OK : E_FAIL);
-}
-
/*
STDMETHODIMP CEncoder::WriteCoderProperties(ISequentialOutStream *outStream)
{
@@ -139,15 +132,15 @@ HRESULT CEncoder::WriteHeader(ISequentialOutStream *outStream)
UInt32 saltSize = _key.GetSaltSize();
g_RandomGenerator.Generate(_key.Salt, saltSize);
Init();
- RINOK(SafeWrite(outStream, _key.Salt, saltSize));
- return SafeWrite(outStream, _key.PwdVerifComputed, kPwdVerifCodeSize);
+ RINOK(WriteStream(outStream, _key.Salt, saltSize));
+ return WriteStream(outStream, _key.PwdVerifComputed, kPwdVerifCodeSize);
}
HRESULT CEncoder::WriteFooter(ISequentialOutStream *outStream)
{
Byte mac[kMacSize];
_hmac.Final(mac, kMacSize);
- return SafeWrite(outStream, mac, kMacSize);
+ return WriteStream(outStream, mac, kMacSize);
}
STDMETHODIMP CDecoder::SetDecoderProperties2(const Byte *data, UInt32 size)
@@ -167,10 +160,7 @@ HRESULT CDecoder::ReadHeader(ISequentialInStream *inStream)
UInt32 saltSize = _key.GetSaltSize();
UInt32 extraSize = saltSize + kPwdVerifCodeSize;
Byte temp[kSaltSizeMax + kPwdVerifCodeSize];
- UInt32 processedSize;
- RINOK(ReadStream(inStream, temp, extraSize, &processedSize));
- if (processedSize != extraSize)
- return E_FAIL;
+ RINOK(ReadStream_FAIL(inStream, temp, extraSize));
UInt32 i;
for (i = 0; i < saltSize; i++)
_key.Salt[i] = temp[i];
@@ -195,11 +185,8 @@ bool CDecoder::CheckPasswordVerifyCode()
HRESULT CDecoder::CheckMac(ISequentialInStream *inStream, bool &isOK)
{
isOK = false;
- UInt32 processedSize;
Byte mac1[kMacSize];
- RINOK(ReadStream(inStream, mac1, kMacSize, &processedSize));
- if (processedSize != kMacSize)
- return E_FAIL;
+ RINOK(ReadStream_FAIL(inStream, mac1, kMacSize));
Byte mac2[kMacSize];
_hmac.Final(mac2, kMacSize);
isOK = CompareArrays(mac1, mac2, kMacSize);