|
|
1.1 root 1: /*
2: Copyright (c) 2008 TrueCrypt Foundation. All rights reserved.
3:
4: Governed by the TrueCrypt License 2.4 the full text of which is contained
5: in the file License.txt included in TrueCrypt binary and source code
6: distribution packages.
7: */
8:
9: #include "Crypto.h"
10: #include "Platform.h"
11: #include "Bios.h"
12: #include "BootConfig.h"
13: #include "BootDebug.h"
14: #include "BootDiskIo.h"
15: #include "BootEncryptedIo.h"
16:
17:
18: BiosResult ReadEncryptedSectors (uint16 destSegment, uint16 destOffset, byte drive, uint64 sector, uint16 sectorCount)
19: {
20: BiosResult result;
21: byte sectorBuf[TC_LB_SIZE];
22:
23: while (sectorCount-- > 0)
24: {
25: result = ReadSectors (sectorBuf, drive, sector, 1);
26:
27: if (result != BiosResultSuccess)
28: return result;
29:
30: if (drive == EncryptedVirtualPartition.Drive && sector >= EncryptedVirtualPartition.StartSector && sector <= EncryptedVirtualPartition.EndSector)
31: {
32: DecryptDataUnits (sectorBuf, §or, 1, BootCryptoInfo);
33: }
34:
35: CopyMemory (sectorBuf, destSegment, destOffset, sizeof (sectorBuf));
36:
37: ++sector;
38: destOffset += sizeof (sectorBuf);
39: }
40:
41: return result;
42: }
43:
44:
45: BiosResult WriteEncryptedSectors (uint16 sourceSegment, uint16 sourceOffset, byte drive, uint64 sector, uint16 sectorCount)
46: {
47: BiosResult result;
48: byte sectorBuf[TC_LB_SIZE];
49:
50: while (sectorCount-- > 0)
51: {
52: CopyMemory (sourceSegment, sourceOffset, sectorBuf, sizeof (sectorBuf));
53:
54: if (drive == EncryptedVirtualPartition.Drive && sector >= EncryptedVirtualPartition.StartSector && sector <= EncryptedVirtualPartition.EndSector)
55: {
56: EncryptDataUnits (sectorBuf, §or, 1, BootCryptoInfo);
57: }
58:
59: result = WriteSectors (sectorBuf, drive, sector, 1);
60:
61: if (result != BiosResultSuccess)
62: return result;
63:
64: ++sector;
65: sourceOffset += sizeof (sectorBuf);
66: }
67:
68: return result;
69: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.