~zulcss/samba/server-dailies-3.4

« back to all changes in this revision

Viewing changes to source4/heimdal/lib/hcrypto/dsa.h

  • Committer: Chuck Short
  • Date: 2010-09-28 20:38:39 UTC
  • Revision ID: zulcss@ubuntu.com-20100928203839-pgjulytsi9ue63x1
Initial version

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright (c) 2006 Kungliga Tekniska Högskolan
 
3
 * (Royal Institute of Technology, Stockholm, Sweden).
 
4
 * All rights reserved.
 
5
 *
 
6
 * Redistribution and use in source and binary forms, with or without
 
7
 * modification, are permitted provided that the following conditions
 
8
 * are met:
 
9
 *
 
10
 * 1. Redistributions of source code must retain the above copyright
 
11
 *    notice, this list of conditions and the following disclaimer.
 
12
 *
 
13
 * 2. Redistributions in binary form must reproduce the above copyright
 
14
 *    notice, this list of conditions and the following disclaimer in the
 
15
 *    documentation and/or other materials provided with the distribution.
 
16
 *
 
17
 * 3. Neither the name of the Institute nor the names of its contributors
 
18
 *    may be used to endorse or promote products derived from this software
 
19
 *    without specific prior written permission.
 
20
 *
 
21
 * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
 
22
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 
23
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 
24
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
 
25
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 
26
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 
27
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 
28
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 
29
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 
30
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 
31
 * SUCH DAMAGE.
 
32
 */
 
33
 
 
34
/*
 
35
 * $Id$
 
36
 */
 
37
 
 
38
#ifndef _HEIM_DSA_H
 
39
#define _HEIM_DSA_H 1
 
40
 
 
41
#include <hcrypto/bn.h>
 
42
 
 
43
/* symbol renaming */
 
44
#define DSA_null_method hc_DSA_null_method
 
45
#define DSA_new hc_DSA_new
 
46
#define DSA_free hc_DSA_free
 
47
#define DSA_up_ref hc_DSA_up_ref
 
48
#define DSA_set_default_method hc_DSA_set_default_method
 
49
#define DSA_get_default_method hc_DSA_get_default_method
 
50
#define DSA_set_method hc_DSA_set_method
 
51
#define DSA_get_method hc_DSA_get_method
 
52
#define DSA_set_app_data hc_DSA_set_app_data
 
53
#define DSA_get_app_data hc_DSA_get_app_data
 
54
#define DSA_size hc_DSA_size
 
55
#define DSA_verify hc_DSA_verify
 
56
 
 
57
/*
 
58
 *
 
59
 */
 
60
 
 
61
 
 
62
typedef struct DSA DSA;
 
63
typedef struct DSA_METHOD DSA_METHOD;
 
64
typedef struct DSA_SIG DSA_SIG;
 
65
 
 
66
struct DSA_SIG {
 
67
    BIGNUM *r;
 
68
    BIGNUM *s;
 
69
};
 
70
 
 
71
struct DSA_METHOD {
 
72
    const char *name;
 
73
    DSA_SIG * (*dsa_do_sign)(const unsigned char *, int, DSA *);
 
74
    int (*dsa_sign_setup)(DSA *, BN_CTX *, BIGNUM **, BIGNUM **);
 
75
    int (*dsa_do_verify)(const unsigned char *, int, DSA_SIG *, DSA *);
 
76
    int (*dsa_mod_exp)(DSA *, BIGNUM *, BIGNUM *, BIGNUM *,
 
77
                       BIGNUM *, BIGNUM *, BIGNUM *, BN_CTX *,
 
78
                       BN_MONT_CTX *);
 
79
    int (*bn_mod_exp)(DSA *, BIGNUM *, BIGNUM *, const BIGNUM *,
 
80
                      const BIGNUM *, BN_CTX *,
 
81
                      BN_MONT_CTX *);
 
82
    int (*init)(DSA *);
 
83
    int (*finish)(DSA *);
 
84
    int flags;
 
85
    void *app_data;
 
86
};
 
87
 
 
88
struct DSA {
 
89
    int pad;
 
90
    long version;
 
91
    int write_params;
 
92
    BIGNUM *p;
 
93
    BIGNUM *q;
 
94
    BIGNUM *g;
 
95
 
 
96
    BIGNUM *pub_key;
 
97
    BIGNUM *priv_key;
 
98
 
 
99
    BIGNUM *kinv;
 
100
    BIGNUM *r;
 
101
    int flags;
 
102
    void *method_mont_p;
 
103
    int references;
 
104
    struct dsa_CRYPTO_EX_DATA {
 
105
        void *sk;
 
106
        int dummy;
 
107
    } ex_data;
 
108
    const DSA_METHOD *meth;
 
109
    void *engine;
 
110
};
 
111
 
 
112
/*
 
113
 *
 
114
 */
 
115
 
 
116
const DSA_METHOD *DSA_null_method(void);
 
117
 
 
118
/*
 
119
 *
 
120
 */
 
121
 
 
122
DSA *   DSA_new(void);
 
123
void    DSA_free(DSA *);
 
124
int     DSA_up_ref(DSA *);
 
125
 
 
126
void    DSA_set_default_method(const DSA_METHOD *);
 
127
const DSA_METHOD * DSA_get_default_method(void);
 
128
 
 
129
const DSA_METHOD * DSA_get_method(const DSA *);
 
130
int DSA_set_method(DSA *, const DSA_METHOD *);
 
131
 
 
132
void    DSA_set_app_data(DSA *, void *arg);
 
133
void *  DSA_get_app_data(DSA *);
 
134
 
 
135
int     DSA_size(const DSA *);
 
136
 
 
137
int     DSA_verify(int, const unsigned char *, int,
 
138
                   const unsigned char *, int, DSA *);
 
139
 
 
140
#endif /* _HEIM_DSA_H */