UDIF: Universal Digital Identification Framework 1.1.0.0a (A1)
A quantum-secure cryptographic identification
message.h
Go to the documentation of this file.
1/* 2025-2026 Quantum Resistant Cryptographic Solutions Corporation
2 * All Rights Reserved.
3 *
4 * NOTICE:
5 * This software and all accompanying materials are the exclusive property of
6 * Quantum Resistant Cryptographic Solutions Corporation (QRCS). The intellectual
7 * and technical concepts contained herein are proprietary to QRCS and are
8 * protected under applicable Canadian, U.S., and international copyright,
9 * patent, and trade secret laws.
10 *
11 * CRYPTOGRAPHIC ALGORITHMS AND IMPLEMENTATIONS:
12 * - This software includes implementations of cryptographic primitives and
13 * algorithms that are standardized or in the public domain, such as AES
14 * and SHA-3, which are not proprietary to QRCS.
15 * - This software also includes cryptographic primitives, constructions, and
16 * algorithms designed by QRCS, including but not limited to RCS, SCB, CSX, QMAC, and
17 * related components, which are proprietary to QRCS.
18 * - All source code, implementations, protocol compositions, optimizations,
19 * parameter selections, and engineering work contained in this software are
20 * original works of QRCS and are protected under this license.
21 *
22 * LICENSE AND USE RESTRICTIONS:
23 * - This software is licensed under the Quantum Resistant Cryptographic Solutions
24 * Public Research and Evaluation License (QRCS-PREL), 2025-2026.
25 * - Permission is granted solely for non-commercial evaluation, academic research,
26 * cryptographic analysis, interoperability testing, and feasibility assessment.
27 * - Commercial use, production deployment, commercial redistribution, or
28 * integration into products or services is strictly prohibited without a
29 * separate written license agreement executed with QRCS.
30 * - Licensing and authorized distribution are solely at the discretion of QRCS.
31 *
32 * EXPERIMENTAL CRYPTOGRAPHY NOTICE:
33 * Portions of this software may include experimental, novel, or evolving
34 * cryptographic designs. Use of this software is entirely at the user's risk.
35 *
36 * DISCLAIMER:
37 * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
38 * IMPLIED, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS
39 * FOR A PARTICULAR PURPOSE, SECURITY, OR NON-INFRINGEMENT. QRCS DISCLAIMS ALL
40 * LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
41 * ARISING FROM THE USE OR MISUSE OF THIS SOFTWARE.
42 *
43 * FULL LICENSE:
44 * This software is subject to the Quantum Resistant Cryptographic Solutions
45 * Public Research and Evaluation License (QRCS-PREL), 2025-2026. The complete license terms
46 * are provided in the accompanying LICENSE file or at https://www.qrcscorp.ca.
47 *
48 * Written by: John G. Underhill
49 * Contact: contact@qrcscorp.ca
50 */
51
52#ifndef UDIF_MESSAGE_H
53#define UDIF_MESSAGE_H
54
55#include "udif.h"
56#include "qstp.h"
57
79
84#define UDIF_MESSAGE_HEADER_SIZE 6U
85
102#define UDIF_MESSAGE_PAYLOAD_MAX (QSTP_PACKET_MESSAGE_MAX - QSTP_MACTAG_SIZE - 26U - UDIF_MESSAGE_HEADER_SIZE)
103
108#define UDIF_MESSAGE_VERSION 1U
109
119{
122 /* Certificate enrollment and lifecycle */
130 /* Predicate queries */
133 /* Object and registry operations */
138 /* Anchor propagation */
141 /* Peering treaties and cross-domain queries */
147 /* Non-fatal application errors */
150
165
182UDIF_EXPORT_API udif_errors udif_message_init(udif_message* msg, udif_message_type msgtype, const uint8_t* payload, uint32_t payloadlen);
183
192
210UDIF_EXPORT_API udif_errors udif_message_encode(uint8_t* output, size_t outlen, const udif_message* msg, size_t* written);
211
226UDIF_EXPORT_API udif_errors udif_message_decode(udif_message* msg, const uint8_t* input, size_t inplen, size_t* consumed);
227
236
245
246#endif
UDIF_EXPORT_API udif_errors udif_message_init(udif_message *msg, udif_message_type msgtype, const uint8_t *payload, uint32_t payloadlen)
Initialize a message with a given type and payload.
Definition message.c:6
udif_message_type
Canonical UDIF message type codes.
Definition message.h:119
@ udif_msg_treaty_cosign
Definition message.h:143
@ udif_msg_cert_enroll_req
Definition message.h:123
@ udif_msg_treaty_revoke
Definition message.h:144
@ udif_msg_none
Definition message.h:120
@ udif_msg_object_transfer_confirm
Definition message.h:136
@ udif_msg_cert_suspend
Definition message.h:126
@ udif_msg_cap_grant
Definition message.h:128
@ udif_msg_anchor_ack
Definition message.h:140
@ udif_msg_cap_revoke
Definition message.h:129
@ udif_msg_treaty_query_fwd
Definition message.h:145
@ udif_msg_object_create
Definition message.h:134
@ udif_msg_query_req
Definition message.h:131
@ udif_msg_cert_resume
Definition message.h:127
@ udif_msg_treaty_query_resp
Definition message.h:146
@ udif_msg_cert_revoke
Definition message.h:125
@ udif_msg_cert_enroll_resp
Definition message.h:124
@ udif_msg_treaty_propose
Definition message.h:142
@ udif_msg_keepalive
Definition message.h:121
@ udif_msg_registry_commit
Definition message.h:137
@ udif_msg_error_report
Definition message.h:148
@ udif_msg_anchor_push
Definition message.h:139
@ udif_msg_query_resp
Definition message.h:132
@ udif_msg_object_transfer_req
Definition message.h:135
UDIF_EXPORT_API udif_errors udif_message_encode(uint8_t *output, size_t outlen, const udif_message *msg, size_t *written)
Encode a message into its canonical wire form.
Definition message.c:72
UDIF_EXPORT_API size_t udif_message_encoded_size(const udif_message *msg)
Compute the total encoded wire size of a message.
Definition message.c:200
UDIF_EXPORT_API void udif_message_dispose(udif_message *msg)
Release allocated storage and zero the message.
Definition message.c:57
UDIF_EXPORT_API udif_errors udif_message_decode(udif_message *msg, const uint8_t *input, size_t inplen, size_t *consumed)
Decode a canonical wire message.
Definition message.c:127
UDIF_EXPORT_API const char * udif_message_type_name(udif_message_type msgtype)
Return a human-readable name for a message type.
Definition message.c:214
A single UDIF application message.
Definition message.h:160
uint32_t payloadlen
Definition message.h:162
uint8_t * payload
Definition message.h:163
udif_message_type msgtype
Definition message.h:161
UDIF Common Definitions and Protocol Configuration.
udif_errors
UDIF error codes.
Definition udif.h:1210
#define UDIF_EXPORT_API
The api export prefix.
Definition udifcommon.h:101