SATP: Symmetric Authenticated Tunneling Protocol 1.0.0.0a (A1)
A quantum secure symmetric pre-shared key tunneling protocol
satp.h
Go to the documentation of this file.
1/* 2025 Quantum Resistant Cryptographic Solutions Corporation
2 * All Rights Reserved.
3 *
4 * NOTICE: This software and all accompanying materials are the exclusive
5 * property of Quantum Resistant Cryptographic Solutions Corporation (QRCS).
6 * The intellectual and technical concepts contained within this implementation
7 * are proprietary to QRCS and its authorized licensors and are protected under
8 * applicable U.S. and international copyright, patent, and trade secret laws.
9 *
10 * CRYPTOGRAPHIC STANDARDS:
11 * - This software includes implementations of cryptographic algorithms such as
12 * SHA3, AES, and others. These algorithms are public domain or standardized
13 * by organizations such as NIST and are NOT the property of QRCS.
14 * - However, all source code, optimizations, and implementations in this library
15 * are original works of QRCS and are protected under this license.
16 *
17 * RESTRICTIONS:
18 * - Redistribution, modification, or unauthorized distribution of this software,
19 * in whole or in part, is strictly prohibited.
20 * - This software is provided for non-commercial, educational, and research
21 * purposes only. Commercial use in any form is expressly forbidden.
22 * - Licensing and authorized distribution are solely at the discretion of QRCS.
23 * - Any use of this software implies acceptance of these restrictions.
24 *
25 * DISCLAIMER:
26 * This software is provided "as is," without warranty of any kind, express or
27 * implied, including but not limited to warranties of merchantability or fitness
28 * for a particular purpose. QRCS disclaims all liability for any direct, indirect,
29 * incidental, or consequential damages resulting from the use or misuse of this software.
30 *
31 * FULL LICENSE:
32 * This software is subject to the **Quantum Resistant Cryptographic Solutions
33 * Proprietary License (QRCS-PL)**. The complete license terms are included
34 * in the LICENSE.txt file distributed with this software.
35 *
36 * Written by: John G. Underhill
37 * Contact: contact@qrcscorp.ca
38 */
39
40#ifndef SATP_H
41#define SATP_H
42
43#include "satpcommon.h"
44#include "sha3.h"
45#include "socket.h"
46#include "socketclient.h"
47
53
59#define SATP_USE_RCS_ENCRYPTION
60
61#if defined(SATP_USE_RCS_ENCRYPTION)
62# include "rcs.h"
63# define satp_cipher_state qsc_rcs_state
64# define satp_cipher_dispose qsc_rcs_dispose
65# define satp_cipher_initialize qsc_rcs_initialize
66# define satp_cipher_keyparams qsc_rcs_keyparams
67# define satp_cipher_set_associated qsc_rcs_set_associated
68# define satp_cipher_transform qsc_rcs_transform
69#else
70# include "aes.h"
71# define satp_cipher_state qsc_aes_gcm256_state
72# define satp_cipher_dispose qsc_aes_gcm256_dispose
73# define satp_cipher_initialize qsc_aes_gcm256_initialize
74# define satp_cipher_keyparams qsc_aes_keyparams
75# define satp_cipher_set_associated qsc_aes_gcm256_set_associated
76# define satp_cipher_transform qsc_aes_gcm256_transform
77#endif
78
116
121#define SATP_CLIENT_PASSWORD_MAX 256U
122
127#define SATP_CLIENT_USERNAME_MAX 256U
128
133#define SATP_CONNECTIONS_INIT 1000U
134
139#define SATP_CONNECTIONS_MAX 50000U
140
145#define SATP_CONFIG_SIZE 25U
146
151#define SATP_ERROR_SIZE 1U
152
157#define SATP_EXPIRATION_SIZE 8U
158
163#define SATP_HASH_SIZE 32U
164
169#define SATP_HEADER_SIZE 21U
170
175#define SATP_KEEPALIVE_MESSAGE 8U
176
181#define SATP_KEEPALIVE_STRING 20U
182
187#define SATP_KEEPALIVE_TIMEOUT (300U * 1000U)
188
193#define SATP_KEY_TREE_COUNT 1024
194
198#if defined(SATP_USE_RCS_ENCRYPTION)
199# define SATP_MACTAG_SIZE 32U
200#else
201# define SATP_MACTAG_SIZE 16U
202#endif
203
208#define SATP_MESSAGE_SIZE 1024U
209
214#define SATP_MESSAGE_MAX (SATP_MESSAGE_SIZE + SATP_HEADER_SIZE)
215
220#define SATP_CONNECTION_MTU 1500U
221
226#if defined(SATP_USE_RCS_ENCRYPTION)
227# define SATP_NONCE_SIZE 32U
228#else
229# define SATP_NONCE_SIZE 16U
230#endif
231
236#define SATP_SALT_SIZE 32U
237
242#define SATP_SERVER_PORT 2701U
243
248#define SATP_SEQUENCE_TERMINATOR 0xFFFFFFFFUL
249
253#if defined(SATP_USE_RCS_ENCRYPTION)
254 static const char SATP_CONFIG_STRING[SATP_CONFIG_SIZE + 1U] = "r01-satp-rcs256-keccak256";
255#else
256 static const char SATP_CONFIG_STRING[SATP_CONFIG_SIZE + 1U] = "r02-satp-aes256-keccak256";
257#endif
258
259/* Exchange thresholds */
260
265#define SATP_KEY_DURATION_DAYS 365U
266
275#define SATP_PACKET_TIME_THRESHOLD 60U
276
281#define SATP_KEY_DURATION_SECONDS (SATP_KEY_DURATION_DAYS * 24U * 60U * 60U)
282
283/* Key identity elements */
284
289#define SATP_BRANCH_ID_SIZE 2U
290
295#define SATP_DOMAIN_ID_SIZE 2U
296
301#define SATP_DEVICE_ID_SIZE 4U
302
307#define SATP_EPOCH_SIZE 2U
308
313#define SATP_ERROR_MESSAGE_SIZE 1U
314
319#define SATP_ERROR_SEQUENCE 0xFF00000000000000ULL
320
325#define SATP_FLAG_SIZE 1
326
331#define SATP_KEY_ID_SIZE 4U
332
337#define SATP_SERVICE_ID_SIZE 2U
338
343#define SATP_DID_SIZE (SATP_DOMAIN_ID_SIZE + SATP_BRANCH_ID_SIZE + SATP_EPOCH_SIZE + SATP_SERVICE_ID_SIZE + SATP_DEVICE_ID_SIZE)
344
349#define SATP_MID_SIZE (SATP_DOMAIN_ID_SIZE)
350
355#define SATP_SID_SIZE (SATP_DOMAIN_ID_SIZE + SATP_BRANCH_ID_SIZE)
356
361#define SATP_KID_SIZE (SATP_DID_SIZE + SATP_KEY_ID_SIZE)
362
363/* key sizes */
364
369#define SATP_DKEY_SIZE 32U
370
375#define SATP_MKEY_SIZE 32U
376
381#define SATP_SKEY_SIZE 32U
382
387#define SATP_KTREE_SIZE (SATP_DKEY_SIZE * SATP_KEY_TREE_COUNT)
388
393#define SATP_DKEY_ENCODED_SIZE (SATP_KID_SIZE + SATP_SKEY_SIZE + SATP_EXPIRATION_SIZE + (SATP_DKEY_SIZE * SATP_KEY_TREE_COUNT))
394
399#define SATP_MKEY_ENCODED_SIZE (SATP_MKEY_SIZE + SATP_MID_SIZE + SATP_EXPIRATION_SIZE)
400
405#define SATP_SKEY_ENCODED_SIZE (SATP_SKEY_SIZE + SATP_SKEY_SIZE + SATP_SID_SIZE + SATP_EXPIRATION_SIZE)
406
411#define SATP_STOK_SIZE 32U
412
413/* error code strings */
414
416#define SATP_ERROR_STRING_DEPTH 22U
417#define SATP_ERROR_STRING_WIDTH 128U
418
419static const char SATP_ERROR_STRINGS[SATP_ERROR_STRING_DEPTH][SATP_ERROR_STRING_WIDTH] =
420{
421 "No error was detected",
422 "The keep alive check failed",
423 "The cipher authentication has failed",
424 "The communications channel has failed",
425 "The device could not make a connection to the remote host",
426 "The decryption authentication has failed",
427 "The device identity is unrecognized",
428 "The transmission failed at the key exchange establish phase",
429 "The input provided is invalid",
430 "The keep alive has expired with no response",
431 "The key exchange authentication has failed",
432 "The SATP public key has expired",
433 "The key identity is not recognized",
434 "The packet keep alive is invalid",
435 "The packet was received out of sequence",
436 "The random generator has failed",
437 "The receiver failed at the network layer",
438 "The transmitter failed at the network layer",
439 "The protocol string was not recognized",
440 "The packets sequence number is out of sync",
441 "The expected data could not be verified",
442 "A general failure occurred",
443};
445
485
505
510SATP_EXPORT_API typedef struct satp_connection_state
511{
512 qsc_socket target;
513 qsc_rcs_state rxcpr;
514 qsc_rcs_state txcpr;
515 uint64_t rxseq;
516 uint64_t txseq;
517 uint32_t cid;
519 bool receiver;
521
528SATP_EXPORT_API typedef struct satp_device_key
529{
530 QSC_SIMD_ALIGN uint8_t ktree[SATP_DKEY_SIZE * SATP_KEY_TREE_COUNT];
531 QSC_SIMD_ALIGN uint8_t kid[SATP_KID_SIZE];
532 QSC_SIMD_ALIGN uint8_t stc[SATP_SKEY_SIZE];
533 uint64_t expiration;
534 uint8_t* spass;
536
543SATP_EXPORT_API typedef struct satp_master_key
544{
545 QSC_SIMD_ALIGN uint8_t mdk[SATP_MKEY_SIZE];
546 QSC_SIMD_ALIGN uint8_t mid[SATP_MID_SIZE];
547 uint64_t expiration;
549
556SATP_EXPORT_API typedef struct satp_server_key
557{
558 QSC_SIMD_ALIGN uint8_t sdk[SATP_SKEY_SIZE];
559 QSC_SIMD_ALIGN uint8_t sid[SATP_SID_SIZE];
560 QSC_SIMD_ALIGN uint8_t stc[SATP_SKEY_SIZE];
561 uint64_t expiration;
563
570SATP_EXPORT_API typedef struct qsmp_keep_alive_state
571{
572 uint64_t etime;
573 uint64_t seqctr;
574 bool recd;
575} satp_keep_alive_state;
576
583SATP_EXPORT_API typedef struct satp_network_packet
584{
585 uint8_t flag;
586 uint32_t msglen;
587 uint64_t sequence;
588 uint64_t utctime;
589 uint8_t* pmessage;
591
599SATP_EXPORT_API void satp_connection_close(satp_connection_state* cns, satp_errors err, bool notify);
600
606SATP_EXPORT_API void satp_connection_dispose(satp_connection_state* cns);
607
616SATP_EXPORT_API satp_errors satp_decrypt_error_message(satp_connection_state* cns, uint8_t* message);
617
632SATP_EXPORT_API satp_errors satp_decrypt_packet(satp_connection_state* cns, const satp_network_packet* packetin, uint8_t* message, size_t* msglen);
633
649SATP_EXPORT_API satp_errors satp_encrypt_packet(satp_connection_state* cns, const uint8_t* message, size_t msglen, satp_network_packet* packetout);
650
658SATP_EXPORT_API void satp_deserialize_device_key(satp_device_key* dkey, const uint8_t* input);
659
667SATP_EXPORT_API void satp_serialize_device_key(uint8_t* output, const satp_device_key* dkey);
668
677SATP_EXPORT_API const char* satp_error_to_string(satp_errors error);
678
687SATP_EXPORT_API bool satp_extract_device_key(uint8_t* dk, const uint8_t* sk, const uint8_t* kid);
688
695SATP_EXPORT_API void satp_packet_error_message(satp_network_packet* packet, satp_errors error);
696
704SATP_EXPORT_API void satp_deserialize_master_key(satp_master_key* mkey, const uint8_t* input);
705
713SATP_EXPORT_API void satp_serialize_master_key(uint8_t* output, const satp_master_key* mkey);
714
722SATP_EXPORT_API void satp_deserialize_server_key(satp_server_key* skey, const uint8_t* input);
723
731SATP_EXPORT_API void satp_serialize_server_key(uint8_t* output, const satp_server_key* skey);
732
739SATP_EXPORT_API void satp_increment_device_key(uint8_t* sdkey);
740
752SATP_EXPORT_API bool satp_generate_master_key(satp_master_key* mkey, const uint8_t* mid);
753
765SATP_EXPORT_API bool satp_generate_server_key(satp_server_key* skey, const satp_master_key* mkey, const uint8_t* sid);
766
776SATP_EXPORT_API void satp_generate_device_key(satp_device_key* dkey, const satp_server_key* skey, const uint8_t* did);
777
784SATP_EXPORT_API void satp_packet_clear(satp_network_packet* packet);
785
794SATP_EXPORT_API void satp_packet_header_create(satp_network_packet* packetout, satp_flags flag, uint64_t sequence, uint32_t msglen);
795
803SATP_EXPORT_API void satp_packet_header_deserialize(const uint8_t* header, satp_network_packet* packet);
804
812SATP_EXPORT_API void satp_packet_header_serialize(const satp_network_packet* packet, uint8_t* header);
813
824SATP_EXPORT_API satp_errors satp_packet_header_validate(const satp_network_packet* packetin, satp_flags pktflag, uint64_t sequence, uint32_t msglen);
825
832SATP_EXPORT_API void satp_packet_set_utc_time(satp_network_packet* packet);
833
843SATP_EXPORT_API bool satp_packet_time_valid(const satp_network_packet* packet);
844
854SATP_EXPORT_API size_t satp_packet_to_stream(const satp_network_packet* packet, uint8_t* pstream);
855
863SATP_EXPORT_API void satp_send_network_error(const qsc_socket* sock, satp_errors error);
864
872SATP_EXPORT_API void satp_stream_to_packet(const uint8_t* pstream, satp_network_packet* packet);
873
874#endif
SATP_EXPORT_API satp_errors satp_packet_header_validate(const satp_network_packet *packetin, satp_flags pktflag, uint64_t sequence, uint32_t msglen)
Validate a packet header and timestamp.
Definition satp.c:541
SATP_EXPORT_API satp_errors satp_encrypt_packet(satp_connection_state *cns, const uint8_t *message, size_t msglen, satp_network_packet *packetout)
Encrypt a message into an SATP packet.
Definition satp.c:193
SATP_EXPORT_API void satp_increment_device_key(uint8_t *sdkey)
Increment the serialized key This function clears a key at the current position and increments the ki...
Definition satp.c:343
#define SATP_SID_SIZE
The server ID size in bytes.
Definition satp.h:355
SATP_EXPORT_API void satp_send_network_error(const qsc_socket *sock, satp_errors error)
Send a plaintext SATP network error message Used only during key exchange, the connection close is se...
Definition satp.c:639
SATP_EXPORT_API void satp_deserialize_device_key(satp_device_key *dkey, const uint8_t *input)
Deserialize a client device key. This function deserializes a byte array into a SATP device key struc...
Definition satp.c:233
SATP_EXPORT_API void satp_packet_clear(satp_network_packet *packet)
Clear a SATP network packet. This function resets the fields of a SATP network packet to zero,...
Definition satp.c:487
#define SATP_DKEY_SIZE
The client key size in bytes.
Definition satp.h:369
SATP_EXPORT_API bool satp_generate_master_key(satp_master_key *mkey, const uint8_t *mid)
Generate a master key-set. This function generates a new SATP master key-set. It populates the provid...
Definition satp.c:435
SATP_EXPORT_API bool satp_packet_time_valid(const satp_network_packet *packet)
Check if a SATP packet is received within the valid time threshold. This function compares the UTC ti...
Definition satp.c:595
SATP_EXPORT_API size_t satp_packet_to_stream(const satp_network_packet *packet, uint8_t *pstream)
Serialize a SATP packet into a byte array. This function converts a SATP network packet into a contig...
Definition satp.c:613
SATP_EXPORT_API void satp_packet_error_message(satp_network_packet *packet, satp_errors error)
Populate a packet structure with an error message.
Definition satp.c:358
SATP_EXPORT_API void satp_serialize_server_key(uint8_t *output, const satp_server_key *skey)
Serialize a server key into a byte array. This function serializes a SATP server key structure into a...
Definition satp.c:324
SATP_EXPORT_API void satp_serialize_device_key(uint8_t *output, const satp_device_key *dkey)
Serialize a client device key. This function serializes a SATP device key structure into a byte array...
Definition satp.c:252
SATP_EXPORT_API void satp_packet_header_serialize(const satp_network_packet *packet, uint8_t *header)
Serialize a SATP packet header into a byte array. This function converts a structured SATP network pa...
Definition satp.c:527
SATP_EXPORT_API bool satp_generate_server_key(satp_server_key *skey, const satp_master_key *mkey, const uint8_t *sid)
Generate a server key-set. This function generates a new SATP server key-set based on the provided ma...
Definition satp.c:461
SATP_EXPORT_API void satp_connection_dispose(satp_connection_state *cns)
Reset the connection state.
Definition satp.c:114
SATP_EXPORT_API void satp_generate_device_key(satp_device_key *dkey, const satp_server_key *skey, const uint8_t *did)
Generate a device key-set. This function generates a new SATP device key-set using the provided serve...
Definition satp.c:412
SATP_EXPORT_API void satp_deserialize_server_key(satp_server_key *skey, const uint8_t *input)
Deserialize a server key from a byte array. This function deserializes a byte array into a SATP serve...
Definition satp.c:305
#define SATP_KEY_TREE_COUNT
The SATP key tree count.
Definition satp.h:193
SATP_EXPORT_API void satp_stream_to_packet(const uint8_t *pstream, satp_network_packet *packet)
Deserialize a byte stream into a SATP network packet. This function converts a contiguous byte stream...
Definition satp.c:655
#define SATP_MKEY_SIZE
The master key size in bytes.
Definition satp.h:375
#define SATP_KID_SIZE
The key ID size in bytes.
Definition satp.h:361
SATP_EXPORT_API satp_errors satp_decrypt_packet(satp_connection_state *cns, const satp_network_packet *packetin, uint8_t *message, size_t *msglen)
Decrypt an SATP packet.
Definition satp.c:131
SATP_EXPORT_API void satp_connection_close(satp_connection_state *cns, satp_errors err, bool notify)
Close the network connection between hosts.
Definition satp.c:7
SATP_EXPORT_API void satp_packet_header_deserialize(const uint8_t *header, satp_network_packet *packet)
Deserialize a byte array into a SATP packet header. This function converts a serialized byte array re...
Definition satp.c:513
SATP_EXPORT_API bool satp_extract_device_key(uint8_t *dk, const uint8_t *sk, const uint8_t *kid)
Extract a device key. This function extracts a device key by hashing the server key and key identity.
Definition satp.c:386
SATP_EXPORT_API satp_errors satp_decrypt_error_message(satp_connection_state *cns, uint8_t *message)
Decrypt an error message.
Definition satp.c:49
SATP_EXPORT_API void satp_deserialize_master_key(satp_master_key *mkey, const uint8_t *input)
Deserialize a master key from a byte array. This function deserializes a byte array into a SATP maste...
Definition satp.c:271
#define SATP_SKEY_SIZE
The server key size in bytes.
Definition satp.h:381
SATP_EXPORT_API void satp_packet_header_create(satp_network_packet *packetout, satp_flags flag, uint64_t sequence, uint32_t msglen)
Populate a packet header and set the creation time.
Definition satp.c:504
satp_errors
The SATP error values. This enumeration defines the error codes returned by SATP functions.
Definition satp.h:452
@ satp_error_unknown_protocol
Definition satp.h:480
@ satp_error_random_failure
Definition satp.h:477
@ satp_error_invalid_input
Definition satp.h:467
@ satp_error_authentication_failure
Definition satp.h:455
@ satp_erroe_listen_fail
Definition satp.h:457
@ satp_error_kex_auth_failure
Definition satp.h:470
@ satp_error_general_failure
Definition satp.h:483
@ satp_error_allocation_failure
Definition satp.h:458
@ satp_error_listener_fail
Definition satp.h:473
@ satp_error_bad_keep_alive
Definition satp.h:459
@ satp_error_decryption_failure
Definition satp.h:463
@ satp_error_hosts_exceeded
Definition satp.h:466
@ satp_error_key_not_recognized
Definition satp.h:472
@ satp_error_packet_expired
Definition satp.h:475
@ satp_error_packet_unsequenced
Definition satp.h:476
@ satp_error_keep_alive_expired
Definition satp.h:469
@ satp_error_establish_failure
Definition satp.h:465
@ satp_error_key_expired
Definition satp.h:471
@ satp_error_cipher_auth_failure
Definition satp.h:460
@ satp_error_invalid_request
Definition satp.h:468
@ satp_error_connection_failure
Definition satp.h:462
@ satp_error_channel_down
Definition satp.h:461
@ satp_error_transmit_failure
Definition satp.h:479
@ satp_error_none
Definition satp.h:453
@ satp_error_authentication_success
Definition satp.h:456
@ satp_error_unsequenced
Definition satp.h:481
@ satp_error_accept_fail
Definition satp.h:454
@ satp_error_verify_failure
Definition satp.h:482
@ satp_error_device_unrecognized
Definition satp.h:464
@ satp_error_message_time_invalid
Definition satp.h:474
@ satp_error_receive_failure
Definition satp.h:478
satp_flags
The SATP packet flag values. This enumeration defines the flag values used in SATP packets to indicat...
Definition satp.h:492
@ satp_flag_connection_terminate
Definition satp.h:496
@ satp_flag_none
Definition satp.h:493
@ satp_flag_error_condition
Definition satp.h:503
@ satp_flag_connect_response
Definition satp.h:495
@ satp_flag_authentication_response
Definition satp.h:499
@ satp_flag_authentication_request
Definition satp.h:498
@ satp_flag_auth_verify
Definition satp.h:500
@ satp_flag_encrypted_message
Definition satp.h:497
@ satp_flag_session_established
Definition satp.h:502
@ satp_flag_keepalive_request
Definition satp.h:501
@ satp_flag_connect_request
Definition satp.h:494
SATP_EXPORT_API void satp_serialize_master_key(uint8_t *output, const satp_master_key *mkey)
Serialize a master key into a byte array. This function serializes a SATP master key structure into a...
Definition satp.c:288
SATP_EXPORT_API const char * satp_error_to_string(satp_errors error)
Return a string description of an SATP error code. This function returns a human-readable string corr...
Definition satp.c:372
#define SATP_MID_SIZE
The master key identity size in bytes.
Definition satp.h:349
#define SATP_CONFIG_SIZE
The size of the protocol configuration string.
Definition satp.h:145
SATP_EXPORT_API void satp_packet_set_utc_time(satp_network_packet *packet)
Set the local UTC seconds time in a SATP packet header. This function updates the SATP packet header ...
Definition satp.c:585
The SATP keep alive state structure. This structure tracks the state of keep alive messages within SA...
Definition satp.h:571
bool recd
Definition satp.h:574
uint64_t seqctr
Definition satp.h:573
uint64_t etime
Definition satp.h:572
The SATP socket connection state structure.
Definition satp.h:511
uint64_t txseq
Definition satp.h:516
bool receiver
Definition satp.h:519
qsc_rcs_state txcpr
Definition satp.h:514
uint64_t rxseq
Definition satp.h:515
uint32_t cid
Definition satp.h:517
qsc_socket target
Definition satp.h:512
qsc_rcs_state rxcpr
Definition satp.h:513
satp_flags exflag
Definition satp.h:518
The SATP device key structure. This structure represents the SATP device key, which is derived from t...
Definition satp.h:529
QSC_SIMD_ALIGN uint8_t ktree[SATP_DKEY_SIZE *SATP_KEY_TREE_COUNT]
Definition satp.h:530
QSC_SIMD_ALIGN uint8_t kid[SATP_KID_SIZE]
Definition satp.h:531
uint64_t expiration
Definition satp.h:533
QSC_SIMD_ALIGN uint8_t stc[SATP_SKEY_SIZE]
Definition satp.h:532
uint8_t * spass
Definition satp.h:534
The SATP master key structure. This structure holds the SATP master key information,...
Definition satp.h:544
QSC_SIMD_ALIGN uint8_t mdk[SATP_MKEY_SIZE]
Definition satp.h:545
uint64_t expiration
Definition satp.h:547
QSC_SIMD_ALIGN uint8_t mid[SATP_MID_SIZE]
Definition satp.h:546
The SATP network packet structure. This structure defines the format of a SATP network packet....
Definition satp.h:584
uint8_t * pmessage
Definition satp.h:589
uint32_t msglen
Definition satp.h:586
uint64_t utctime
Definition satp.h:588
uint64_t sequence
Definition satp.h:587
uint8_t flag
Definition satp.h:585
The SATP server key structure. This structure represents the SATP server key, which is derived from t...
Definition satp.h:557
uint64_t expiration
Definition satp.h:561
QSC_SIMD_ALIGN uint8_t stc[SATP_SKEY_SIZE]
Definition satp.h:560
QSC_SIMD_ALIGN uint8_t sid[SATP_SID_SIZE]
Definition satp.h:559
QSC_SIMD_ALIGN uint8_t sdk[SATP_SKEY_SIZE]
Definition satp.h:558