HKDS: Heirarchal Key Derivation System 1.0.0.2 (A2)
A fast post-quantum secure replacement for DUKPT
hkds_factory.h File Reference

This file contains the HKDS factory definitions. More...

#include "common.h"
#include "hkds_config.h"

Go to the source code of this file.

Functions

HKDS_EXPORT_API void hkds_factory_serialize_packet_header (uint8_t *output, const hkds_packet_header *header)
 Serialize a packet header to a byte array.
 
HKDS_EXPORT_API void hkds_factory_serialize_client_message (uint8_t *output, const hkds_client_message_request *header)
 Serialize a client message request to a byte array.
 
HKDS_EXPORT_API void hkds_factory_serialize_client_token (uint8_t *output, const hkds_client_token_request *header)
 Serialize a client token request to a byte array.
 
HKDS_EXPORT_API void hkds_factory_serialize_server_message (uint8_t *output, const hkds_server_message_response *header)
 Serialize a server message response to a byte array.
 
HKDS_EXPORT_API void hkds_factory_serialize_server_token (uint8_t *output, const hkds_server_token_response *header)
 Serialize a server token response to a byte array.
 
HKDS_EXPORT_API void hkds_factory_serialize_administrative_message (uint8_t *output, const hkds_administrative_message *header)
 Serialize an administrative message to a byte array.
 
HKDS_EXPORT_API void hkds_factory_serialize_error_message (uint8_t *output, const hkds_error_message *header)
 Serialize an error message to a byte array.
 
HKDS_EXPORT_API hkds_packet_header hkds_factory_extract_packet_header (const uint8_t *input)
 Extract a packet header structure from a byte array.
 
HKDS_EXPORT_API hkds_client_message_request hkds_factory_extract_client_message (const uint8_t *input)
 Extract a client message request from a byte array.
 
HKDS_EXPORT_API hkds_client_token_request hkds_factory_extract_client_token (const uint8_t *input)
 Extract a client token request from a byte array.
 
HKDS_EXPORT_API hkds_server_message_response hkds_factory_extract_server_message (const uint8_t *input)
 Extract a server message response from a byte array.
 
HKDS_EXPORT_API hkds_server_token_response hkds_factory_extract_server_token (const uint8_t *input)
 Extract a server token response from a byte array.
 
HKDS_EXPORT_API hkds_administrative_message hkds_factory_extract_administrative_message (const uint8_t *input)
 Extract an administrative message from a byte array.
 
HKDS_EXPORT_API hkds_error_message hkds_factory_extract_error_message (const uint8_t *input)
 Extract an error message from a byte array.
 
HKDS_EXPORT_API hkds_client_message_request hkds_factory_create_client_message_request (const uint8_t *message, const uint8_t *ksn, const uint8_t *tag)
 Build a client message request from components.
 
HKDS_EXPORT_API hkds_client_token_request hkds_factory_create_client_token_request (const uint8_t *ksn)
 Build a client token request from components.
 
HKDS_EXPORT_API hkds_server_message_response hkds_factory_create_server_message_response (const uint8_t *message)
 Build a server message response from components.
 
HKDS_EXPORT_API hkds_server_token_response hkds_factory_create_server_token_reponse (const uint8_t *etok)
 Build a server token response from components.
 
HKDS_EXPORT_API hkds_administrative_message hkds_factory_create_administrative_message (const uint8_t *message)
 Build an administrative message from components.
 
HKDS_EXPORT_API hkds_error_message hkds_factory_create_error_message (const uint8_t *message, hkds_error_type err)
 Build an error message from components.
 
HKDS_EXPORT_API hkds_packet_type hkds_factory_extract_packet_type (const uint8_t *input)
 Extract the packet type enumeral from a serialized packet header.
 
HKDS_EXPORT_API hkds_protocol_id hkds_factory_extract_protocol_id (const uint8_t *input)
 Extract the protocol id numeral from a serialized packet header.
 
HKDS_EXPORT_API size_t hkds_factory_extract_packet_size (const uint8_t *input)
 Extract the packet size from a serialized packet header.
 
HKDS_EXPORT_API uint8_t hkds_factory_extract_packet_sequence (const uint8_t *input)
 Extract the packet sequence from a serialized packet header.
 

Detailed Description

This file contains the HKDS factory definitions.

This file provides functions to serialize and deserialize HKDS packet structures to and from raw byte arrays, and functions to construct HKDS packet structures from individual components. The functions support:

  • Serialization of packet headers and complete packets (client message, client token, server message, server token, administrative, and error messages) for network transmission.
  • Extraction of packet structures and header fields from serialized byte arrays.
  • Construction of packet structures by combining individual components.

Function Documentation

◆ hkds_factory_create_administrative_message()

HKDS_EXPORT_API hkds_administrative_message hkds_factory_create_administrative_message ( const uint8_t * message)

Build an administrative message from components.

Parameters
message[in] The administrative message array.
Returns
An administrative message structure.

◆ hkds_factory_create_client_message_request()

HKDS_EXPORT_API hkds_client_message_request hkds_factory_create_client_message_request ( const uint8_t * message,
const uint8_t * ksn,
const uint8_t * tag )

Build a client message request from components.

Parameters
message[in] The encrypted client message array.
ksn[in] The client's KSN array.
tag[in] The [optional] authentication tag.
Returns
A client message request structure.

◆ hkds_factory_create_client_token_request()

HKDS_EXPORT_API hkds_client_token_request hkds_factory_create_client_token_request ( const uint8_t * ksn)

Build a client token request from components.

Parameters
ksn[in] The client's KSN array.
Returns
A client token request structure.

◆ hkds_factory_create_error_message()

HKDS_EXPORT_API hkds_error_message hkds_factory_create_error_message ( const uint8_t * message,
hkds_error_type err )

Build an error message from components.

Parameters
message[in] The error message array.
err[in] The error type to be included in the packet header.
Returns
An error message structure.

◆ hkds_factory_create_server_message_response()

HKDS_EXPORT_API hkds_server_message_response hkds_factory_create_server_message_response ( const uint8_t * message)

Build a server message response from components.

Parameters
message[in] The server message response array.
Returns
A server message response structure.

◆ hkds_factory_create_server_token_reponse()

HKDS_EXPORT_API hkds_server_token_response hkds_factory_create_server_token_reponse ( const uint8_t * etok)

Build a server token response from components.

Parameters
etok[in] The server's encrypted token response array.
Returns
A server token response structure.

◆ hkds_factory_extract_administrative_message()

HKDS_EXPORT_API hkds_administrative_message hkds_factory_extract_administrative_message ( const uint8_t * input)

Extract an administrative message from a byte array.

Parameters
input[in] The serialized administrative message input array.
Returns
An administrative message structure.

◆ hkds_factory_extract_client_message()

HKDS_EXPORT_API hkds_client_message_request hkds_factory_extract_client_message ( const uint8_t * input)

Extract a client message request from a byte array.

Parameters
input[in] The serialized client message request input array.
Returns
A client message request structure.

◆ hkds_factory_extract_client_token()

HKDS_EXPORT_API hkds_client_token_request hkds_factory_extract_client_token ( const uint8_t * input)

Extract a client token request from a byte array.

Parameters
input[in] The serialized client token request input array.
Returns
A client token request structure.

◆ hkds_factory_extract_error_message()

HKDS_EXPORT_API hkds_error_message hkds_factory_extract_error_message ( const uint8_t * input)

Extract an error message from a byte array.

Parameters
input[in] The serialized error message input array.
Returns
An error message structure.

◆ hkds_factory_extract_packet_header()

HKDS_EXPORT_API hkds_packet_header hkds_factory_extract_packet_header ( const uint8_t * input)

Extract a packet header structure from a byte array.

Parameters
input[in] The serialized packet input array.
Returns
An hkds packet header structure.

◆ hkds_factory_extract_packet_sequence()

HKDS_EXPORT_API uint8_t hkds_factory_extract_packet_sequence ( const uint8_t * input)

Extract the packet sequence from a serialized packet header.

Parameters
input[in] The serialized packet header array.
Returns
The packet sequence number.

◆ hkds_factory_extract_packet_size()

HKDS_EXPORT_API size_t hkds_factory_extract_packet_size ( const uint8_t * input)

Extract the packet size from a serialized packet header.

Parameters
input[in] The serialized packet header array.
Returns
The packet size, including the header and payload.

◆ hkds_factory_extract_packet_type()

HKDS_EXPORT_API hkds_packet_type hkds_factory_extract_packet_type ( const uint8_t * input)

Extract the packet type enumeral from a serialized packet header.

Parameters
input[in] The serialized packet header array.
Returns
The packet type numeral.

◆ hkds_factory_extract_protocol_id()

HKDS_EXPORT_API hkds_protocol_id hkds_factory_extract_protocol_id ( const uint8_t * input)

Extract the protocol id numeral from a serialized packet header.

Parameters
input[in] The serialized packet header array.
Returns
The protocol id numeral.

◆ hkds_factory_extract_server_message()

HKDS_EXPORT_API hkds_server_message_response hkds_factory_extract_server_message ( const uint8_t * input)

Extract a server message response from a byte array.

Parameters
input[in] The serialized server message response input array.
Returns
A server message response structure.

◆ hkds_factory_extract_server_token()

HKDS_EXPORT_API hkds_server_token_response hkds_factory_extract_server_token ( const uint8_t * input)

Extract a server token response from a byte array.

Parameters
input[in] The serialized server token response input array.
Returns
A server token response structure.

◆ hkds_factory_serialize_administrative_message()

HKDS_EXPORT_API void hkds_factory_serialize_administrative_message ( uint8_t * output,
const hkds_administrative_message * header )

Serialize an administrative message to a byte array.

Parameters
output[out] The serialized administrative message header.
header[in] The administrative message structure.

◆ hkds_factory_serialize_client_message()

HKDS_EXPORT_API void hkds_factory_serialize_client_message ( uint8_t * output,
const hkds_client_message_request * header )

Serialize a client message request to a byte array.

Parameters
output[out] The serialized client message request header.
header[in] The client message request structure.

◆ hkds_factory_serialize_client_token()

HKDS_EXPORT_API void hkds_factory_serialize_client_token ( uint8_t * output,
const hkds_client_token_request * header )

Serialize a client token request to a byte array.

Parameters
output[out] The serialized client token request header.
header[in] The client token request structure.

◆ hkds_factory_serialize_error_message()

HKDS_EXPORT_API void hkds_factory_serialize_error_message ( uint8_t * output,
const hkds_error_message * header )

Serialize an error message to a byte array.

Parameters
output[out] The serialized error message header.
header[in] The error message structure.

◆ hkds_factory_serialize_packet_header()

HKDS_EXPORT_API void hkds_factory_serialize_packet_header ( uint8_t * output,
const hkds_packet_header * header )

Serialize a packet header to a byte array.

Parameters
output[out] The serialized packet header.
header[in] The packet header structure.

◆ hkds_factory_serialize_server_message()

HKDS_EXPORT_API void hkds_factory_serialize_server_message ( uint8_t * output,
const hkds_server_message_response * header )

Serialize a server message response to a byte array.

Parameters
output[out] The serialized server message response header.
header[in] The server message response structure.

◆ hkds_factory_serialize_server_token()

HKDS_EXPORT_API void hkds_factory_serialize_server_token ( uint8_t * output,
const hkds_server_token_response * header )

Serialize a server token response to a byte array.

Parameters
output[out] The serialized server token response header.
header[in] The server token response structure.