Mercurial > dropbear
view libtommath/booker.pl @ 994:5c5ade336926
Prefer stronger algorithms in algorithm negotiation.
Prefer diffie-hellman-group14-sha1 (2048 bit) over
diffie-hellman-group1-sha1 (1024 bit).
Due to meet-in-the-middle attacks the effective key length of
three key 3DES is 112 bits. AES is stronger and faster then 3DES.
Prefer to delay the start of compression until after authentication
has completed. This avoids exposing compression code to attacks
from unauthenticated users.
(github pull request #9)
author | Fedor Brunner <fedor.brunner@azet.sk> |
---|---|
date | Fri, 23 Jan 2015 23:00:25 +0800 |
parents | 5ff8218bcee9 |
children | 60fc6476e044 |
line wrap: on
line source
#!/bin/perl # #Used to prepare the book "tommath.src" for LaTeX by pre-processing it into a .tex file # #Essentially you write the "tommath.src" as normal LaTex except where you want code snippets you put # #EXAM,file # #This preprocessor will then open "file" and insert it as a verbatim copy. # #Tom St Denis #get graphics type if (shift =~ /PDF/) { $graph = ""; } else { $graph = ".ps"; } open(IN,"<tommath.src") or die "Can't open source file"; open(OUT,">tommath.tex") or die "Can't open destination file"; print "Scanning for sections\n"; $chapter = $section = $subsection = 0; $x = 0; while (<IN>) { print "."; if (!(++$x % 80)) { print "\n"; } #update the headings if (~($_ =~ /\*/)) { if ($_ =~ /\\chapter{.+}/) { ++$chapter; $section = $subsection = 0; } elsif ($_ =~ /\\section{.+}/) { ++$section; $subsection = 0; } elsif ($_ =~ /\\subsection{.+}/) { ++$subsection; } } if ($_ =~ m/MARK/) { @m = split(",",$_); chomp(@m[1]); $index1{@m[1]} = $chapter; $index2{@m[1]} = $section; $index3{@m[1]} = $subsection; } } close(IN); open(IN,"<tommath.src") or die "Can't open source file"; $readline = $wroteline = 0; $srcline = 0; while (<IN>) { ++$readline; ++$srcline; if ($_ =~ m/MARK/) { } elsif ($_ =~ m/EXAM/ || $_ =~ m/LIST/) { if ($_ =~ m/EXAM/) { $skipheader = 1; } else { $skipheader = 0; } # EXAM,file chomp($_); @m = split(",",$_); open(SRC,"<$m[1]") or die "Error:$srcline:Can't open source file $m[1]"; print "$srcline:Inserting $m[1]:"; $line = 0; $tmp = $m[1]; $tmp =~ s/_/"\\_"/ge; print OUT "\\vspace{+3mm}\\begin{small}\n\\hspace{-5.1mm}{\\bf File}: $tmp\n\\vspace{-3mm}\n\\begin{alltt}\n"; $wroteline += 5; if ($skipheader == 1) { # scan till next end of comment, e.g. skip license while (<SRC>) { $text[$line++] = $_; last if ($_ =~ /math\.libtomcrypt\.com/); } <SRC>; } $inline = 0; while (<SRC>) { next if ($_ =~ /\$Source/); next if ($_ =~ /\$Revision/); next if ($_ =~ /\$Date/); $text[$line++] = $_; ++$inline; chomp($_); $_ =~ s/\t/" "/ge; $_ =~ s/{/"^{"/ge; $_ =~ s/}/"^}"/ge; $_ =~ s/\\/'\symbol{92}'/ge; $_ =~ s/\^/"\\"/ge; printf OUT ("%03d ", $line); for ($x = 0; $x < length($_); $x++) { print OUT chr(vec($_, $x, 8)); if ($x == 75) { print OUT "\n "; ++$wroteline; } } print OUT "\n"; ++$wroteline; } $totlines = $line; print OUT "\\end{alltt}\n\\end{small}\n"; close(SRC); print "$inline lines\n"; $wroteline += 2; } elsif ($_ =~ m/@\d+,.+@/) { # line contains [number,text] # e.g. @14,for (ix = 0)@ $txt = $_; while ($txt =~ m/@\d+,.+@/) { @m = split("@",$txt); # splits into text, one, two @parms = split(",",$m[1]); # splits one,two into two elements # now search from $parms[0] down for $parms[1] $found1 = 0; $found2 = 0; for ($i = $parms[0]; $i < $totlines && $found1 == 0; $i++) { if ($text[$i] =~ m/\Q$parms[1]\E/) { $foundline1 = $i + 1; $found1 = 1; } } # now search backwards for ($i = $parms[0] - 1; $i >= 0 && $found2 == 0; $i--) { if ($text[$i] =~ m/\Q$parms[1]\E/) { $foundline2 = $i + 1; $found2 = 1; } } # now use the closest match or the first if tied if ($found1 == 1 && $found2 == 0) { $found = 1; $foundline = $foundline1; } elsif ($found1 == 0 && $found2 == 1) { $found = 1; $foundline = $foundline2; } elsif ($found1 == 1 && $found2 == 1) { $found = 1; if (($foundline1 - $parms[0]) <= ($parms[0] - $foundline2)) { $foundline = $foundline1; } else { $foundline = $foundline2; } } else { $found = 0; } # if found replace if ($found == 1) { $delta = $parms[0] - $foundline; print "Found replacement tag for \"$parms[1]\" on line $srcline which refers to line $foundline (delta $delta)\n"; $_ =~ s/@\Q$m[1]\E@/$foundline/; } else { print "ERROR: The tag \"$parms[1]\" on line $srcline was not found in the most recently parsed source!\n"; } # remake the rest of the line $cnt = @m; $txt = ""; for ($i = 2; $i < $cnt; $i++) { $txt = $txt . $m[$i] . "@"; } } print OUT $_; ++$wroteline; } elsif ($_ =~ /~.+~/) { # line contains a ~text~ pair used to refer to indexing :-) $txt = $_; while ($txt =~ /~.+~/) { @m = split("~", $txt); # word is the second position $word = @m[1]; $a = $index1{$word}; $b = $index2{$word}; $c = $index3{$word}; # if chapter (a) is zero it wasn't found if ($a == 0) { print "ERROR: the tag \"$word\" on line $srcline was not found previously marked.\n"; } else { # format the tag as x, x.y or x.y.z depending on the values $str = $a; $str = $str . ".$b" if ($b != 0); $str = $str . ".$c" if ($c != 0); if ($b == 0 && $c == 0) { # its a chapter if ($a <= 10) { if ($a == 1) { $str = "chapter one"; } elsif ($a == 2) { $str = "chapter two"; } elsif ($a == 3) { $str = "chapter three"; } elsif ($a == 4) { $str = "chapter four"; } elsif ($a == 5) { $str = "chapter five"; } elsif ($a == 6) { $str = "chapter six"; } elsif ($a == 7) { $str = "chapter seven"; } elsif ($a == 8) { $str = "chapter eight"; } elsif ($a == 9) { $str = "chapter nine"; } elsif ($a == 10) { $str = "chapter ten"; } } else { $str = "chapter " . $str; } } else { $str = "section " . $str if ($b != 0 && $c == 0); $str = "sub-section " . $str if ($b != 0 && $c != 0); } #substitute $_ =~ s/~\Q$word\E~/$str/; print "Found replacement tag for marker \"$word\" on line $srcline which refers to $str\n"; } # remake rest of the line $cnt = @m; $txt = ""; for ($i = 2; $i < $cnt; $i++) { $txt = $txt . $m[$i] . "~"; } } print OUT $_; ++$wroteline; } elsif ($_ =~ m/FIGU/) { # FIGU,file,caption chomp($_); @m = split(",", $_); print OUT "\\begin{center}\n\\begin{figure}[here]\n\\includegraphics{pics/$m[1]$graph}\n"; print OUT "\\caption{$m[2]}\n\\label{pic:$m[1]}\n\\end{figure}\n\\end{center}\n"; $wroteline += 4; } else { print OUT $_; ++$wroteline; } } print "Read $readline lines, wrote $wroteline lines\n"; close (OUT); close (IN);