#!/usr/bin/perl -w # bio.pl mikem@open.com.au # # Test and demonstrate BIO interface use Net::SSLeay qw(die_now); $data = '0123456789' x 100; $len = length($data); $b = &Net::SSLeay::BIO_new(&Net::SSLeay::BIO_s_mem()) or die_now("Could not create memory BIO $!"); &Net::SSLeay::BIO_write($b, $data) or die_now("Could not write memory BIO $!"); # Should now have 1000 bytes in BIO $pending = &Net::SSLeay::BIO_pending($b); die("Incorrect result from BIO_pending: $pending. Should be $len") unless $pending == $len; # Partial read of 9 bytes $len = 9; $part = &Net::SSLeay::BIO_read($b, $len); $nlen = length($part); die("Incorrect result from BIO_read: $len. Should be 9") unless $nlen == $len; die("Incorrect data from BIO_read: $len. Should be 012345678") unless $part eq '012345678'; # Should be 991 bytes left $len = 991; $pending = &Net::SSLeay::BIO_pending($b); die("Incorrect result from BIO_pending: $pending. Should be $len") unless $pending == $len; # Read the rest $part = &Net::SSLeay::BIO_read($b); $nlen = length($part); die("Incorrect result from BIO_read: $len. Should be 991") unless $len == $nlen; &Net::SSLeay::BIO_free($b); print "OK\n"; exit;