HRESULT CDecoder::ReadHeader(ISequentialInStream *inStream) { Byte header[kHeaderSize]; RINOK(ReadStream_FAIL(inStream, header, kHeaderSize)); _cipher.DecryptHeader(header); return S_OK; }
HRESULT CDecoder::ReadHeader(ISequentialInStream *inStream) { Byte h[kHeaderSize]; RINOK(ReadStream_FAIL(inStream, h, kHeaderSize)); RestoreKeys(); Filter(h, kHeaderSize); return S_OK; }
HRESULT CDecoder::CheckMac(ISequentialInStream *inStream, bool &isOK) { isOK = false; Byte mac1[kMacSize]; RINOK(ReadStream_FAIL(inStream, mac1, kMacSize)); Byte mac2[kMacSize]; _hmac.Final(mac2, kMacSize); isOK = CompareArrays(mac1, mac2, kMacSize); return S_OK; }
HRESULT CDecoder::ReadHeader(ISequentialInStream *inStream) { UInt32 saltSize = _key.GetSaltSize(); UInt32 extraSize = saltSize + kPwdVerifCodeSize; Byte temp[kSaltSizeMax + kPwdVerifCodeSize]; RINOK(ReadStream_FAIL(inStream, temp, extraSize)); UInt32 i; for (i = 0; i < saltSize; i++) _key.Salt[i] = temp[i]; for (i = 0; i < kPwdVerifCodeSize; i++) _pwdVerifFromArchive[i] = temp[saltSize + i]; return S_OK; }
static const char *GetImgExt(ISequentialInStream *stream) { const size_t kHeaderSize = 1 << 10; Byte buf[kHeaderSize]; if (ReadStream_FAIL(stream, buf, kHeaderSize) == S_OK) { if (buf[0x1FE] == 0x55 && buf[0x1FF] == 0xAA) { if (memcmp(buf + 512, k_GDP_Signature, sizeof(k_GDP_Signature)) == 0) return "gpt"; return "mbr"; } } return NULL; }
HRESULT CDecoder::ReadHeader(ISequentialInStream *inStream) { return ReadStream_FAIL(inStream, _header, kHeaderSize); }