Bytearray Operations
Module Functionality
Provides bytearray handling including: conversion between raw bytes and hex-encoded strings, reversing the endianness of a bytearray, and a constant-time method of comparing buffers.
Functions
-
bool cryptx_bytes_compare(const void *buf1, const void *buf2, size_t len)
Compare two bytearrays using a constant-time algorithm.
- Parameters
buf1 – Pointer to first buffer to compare.
buf2 – Pointer to second buffer to compare.
len – Number of bytes to compare.
- Returns
true if the buffers are equal, false if not equal.
cryptx_bytes_compare(buf1, buf2, bytes_to_compare);
-
bool cryptx_bytes_tostring(const void *buf, size_t len, char *hexstr)
Convert a bytearray to its hexstring representation.
- Parameters
buf – Pointer to bytearray to convert.
len – Byte length of digest.
hexstr – Buffer to write the output hex string to.
// assume `arr` is a bytearray
// allocate buffer for string twice length of bytearray
// plus an addition byte for null termination
char hexstr[sizeof(arr) * 2 + 1];
cryptx_bytes_tostring(arr, sizeof(arr), hexstr);
-
bool cryptx_bytes_rcopy(void *dest, const void *src, size_t len)
Copies len bytes from src to dest while reversing the byte order.
- Parameters
dest – Pointer to a buffer to write bytes.
src – Pointer to a buffer to read bytes from.
len – Number of bytes to read.
-
bool cryptx_bytes_reverse(void *buf, size_t len)
Reverses the byte order of a buffer in-place.
- Parameters
buf – Pointer to buffer to reverse.
len – Length of the buffer.
// assume `arr1` is a bytearray
// assume `arr2` is another reserved buffer of same length
// makes a copy of arr2 with byteorder reversed
cryptx_bytes_rcopy(arr2, arr1, sizeof(arr2));
// reverses arr1 in-place
cryptx_bytes_reverse(arr1, sizeof(arr1));