acme_client_challenge.c File Reference

Challenge object management. More...

#include "acme/acme_client.h"
#include "acme/acme_client_challenge.h"
#include "acme/acme_client_jose.h"
#include "acme/acme_client_misc.h"
#include "pkix/pem_export.h"
#include "pkix/x509_cert_create.h"
#include "encoding/base64url.h"
#include "encoding/asn1.h"
#include "jansson.h"
#include "debug.h"

Go to the source code of this file.

Macros

#define TRACE_LEVEL   ACME_TRACE_LEVEL
 

Functions

error_t acmeClientSendChallengeReadyRequest (AcmeClientContext *context, AcmeChallenge *challenge)
 Send HTTP request (challenge URL) More...
 
error_t acmeClientFormatChallengeReadyRequest (AcmeClientContext *context, AcmeChallenge *challenge)
 Format HTTP request body (challenge URL) More...
 
error_t acmeClientParseChallengeReadyResponse (AcmeClientContext *context)
 Parse HTTP response (challenge URL) More...
 
AcmeChallengeStatus acmeClientParseChallengeStatus (const char_t *label)
 Parse challenge status field. More...
 
AcmeChallengeType acmeClientParseChallengeType (const char_t *label)
 Parse challenge type field. More...
 
AcmeChallengeType acmeClientGetChallengeType (AcmeClientContext *context, const char_t *identifier, bool_t wildcard)
 Retrieve the challenge type used for a given domain name. More...
 
error_t acmeClientGenerateKeyAuthorization (AcmeClientContext *context, AcmeChallenge *challenge)
 Generate key authorization. More...
 
error_t acmeClientDigestKeyAuthorization (AcmeClientContext *context, AcmeChallenge *challenge)
 Digest the key authorization (for DNS challenge only) More...
 
error_t acmeClientGenerateTlsAlpnCert (AcmeClientContext *context, AcmeChallenge *challenge)
 Generate a self-signed certificate (TLS-ALPN challenge only) More...
 

Variables

const uint8_t ACME_IDENTIFIER_OID [8] = {0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x1F}
 

Detailed Description

Challenge object management.

License

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

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

This file is part of CycloneACME 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.0

Definition in file acme_client_challenge.c.

Macro Definition Documentation

◆ TRACE_LEVEL

#define TRACE_LEVEL   ACME_TRACE_LEVEL

Definition at line 32 of file acme_client_challenge.c.

Function Documentation

◆ acmeClientDigestKeyAuthorization()

error_t acmeClientDigestKeyAuthorization ( AcmeClientContext context,
AcmeChallenge challenge 
)

Digest the key authorization (for DNS challenge only)

Parameters
[in]contextPointer to the ACME client context
[in]challengePointer to the challenge object
Returns
Error code

Definition at line 392 of file acme_client_challenge.c.

◆ acmeClientFormatChallengeReadyRequest()

error_t acmeClientFormatChallengeReadyRequest ( AcmeClientContext context,
AcmeChallenge challenge 
)

Format HTTP request body (challenge URL)

Parameters
[in]contextPointer to the ACME client context
[in]challengePointer to the challenge object
Returns
Error code

Definition at line 148 of file acme_client_challenge.c.

◆ acmeClientGenerateKeyAuthorization()

error_t acmeClientGenerateKeyAuthorization ( AcmeClientContext context,
AcmeChallenge challenge 
)

Generate key authorization.

Parameters
[in]contextPointer to the ACME client context
[in]challengePointer to the challenge object
Returns
Error code

Definition at line 340 of file acme_client_challenge.c.

◆ acmeClientGenerateTlsAlpnCert()

error_t acmeClientGenerateTlsAlpnCert ( AcmeClientContext context,
AcmeChallenge challenge 
)

Generate a self-signed certificate (TLS-ALPN challenge only)

Parameters
[in]contextPointer to the ACME client context
[in]challengePointer to the challenge object
Returns
Error code

Definition at line 426 of file acme_client_challenge.c.

◆ acmeClientGetChallengeType()

AcmeChallengeType acmeClientGetChallengeType ( AcmeClientContext context,
const char_t identifier,
bool_t  wildcard 
)

Retrieve the challenge type used for a given domain name.

Parameters
[in]contextPointer to the ACME client context
[in]identifierNULL-terminated string that contains a domain name
[in]wildcardWildcard domain name
Returns
Challenge type

Definition at line 291 of file acme_client_challenge.c.

◆ acmeClientParseChallengeReadyResponse()

error_t acmeClientParseChallengeReadyResponse ( AcmeClientContext context)

Parse HTTP response (challenge URL)

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

Definition at line 187 of file acme_client_challenge.c.

◆ acmeClientParseChallengeStatus()

AcmeChallengeStatus acmeClientParseChallengeStatus ( const char_t label)

Parse challenge status field.

Parameters
[in]labelTextual representation of the status
Returns
Authorization status code

Definition at line 209 of file acme_client_challenge.c.

◆ acmeClientParseChallengeType()

AcmeChallengeType acmeClientParseChallengeType ( const char_t label)

Parse challenge type field.

Parameters
[in]labelTextual representation of the challenge type
Returns
Challenge type

Definition at line 252 of file acme_client_challenge.c.

◆ acmeClientSendChallengeReadyRequest()

error_t acmeClientSendChallengeReadyRequest ( AcmeClientContext context,
AcmeChallenge challenge 
)

Send HTTP request (challenge URL)

Parameters
[in]contextPointer to the ACME client context
[in]challengePointer to the challenge object
Returns
Error code

Definition at line 60 of file acme_client_challenge.c.

Variable Documentation

◆ ACME_IDENTIFIER_OID

const uint8_t ACME_IDENTIFIER_OID[8] = {0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x1F}

Definition at line 50 of file acme_client_challenge.c.