libaaruformat 1.0
Aaru Data Preservation Suite - Format Library
Loading...
Searching...
No Matches
helpers.c File Reference
#include <aaru.h>
#include <aaruformat.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

Go to the source code of this file.

Functions

int32_t aaruf_get_media_tag_type_for_datatype (const int32_t type)
 Converts an image data type to an Aaru media tag type.
int32_t aaruf_get_datatype_for_media_tag_type (const int32_t tag_type)
 Converts an Aaru media tag type to an image data type.
int32_t aaruf_get_xml_mediatype (const int32_t type)
int compare_extents (const void *a, const void *b)
 Comparison function for sorting DumpExtent arrays by start sector.
void generate_random_bytes (uint8_t *buffer, size_t length)
 Generates cryptographically strong random bytes.

Function Documentation

◆ aaruf_get_datatype_for_media_tag_type()

int32_t aaruf_get_datatype_for_media_tag_type ( const int32_t tag_type)

Converts an Aaru media tag type to an image data type.

Maps the given Aaru media tag type to the corresponding image data type. This is the inverse function of aaruf_get_media_tag_type_for_datatype.

Parameters
tag_typeAaru media tag type identifier.
Returns
Corresponding image data type, or -1 if not found.

Definition at line 223 of file helpers.c.

References AARU_CALL, AARU_LOCAL, aaruf_get_datatype_for_media_tag_type(), kDataTypeAacsDataKeys, kDataTypeAacsLbaExtents, kDataTypeAacsMediaIdentifier, kDataTypeAacsMediaKey, kDataTypeAacsMkb, kDataTypeAacsSerialNumber, kDataTypeAacsVolumeIdentifier, kDataTypeAacsVolumeUniqueKey, kDataTypeAtaIdentify, kDataTypeAtapiIdentify, kDataTypeBlurayBca, kDataTypeBlurayCartridgeStatus, kDataTypeBlurayDds, kDataTypeBlurayDi, kDataTypeBluraySpareArea, kDataTypeCdAtip, kDataTypeCdFirstTrackPregap, kDataTypeCdLeadIn, kDataTypeCdLeadOut, kDataTypeCdMcn, kDataTypeCdPma, kDataTypeCdText, kDataTypeCdToc, kDataTypeCprmMkb, kDataTypeDiscControlBlock, kDataTypeDvdAdip, kDataTypeDvdBca, kDataTypeDvdCmi, kDataTypeDvdDiscKey, kDataTypeDvdDiscKeyDecrypted, kDataTypeDvddlJumpIntervalSize, kDataTypeDvddlLayerCapacity, kDataTypeDvddlManualLayerJumpLba, kDataTypeDvddlMiddleZoneAddress, kDataTypeDvdDmi, kDataTypeDvdMediaIdentifier, kDataTypeDvdMkb, kDataTypeDvdPfi, kDataTypeDvdPfi2ndLayer, kDataTypeDvdRamDds, kDataTypeDvdRamMediumStatus, kDataTypeDvdRamSpareArea, kDataTypeDvdrMediaIdentifier, kDataTypeDvdrPfi, kDataTypeDvdrPreRecordedInfo, kDataTypeDvdrRmd, kDataTypeExtendedCsd, kDataTypeFloppyLeadOut, kDataTypeFloppyWriteProtect, kDataTypeFullToc, kDataTypeHddvdCpi, kDataTypeHddvdMediumStatus, kDataTypeHybridRecognizedLayers, kDataTypeMmcCid, kDataTypeMmcCsd, kDataTypeMmcDiscInformation, kDataTypeMmcOcr, kDataTypeMmcPowResourcesInformation, kDataTypeMmcTrackResourcesInformation, kDataTypeMmcWriteProtection, kDataTypeNgcwJunkMap, kDataTypePcmciaCis, kDataTypePs3Data1, kDataTypePs3Data2, kDataTypePs3DiscKey, kDataTypePs3EncryptionMap, kDataTypePs3Pic, kDataTypeScsiInquiry, kDataTypeScsiModePage2A, kDataTypeScsiModeSense10, kDataTypeScsiModeSense6, kDataTypeSdCid, kDataTypeSdCsd, kDataTypeSdOcr, kDataTypeSdScr, kDataTypeSessionInfo, kDataTypeUsbDescriptors, kDataTypeWiiPartitionKeyMap, kDataTypeWiiUDiscKey, kDataTypeWiiUPartitionKeyMap, kDataTypeXboxDmi, kDataTypeXboxPfi, kDataTypeXboxSecuritySector, kMediaTagAacsDataKeys, kMediaTagAacsLbaExtents, kMediaTagAacsMediaIdentifier, kMediaTagAacsMediaKey, kMediaTagAacsMkb, kMediaTagAacsSerialNumber, kMediaTagAacsVolumeIdentifier, kMediaTagAacsVolumeUniqueKey, kMediaTagAtaIdentify, kMediaTagAtapiIdentify, kMediaTagBlurayBca, kMediaTagBlurayCartridgeStatus, kMediaTagBlurayDds, kMediaTagBlurayDi, kMediaTagBluraySpareArea, kMediaTagCdAtip, kMediaTagCdFirstTrackPregap, kMediaTagCdLeadIn, kMediaTagCdLeadOut, kMediaTagCdMcn, kMediaTagCdPma, kMediaTagCdText, kMediaTagCdToc, kMediaTagCprmMkb, kMediaTagDiscControlBlock, kMediaTagDvdAdip, kMediaTagDvdBca, kMediaTagDvdCmi, kMediaTagDvdDiscKey, kMediaTagDvdDiscKeyDecrypted, kMediaTagDvddlJumpIntervalSize, kMediaTagDvddlLayerCapacity, kMediaTagDvddlManualLayerJumpLba, kMediaTagDvddlMiddleZoneAddress, kMediaTagDvdDmi, kMediaTagDvdMediaIdentifier, kMediaTagDvdMkb, kMediaTagDvdPfi, kMediaTagDvdPfi2ndLayer, kMediaTagDvdRamDds, kMediaTagDvdRamMediumStatus, kMediaTagDvdRamSpareArea, kMediaTagDvdrMediaIdentifier, kMediaTagDvdrPfi, kMediaTagDvdrPreRecordedInfo, kMediaTagDvdrRmd, kMediaTagExtendedCsd, kMediaTagFloppyLeadOut, kMediaTagFloppyWriteProtect, kMediaTagFullToc, kMediaTagHddvdCpi, kMediaTagHddvdMediumStatus, kMediaTagHybridRecognizedLayers, kMediaTagMmcCid, kMediaTagMmcCsd, kMediaTagMmcDiscInformation, kMediaTagMmcOcr, kMediaTagMmcPowResourcesInformation, kMediaTagMmcTrackResourcesInformation, kMediaTagMmcWriteProtection, kMediaTagNgcwJunkMap, kMediaTagPcmciaCis, kMediaTagPs3Data1, kMediaTagPs3Data2, kMediaTagPs3DiscKey, kMediaTagPs3EncryptionMap, kMediaTagPs3Pic, kMediaTagScsiInquiry, kMediaTagScsiModePage2A, kMediaTagScsiModeSense10, kMediaTagScsiModeSense6, kMediaTagSdCid, kMediaTagSdCsd, kMediaTagSdOcr, kMediaTagSdScr, kMediaTagSessionInfo, kMediaTagUsbDescriptors, kMediaTagWiiPartitionKeyMap, kMediaTagWiiUDiscKey, kMediaTagWiiUPartitionKeyMap, kMediaTagXboxDmi, kMediaTagXboxPfi, and kMediaTagXboxSecuritySector.

Referenced by aaruf_get_datatype_for_media_tag_type(), and write_media_tags().

◆ aaruf_get_media_tag_type_for_datatype()

int32_t aaruf_get_media_tag_type_for_datatype ( const int32_t type)

Converts an image data type to an Aaru media tag type.

Maps the given image data type to the corresponding Aaru media tag type.

Parameters
typeImage data type identifier.
Returns
Corresponding Aaru media tag type, or -1 if not found.

Definition at line 39 of file helpers.c.

References AARU_CALL, AARU_LOCAL, aaruf_get_media_tag_type_for_datatype(), kDataTypeAacsDataKeys, kDataTypeAacsLbaExtents, kDataTypeAacsMediaIdentifier, kDataTypeAacsMediaKey, kDataTypeAacsMkb, kDataTypeAacsSerialNumber, kDataTypeAacsVolumeIdentifier, kDataTypeAacsVolumeUniqueKey, kDataTypeAtaIdentify, kDataTypeAtapiIdentify, kDataTypeBlurayBca, kDataTypeBlurayCartridgeStatus, kDataTypeBlurayDds, kDataTypeBlurayDi, kDataTypeBluraySpareArea, kDataTypeCdAtip, kDataTypeCdFirstTrackPregap, kDataTypeCdLeadIn, kDataTypeCdLeadOut, kDataTypeCdMcn, kDataTypeCdPma, kDataTypeCdText, kDataTypeCdToc, kDataTypeCprmMkb, kDataTypeDiscControlBlock, kDataTypeDvdAdip, kDataTypeDvdBca, kDataTypeDvdCmi, kDataTypeDvdDiscKey, kDataTypeDvdDiscKeyDecrypted, kDataTypeDvddlJumpIntervalSize, kDataTypeDvddlLayerCapacity, kDataTypeDvddlManualLayerJumpLba, kDataTypeDvddlMiddleZoneAddress, kDataTypeDvdDmi, kDataTypeDvdMediaIdentifier, kDataTypeDvdMkb, kDataTypeDvdPfi, kDataTypeDvdPfi2ndLayer, kDataTypeDvdRamDds, kDataTypeDvdRamMediumStatus, kDataTypeDvdRamSpareArea, kDataTypeDvdrMediaIdentifier, kDataTypeDvdrPfi, kDataTypeDvdrPreRecordedInfo, kDataTypeDvdrRmd, kDataTypeExtendedCsd, kDataTypeFloppyLeadOut, kDataTypeFloppyWriteProtect, kDataTypeFullToc, kDataTypeHddvdCpi, kDataTypeHddvdMediumStatus, kDataTypeHybridRecognizedLayers, kDataTypeMmcCid, kDataTypeMmcCsd, kDataTypeMmcDiscInformation, kDataTypeMmcOcr, kDataTypeMmcPowResourcesInformation, kDataTypeMmcTrackResourcesInformation, kDataTypeMmcWriteProtection, kDataTypeNgcwJunkMap, kDataTypePcmciaCis, kDataTypePs3Data1, kDataTypePs3Data2, kDataTypePs3DiscKey, kDataTypePs3EncryptionMap, kDataTypePs3Pic, kDataTypeScsiInquiry, kDataTypeScsiModePage2A, kDataTypeScsiModeSense10, kDataTypeScsiModeSense6, kDataTypeSdCid, kDataTypeSdCsd, kDataTypeSdOcr, kDataTypeSdScr, kDataTypeSessionInfo, kDataTypeUsbDescriptors, kDataTypeWiiPartitionKeyMap, kDataTypeWiiUDiscKey, kDataTypeWiiUPartitionKeyMap, kDataTypeXboxDmi, kDataTypeXboxPfi, kDataTypeXboxSecuritySector, kMediaTagAacsDataKeys, kMediaTagAacsLbaExtents, kMediaTagAacsMediaIdentifier, kMediaTagAacsMediaKey, kMediaTagAacsMkb, kMediaTagAacsSerialNumber, kMediaTagAacsVolumeIdentifier, kMediaTagAacsVolumeUniqueKey, kMediaTagAtaIdentify, kMediaTagAtapiIdentify, kMediaTagBlurayBca, kMediaTagBlurayCartridgeStatus, kMediaTagBlurayDds, kMediaTagBlurayDi, kMediaTagBluraySpareArea, kMediaTagCdAtip, kMediaTagCdFirstTrackPregap, kMediaTagCdLeadIn, kMediaTagCdLeadOut, kMediaTagCdMcn, kMediaTagCdPma, kMediaTagCdText, kMediaTagCdToc, kMediaTagCprmMkb, kMediaTagDiscControlBlock, kMediaTagDvdAdip, kMediaTagDvdBca, kMediaTagDvdCmi, kMediaTagDvdDiscKey, kMediaTagDvdDiscKeyDecrypted, kMediaTagDvddlJumpIntervalSize, kMediaTagDvddlLayerCapacity, kMediaTagDvddlManualLayerJumpLba, kMediaTagDvddlMiddleZoneAddress, kMediaTagDvdDmi, kMediaTagDvdMediaIdentifier, kMediaTagDvdMkb, kMediaTagDvdPfi, kMediaTagDvdPfi2ndLayer, kMediaTagDvdRamDds, kMediaTagDvdRamMediumStatus, kMediaTagDvdRamSpareArea, kMediaTagDvdrMediaIdentifier, kMediaTagDvdrPfi, kMediaTagDvdrPreRecordedInfo, kMediaTagDvdrRmd, kMediaTagExtendedCsd, kMediaTagFloppyLeadOut, kMediaTagFloppyWriteProtect, kMediaTagFullToc, kMediaTagHddvdCpi, kMediaTagHddvdMediumStatus, kMediaTagHybridRecognizedLayers, kMediaTagMmcCid, kMediaTagMmcCsd, kMediaTagMmcDiscInformation, kMediaTagMmcOcr, kMediaTagMmcPowResourcesInformation, kMediaTagMmcTrackResourcesInformation, kMediaTagMmcWriteProtection, kMediaTagNgcwJunkMap, kMediaTagPcmciaCis, kMediaTagPs3Data1, kMediaTagPs3Data2, kMediaTagPs3DiscKey, kMediaTagPs3EncryptionMap, kMediaTagPs3Pic, kMediaTagScsiInquiry, kMediaTagScsiModePage2A, kMediaTagScsiModeSense10, kMediaTagScsiModeSense6, kMediaTagSdCid, kMediaTagSdCsd, kMediaTagSdOcr, kMediaTagSdScr, kMediaTagSessionInfo, kMediaTagUsbDescriptors, kMediaTagWiiPartitionKeyMap, kMediaTagWiiUDiscKey, kMediaTagWiiUPartitionKeyMap, kMediaTagXboxDmi, kMediaTagXboxPfi, and kMediaTagXboxSecuritySector.

Referenced by aaruf_get_media_tag_type_for_datatype(), and process_data_block().

◆ aaruf_get_xml_mediatype()

◆ compare_extents()

int compare_extents ( const void * a,
const void * b )

Comparison function for sorting DumpExtent arrays by start sector.

This function is used by qsort() to order dump extents in ascending order based on their start sector values. Extents with lower start sectors will appear first in the sorted array. This ordering is important for efficient extent lookup and validation during image operations.

Parameters
aPointer to the first DumpExtent to compare.
bPointer to the second DumpExtent to compare.
Returns
Negative value if a->start < b->start, zero if equal, positive if a->start > b->start.

Definition at line 513 of file helpers.c.

References compare_extents(), and DumpExtent::start.

Referenced by aaruf_set_dumphw(), compare_extents(), and process_dumphw_block().

◆ generate_random_bytes()

void generate_random_bytes ( uint8_t * buffer,
size_t length )

Generates cryptographically strong random bytes.

This function fills the provided buffer with random bytes using platform-appropriate cryptographic random number generators. On Unix-like systems (including macOS and Linux), it reads from /dev/urandom. On Windows, it uses CryptGenRandom. If the platform-specific methods fail, it falls back to a time-seeded pseudo-random generator.

Parameters
bufferPointer to the buffer to fill with random bytes.
lengthNumber of random bytes to generate.

Definition at line 534 of file helpers.c.

References generate_random_bytes().

Referenced by aaruf_create(), and generate_random_bytes().