Mailing List Archive

svn commit: r1900976 - /spamassassin/trunk/lib/Mail/SpamAssassin/Util.pm
Author: hege
Date: Tue May 17 05:40:33 2022
New Revision: 1900976

URL: http://svn.apache.org/viewvc?rev=1900976&view=rev
Log:
Add very simple Util/base32_encode function for HashBL

Modified:
spamassassin/trunk/lib/Mail/SpamAssassin/Util.pm

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Util.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Util.pm?rev=1900976&r1=1900975&r2=1900976&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Util.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Util.pm Tue May 17 05:40:33 2022
@@ -52,7 +52,7 @@ use Exporter ();

our @ISA = qw(Exporter);
our @EXPORT = ();
-our @EXPORT_OK = qw(&local_tz &base64_decode &base64_encode
+our @EXPORT_OK = qw(&local_tz &base64_decode &base64_encode &base32_encode
&untaint_var &untaint_file_path &exit_status_str
&proc_status_ok &am_running_on_windows &reverse_ip_address
&decode_dns_question_entry &touch_file &secure_tmpfile
@@ -995,6 +995,26 @@ sub base64_encode {
return $_;
}

+# Very basic Base32 encoder
+our %base32_bitchr = (
+ '00000'=>'A', '00001'=>'B', '00010'=>'C', '00011'=>'D', '00100'=>'E',
+ '00101'=>'F', '00110'=>'G', '00111'=>'H', '01000'=>'I', '01001'=>'J',
+ '01010'=>'K', '01011'=>'L', '01100'=>'M', '01101'=>'N', '01110'=>'O',
+ '01111'=>'P', '10000'=>'Q', '10001'=>'R', '10010'=>'S', '10011'=>'T',
+ '10100'=>'U', '10101'=>'V', '10110'=>'W', '10111'=>'X', '11000'=>'Y',
+ '11001'=>'Z', '11010'=>'2', '11011'=>'3', '11100'=>'4', '11101'=>'5',
+ '11110'=>'6', '11111'=>'7'
+);
+sub base32_encode {
+ my ($str) = @_;
+ return if !defined $str;
+ utf8::encode($str) if utf8::is_utf8($str); # force octets
+ my $bits = unpack("B*", $str)."0000";
+ my $output;
+ $output .= $base32_bitchr{$1} while ($bits =~ /(.{5})/g);
+ return $output;
+}
+
###########################################################################

sub portable_getpwuid {