From c090136338b585370df6a8e29518f9e55d388fe5 Mon Sep 17 00:00:00 2001 From: Ingo Franzki Date: Mon, 6 Jul 2020 13:16:34 +0200 Subject: [PATCH 3/5] pkcstok_migrate: Fix public token object conversion on little endian platforms The new format stores numeric fields in the object header in big endian, while the old format uses the platform endianness. So convert the fields to big endian during conversion. Signed-off-by: Ingo Franzki --- usr/sbin/pkcstok_migrate/pkcstok_migrate.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/usr/sbin/pkcstok_migrate/pkcstok_migrate.c b/usr/sbin/pkcstok_migrate/pkcstok_migrate.c index 0148102c..136c010c 100644 --- a/usr/sbin/pkcstok_migrate/pkcstok_migrate.c +++ b/usr/sbin/pkcstok_migrate/pkcstok_migrate.c @@ -103,9 +103,9 @@ static CK_RV make_OBJECT_PUB_312(char **obj_new, unsigned int *obj_new_len, /* Setup object */ memset(&header, 0, sizeof(header)); - header.tokversion = 0x0003000C; + header.tokversion = htobe32(0x0003000C); header.private_flag = 0x00; - header.object_len = clear_len; + header.object_len = htobe32(clear_len); memcpy(object, &header, sizeof(header)); memcpy(object + sizeof(header), clear, clear_len); -- 2.16.2.windows.1