mirror of
https://git.rtems.org/rtems-libbsd/
synced 2025-05-13 04:44:55 +08:00
141 lines
3.9 KiB
C
141 lines
3.9 KiB
C
/**
|
|
* @file
|
|
*
|
|
* The openssl certificate generation is tested and performance of
|
|
* cryptographic algorithm is shown.
|
|
*/
|
|
|
|
/*
|
|
* Copyright (c) 2013-2019 embedded brains GmbH. All rights reserved.
|
|
*
|
|
* embedded brains GmbH
|
|
* Dornierstr. 4
|
|
* 82178 Puchheim
|
|
* Germany
|
|
* <rtems@embedded-brains.de>
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions
|
|
* are met:
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
* documentation and/or other materials provided with the distribution.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
* SUCH DAMAGE.
|
|
*/
|
|
|
|
#include <sys/param.h>
|
|
#include <sys/stat.h>
|
|
#include <assert.h>
|
|
#include <errno.h>
|
|
#include <fcntl.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <sysexits.h>
|
|
#include <unistd.h>
|
|
|
|
#include <rtems/bsd/modules.h>
|
|
|
|
#include <machine/rtems-bsd-commands.h>
|
|
|
|
#define TEST_NAME "LIBBSD OPENSSL 2"
|
|
|
|
#define ARGC(x) RTEMS_BSD_ARGC(x)
|
|
|
|
#ifdef RTEMS_BSD_MODULE_USR_BIN_OPENSSL
|
|
static void
|
|
test_cmd_gencert(void)
|
|
{
|
|
int fd;
|
|
int rv;
|
|
struct stat sb;
|
|
char *openssl_gencert[] = {
|
|
"openssl",
|
|
"req",
|
|
"-config",
|
|
"/openssl.cfg",
|
|
"-nodes",
|
|
"-newkey",
|
|
"rsa:2048",
|
|
"-keyout",
|
|
"/example.key",
|
|
"-out",
|
|
"example.csr",
|
|
"-subj",
|
|
"/C=GB/ST=London/L=London/O=Global Security/OU=IT Department/CN=example.com",
|
|
NULL
|
|
};
|
|
|
|
static const char config[] =
|
|
"[ req ]\n"
|
|
"distinguished_name = req_distinguished_name\n"
|
|
"[ req_distinguished_name ]\n"
|
|
"countryName = Country Name (2 letter code)\n"
|
|
"stateOrProvinceName = State or Province Name (full name)\n"
|
|
"localityName = Locality Name (eg, city)\n"
|
|
"0.organizationName = Organization Name (eg, company)\n"
|
|
"0.organizationName_default = Internet Widgits Pty Ltd\n"
|
|
"organizationalUnitName = Organizational Unit Name (eg, section)\n"
|
|
"organizationalUnitName_default =\n"
|
|
"commonName = Common Name (e.g. server FQDN or YOUR name)\n"
|
|
"commonName_max = 64\n"
|
|
"emailAddress = Email Address\n"
|
|
"emailAddress_max = 64\n";
|
|
|
|
/* Create config file. */
|
|
fd = open("/openssl.cfg", O_WRONLY | O_CREAT, S_IRWXU | S_IRWXG | S_IRWXO);
|
|
assert(fd != -1);
|
|
rv = write(fd, config, sizeof(config));
|
|
assert(rv == sizeof(config));
|
|
rv = close(fd);
|
|
assert(rv == 0);
|
|
|
|
rtems_bsd_command_openssl(ARGC(openssl_gencert), openssl_gencert);
|
|
|
|
assert(stat("/example.key", &sb) == 0);
|
|
assert(stat("/example.csr", &sb) == 0);
|
|
}
|
|
|
|
static void
|
|
test_cmd_speed(void)
|
|
{
|
|
int fd;
|
|
int rv;
|
|
struct stat sb;
|
|
char *openssl_speed[] = {
|
|
"openssl",
|
|
"speed",
|
|
"sha1",
|
|
NULL
|
|
};
|
|
|
|
rtems_bsd_command_openssl(ARGC(openssl_speed), openssl_speed);
|
|
}
|
|
#endif /* RTEMS_BSD_MODULE_USR_BIN_OPENSSL */
|
|
|
|
static void
|
|
test_main(void)
|
|
{
|
|
#ifdef RTEMS_BSD_MODULE_USR_BIN_OPENSSL
|
|
test_cmd_gencert();
|
|
test_cmd_speed();
|
|
#else /* ! RTEMS_BSD_MODULE_USR_BIN_OPENSSL */
|
|
puts("openssl command not enabled in the current build set");
|
|
#endif /* RTEMS_BSD_MODULE_USR_BIN_OPENSSL */
|
|
exit(0);
|
|
}
|
|
|
|
#include <rtems/bsd/test/default-init.h>
|