As with RSA, which was modified recently, this change makes it possible to
[openssl.git] / crypto / dsa / dsa.h
index 1ddc37f9fb9737198b013e69933a44176c9afc95..6ba79b01dfe853d6cb2ecd6100b13cb3a918c1c5 100644 (file)
@@ -110,6 +110,13 @@ typedef struct dsa_method {
        int (*finish)(DSA *dsa);
        int flags;
        char *app_data;
+       /* 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);
 } DSA_METHOD;
 
 struct dsa_st
@@ -186,10 +193,20 @@ void *DSA_get_ex_data(DSA *d, int idx);
 DSA *  d2i_DSAPublicKey(DSA **a, const unsigned char **pp, long length);
 DSA *  d2i_DSAPrivateKey(DSA **a, const unsigned char **pp, long length);
 DSA *  d2i_DSAparams(DSA **a, const unsigned char **pp, long length);
+
+/* Deprecated version */
+#ifndef OPENSSL_NO_DEPRECATED
 DSA *  DSA_generate_parameters(int bits,
                unsigned char *seed,int seed_len,
                int *counter_ret, unsigned long *h_ret,void
                (*callback)(int, int, void *),void *cb_arg);
+#endif /* !defined(OPENSSL_NO_DEPRECATED) */
+
+/* New version */
+int    DSA_generate_parameters_ex(DSA *dsa, int bits,
+               unsigned char *seed,int seed_len,
+               int *counter_ret, unsigned long *h_ret, BN_GENCB *cb);
+
 int    DSA_generate_key(DSA *a);
 int    i2d_DSAPublicKey(const DSA *a, unsigned char **pp);
 int    i2d_DSAPrivateKey(const DSA *a, unsigned char **pp);
@@ -230,7 +247,7 @@ void ERR_load_DSA_strings(void);
 #define DSA_F_DSAPARAMS_PRINT_FP                        101
 #define DSA_F_DSA_DO_SIGN                               112
 #define DSA_F_DSA_DO_VERIFY                             113
-#define DSA_F_DSA_NEW                                   103
+#define DSA_F_DSA_NEW_METHOD                            103
 #define DSA_F_DSA_PRINT                                         104
 #define DSA_F_DSA_PRINT_FP                              105
 #define DSA_F_DSA_SIGN                                  106