summaryrefslogtreecommitdiff
path: root/src/crypto.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/crypto.c')
-rw-r--r--src/crypto.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/crypto.c b/src/crypto.c
index 99e9f08..039be0a 100644
--- a/src/crypto.c
+++ b/src/crypto.c
@@ -297,3 +297,32 @@ sign_bct(build_image_context *context,
free(hash_buffer);
return e;
}
+
+/*
+ * reverse_byte_order
+ *
+ * Reverse the order of bytes pointed by 'in' and place the results
+ * to location pointed by 'out'. If 'out' is the same as 'in', then
+ * order of bytes pointed by 'in' is reversed.
+ */
+void
+reverse_byte_order(
+ u_int8_t *out,
+ const u_int8_t *in,
+ const u_int32_t size)
+{
+ u_int32_t i, j;
+ u_int8_t b1, b2;
+
+ for (i = 0; i < size / 2; i++) {
+ j = size - 1 - i;
+ b1 = in[i];
+ b2 = in[j];
+ out[i] = b2;
+ out[j] = b1;
+ }
+
+ /* In case odd number of bytes */
+ if (size % 2)
+ out[size / 2] = in[size / 2];
+}