blob: 5f4b3d0c6a91b817cfce0d6ea416889632aee8da [file] [log] [blame]
Gilles Peskinef040a172017-05-05 18:56:12 +02001#!/usr/bin/env perl
Bence Szépkúti700ee442020-05-26 00:33:31 +02002#
Bence Szépkúti1e148272020-08-07 13:07:28 +02003# Copyright The Mbed TLS Contributors
Dave Rodgman16799db2023-11-02 19:47:20 +00004# SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
Bence Szépkúti700ee442020-05-26 00:33:31 +02005
Gilles Peskinef040a172017-05-05 18:56:12 +02006use strict;
7use warnings;
8
Gilles Peskinefd14bca2017-05-11 17:57:22 +02009if (!@ARGV || $ARGV[0] == '--help') {
10 print <<EOF;
11Usage: $0 mbedtls_test_foo <file.pem
12 $0 TEST_FOO mbedtls_test_foo <file.pem
13Print out a PEM file as C code defining a string constant.
14
15Used to include some of the test data in /library/certs.c for
16self-tests and sample programs.
17EOF
18 exit;
19}
20
Gilles Peskinef040a172017-05-05 18:56:12 +020021my $pp_name = @ARGV > 1 ? shift @ARGV : undef;
22my $name = shift @ARGV;
23
24my @lines = map {chomp; s/([\\"])/\\$1/g; "\"$_\\r\\n\""} <STDIN>;
25
26if (defined $pp_name) {
27 foreach ("#define $pp_name", @lines[0..@lines-2]) {
28 printf "%-72s\\\n", $_;
29 }
30 print "$lines[@lines-1]\n";
31 print "const char $name\[\] = $pp_name;\n";
32} else {
33 print "const char $name\[\] =";
34 foreach (@lines) {
35 print "\n$_";
36 }
37 print ";\n";
38}