home *** CD-ROM | disk | FTP | other *** search
/ PC Professionell 2004 December / PCpro_2004_12.ISO / files / webserver / tsw / TSW_3.4.0.exe / Apache2 / perl / SSH1MP.pm < prev    next >
Encoding:
Perl POD Document  |  2001-04-24  |  825 b   |  41 lines

  1. # $Id: SSH1MP.pm,v 1.3 2001/04/17 00:55:19 btrott Exp $
  2.  
  3. package Net::SSH::Perl::Util::SSH1MP;
  4. use strict;
  5.  
  6. use Digest::MD5 qw( md5 );
  7. use Math::GMP;
  8.  
  9. sub _compute_session_id {
  10.     my($check_bytes, $host, $public) = @_;
  11.     my $id;
  12.     $id .= _mp_linearize($host->{rsa}{n});
  13.     $id .= _mp_linearize($public->{rsa}{n});
  14.     $id .= $check_bytes;
  15.     md5($id);
  16. }
  17.  
  18. sub _mp_linearize {
  19.     my($p, $l) = @_;
  20.     $l ||= 0;
  21.     my $base = Math::GMP->new(256);
  22.     my $res = '';
  23.     {
  24.         my $r = $p % $base;
  25.         my $d = Math::GMP->new($p-$r) / $base;
  26.         $res = chr($r) . $res;
  27.         if ($d >= $base) {
  28.             $p = $d;
  29.             redo;
  30.         }
  31.         elsif ($d != 0) {
  32.             $res = chr($d) . $res;
  33.         }
  34.     }
  35.     $res = "\0" x ($l-length($res)) . $res
  36.         if length($res) < $l;
  37.     $res;
  38. }
  39.  
  40. 1;
  41.