BeeCrypt  4.2.1
Typedefs | Functions

Digital Signature Algorithm, as specified by NIST FIPS 186. More...

#include "beecrypt/dlkp.h"
Include dependency graph for dsa.h:

Go to the source code of this file.

Typedefs

typedef dldp_p dsaparam
 
typedef dlpk_p dsapub
 
typedef dlkp_p dsakp
 

Functions

int dsasign (const mpbarrett *p, const mpbarrett *q, const mpnumber *g, randomGeneratorContext *, const mpnumber *hm, const mpnumber *x, mpnumber *r, mpnumber *s)
 This function performs a raw DSA signature. More...
 
int dsavrfy (const mpbarrett *p, const mpbarrett *q, const mpnumber *g, const mpnumber *hm, const mpnumber *y, const mpnumber *r, const mpnumber *s)
 This function performs a raw DSA verification. More...
 
int dsaparamMake (dsaparam *, randomGeneratorContext *, size_t)
 This function generates a set of DSA parameters. More...
 

Detailed Description

Digital Signature Algorithm, as specified by NIST FIPS 186.

FIPS 186 specifies the DSA algorithm as having a large prime $p$, a cofactor $q$ and a generator $g$ of a subgroup of $\mathds{Z}^{*}_p$ with order $q$. The private and public key values are $x$ and $y$ respectively.

Author
Bob Deblier bob.d.nosp@m.ebli.nosp@m.er@te.nosp@m.lene.nosp@m.t.be

Typedef Documentation

typedef dlkp_p dsakp
typedef dldp_p dsaparam
typedef dlpk_p dsapub

Function Documentation

int dsaparamMake ( dsaparam dp,
randomGeneratorContext rgc,
size_t  psize 
)

This function generates a set of DSA parameters.

This function calls dldp_pgoqMake with appropriate parameters, i.e. qsize = 160 bits and cofactor = 1.

Parameters
dpThe parameters to be generated.
rgcThe random generator context.
psizeThe size of prime parameter p; psize must be >= 512 and <= 1024, and be a multiple of 64.
Return values
0on success.
-1on failure.
int dsasign ( const mpbarrett p,
const mpbarrett q,
const mpnumber g,
randomGeneratorContext rgc,
const mpnumber hm,
const mpnumber x,
mpnumber r,
mpnumber s 
)

This function performs a raw DSA signature.

Signing equations:

  • $r=(g^{k}\ \textrm{mod}\ p)\ \textrm{mod}\ q$
  • $s=k^{-1}(h(m)+xr)\ \textrm{mod}\ q$
Parameters
pThe prime.
qThe cofactor.
gThe generator.
rgcThe pseudo-random generator context.
hmThe hash to be signed.
xThe private key value.
rThe signature's r value.
sThe signature's s value.
Return values
0on success.
-1on failure.
int dsavrfy ( const mpbarrett p,
const mpbarrett q,
const mpnumber g,
const mpnumber hm,
const mpnumber y,
const mpnumber r,
const mpnumber s 
)

This function performs a raw DSA verification.

Verifying equations:

  • Check $0<r<q$ and $0<s<q$
  • $w=s^{-1}\ \textrm{mod}\ q$
  • $u_1=w \cdot h(m)\ \textrm{mod}\ q$
  • $u_2=rw\ \textrm{mod}\ q$
  • $v=(g^{u_1}y^{u_2}\ \textrm{mod}\ p)\ \textrm{mod}\ q$
  • Check $v=r$
Parameters
pThe prime.
qThe cofactor.
gThe generator.
hmThe digest to be verified.
yThe public key value.
rThe signature's r value.
sThe signature's s value.
Return values
1on success.
0on failure.