mirror of
https://github.com/veracrypt/VeraCrypt.git
synced 2025-11-12 03:18:26 -06:00
Windows: Finalize implementation of the new volume ID mechanism. Use SHA-256 instead of SHA-512 to compute volume ID to reduce string size and make more convenient to use.
This commit is contained in:
@@ -1049,7 +1049,7 @@ NTSTATUS ProcessMainDeviceControlIrp (PDEVICE_OBJECT DeviceObject, PEXTENSION Ex
|
||||
if (opentest->bMatchVolumeID)
|
||||
{
|
||||
int volumeType;
|
||||
BYTE volumeID[SHA512_DIGEST_SIZE];
|
||||
BYTE volumeID[VOLUME_ID_SIZE];
|
||||
|
||||
// Go through all volume types (e.g., normal, hidden)
|
||||
for (volumeType = TC_VOLUME_TYPE_NORMAL;
|
||||
@@ -1069,7 +1069,7 @@ NTSTATUS ProcessMainDeviceControlIrp (PDEVICE_OBJECT DeviceObject, PEXTENSION Ex
|
||||
break;
|
||||
}
|
||||
|
||||
ntStatus = ZwReadFile (Extension->hDeviceFile,
|
||||
ntStatus = ZwReadFile (NtFileHandle,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
@@ -1081,10 +1081,10 @@ NTSTATUS ProcessMainDeviceControlIrp (PDEVICE_OBJECT DeviceObject, PEXTENSION Ex
|
||||
|
||||
if (NT_SUCCESS (ntStatus))
|
||||
{
|
||||
/* compute the ID of this volume: SHA-512 of the effective header */
|
||||
sha512 (volumeID, readBuffer, TC_VOLUME_HEADER_EFFECTIVE_SIZE);
|
||||
/* compute the ID of this volume: SHA-256 of the effective header */
|
||||
sha256 (volumeID, readBuffer, TC_VOLUME_HEADER_EFFECTIVE_SIZE);
|
||||
|
||||
if (0 == memcmp (volumeID, opentest->volumeID, SHA512_DIGEST_SIZE))
|
||||
if (0 == memcmp (volumeID, opentest->volumeID, VOLUME_ID_SIZE))
|
||||
{
|
||||
opentest->VolumeIDMatched = TRUE;
|
||||
break;
|
||||
@@ -1265,7 +1265,7 @@ NTSTATUS ProcessMainDeviceControlIrp (PDEVICE_OBJECT DeviceObject, PEXTENSION Ex
|
||||
list->ulMountedDrives |= (1 << ListExtension->nDosDriveNo);
|
||||
RtlStringCbCopyW (list->wszVolume[ListExtension->nDosDriveNo], sizeof(list->wszVolume[ListExtension->nDosDriveNo]),ListExtension->wszVolume);
|
||||
RtlStringCbCopyW (list->wszLabel[ListExtension->nDosDriveNo], sizeof(list->wszLabel[ListExtension->nDosDriveNo]),ListExtension->wszLabel);
|
||||
memcpy (list->volumeID[ListExtension->nDosDriveNo], ListExtension->volumeID, SHA512_DIGEST_SIZE);
|
||||
memcpy (list->volumeID[ListExtension->nDosDriveNo], ListExtension->volumeID, VOLUME_ID_SIZE);
|
||||
list->diskLength[ListExtension->nDosDriveNo] = ListExtension->DiskLength;
|
||||
list->ea[ListExtension->nDosDriveNo] = ListExtension->cryptoInfo->ea;
|
||||
if (ListExtension->cryptoInfo->hiddenVolume)
|
||||
@@ -1317,7 +1317,7 @@ NTSTATUS ProcessMainDeviceControlIrp (PDEVICE_OBJECT DeviceObject, PEXTENSION Ex
|
||||
prop->uniqueId = ListExtension->UniqueVolumeId;
|
||||
RtlStringCbCopyW (prop->wszVolume, sizeof(prop->wszVolume),ListExtension->wszVolume);
|
||||
RtlStringCbCopyW (prop->wszLabel, sizeof(prop->wszLabel),ListExtension->wszLabel);
|
||||
memcpy (prop->volumeID, ListExtension->volumeID, SHA512_DIGEST_SIZE);
|
||||
memcpy (prop->volumeID, ListExtension->volumeID, VOLUME_ID_SIZE);
|
||||
prop->bDriverSetLabel = ListExtension->bDriverSetLabel;
|
||||
prop->diskLength = ListExtension->DiskLength;
|
||||
prop->ea = ListExtension->cryptoInfo->ea;
|
||||
|
||||
@@ -81,7 +81,7 @@ typedef struct EXTENSION
|
||||
BOOL bIsNTFS;
|
||||
BOOL bDriverSetLabel;
|
||||
|
||||
unsigned char volumeID[SHA512_DIGESTSIZE];
|
||||
unsigned char volumeID[VOLUME_ID_SIZE];
|
||||
|
||||
LARGE_INTEGER fileCreationTime;
|
||||
LARGE_INTEGER fileLastAccessTime;
|
||||
|
||||
@@ -518,7 +518,7 @@ NTSTATUS TCOpenVolume (PDEVICE_OBJECT DeviceObject,
|
||||
Extension->cryptoInfo->bPartitionInInactiveSysEncScope = mount->bPartitionInInactiveSysEncScope;
|
||||
|
||||
/* compute the ID of this volume: SHA-512 of the effective header */
|
||||
sha512 (Extension->volumeID, readBuffer, TC_VOLUME_HEADER_EFFECTIVE_SIZE);
|
||||
sha256 (Extension->volumeID, readBuffer, TC_VOLUME_HEADER_EFFECTIVE_SIZE);
|
||||
|
||||
if (volumeType == TC_VOLUME_TYPE_NORMAL)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user