* NAME
* SYNOPSIS
* DESCRIPTION
* CONSTRUCTOR
* DATA METHODS
* OBJECT METHODS
* KEY OBJECT METHODS
* AUTHOR
* LICENSE
* DISCLAIMER
_________________________________________________________________
NAME
Crypt::Schnorr::AuthSign - Schnorr Authentication & Signature Protocols
_________________________________________________________________
SYNOPSIS
use Crypt::Schnorr::AuthSign;
$schnorr = new Crypt::Schnorr::AuthSign;
$schnorr->qsize($bitlength); # Set size of modulus q
$schnorr->version($versionstring); # Set version string.
$schnorr->comment($commentstring); # Set comment string.
$schnorr->debug($boolean); # Control debugging output.
$schnorr->hash($coderef); # Set hash function for signing.
$schnorr->keygen(%metainfo) # Create a new keypair.
$key = $schnorr->secretkey(); # Get secret key.
$schnorr->secretkey($secretkey); # Set secret key.
$key = $schnorr->pubkey(); # Get public key.
$schnorr->pubkey($secretkey); # Set public key.
$keystr = $key->export(); # Stringify the key.
$key = new Crypt::Schnorr::Key($keystr); # Snarf a stringified key.
$name = $key->meta(Name); # Metadata access.
$key->meta(Name => 'JAPH'); # Set metadata values.
$req = $schnorr->authreq(); # Create authorization request.
$c = $schnorr->challenge($req); # Create authorization challenge.
$response = $schnorr->response($c); # Create response to a challenge.
$auth = $schnorr->verify($response); # Verify authentication response.
$sign = $schnorr->sign($msg); # Create a signature for $msg.
$validity = $schnorr->verify($sign, $msg); # Verify signature on $msg.
_________________________________________________________________
DESCRIPTION
This module implements the basic Schnorr authentication and signature
protocols. It supports zlib compression, Radix64 encoding for exported
keys and protocol packets, and a simple method for binding metadata to
keys. It does not provide any key management functions or maintain a
key database.
_________________________________________________________________
CONSTRUCTOR
new()
Creates and returns a new Crypt::Schnorr::AuthSign object.
_________________________________________________________________
DATA METHODS
qsize()
Sets the QSIZE instance variable which can be used to change
the bitlength of the prime 'q' which is the modulus for most of
the calculations in the protocol. A smaller prime, 'p' (q=pk+1)
is also used - its bitlength is dependent on the choice of q.
secretkey()
If called without parameters, returns the Crypt::Schnorr::Key
object corresponding to the active secret key. If passed a
Crypt::Schnorr::Key object, makes that key the currently active
secret key.
pubkey()
If called without parameters, returns the Crypt::Schnorr::Key
object corresponding to the active public key. If passed a
Crypt::Schnorr::Key object, makes that key the currently active
public key.
version()
Sets the VERSION instance variable which can be used to change
the Version: string on the generated protocol packets to
whatever you like. If called without parameters, simply returns
the value of the VERSION instance variable.
comment()
Sets the COMMENT instance variable which can be used to change
the Comment: string on the generated protocol packets to
whatever you like. If called without parameters, simply returns
the value of the COMMENT instance variable.
debug()
Sets the DEBUG instance variable which causes the module to
emit debugging information if set to a true value. If called
without parameters, simply returns the value of the DEBUG
instance variable.
hash()
Sets or fetches the HASH instance variable - a coderef. The
referenced routine should compute a message digest of it's
first argument and return the digest as a decimal or hex
number.
_________________________________________________________________
OBJECT METHODS
keygen(%metainfo)
Generates new public key parameters, creates a new keypair, and
binds the name/value pairs of %metainfo with it. Sets the
active secret and public keys to the generated keypair. Returns
undef if there was an error, otherwise returns a filehandle
that reports the progress of the key generation process.
authreq()
Creates and returns an authorization request. Saves parameters
associated with the request for use in the rest of the
authorization protocol.
challenge($authreq)
Generates and returns a challenge to the authorization request
in $authreq, and saves the request parameters for use in the
rest of the authorization protocol.
response($challenge)
Generates and returns a response to the authorization challenge
in $challenge, using some of the information saved by the last
call to authreq().
sign($message)
Computes a message digest of $message, and returns a signature
on this message digest. The message digest is computed using
the default hash routine (SHA1 with Digest::SHA1) or the hash
routine set with the last call to hash().
verify($response)
Attempts to verify the response packet $response against the
currently active public key, which should previously have been
set by a call to pubkey() or some other method. Returns true
iff the authorization succeeded.
_________________________________________________________________
KEY OBJECT METHODS
new($keypacket)
Creates a new Crypt::Schnorr::Key object and initializes it
from the key information in $keypacket. The $keypacket argument
is required.
export()
Returns a Radix64 encoded representation of the key.
meta()
Allows metadata access. Provide a label to retrieve the value
associated with it, provide a label/value pair and it will be
associated with the key, replacing the old value if metadata
with the specified label already exists. If called without
parameters, will return a list containing all metadata
key/value pairs.
_________________________________________________________________
AUTHOR
Crypt::Schnorr::AuthSign is Copyright (c) 2001 Ashish Gulhati
<
[email protected]>. All Rights Reserved.
_________________________________________________________________
LICENSE
This code is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
_________________________________________________________________
DISCLAIMER
This is free software. If it breaks, you own both parts.