The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Crypt::ECDSA::Blind - Blind ECDSA Signatures

VERSION

 $Revision: 1.015 $
 $Date: Tue Oct 16 22:40:55 PDT 2018 $

SYNOPSIS

This module implements the blind ECDSA signature protocol outlined in [1].

    use Crypt::ECDSA::Blind;

    my $ecdsab = new Crypt::ECDSA::Blind;

    my ($pubkey, $seckey) = $ecdsab->keygen;

    my $msg = 'Hello, world!';

    my $init = $ecdsab->init;

    my $req = $ecdsab->request( Key => $pubkey, Init => $init,
                                Message => $msg );

    my $blindsig = $ecdsab->sign( Key => $seckey, Init => $init,
                                  Plaintext => $req );

    my $sig = $ecdsab->unblind( Key => $pubkey, Init => $init,
                                Signature => $blindsig );

    print "Verified\n" if $ecdsab->verify( Key => $pubkey, Message => $msg,
                                           Signature => $sig );

METHODS

new

Creates and returns a new Crypt::ECDSA::Blind object. The following optional named parameters can be provided:

    DB - Full pathname of a file to use for the database of initialization vectors. This can also be the special filename ':memory:' in which case the database will be in RAM rather than on a disk file. The default is '/tmp/ceb.db'.

keygen

Generates and returns an ECDSA key-pair for blind signing.

init

Generates and returns an initialization vector for blind signing. The initialization vector should be passed in to the request(), sign() and unblind() methods in the Init named parameter.

preinit

Generates and saves an initialization vector for later retrieval by init. Keeping pre-prepared initialization vectors available for use on demand will speed up calls to init.

request

Generates and returns a blind signing request. The following named parameters are required:

    Init - The initialization vector from init()

    Key - The public key of the signer

    Message - The message to be blind signed

sign

Generates and returns a blind signature. The following named parameters are required:

    Init - The initialization vector from init()

    Key - The private key of the signer

    Plaintext - The blind-signing request

unblind

Unblinds a blind signature and returns a verifiable signature. The following named parameters are required:

    Init - The initialization vector from init()

    Key - The public key of the signer

    Signature - The blind signature

verify

Verify a signature. The dollowing named parameters are required:

    Key - The public key of the signer

    Signature - The blind signature

    Message - The message that was signed

ACCESSORS

Accessors can be called with no arguments to query the value of an object property, or with a single argument, to set the property to a specific value (unless it is read-only).

db

The filename of the file to use for the database of initialization vectors. Default is '/tmp/ceb.db'.

debug

Set true to emit helpful messages for debugging purposes, false otherwise. Default is false.

REFERENCES

1. A blind digital signature scheme using elliptic curve digital signature algorithm, Ismail Butun, Mehmet Demirer. http://journals.tubitak.gov.tr/elektrik/abstract.htm?id=13855

AUTHOR

Ashish Gulhati, <crypt-ecdsab at hash.neo.tc>

BUGS

Please report any bugs or feature requests to bug-crypt-ecdsa-blind at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Crypt-ECDSA-Blind. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

SUPPORT

You can find documentation for this module with the perldoc command.

    perldoc Crypt::ECDSA::Blind

You can also look for information at:

LICENSE AND COPYRIGHT

Copyright (c) Ashish Gulhati.

This software package is Open Software; you can use, redistribute, and/or modify it under the terms of the Open Artistic License 2.0.

Please see http://www.opensoftwr.org/oal20.txt for the full license terms, and ensure that the license grant applies to you before using or modifying this software. By using or modifying this software, you indicate your agreement with the license terms.