1*d82e2864SMark Murray#!/usr/bin/perl 2*d82e2864SMark Murray 3*d82e2864SMark Murray# 4*d82e2864SMark Murray# Test program for /dev/urandom 5*d82e2864SMark Murray# Read and display random numbers. 6*d82e2864SMark Murray# This also reads /dev/zero to make sure there is no brokenness there. 7*d82e2864SMark Murray# 8*d82e2864SMark Murray# 9*d82e2864SMark Murray 10*d82e2864SMark Murrayopen(ZERO, "/dev/zero") || die "Cannot open /dev/zero - $!\n"; 11*d82e2864SMark Murray 12*d82e2864SMark Murrayfor (;;) { 13*d82e2864SMark Murray open(BIN, "/dev/urandom"); 14*d82e2864SMark Murray $len = sysread(BIN, $a, 20); 15*d82e2864SMark Murray sysread(ZERO, $b, 20); 16*d82e2864SMark Murray close(BIN); 17*d82e2864SMark Murray if ($len > 0) { 18*d82e2864SMark Murray for ($j = 0; $j < $len; $j += 2) { 19*d82e2864SMark Murray $k = unpack("S", substr($a, $j, 2)); 20*d82e2864SMark Murray $z = unpack("S", substr($b, $j, 2)); 21*d82e2864SMark Murray $z == 0 || die "/dev/zero is returning non-zero!\n"; 22*d82e2864SMark Murray printf("%.4X ", $k); 23*d82e2864SMark Murray } 24*d82e2864SMark Murray printf "\n"; 25*d82e2864SMark Murray } 26*d82e2864SMark Murray} 27