mirror of
https://github.com/espressif/mbedtls.git
synced 2026-10-31 04:46:26 +00:00
For easier maintenance the framework repository is flattened here and added to the forked branch in source format.
102 lines
2.0 KiB
Perl
Executable File
102 lines
2.0 KiB
Perl
Executable File
#!/usr/bin/env perl
|
|
#
|
|
# Based on NIST gcmDecryptxxx.rsp validation files
|
|
# Only first 3 of every set used for compile time saving
|
|
#
|
|
# Copyright The Mbed TLS Contributors
|
|
# SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
|
|
|
|
use strict;
|
|
|
|
my $file = shift;
|
|
|
|
open(TEST_DATA, "$file") or die "Opening test cases '$file': $!";
|
|
|
|
sub get_suite_val($)
|
|
{
|
|
my $name = shift;
|
|
my $val = "";
|
|
|
|
while(my $line = <TEST_DATA>)
|
|
{
|
|
next if ($line !~ /^\[/);
|
|
($val) = ($line =~ /\[$name\s\=\s(\w+)\]/);
|
|
last;
|
|
}
|
|
|
|
return $val;
|
|
}
|
|
|
|
sub get_val($)
|
|
{
|
|
my $name = shift;
|
|
my $val = "";
|
|
my $line;
|
|
|
|
while($line = <TEST_DATA>)
|
|
{
|
|
next if($line !~ /=/);
|
|
last;
|
|
}
|
|
|
|
($val) = ($line =~ /^$name = (\w+)/);
|
|
|
|
return $val;
|
|
}
|
|
|
|
sub get_val_or_fail($)
|
|
{
|
|
my $name = shift;
|
|
my $val = "FAIL";
|
|
my $line;
|
|
|
|
while($line = <TEST_DATA>)
|
|
{
|
|
next if($line !~ /=/ && $line !~ /FAIL/);
|
|
last;
|
|
}
|
|
|
|
($val) = ($line =~ /^$name = (\w+)/) if ($line =~ /=/);
|
|
|
|
return $val;
|
|
}
|
|
|
|
my $cnt = 1;;
|
|
while (my $line = <TEST_DATA>)
|
|
{
|
|
my $key_len = get_suite_val("Keylen");
|
|
next if ($key_len !~ /\d+/);
|
|
my $iv_len = get_suite_val("IVlen");
|
|
my $pt_len = get_suite_val("PTlen");
|
|
my $add_len = get_suite_val("AADlen");
|
|
my $tag_len = get_suite_val("Taglen");
|
|
|
|
for ($cnt = 0; $cnt < 3; $cnt++)
|
|
{
|
|
my $Count = get_val("Count");
|
|
my $key = get_val("Key");
|
|
my $iv = get_val("IV");
|
|
my $ct = get_val("CT");
|
|
my $add = get_val("AAD");
|
|
my $tag = get_val("Tag");
|
|
my $pt = get_val_or_fail("PT");
|
|
|
|
print("GCM NIST Validation (AES-$key_len,$iv_len,$pt_len,$add_len,$tag_len) #$Count\n");
|
|
print("gcm_decrypt_and_verify");
|
|
print(":\"$key\"");
|
|
print(":\"$ct\"");
|
|
print(":\"$iv\"");
|
|
print(":\"$add\"");
|
|
print(":$tag_len");
|
|
print(":\"$tag\"");
|
|
print(":\"$pt\"");
|
|
print(":0");
|
|
print("\n\n");
|
|
}
|
|
}
|
|
|
|
print("GCM Selftest\n");
|
|
print("gcm_selftest:\n\n");
|
|
|
|
close(TEST_DATA);
|