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
b<equation>
Return ascii string representation of the field equation
rounded_div
division with rounding
b<test_bit>
test if a bit in an integer is set
size_in_bits
binary size in bits of an integer

BUGS

Too slow for routine use with secure sizes at present.  This will likely be fixed
with XS code in a future release.  Use prime curves instead for now.

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 395:

'=item' outside of any '=over'

Around line 417:

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

Around line 433:

=over without closing =back