Blame crypto/conf/keysets.pl

Packit c4476c
#! /usr/bin/env perl
Packit c4476c
# Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved.
Packit c4476c
#
Packit c4476c
# Licensed under the OpenSSL license (the "License").  You may not use
Packit c4476c
# this file except in compliance with the License.  You can obtain a copy
Packit c4476c
# in the file LICENSE in the source distribution or at
Packit c4476c
# https://www.openssl.org/source/license.html
Packit c4476c
Packit c4476c
use strict;
Packit c4476c
use warnings;
Packit c4476c
Packit c4476c
my $NUMBER      = 0x0001;
Packit c4476c
my $UPPER       = 0x0002;
Packit c4476c
my $LOWER       = 0x0004;
Packit c4476c
my $UNDER       = 0x0100;
Packit c4476c
my $PUNCTUATION = 0x0200;
Packit c4476c
my $WS          = 0x0010;
Packit c4476c
my $ESC         = 0x0020;
Packit c4476c
my $QUOTE       = 0x0040;
Packit c4476c
my $DQUOTE      = 0x0400;
Packit c4476c
my $COMMENT     = 0x0080;
Packit c4476c
my $FCOMMENT    = 0x0800;
Packit c4476c
my $EOF         = 0x0008;
Packit c4476c
my @V_def;
Packit c4476c
my @V_w32;
Packit c4476c
Packit c4476c
my $v;
Packit c4476c
my $c;
Packit c4476c
foreach (0 .. 127) {
Packit c4476c
    $c = sprintf("%c", $_);
Packit c4476c
    $v = 0;
Packit c4476c
    $v |= $NUMBER      if $c =~ /[0-9]/;
Packit c4476c
    $v |= $UPPER       if $c =~ /[A-Z]/;
Packit c4476c
    $v |= $LOWER       if $c =~ /[a-z]/;
Packit c4476c
    $v |= $UNDER       if $c =~ /_/;
Packit c4476c
    $v |= $PUNCTUATION if $c =~ /[!\.%&\*\+,\/;\?\@\^\~\|-]/;
Packit c4476c
    $v |= $WS          if $c =~ /[ \t\r\n]/;
Packit c4476c
    $v |= $ESC         if $c =~ /\\/;
Packit c4476c
    $v |= $QUOTE       if $c =~ /['`"]/;         # for emacs: "`'
Packit c4476c
    $v |= $COMMENT     if $c =~ /\#/;
Packit c4476c
    $v |= $EOF         if $c =~ /\0/;
Packit c4476c
    push(@V_def, $v);
Packit c4476c
Packit c4476c
    $v = 0;
Packit c4476c
    $v |= $NUMBER      if $c =~ /[0-9]/;
Packit c4476c
    $v |= $UPPER       if $c =~ /[A-Z]/;
Packit c4476c
    $v |= $LOWER       if $c =~ /[a-z]/;
Packit c4476c
    $v |= $UNDER       if $c =~ /_/;
Packit c4476c
    $v |= $PUNCTUATION if $c =~ /[!\.%&\*\+,\/;\?\@\^\~\|-]/;
Packit c4476c
    $v |= $WS          if $c =~ /[ \t\r\n]/;
Packit c4476c
    $v |= $DQUOTE      if $c =~ /["]/;           # for emacs: "
Packit c4476c
    $v |= $FCOMMENT    if $c =~ /;/;
Packit c4476c
    $v |= $EOF         if $c =~ /\0/;
Packit c4476c
    push(@V_w32, $v);
Packit c4476c
}
Packit c4476c
Packit c4476c
# Output year depends on the year of the script.
Packit c4476c
my $YEAR = [localtime([stat($0)]->[9])]->[5] + 1900;
Packit c4476c
Packit c4476c
print <<"EOF";
Packit c4476c
/*
Packit c4476c
 * WARNING: do not edit!
Packit c4476c
 * Generated by crypto/conf/keysets.pl
Packit c4476c
 *
Packit c4476c
 * Copyright 1995-$YEAR The OpenSSL Project Authors. All Rights Reserved.
Packit c4476c
 * Licensed under the OpenSSL license (the "License").  You may not use
Packit c4476c
 * this file except in compliance with the License.  You can obtain a copy
Packit c4476c
 * in the file LICENSE in the source distribution or at
Packit c4476c
 * https://www.openssl.org/source/license.html
Packit c4476c
 */
Packit c4476c
Packit c4476c
#define CONF_NUMBER       $NUMBER
Packit c4476c
#define CONF_UPPER        $UPPER
Packit c4476c
#define CONF_LOWER        $LOWER
Packit c4476c
#define CONF_UNDER        $UNDER
Packit c4476c
#define CONF_PUNCT        $PUNCTUATION
Packit c4476c
#define CONF_WS           $WS
Packit c4476c
#define CONF_ESC          $ESC
Packit c4476c
#define CONF_QUOTE        $QUOTE
Packit c4476c
#define CONF_DQUOTE       $DQUOTE
Packit c4476c
#define CONF_COMMENT      $COMMENT
Packit c4476c
#define CONF_FCOMMENT     $FCOMMENT
Packit c4476c
#define CONF_EOF          $EOF
Packit c4476c
#define CONF_ALPHA        (CONF_UPPER|CONF_LOWER)
Packit c4476c
#define CONF_ALNUM        (CONF_ALPHA|CONF_NUMBER|CONF_UNDER)
Packit c4476c
#define CONF_ALNUM_PUNCT  (CONF_ALPHA|CONF_NUMBER|CONF_UNDER|CONF_PUNCT)
Packit c4476c
Packit c4476c
Packit c4476c
#define IS_COMMENT(conf,c)     is_keytype(conf, c, CONF_COMMENT)
Packit c4476c
#define IS_FCOMMENT(conf,c)    is_keytype(conf, c, CONF_FCOMMENT)
Packit c4476c
#define IS_EOF(conf,c)         is_keytype(conf, c, CONF_EOF)
Packit c4476c
#define IS_ESC(conf,c)         is_keytype(conf, c, CONF_ESC)
Packit c4476c
#define IS_NUMBER(conf,c)      is_keytype(conf, c, CONF_NUMBER)
Packit c4476c
#define IS_WS(conf,c)          is_keytype(conf, c, CONF_WS)
Packit c4476c
#define IS_ALNUM(conf,c)       is_keytype(conf, c, CONF_ALNUM)
Packit c4476c
#define IS_ALNUM_PUNCT(conf,c) is_keytype(conf, c, CONF_ALNUM_PUNCT)
Packit c4476c
#define IS_QUOTE(conf,c)       is_keytype(conf, c, CONF_QUOTE)
Packit c4476c
#define IS_DQUOTE(conf,c)      is_keytype(conf, c, CONF_DQUOTE)
Packit c4476c
Packit c4476c
EOF
Packit c4476c
Packit c4476c
my $i;
Packit c4476c
Packit c4476c
print "static const unsigned short CONF_type_default[128] = {";
Packit c4476c
for ($i = 0; $i < 128; $i++) {
Packit c4476c
    print "\n   " if ($i % 8) == 0;
Packit c4476c
    printf " 0x%04X,", $V_def[$i];
Packit c4476c
}
Packit c4476c
print "\n};\n\n";
Packit c4476c
Packit c4476c
print "static const unsigned short CONF_type_win32[128] = {";
Packit c4476c
for ($i = 0; $i < 128; $i++) {
Packit c4476c
    print "\n   " if ($i % 8) == 0;
Packit c4476c
    printf " 0x%04X,", $V_w32[$i];
Packit c4476c
}
Packit c4476c
print "\n};\n";