nts_client_misc.c File Reference

Helper functions for NTS client. More...

#include <ctype.h>
#include "core/net.h"
#include "nts/nts_client.h"
#include "nts/nts_client_misc.h"
#include "nts/nts_debug.h"
#include "ntp/ntp_common.h"
#include "ntp/ntp_debug.h"
#include "tls_key_material.h"
#include "cipher/aes.h"
#include "aead/siv.h"
#include "debug.h"

Go to the source code of this file.

Macros

#define TRACE_LEVEL   NTS_TRACE_LEVEL
 

Functions

void ntsClientChangeState (NtsClientContext *context, NtsClientState newState)
 Update NTS client state. More...
 
error_t ntsClientOpenNtsKeConnection (NtsClientContext *context)
 Open NTS-KE connection. More...
 
error_t ntsClientEstablishNtsKeConnection (NtsClientContext *context)
 Establish NTS-KE connection. More...
 
error_t ntsClientFormatNtsKeRequest (NtsClientContext *context)
 Format NTS-KE request. More...
 
error_t ntsClientSendNtsKeRequest (NtsClientContext *context)
 Send NTS-KE request. More...
 
error_t ntsClientReceiveNtsKeResponse (NtsClientContext *context)
 Receive NTS-KE response. More...
 
error_t ntsClientParseEndOfMessageRecord (NtsClientContext *context, const uint8_t *body, size_t length)
 Parse End of Message record. More...
 
error_t ntsClientParseNtsNextProtoNegoRecord (NtsClientContext *context, const uint8_t *body, size_t length)
 Parse NTS Next Protocol Negotiation record. More...
 
error_t ntsClientParseErrorRecord (NtsClientContext *context, const uint8_t *body, size_t length)
 Parse Error record. More...
 
error_t ntsClientParseWarningRecord (NtsClientContext *context, const uint8_t *body, size_t length)
 Parse Warning record. More...
 
error_t ntsClientParseAeadAlgoNegoRecord (NtsClientContext *context, const uint8_t *body, size_t length)
 Parse AEAD Algorithm Negotiation record. More...
 
error_t ntsClientParseNewCookieForNtpv4Record (NtsClientContext *context, const uint8_t *body, size_t length)
 Parse New Cookie for NTPv4 record. More...
 
error_t ntsClientParseNtpv4ServerRecord (NtsClientContext *context, const uint8_t *body, size_t length)
 Parse NTPv4 Server Negotiation record. More...
 
error_t ntsClientParseNtpv4PortRecord (NtsClientContext *context, const uint8_t *body, size_t length)
 Parse NTPv4 Port Negotiation record. More...
 
error_t ntsClientShutdownNtsKeConnection (NtsClientContext *context)
 Shutdown NTS-KE connection. More...
 
void ntsClientCloseNtsKeConnection (NtsClientContext *context)
 Close NTS-KE connection. More...
 
error_t ntsClientCheckNtsKeTimeout (NtsClientContext *context)
 Determine whether a timeout error has occurred (NTS-KE phase) More...
 
error_t ntsClientOpenNtpConnection (NtsClientContext *context)
 Open NTP connection. More...
 
error_t ntsClientSendNtpRequest (NtsClientContext *context)
 Send NTP request to the server. More...
 
error_t ntsClientReceiveNtpResponse (NtsClientContext *context)
 Wait for NTP response. More...
 
error_t ntsClientDecryptNtpResponse (NtsClientContext *context, const IpAddr *ipAddr, uint16_t port, const uint8_t *message, size_t length)
 Decrypt NTP response. More...
 
error_t ntsClientParseNtpResponse (NtsClientContext *context, NtpTimestamp *timestamp)
 Parse NTP response. More...
 
void ntsClientCloseNtpConnection (NtsClientContext *context)
 Close NTP connection. More...
 
error_t ntsClientCheckNtpTimeout (NtsClientContext *context)
 Determine whether a timeout error has occurred (NTP phase) More...
 

Detailed Description

Helper functions for NTS client.

License

SPDX-License-Identifier: GPL-2.0-or-later

Copyright (C) 2010-2024 Oryx Embedded SARL. All rights reserved.

This file is part of CycloneTCP Open.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

Author
Oryx Embedded SARL (www.oryx-embedded.com)
Version
2.4.4

Definition in file nts_client_misc.c.

Macro Definition Documentation

◆ TRACE_LEVEL

#define TRACE_LEVEL   NTS_TRACE_LEVEL

Definition at line 32 of file nts_client_misc.c.

Function Documentation

◆ ntsClientChangeState()

void ntsClientChangeState ( NtsClientContext context,
NtsClientState  newState 
)

Update NTS client state.

Parameters
[in]contextPointer to the NTS client context
[in]newStateNew state to switch to

Definition at line 57 of file nts_client_misc.c.

◆ ntsClientCheckNtpTimeout()

error_t ntsClientCheckNtpTimeout ( NtsClientContext context)

Determine whether a timeout error has occurred (NTP phase)

Parameters
[in]contextPointer to the NTS client context
Returns
Error code

Definition at line 1326 of file nts_client_misc.c.

◆ ntsClientCheckNtsKeTimeout()

error_t ntsClientCheckNtsKeTimeout ( NtsClientContext context)

Determine whether a timeout error has occurred (NTS-KE phase)

Parameters
[in]contextPointer to the NTS client context
Returns
Error code

Definition at line 787 of file nts_client_misc.c.

◆ ntsClientCloseNtpConnection()

void ntsClientCloseNtpConnection ( NtsClientContext context)

Close NTP connection.

Parameters
[in]contextPointer to the NTS client context

Definition at line 1308 of file nts_client_misc.c.

◆ ntsClientCloseNtsKeConnection()

void ntsClientCloseNtsKeConnection ( NtsClientContext context)

Close NTS-KE connection.

Parameters
[in]contextPointer to the NTS client context

Definition at line 769 of file nts_client_misc.c.

◆ ntsClientDecryptNtpResponse()

error_t ntsClientDecryptNtpResponse ( NtsClientContext context,
const IpAddr ipAddr,
uint16_t  port,
const uint8_t *  message,
size_t  length 
)

Decrypt NTP response.

Parameters
[in]contextPointer to the NTS client context
[in]ipAddrRemote IP address
[in]portRemote port number
[in]messagePointer to the NTP message
[in]lengthLength of the NTP message, in bytes
Returns
Error code

Definition at line 1079 of file nts_client_misc.c.

◆ ntsClientEstablishNtsKeConnection()

error_t ntsClientEstablishNtsKeConnection ( NtsClientContext context)

Establish NTS-KE connection.

Parameters
[in]contextPointer to the NTS client context
Returns
Error code

Definition at line 162 of file nts_client_misc.c.

◆ ntsClientFormatNtsKeRequest()

error_t ntsClientFormatNtsKeRequest ( NtsClientContext context)

Format NTS-KE request.

Parameters
[in]contextPointer to the NTS client context
Returns
Error code

Definition at line 188 of file nts_client_misc.c.

◆ ntsClientOpenNtpConnection()

error_t ntsClientOpenNtpConnection ( NtsClientContext context)

Open NTP connection.

Parameters
[in]contextPointer to the NTS client context
Returns
Error code

Definition at line 823 of file nts_client_misc.c.

◆ ntsClientOpenNtsKeConnection()

error_t ntsClientOpenNtsKeConnection ( NtsClientContext context)

Open NTS-KE connection.

Parameters
[in]contextPointer to the NTS client context
Returns
Error code

Definition at line 74 of file nts_client_misc.c.

◆ ntsClientParseAeadAlgoNegoRecord()

error_t ntsClientParseAeadAlgoNegoRecord ( NtsClientContext context,
const uint8_t *  body,
size_t  length 
)

Parse AEAD Algorithm Negotiation record.

Parameters
[in]contextPointer to the NTS client context
[in]bodyPointer to the record body
[in]lengthLength of the record body, in bytes
Returns
Error code

Definition at line 605 of file nts_client_misc.c.

◆ ntsClientParseEndOfMessageRecord()

error_t ntsClientParseEndOfMessageRecord ( NtsClientContext context,
const uint8_t *  body,
size_t  length 
)

Parse End of Message record.

Parameters
[in]contextPointer to the NTS client context
[in]bodyPointer to the record body
[in]lengthLength of the record body, in bytes
Returns
Error code

Definition at line 454 of file nts_client_misc.c.

◆ ntsClientParseErrorRecord()

error_t ntsClientParseErrorRecord ( NtsClientContext context,
const uint8_t *  body,
size_t  length 
)

Parse Error record.

Parameters
[in]contextPointer to the NTS client context
[in]bodyPointer to the record body
[in]lengthLength of the record body, in bytes
Returns
Error code

Definition at line 569 of file nts_client_misc.c.

◆ ntsClientParseNewCookieForNtpv4Record()

error_t ntsClientParseNewCookieForNtpv4Record ( NtsClientContext context,
const uint8_t *  body,
size_t  length 
)

Parse New Cookie for NTPv4 record.

Parameters
[in]contextPointer to the NTS client context
[in]bodyPointer to the record body
[in]lengthLength of the record body, in bytes
Returns
Error code

Definition at line 651 of file nts_client_misc.c.

◆ ntsClientParseNtpResponse()

error_t ntsClientParseNtpResponse ( NtsClientContext context,
NtpTimestamp timestamp 
)

Parse NTP response.

Parameters
[in]contextPointer to the NTS client context
[out]timestampPointer to the NTP timestamp
Returns
Error code

Definition at line 1267 of file nts_client_misc.c.

◆ ntsClientParseNtpv4PortRecord()

error_t ntsClientParseNtpv4PortRecord ( NtsClientContext context,
const uint8_t *  body,
size_t  length 
)

Parse NTPv4 Port Negotiation record.

Parameters
[in]contextPointer to the NTS client context
[in]bodyPointer to the record body
[in]lengthLength of the record body, in bytes
Returns
Error code

Definition at line 718 of file nts_client_misc.c.

◆ ntsClientParseNtpv4ServerRecord()

error_t ntsClientParseNtpv4ServerRecord ( NtsClientContext context,
const uint8_t *  body,
size_t  length 
)

Parse NTPv4 Server Negotiation record.

Parameters
[in]contextPointer to the NTS client context
[in]bodyPointer to the record body
[in]lengthLength of the record body, in bytes
Returns
Error code

Definition at line 686 of file nts_client_misc.c.

◆ ntsClientParseNtsNextProtoNegoRecord()

error_t ntsClientParseNtsNextProtoNegoRecord ( NtsClientContext context,
const uint8_t *  body,
size_t  length 
)

Parse NTS Next Protocol Negotiation record.

Parameters
[in]contextPointer to the NTS client context
[in]bodyPointer to the record body
[in]lengthLength of the record body, in bytes
Returns
Error code

Definition at line 526 of file nts_client_misc.c.

◆ ntsClientParseWarningRecord()

error_t ntsClientParseWarningRecord ( NtsClientContext context,
const uint8_t *  body,
size_t  length 
)

Parse Warning record.

Parameters
[in]contextPointer to the NTS client context
[in]bodyPointer to the record body
[in]lengthLength of the record body, in bytes
Returns
Error code

Definition at line 587 of file nts_client_misc.c.

◆ ntsClientReceiveNtpResponse()

error_t ntsClientReceiveNtpResponse ( NtsClientContext context)

Wait for NTP response.

Parameters
[in]contextPointer to the NTS client context
Returns
Error code

Definition at line 992 of file nts_client_misc.c.

◆ ntsClientReceiveNtsKeResponse()

error_t ntsClientReceiveNtsKeResponse ( NtsClientContext context)

Receive NTS-KE response.

Parameters
[in]contextPointer to the NTS client context
Returns
Error code

Definition at line 316 of file nts_client_misc.c.

◆ ntsClientSendNtpRequest()

error_t ntsClientSendNtpRequest ( NtsClientContext context)

Send NTP request to the server.

Parameters
[in]contextPointer to the NTS client context
Returns
Error code

Definition at line 862 of file nts_client_misc.c.

◆ ntsClientSendNtsKeRequest()

error_t ntsClientSendNtsKeRequest ( NtsClientContext context)

Send NTS-KE request.

Parameters
[in]contextPointer to the NTS client context
Returns
Error code

Definition at line 256 of file nts_client_misc.c.

◆ ntsClientShutdownNtsKeConnection()

error_t ntsClientShutdownNtsKeConnection ( NtsClientContext context)

Shutdown NTS-KE connection.

Parameters
[in]contextPointer to the NTS client context
Returns
Error code

Definition at line 740 of file nts_client_misc.c.