Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion library/x509_crt.c
Original file line number Diff line number Diff line change
Expand Up @@ -1744,7 +1744,7 @@ static int x509_info_cert_policies(char **buf, size_t *size,
/*
* Return an informational string about the certificate.
*/
#define MBEDTLS_BEFORE_COLON 18
#define MBEDTLS_BEFORE_COLON 32
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why 32? And why update only this and not the corresponding _STR macro below?

Copy link
Author

@Mario-Klebsch Mario-Klebsch Oct 2, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why 32?

Increasing the buffer size by 2 would have been sufficient. But I wanted to have some spara space, just in case someone changes mbedtls_x509_key_size_helper().

And why update only this and not the corresponding _STR macro below?

Changing the MBEDTLS_BEFORE_COLON enlarges the buffer and makes sure, that no MBEDTLS_ERR_X509_BUFFER_TOO_SMALL-error is generated.

Changing the MBEDTLS_BEFORE_COLON_STR macro changes the format string for printf in a way, that is does not match the other printf-statements. Here is a sample output:

cert. version     : 3
serial number     : F7:B9:58:6A:3B:C7:61:9A
issuer name       : CN=Intermediate CA
subject name      : CN=Server
issued  on        : 2025-10-02 08:48:33
expires on        : 2035-09-30 08:48:33
signed using      : ECDSA with SHA256
EC key size       : 256 bits
basic constraints : CA=false
key usage         : Digital Signature

When the MBEDTLS_BEFORE_COLON_STR-Macro is changed, the other printf format strings would need to be updated too.

I choose to not update the MBEDTLS_BEFORE_COLON_STR-Macro, because IMHO that is not a problem. In cases, when no MBEDTLS_ERR_X509_BUFFER_TOO_SMALL error is generated, the output of mbedtls_x509_crt_info() would be the same as before.

In case the current implementation fails with MBEDTLS_ERR_X509_BUFFER_TOO_SMALL, the colon in the info string would not be adjusted to the colons of the other lines.

To me, this seems like a reasonable compromize.

#define MBEDTLS_BEFORE_COLON_STR "18"
int mbedtls_x509_crt_info(char *buf, size_t size, const char *prefix,
const mbedtls_x509_crt *crt)
Expand Down Expand Up @@ -1807,6 +1807,7 @@ int mbedtls_x509_crt_info(char *buf, size_t size, const char *prefix,
/* Key size */
if ((ret = mbedtls_x509_key_size_helper(key_size_str, MBEDTLS_BEFORE_COLON,
mbedtls_pk_get_name(&crt->pk))) != 0) {
assert(ret != MBEDTLS_ERR_X509_BUFFER_TOO_SMALL);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We don't use assert in the library.

Copy link
Author

@Mario-Klebsch Mario-Klebsch Oct 2, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The purpose of assert()ions is to signal errors in the internal logic of some software. In this case, supplying an insuffently sized buffer to mbedtls_x509_key_size_helper() in an error in the program logic. This is the reason, why I added an assertion.

Just remove it from my contribution, if you don't want to use this extra instrumentation in your code.

return ret;
}

Expand Down
3 changes: 2 additions & 1 deletion library/x509_csr.c
Original file line number Diff line number Diff line change
Expand Up @@ -519,7 +519,7 @@ int mbedtls_x509_csr_parse_file(mbedtls_x509_csr *csr, const char *path)
#endif /* MBEDTLS_FS_IO */

#if !defined(MBEDTLS_X509_REMOVE_INFO)
#define MBEDTLS_BEFORE_COLON 14
#define MBEDTLS_BEFORE_COLON 32
#define MBEDTLS_BEFORE_COLON_STR "14"
/*
* Return an informational string about the CSR.
Expand Down Expand Up @@ -552,6 +552,7 @@ int mbedtls_x509_csr_info(char *buf, size_t size, const char *prefix,

if ((ret = mbedtls_x509_key_size_helper(key_size_str, MBEDTLS_BEFORE_COLON,
mbedtls_pk_get_name(&csr->pk))) != 0) {
assert(ret != MBEDTLS_ERR_X509_BUFFER_TOO_SMALL);
return ret;
}

Expand Down