require '_h2ph_pre.ph';

no warnings 'redefine';

unless(defined(&HEADER_DSA_H)) {
    eval 'sub HEADER_DSA_H () {1;}' unless defined(&HEADER_DSA_H);
    if(defined(&OPENSSL_NO_DSA)) {
	die("DSA\ is\ disabled\.");
    }
    unless(defined(&OPENSSL_NO_BIO)) {
	require 'openssl/bio.ph';
    }
    require 'openssl/bn.ph';
    require 'openssl/crypto.ph';
    require 'openssl/ossl_typ.ph';
    unless(defined(&OPENSSL_NO_DH)) {
	require 'openssl/dh.ph';
    }
    eval 'sub OPENSSL_DSA_MAX_MODULUS_BITS () {3072;}' unless defined(&OPENSSL_DSA_MAX_MODULUS_BITS);
    eval 'sub DSA_FLAG_CACHE_MONT_P () {0x1;}' unless defined(&DSA_FLAG_CACHE_MONT_P);
    eval 'sub DSA_FLAG_NO_EXP_CONSTTIME () {0x2;}' unless defined(&DSA_FLAG_NO_EXP_CONSTTIME);
    eval 'sub DSA_FLAG_FIPS_EXTERNAL_METHOD_ALLOW () {0x4;}' unless defined(&DSA_FLAG_FIPS_EXTERNAL_METHOD_ALLOW);
    if(defined( &OPENSSL_FIPS)) {
	eval 'sub FIPS_DSA_SIZE_T () {\'int\';}' unless defined(&FIPS_DSA_SIZE_T);
    }
    if(defined(&__cplusplus)) {
    }
    eval 'sub DSAparams_dup {
        my($x) = @_;
	    eval q(( &DSA *) &ASN1_dup(( &int (*)()) &i2d_DSAparams, (\'char\' *(*)()) &d2i_DSAparams,($x)));
    }' unless defined(&DSAparams_dup);
    eval 'sub d2i_DSAparams_fp {
        my($fp,$x) = @_;
	    eval q(( &DSA *) &ASN1_d2i_fp((\'char\' *(*)()) &DSA_new, (\'char\' *(*)()) &d2i_DSAparams,,($x)));
    }' unless defined(&d2i_DSAparams_fp);
    eval 'sub i2d_DSAparams_fp {
        my($fp,$x) = @_;
	    eval q( &ASN1_i2d_fp( &i2d_DSAparams,, ($x)));
    }' unless defined(&i2d_DSAparams_fp);
    eval 'sub d2i_DSAparams_bio {
        my($bp,$x) = @_;
	    eval q(( &DSA *) &ASN1_d2i_bio((\'char\' *(*)()) &DSA_new, (\'char\' *(*)()) &d2i_DSAparams,,($x)));
    }' unless defined(&d2i_DSAparams_bio);
    eval 'sub i2d_DSAparams_bio {
        my($bp,$x) = @_;
	    eval q( &ASN1_i2d_bio( &i2d_DSAparams,, ($x)));
    }' unless defined(&i2d_DSAparams_bio);
    unless(defined(&OPENSSL_NO_BIO)) {
    }
    unless(defined(&OPENSSL_NO_FP_API)) {
    }
    eval 'sub DSS_prime_checks () {50;}' unless defined(&DSS_prime_checks);
    eval 'sub DSA_is_prime {
        my($n, $callback, $cb_arg) = @_;
	    eval q( &BN_is_prime($n,  &DSS_prime_checks, $callback,  &NULL, $cb_arg));
    }' unless defined(&DSA_is_prime);
    unless(defined(&OPENSSL_NO_DH)) {
    }
    eval 'sub DSA_F_D2I_DSA_SIG () {110;}' unless defined(&DSA_F_D2I_DSA_SIG);
    eval 'sub DSA_F_DSAPARAMS_PRINT () {100;}' unless defined(&DSA_F_DSAPARAMS_PRINT);
    eval 'sub DSA_F_DSAPARAMS_PRINT_FP () {101;}' unless defined(&DSA_F_DSAPARAMS_PRINT_FP);
    eval 'sub DSA_F_DSA_DO_SIGN () {112;}' unless defined(&DSA_F_DSA_DO_SIGN);
    eval 'sub DSA_F_DSA_DO_VERIFY () {113;}' unless defined(&DSA_F_DSA_DO_VERIFY);
    eval 'sub DSA_F_DSA_NEW_METHOD () {103;}' unless defined(&DSA_F_DSA_NEW_METHOD);
    eval 'sub DSA_F_DSA_PRINT () {104;}' unless defined(&DSA_F_DSA_PRINT);
    eval 'sub DSA_F_DSA_PRINT_FP () {105;}' unless defined(&DSA_F_DSA_PRINT_FP);
    eval 'sub DSA_F_DSA_SIGN () {106;}' unless defined(&DSA_F_DSA_SIGN);
    eval 'sub DSA_F_DSA_SIGN_SETUP () {107;}' unless defined(&DSA_F_DSA_SIGN_SETUP);
    eval 'sub DSA_F_DSA_SIG_NEW () {109;}' unless defined(&DSA_F_DSA_SIG_NEW);
    eval 'sub DSA_F_DSA_VERIFY () {108;}' unless defined(&DSA_F_DSA_VERIFY);
    eval 'sub DSA_F_I2D_DSA_SIG () {111;}' unless defined(&DSA_F_I2D_DSA_SIG);
    eval 'sub DSA_F_SIG_CB () {114;}' unless defined(&DSA_F_SIG_CB);
    eval 'sub DSA_R_BAD_Q_VALUE () {102;}' unless defined(&DSA_R_BAD_Q_VALUE);
    eval 'sub DSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE () {100;}' unless defined(&DSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE);
    eval 'sub DSA_R_MISSING_PARAMETERS () {101;}' unless defined(&DSA_R_MISSING_PARAMETERS);
    eval 'sub DSA_R_MODULUS_TOO_LARGE () {103;}' unless defined(&DSA_R_MODULUS_TOO_LARGE);
    if(defined(&__cplusplus)) {
    }
}
1;
