in reply to Re: Crypt::CBC and IO:Socket
in thread Crypt::CBC and IO:Socket

I writed this code: server.pl:
sub server { # my $plaintext = $cipher->decrypt($buf); # my $in = "SERVER: Text: ".$plaintext; # my $ciphertext = $cipher->encrypt($in); # print($new_sock $ciphertext); my $plaintext = decrypt($buf); my $in = "SERVER: Text: ".$plaintext; my $ciphertext = crypt_($in); } sub crypt_ { $cipher->start('encrypting'); print $sock $cipher->crypt($_) while <STDIN>; print $sock $cipher->finish(); } sub decrypt { $cipher->start('decrypting'); local $/ = \4096; process_bytes($cipher->crypt($_)) while <$sock>; process_bytes($cipher->finish()); }
client.pl:
if ($kid) { # parent reads from STDIN, prints to socket while (defined($in = <STDIN>)) { # my $ciphertext = $cipher->encrypt($in); # print $ciphertext; # print $sock $ciphertext; my $ciphertext = crypt_($in); } # kill the child process kill(TERM => $kid); } else { # child reads from socket, prints to STDOUT while (defined($buf = <$sock>)) { # my $plaintext = $cipher->decrypt($buf); # print $plaintext; my $plaintext = decrypt($buf); print $plaintext; } close $sock; } sub crypt_ { $cipher->start('encrypting'); print $sock $cipher->crypt($_) while <STDIN>; print $sock $cipher->finish(); } sub decrypt { $cipher->start('decrypting'); local $/ = \4096; process_bytes($cipher->crypt($_)) while <$sock>; process_bytes($cipher->finish()); }
In output from server.pl i have error:
wmp@innocence:~/ISS/iss/daemon$ ./server.pl Undefined subroutine &main::process_bytes called at ./server.pl line 6 +6. wmp@innocence:~/ISS/iss/daemon$
In client.pl again I must clicks enter. How to i can use IO::Socket::SSL ?

Replies are listed 'Best First'.
Re^3: Crypt::CBC and IO:Socket
by ikegami (Patriarch) on Jul 22, 2009 at 20:58 UTC

    In output from server.pl i have error:

    You need to provide the sub. Incoming bytes are fed to that sub. What you do in it is up to you.

    In client.pl again I must clicks enter.

    Well yeah, that's what <STDIN> means. You'll need Term::ReadKey to read a key at a time from the keyboard.

      What these functions: crypt_ ; decrypt must do? Is this function written properly? Why i'm getting this error:
      Undefined subroutine &main::process_bytes called at ./server.pl line 6 +6
      Line 66:
      process_bytes($cipher->finish());
      And, how can I use IO::Socket::SSL ? There is only http example in manual.

        Why i'm getting this error:

        You need to provide the sub process_bytes. Incoming bytes are fed to that sub. What you do in it is up to you.

        And, how can I use IO::Socket::SSL ? There is only http example in manual.

        Just like IO::Socket::INET. "This module is a true drop-in replacement for IO::Socket::INET that uses SSL to encrypt data before it is transferred to a remote server or client."