Add custom configurations with activation script

This commit is contained in:
Manuel Pégourié-Gonnard 2013-09-20 15:11:44 +02:00
parent fe28646f72
commit 684e9dc52e
5 changed files with 208 additions and 0 deletions

68
scripts/activate-config.pl Executable file
View file

@ -0,0 +1,68 @@
#!/usr/bin/perl
# activate a pre-defined configuration
use warnings;
use strict;
my $config_h = "../include/polarssl/config.h";
exit( main() );
sub read_default {
open my $fh, '<', $config_h or die "Failed to read $config_h: $!\n";
my (@pre, @post);
my $state = 'pre';
while( my $line = <$fh> ) {
if( $state eq 'pre' ) {
push @pre, $line;
$state = 'skip' if $line =~ /} name SECTION: System support/;
}
elsif( $state eq 'skip' ) {
$state = 'post' if $line =~/} name SECTION: PolarSSL modules/;
}
else {
push @post, $line;
}
}
die "Failed to parse $config_h\n" if( $state ne 'post' );
close $fh;
push @pre, "\n";
return \@pre, \@post;
}
sub read_custom {
my ($file_name) = @_;
open my $fh, '<', $file_name or die "Failed to read $file_name: $!\n";
my @content = <$fh>;
close $fh;
return \@content;
}
sub write_custom {
my ($pre, $mid, $post) = @_;
open my $fh, '>', $config_h or die "Failed to write $config_h: $!\n";
print $fh @$pre;
print $fh @$mid;
print $fh @$post;
close $fh;
}
sub main {
my $custom_file_name = $ARGV[0];
my ($pre, $post) = read_default();
my $mine = read_custom( $custom_file_name );
write_custom( $pre, $mine, $post );
return 0;
}

View file

@ -0,0 +1,50 @@
/*
* Minimal configuration for TLS 1.1 (RFC 4346), implementing only the
* required ciphersuite: TLS_RSA_WITH_3DES_EDE_CBC_SHA
*
* Can be activated with:
* cd scripts
* ./activate-config.pl data_files/config-mini-tls1_1.h
*/
/* PolarSSL feature support */
#define POLARSSL_CIPHER_MODE_CBC
#define POLARSSL_PKCS1_V15
#define POLARSSL_KEY_EXCHANGE_RSA_ENABLED
#define POLARSSL_SSL_PROTO_TLS1_1
/* PolarSSL modules */
#define POLARSSL_AES_C
#define POLARSSL_ASN1_PARSE_C
#define POLARSSL_ASN1_WRITE_C
#define POLARSSL_BIGNUM_C
#define POLARSSL_CIPHER_C
#define POLARSSL_CTR_DRBG_C
#define POLARSSL_DES_C
#define POLARSSL_ENTROPY_C
#define POLARSSL_MD_C
#define POLARSSL_MD5_C
#define POLARSSL_NET_C
#define POLARSSL_OID_C
#define POLARSSL_PK_C
#define POLARSSL_PK_PARSE_C
#define POLARSSL_RSA_C
#define POLARSSL_SHA1_C
#define POLARSSL_SHA256_C
#define POLARSSL_SSL_CLI_C
#define POLARSSL_SSL_SRV_C
#define POLARSSL_SSL_TLS_C
#define POLARSSL_X509_CRL_PARSE_C
#define POLARSSL_X509_CRT_PARSE_C
#define POLARSSL_X509_USE_C
/* For test certificates */
#define POLARSSL_BASE64_C
#define POLARSSL_CERTS_C
#define POLARSSL_PEM_PARSE_C
/* For testing with compat.sh */
#define POLARSSL_FS_IO
/* marker for activate-config.pl
* \} name SECTION: PolarSSL modules */

View file

@ -0,0 +1,33 @@
/*
* Custom compact configuration for TLS 1.0 with PSK and RC4
* Distinguishing features: no bignum, no PK, no X509.
*
* Can be activated with:
* cd scripts
* ./activate-config.pl data_files/config-mini-tls1_1.h
*/
/* PolarSSL feature support */
#define POLARSSL_KEY_EXCHANGE_PSK_ENABLED
#define POLARSSL_SSL_PROTO_TLS1
/* PolarSSL modules */
#define POLARSSL_AES_C
#define POLARSSL_ARC4_C
#define POLARSSL_ASN1_PARSE_C
#define POLARSSL_ASN1_WRITE_C
#define POLARSSL_CIPHER_C
#define POLARSSL_CTR_DRBG_C
#define POLARSSL_ENTROPY_C
#define POLARSSL_MD_C
#define POLARSSL_MD5_C
#define POLARSSL_NET_C
#define POLARSSL_OID_C
#define POLARSSL_SHA1_C
#define POLARSSL_SHA256_C
#define POLARSSL_SSL_CLI_C
#define POLARSSL_SSL_SRV_C
#define POLARSSL_SSL_TLS_C
/* marker for activate-config.pl
* \} name SECTION: PolarSSL modules */

View file

@ -0,0 +1,54 @@
/*
* Minimal configuration for TLS NSA Suite B Profile (RFC 6460)
*
* Can be activated with:
* cd scripts
* ./activate-config.pl data_files/config-mini-tls1_1.h
*/
/* PolarSSL feature support */
#define POLARSSL_ECP_DP_SECP256R1_ENABLED
#define POLARSSL_ECP_DP_SECP384R1_ENABLED
#define POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
#define POLARSSL_SSL_PROTO_TLS1_2
/* PolarSSL modules */
#define POLARSSL_AES_C
#define POLARSSL_ASN1_PARSE_C
#define POLARSSL_ASN1_WRITE_C
#define POLARSSL_BIGNUM_C
#define POLARSSL_CIPHER_C
#define POLARSSL_CTR_DRBG_C
#define POLARSSL_ECDH_C
#define POLARSSL_ECDSA_C
#define POLARSSL_ECP_C
#define POLARSSL_ENTROPY_C
#define POLARSSL_GCM_C
#define POLARSSL_MD_C
#define POLARSSL_NET_C
#define POLARSSL_OID_C
#define POLARSSL_PK_C
#define POLARSSL_PK_PARSE_C
#define POLARSSL_SHA256_C
#define POLARSSL_SHA512_C
#define POLARSSL_SSL_CLI_C
#define POLARSSL_SSL_SRV_C
#define POLARSSL_SSL_TLS_C
#define POLARSSL_X509_CRL_PARSE_C
#define POLARSSL_X509_CRT_PARSE_C
#define POLARSSL_X509_USE_C
/* For test certificates */
#define POLARSSL_BASE64_C
#define POLARSSL_CERTS_C
#define POLARSSL_PEM_PARSE_C
/* For testing with compat.sh */
#define POLARSSL_FS_IO
/* Temporary for current certificates */
#define POLARSSL_ECP_DP_SECP192R1_ENABLED
#define POLARSSL_SHA1_C
/* marker for activate-config.pl
* \} name SECTION: PolarSSL modules */

View file

@ -1,5 +1,8 @@
#!/usr/bin/perl
# create individual project files for example programs
# for VS6 and VS2010
use warnings;
use strict;