Changeset 171


Ignore:
Timestamp:
04/07/09 02:55:42 (15 years ago)
Author:
nanardon
Message:
  • initial crypto work
Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/lib/Vote/DB/Ballot.pm

    r160 r171  
    3939 
    4040    my $sth = $self->db->prepare_cached( 
    41         q{ select * from ballot where id = ? } 
     41        q{ select * from  
     42           ballot left join  
     43           ballot_enc on ballot.id = ballot_enc.id  
     44           where ballot.id = ? } 
    4245    ); 
    4346 
  • trunk/lib/Vote/DB/Poll.pm

    r165 r171  
    77use Vote; 
    88use Mail::Mailer; 
     9use Crypt::RSA; 
     10use Crypt::CBC; 
     11use XML::Simple; 
     12use MIME::Base64; 
    913use base 'Vote::DB::common'; 
    1014use Vote::DB::Ballot; 
     
    300304        return; 
    301305    }; 
     306 
     307    $self->_register_ballot_items($uid, $choice, $fchoice) or do { 
     308        self->db->rollback; 
     309        return; 
     310    }; 
     311 
     312    $uid 
     313} 
     314 
     315sub _register_ballot_items { 
     316    my ($self, $uid, $choice, $fchoice) = @_; 
    302317 
    303318    my $addbc = $self->db->prepare_cached( 
     
    692707} 
    693708 
     709# crypto part 
     710 
     711sub rsa { 
     712    my ($self) = @_; 
     713    $self->{rsa} ||= new Crypt::RSA ES => 'PKCS1v15'; 
     714} 
     715 
     716sub gen_poll_keys { 
     717    my ($self) = @_; 
     718    my ($public, $private) = $self->rsa->keygen ( 
     719        Identity  => 'Epoll Vote ' . $self->voteid, 
     720        Size      => 768, 
     721        Password  => undef, 
     722        Verbosity => 0, 
     723        KF=>'SSH', 
     724    ) or die $self->rsa->errstr(); # TODO avoid die 
     725    $self->param( 
     726        public_key => $public->serialize, 
     727        private_key => encode_base64($private->serialize), 
     728    ); 
     729} 
     730 
     731sub public_key { 
     732    my ($self) = @_; 
     733    my $serialize = $self->info->{public_key} or return; 
     734    my $pubkey = Crypt::RSA::Key::Public->new; 
     735    $pubkey->deserialize($serialize); 
     736 
     737    $pubkey 
     738} 
     739 
    694740=head1 AUTHOR 
    695741 
Note: See TracChangeset for help on using the changeset viewer.