Added support for default hash functions in all PKCS algorithm schemes.
[crypto.git] / lib / silccrypt / dsa.h
1 /*
2
3   dsa.h
4
5   Author: Pekka Riikonen <priikone@silcnet.org>
6
7   Copyright (C) 2007 - 2008 Pekka Riikonen
8
9   This program is free software; you can redistribute it and/or modify
10   it under the terms of the GNU General Public License as published by
11   the Free Software Foundation; version 2 of the License.
12
13   This program is distributed in the hope that it will be useful,
14   but WITHOUT ANY WARRANTY; without even the implied warranty of
15   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16   GNU General Public License for more details.
17
18 */
19
20 #ifndef DSA_H
21 #define DSA_H
22
23 /* DSA Public key */
24 typedef struct {
25   SilcHash hash;                /* Default hash function */
26   SilcMPInt g;                  /* generator */
27   SilcMPInt p;                  /* prime */
28   SilcMPInt q;                  /* prime */
29   SilcMPInt y;                  /* public key */
30   SilcUInt16 bits;              /* bits in key */
31   SilcUInt16 group_order;       /* group order (size) */
32 } DsaPublicKey;
33
34 /* DSA Private key */
35 typedef struct {
36   SilcHash hash;                /* Default hash function */
37   SilcMPInt g;                  /* generator */
38   SilcMPInt p;                  /* prime */
39   SilcMPInt q;                  /* prime */
40   SilcMPInt y;                  /* public key */
41   SilcMPInt x;                  /* private key */
42   SilcUInt16 bits;              /* bits in key */
43   SilcUInt16 group_order;       /* group order (size) */
44 } DsaPrivateKey;
45
46 SILC_PKCS_ALG_GENERATE_KEY(silc_dsa_fips186_2_generate_key);
47 SILC_PKCS_ALG_GENERATE_KEY(silc_dsa_generate_key);
48 SILC_PKCS_ALG_IMPORT_PUBLIC_KEY(silc_dsa_import_public_key);
49 SILC_PKCS_ALG_EXPORT_PUBLIC_KEY(silc_dsa_export_public_key);
50 SILC_PKCS_ALG_PUBLIC_KEY_BITLEN(silc_dsa_public_key_bitlen);
51 SILC_PKCS_ALG_PUBLIC_KEY_COPY(silc_dsa_public_key_copy);
52 SILC_PKCS_ALG_PUBLIC_KEY_COMPARE(silc_dsa_public_key_compare);
53 SILC_PKCS_ALG_PUBLIC_KEY_FREE(silc_dsa_public_key_free);
54 SILC_PKCS_ALG_IMPORT_PRIVATE_KEY(silc_dsa_import_private_key);
55 SILC_PKCS_ALG_EXPORT_PRIVATE_KEY(silc_dsa_export_private_key);
56 SILC_PKCS_ALG_PRIVATE_KEY_BITLEN(silc_dsa_private_key_bitlen);
57 SILC_PKCS_ALG_PRIVATE_KEY_FREE(silc_dsa_private_key_free);
58 SILC_PKCS_ALG_ENCRYPT(silc_dsa_encrypt);
59 SILC_PKCS_ALG_DECRYPT(silc_dsa_decrypt);
60 SILC_PKCS_ALG_SIGN(silc_dsa_sign);
61 SILC_PKCS_ALG_VERIFY(silc_dsa_verify);
62
63 #endif /* DSA_H */