Permalink
Cannot retrieve contributors at this time
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
mbedtls/programs/x509/crl_app.c
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
132 lines (107 sloc)
3.09 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* CRL reading application | |
* | |
* Copyright The Mbed TLS Contributors | |
* SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later | |
*/ | |
#include "mbedtls/build_info.h" | |
#include "mbedtls/platform.h" | |
#if !defined(MBEDTLS_BIGNUM_C) || !defined(MBEDTLS_RSA_C) || \ | |
!defined(MBEDTLS_X509_CRL_PARSE_C) || !defined(MBEDTLS_FS_IO) || \ | |
defined(MBEDTLS_X509_REMOVE_INFO) | |
int main(void) | |
{ | |
mbedtls_printf("MBEDTLS_BIGNUM_C and/or MBEDTLS_RSA_C and/or " | |
"MBEDTLS_X509_CRL_PARSE_C and/or MBEDTLS_FS_IO not defined and/or " | |
"MBEDTLS_X509_REMOVE_INFO defined.\n"); | |
mbedtls_exit(0); | |
} | |
#else | |
#include "mbedtls/x509_crl.h" | |
#include <stdio.h> | |
#include <stdlib.h> | |
#include <string.h> | |
#define DFL_FILENAME "crl.pem" | |
#define DFL_DEBUG_LEVEL 0 | |
#define USAGE \ | |
"\n usage: crl_app param=<>...\n" \ | |
"\n acceptable parameters:\n" \ | |
" filename=%%s default: crl.pem\n" \ | |
"\n" | |
/* | |
* global options | |
*/ | |
struct options { | |
const char *filename; /* filename of the certificate file */ | |
} opt; | |
int main(int argc, char *argv[]) | |
{ | |
int ret = 1; | |
int exit_code = MBEDTLS_EXIT_FAILURE; | |
unsigned char buf[100000]; | |
mbedtls_x509_crl crl; | |
int i; | |
char *p, *q; | |
/* | |
* Set to sane values | |
*/ | |
mbedtls_x509_crl_init(&crl); | |
#if defined(MBEDTLS_USE_PSA_CRYPTO) | |
psa_status_t status = psa_crypto_init(); | |
if (status != PSA_SUCCESS) { | |
mbedtls_fprintf(stderr, "Failed to initialize PSA Crypto implementation: %d\n", | |
(int) status); | |
goto exit; | |
} | |
#endif /* MBEDTLS_USE_PSA_CRYPTO */ | |
if (argc < 2) { | |
usage: | |
mbedtls_printf(USAGE); | |
goto exit; | |
} | |
opt.filename = DFL_FILENAME; | |
for (i = 1; i < argc; i++) { | |
p = argv[i]; | |
if ((q = strchr(p, '=')) == NULL) { | |
goto usage; | |
} | |
*q++ = '\0'; | |
if (strcmp(p, "filename") == 0) { | |
opt.filename = q; | |
} else { | |
goto usage; | |
} | |
} | |
/* | |
* 1.1. Load the CRL | |
*/ | |
mbedtls_printf("\n . Loading the CRL ..."); | |
fflush(stdout); | |
ret = mbedtls_x509_crl_parse_file(&crl, opt.filename); | |
if (ret != 0) { | |
mbedtls_printf(" failed\n ! mbedtls_x509_crl_parse_file returned %d\n\n", ret); | |
mbedtls_x509_crl_free(&crl); | |
goto exit; | |
} | |
mbedtls_printf(" ok\n"); | |
/* | |
* 1.2 Print the CRL | |
*/ | |
mbedtls_printf(" . CRL information ...\n"); | |
ret = mbedtls_x509_crl_info((char *) buf, sizeof(buf) - 1, " ", &crl); | |
if (ret == -1) { | |
mbedtls_printf(" failed\n ! mbedtls_x509_crl_info returned %d\n\n", ret); | |
mbedtls_x509_crl_free(&crl); | |
goto exit; | |
} | |
mbedtls_printf("%s\n", buf); | |
exit_code = MBEDTLS_EXIT_SUCCESS; | |
exit: | |
mbedtls_x509_crl_free(&crl); | |
#if defined(MBEDTLS_USE_PSA_CRYPTO) | |
mbedtls_psa_crypto_free(); | |
#endif /* MBEDTLS_USE_PSA_CRYPTO */ | |
mbedtls_exit(exit_code); | |
} | |
#endif /* MBEDTLS_BIGNUM_C && MBEDTLS_RSA_C && MBEDTLS_X509_CRL_PARSE_C && | |
MBEDTLS_FS_IO */ |