(oops) Apologies all, that last header-cleanup commit was from the wrong
[openssl.git] / crypto / dsa / dsa.h
index 7a126e486b6fa6f6f45b021df937fd849665a594..cdb19457fb52bf3b85adaa7ae595a037d92e141c 100644 (file)
@@ -65,6 +65,8 @@
 #ifndef HEADER_DSA_H
 #define HEADER_DSA_H
 
+#include <openssl/e_os2.h>
+
 #ifdef OPENSSL_NO_DSA
 #error DSA is disabled.
 #endif
 #include <openssl/bn.h>
 #include <openssl/crypto.h>
 #include <openssl/ossl_typ.h>
+
+#ifndef OPENSSL_NO_DEPRECATED
 #ifndef OPENSSL_NO_DH
 # include <openssl/dh.h>
 #endif
+#endif
 
 #define DSA_FLAG_CACHE_MONT_P  0x01
 
@@ -85,7 +90,9 @@
 extern "C" {
 #endif
 
-typedef struct dsa_st DSA;
+/* Already defined in ossl_typ.h */
+/* typedef struct dsa_st DSA; */
+/* typedef struct dsa_method DSA_METHOD; */
 
 typedef struct DSA_SIG_st
        {
@@ -93,7 +100,8 @@ typedef struct DSA_SIG_st
        BIGNUM *s;
        } DSA_SIG;
 
-typedef struct dsa_method {
+struct dsa_method
+       {
        const char *name;
        DSA_SIG * (*dsa_do_sign)(const unsigned char *dgst, int dlen, DSA *dsa);
        int (*dsa_sign_setup)(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp,
@@ -110,7 +118,14 @@ typedef struct dsa_method {
        int (*finish)(DSA *dsa);
        int flags;
        char *app_data;
-} DSA_METHOD;
+       /* If this is non-NULL, it is used to generate DSA parameters */
+       int (*dsa_paramgen)(DSA *dsa, int bits,
+                       unsigned char *seed, int seed_len,
+                       int *counter_ret, unsigned long *h_ret,
+                       BN_GENCB *cb);
+       /* If this is non-NULL, it is used to generate DSA keys */
+       int (*dsa_keygen)(DSA *dsa);
+       };
 
 struct dsa_st
        {