Browse Source

Much better zaddr validation to make sure we are operating on valid addresses

master
Jonathan "Duke" Leto 7 years ago
parent
commit
0b87c24bf2
  1. 7
      lib/Hush/Contact.pm
  2. 8
      lib/Hush/List.pm
  3. 12
      lib/Hush/Util.pm

7
lib/Hush/Contact.pm

@ -1,7 +1,7 @@
package Hush::Contact;
use strict;
use warnings;
use Hush::Util qw/barf/;
use Hush::Util qw/barf is_valid_zaddr/;
use Data::Dumper;
use File::Spec::Functions;
use Hush::Logger qw/debug/;
@ -16,7 +16,10 @@ sub contact {
"add" => sub {
# add a hush contact, yay
my ($cmd,$name,$zaddr) = @ARGV;
#barf Dumper [ $cmd, $name, $zaddr ];
barf "Invalid zaddr=$zaddr" unless is_valid_zaddr($zaddr);
barf Dumper [ $cmd, $name, $zaddr ];
#TODO: give user ability to choose
my $chain = "hush";
my $contacts_file = catdir($HUSHLIST_CONFIG_DIR,"$chain-contacts.txt");

8
lib/Hush/List.pm

@ -4,7 +4,7 @@ use warnings;
use Hush::RPC;
use Try::Tiny;
use File::Spec::Functions;
use Hush::Util qw/barf/;
use Hush::Util qw/barf is_valid_zaddr/;
use File::Slurp;
use Hush::Logger qw/debug/;
use Hush::Contact;
@ -134,12 +134,6 @@ sub exit_unless_hushlist_exists {
};
}
sub is_valid_zaddr {
my ($zaddr) = @_;
# TODO: only base58 is valid, and length
return ($zaddr =~ m/^zc[A-z0-9]+$/) ? 1 : 0;
}
# show details about a particular (hushlist,zaddr) pair
# NOTE: We assume that we only use one zaddr per hushlist for
# maximim metadata privacy, that is what we do, but other/custom software

12
lib/Hush/Util.pm

@ -3,7 +3,10 @@ use strict;
use warnings;
use Exporter 'import';
use Carp qw/longmess/;
our @EXPORT_OK = qw/ barf timing now/;
our @EXPORT_OK = qw/
barf timing now
is_valid_zaddr
/;
use Time::HiRes qw/gettimeofday tv_interval/;
sub now { [gettimeofday] }
@ -14,4 +17,11 @@ sub timing {
return sprintf "%1.4f", tv_interval($t0,$t1);
}
sub is_valid_zaddr {
my ($zaddr) = @_;
# TODO: only base58 is valid
return ($zaddr =~ m/^zc[A-z0-9]{94,94}$/) ? 1 : 0;
}
1;

Loading…
Cancel
Save