The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
# $Id: 53-DS-GOST.t 1304 2015-01-26 07:50:36Z willem $

use strict;

BEGIN {
	use Test::More;

	my @prerequisite = qw(
		Digest::GOST
		Digest::GOST::CryptoPro
		);

	foreach my $package (@prerequisite) {
		plan skip_all => "$package not installed"
			unless eval "require $package";
	}

	plan tests => 4;

	use_ok('Net::DNS::SEC');
}


# Simple known-answer tests based upon the examples given in RFC5933, section 4.1

my $dnskey = Net::DNS::RR->new(
	'example.net. 86400   DNSKEY  257 3 12 (
					LMgXRHzSbIJGn6i16K+sDjaDf/k1o9DbxScO
					gEYqYS/rlh2Mf+BRAY3QHPbwoPh2fkDKBroF
					SRGR7ZYcx+YIQw==
					) ; key id = 40692'
	);

my $ds = Net::DNS::RR->new(
	'example.net. 3600 IN DS 40692 12 3 (
			22261A8B0E0D799183E35E24E2AD6BB58533CBA7E3B14D659E9CA09B
			2071398F )'
	);


my $test = create Net::DNS::RR::DS(
	$dnskey,
	digtype => 'GOST',
	ttl	=> 3600
	);

is( $test->string, $ds->string, 'created DS matches RFC5933 example DS' );

ok( $test->verify($dnskey), 'created DS verifies RFC5933 example DNSKEY' );

ok( $ds->verify($dnskey), 'RFC5933 example DS verifies DNSKEY' );

$test->print;

__END__