#!/usr/bin/perl

# printkey( *HANDLE, $n, $k )
#    print a key (either public or private) onto a handle
sub printkey {
    local *HANDLE = shift;
    my ( $n, $k ) = @_;
    # BN numbers convert to strings of digits automatically.
    print HANDLE "$n\n$k\n";
}

# ( $n, $k ) = readkey( *HANDLE );
#    Read a key (2 lines) from a handle.
sub readkey {
    local *HANDLE = shift;
    my @results;

    foreach $i (0..1) {
        my $in = <HANDLE>;
        chomp $in;
        push( @results, SSLeay::BN::dec2bn( $in ) );
    }

    return @results;
}

__END__

# Save our keys in two files.
open KEY, ">privatekey";
printkey( *KEY, $n, $d );
close KEY;
open KEY, ">publickey";
printkey( *KEY, $n, $e );
close KEY;

# Read our private key from a file.
open KEY, "<privatekey";
my( $our_n, $our_d ) = readkey( *KEY );
close KEY;

# Read our friend's public key from a file.
open KEY, "<publickey.$friend";
my( $his_n, $his_e ) = readkey( *KEY );
close KEY;
