#!/usr/bin/perl

# wyswietl_klucz( *HANDLE, $n, $k )
#    wysyla klucz publiczny lub prywatny do uchwytu HANDLE
sub wyswietl_klucz {
    local *HANDLE = shift;
    my ( $n, $k ) = @_;
    # automatyczna konwersja liczb BN do postaci ciagu cyfr.
    print HANDLE "$n\n$k\n";
}

# ( $n, $k ) = czytaj_klucz( *HANDLE );
#    Odczyt klucza (2 wiersze) z uchwytu HANDLE.
sub czytaj_klucz {
    local *HANDLE = shift;
    my @wynik;

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

    return @wynik;
}

__END__

# Zapisanie kluczy w dwoch plikach.
open KEY, ">klucz_prywatny";
wyswietl_klucz( *KEY, $n, $d );
close KEY;
open KEY, ">klucz_publiczny";
wyswietl_klucz( *KEY, $n, $e );
close KEY;

# Odczyt prywatnego klucza z pliku.
open KEY, "<klucz_prywatny";
my( $moje_n, $moje_d ) = czytaj_klucz( *KEY );
close KEY;

# Odczyt klucza publicznego innego uzytkownika.
open KEY, "<klucz_publiczny.$znajomy";
my( $jego_n, $jego_e ) = czytaj_klucz( *KEY );
close KEY;

