1#! /usr/bin/perl -w 2 3use strict; 4 5use ExtUtils::testlib; 6 7use GSSAPI qw(:all); 8use Test::More tests => 13; 9 10 11my $status; 12my $okay; 13 14my( $type); 15 16 17 18#------------------------------------------ 19 20my $oid = gss_nt_user_name; 21my $str; 22 23SKIP: 24{ 25 skip('oid_to_str not supportetd on Heimdal', 2) if GSSAPI::gssapi_implementation_is_heimdal(); 26 27 $status = $oid->to_str($str); 28 ok($status, ' $oid->to_str($str) '); 29 cmp_ok($str, 'eq', '{ 1 2 840 113554 1 2 1 1 }', q{ $str eq '{ 1 2 840 113554 1 2 1 1 }' }); 30 31} 32 33 { my(@oidss); foreach(1..1000) { push @oidss, GSSAPI::OID::Set->new() }; 34 } 35 36 my($oidset); 37 38$status = gss_mech_krb5->inquire_names($oidset); 39ok(ref $status eq 'GSSAPI::Status', q{ref $status eq 'GSSAPI::Status'}); 40ok($status, 'gss_mech_krb5->inquire_names($oidset);'); 41 42 43undef $oidset; 44 45 46 47 48# 49# GSSAPI::Binding 50# 51 my($binding); 52 53 $binding = GSSAPI::Binding->new(); 54 ok(ref $binding eq "GSSAPI::Binding");; 55 ok($binding->get_initiator_addrtype == GSS_C_AF_NULLADDR, 56 '$binding->get_initiator_addrtype == GSS_C_AF_NULLADDR'); 57 ok(! defined $binding->get_initiator_address); 58 ok($binding->get_acceptor_addrtype == GSS_C_AF_NULLADDR, 59 '$binding->get_acceptor_addrtype == GSS_C_AF_NULLADDR'); 60 ok(! defined $binding->get_acceptor_address); 61 ok(! defined $binding->get_appl_data); 62 63 $okay = 1; 64 foreach (1 .. 1000) { 65 $binding = GSSAPI::Binding->new(); 66 ref $binding eq "GSSAPI::Binding" or $okay = 0, last; 67 } 68 ok($okay, 'GSSAPI::Binding->new()'); 69 70 71 # first, just random types 72 $okay = 1; 73 foreach (1 .. 1000) { 74 my($type1, $type2); 75 $binding = GSSAPI::Binding->new(); 76 ref $binding eq "GSSAPI::Binding" or $okay = 0, last; 77 $type1 = int(rand(0x7fffffff)); 78 $type2 = int(rand(0x7fffffff)); 79 80 $binding->set_initiator($type1, undef); 81 $binding->set_acceptor($type2, undef); 82 $binding->get_initiator_addrtype == $type1 && 83 ! defined $binding->get_initiator_address && 84 $binding->get_acceptor_addrtype == $type2 && 85 ! defined $binding->get_acceptor_address or $okay = 0, last; 86 } 87 ok($okay, 'random types as input of GSSAPI::Binding'); 88 # Now, random types and values 89 $okay = 1; 90 foreach (1 .. 1000) { 91 my($type1, $addr1, $type2, $addr2, $appl); 92 93 $type1 = int(rand(0x7fffffff)); 94 $addr1 = rand_string(); 95 $type2 = int(rand(0x7fffffff)); 96 $addr2 = rand_string(); 97 $appl = rand_string(); 98 99 $binding = GSSAPI::Binding->new(); 100 ref $binding eq "GSSAPI::Binding" or $okay = 0, last; 101 102 $binding->set_initiator($type1, $addr1); 103 $binding->set_acceptor($type2, $addr2); 104 $binding->set_appl_data($appl); 105 106 $binding->get_initiator_addrtype == $type1 && 107 $binding->get_initiator_address eq $addr1 && 108 $binding->get_acceptor_addrtype == $type2 && 109 $binding->get_acceptor_address eq $addr2 && 110 $binding->get_appl_data eq $appl or $okay = 0, last; 111 undef $binding; 112 } 113 ok($okay, 'random types and values as input of GSSAPI::Binding'); 114 115 116 117 118 119 120 121#------------------------------------------------------------- 122 123sub rand_string { 124 my($length, $buf); 125 $length = int(rand(64)); 126 $buf = ''; 127 foreach (1..$length) { 128 $buf .= chr(rand(0xFF)); 129 } 130 $buf 131}