NAME

Crypt::ECDSA::Curve::Koblitz -- binary (F(2**N)) curves for EC cryptography

DESCRIPTION

These are for use with Crypt::ECDSA, a Math::BigInt based cryptography module. These routines work most efficiently if the GMP math library is installed, and in particular the point multiply function may be quite tedious without the GMP math library, which enables Math::BigInt::GMP.

METHODS

new
Delegated to base class Crypt::ECDSA::Curve
reduce_F2m
Special binary field function--reduce the result of addition or multiplication on
the curve by the 'irreducible' basis polynomial.  Akin to modular addition, but slower :(.
multiply_F2m
Binary field multiplication
invert_F2m
Binary field inversion: used for binary field division, so that
  $x * $y             becomes 
  $x * invert_F2m($y)
is_on_curve
return 1 if (x, y) is on the curve, otherwise undef.
add_on_curve
Add a point on the curve to itself or another
subtract_on_curve
Subtract a point on the curve.  Same as addition.
double_on_curve
Double a point on the curve.   
Returns a new point, does NOT change the original.
inverse_on_curve
get a point's additive inverse
multiply_on_curve
my $Q = $G * n;

Multiply a curve point by a scalar.  
Note this should always be Point * scalar, not scalar * Point.
is_weak_curve
tests for known weak curve parameters
tau_point_multiply
Koblitz curve binary field point multiply algorithm from draft FIPS 186-3, pages 111-114  
FUNCTIONS
equation
Return ascii string representation of the field equation

BUGS

Windows compatibility needs work. Some of this is the GMP library.

AUTHOR

William Herrera B<wherrera@skylightview.com>. 

SUPPORT

Questions, feature requests and bug reports should go to <wherrera@skylightview.com>.

COPYRIGHT

    Copyright (c) 2007 William Herrera. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

3 POD Errors

The following errors were encountered while parsing the POD:

Around line 240:

'=item' outside of any '=over'

Around line 250:

You forgot a '=back' before '=head1'

Around line 265:

=over without closing =back