diff options
author | Michal Rokos <m.rokos@sh.cvut.cz> | 2003-07-21 11:23:10 +0000 |
---|---|---|
committer | Michal Rokos <m.rokos@sh.cvut.cz> | 2003-07-21 11:23:10 +0000 |
commit | ab7b4b9d6404755e85f6193e0fbb8fe000c96e35 (patch) | |
tree | d128bd31103ab5479107b463303f5d0003dc7e0f | |
parent | d33b4b6141c65d7de627ec8238bdad43585cdc6b (diff) | |
download | ruby-openssl-history-ab7b4b9d6404755e85f6193e0fbb8fe000c96e35.tar.gz |
OpenSSL 0.9.6 compatibility II
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | extconf.rb | 8 | ||||
-rw-r--r-- | openssl_missing.c | 64 | ||||
-rw-r--r-- | openssl_missing.h | 23 | ||||
-rw-r--r-- | ossl.h | 6 | ||||
-rw-r--r-- | ossl_bn.c | 6 | ||||
-rw-r--r-- | ossl_config.c | 10 | ||||
-rw-r--r-- | ossl_x509.c | 6 |
8 files changed, 100 insertions, 26 deletions
@@ -1,3 +1,6 @@ +Mon, 21 Jul 2003 13:23:30 +0200 -- Michal Rokos <m.rokos@sh.cvut.cz> + * further OpenSSL 0.9.6 compatibility + Mon, 21 Jul 2003 12:33:14 +0200 -- Michal Rokos <m.rokos@sh.cvut.cz> * Added OpenSSL 0.9.6 compatibility @@ -144,6 +144,14 @@ have_struct_member("X509_STORE", "purpose", "openssl/x509.h") have_struct_member("X509_STORE", "trust", "openssl/x509.h") have_struct_member("EVP_CIPHER_CTX", "flags", "openssl/evp.h") have_func("BN_mod_sqr") +have_func("BN_mod_add") +have_func("BN_mod_sub") +have_func("CONF_get1_default_config_file") +have_defined("X509_V_FLAG_CRL_CHECK", "openssl/x509_vfy.h") +have_defined("X509_V_FLAG_CRL_CHECK_ALL", "openssl/x509_vfy.h") +have_defined("X509_PURPOSE_OCSP_HELPER", "openssl/x509v3.h") +have_defined("X509_TRUST_OCSP_SIGN", "openssl/x509.h") +have_defined("X509_TRUST_OCSP_REQUEST", "openssl/x509.h") message "=== Checking for Ruby features... ===\n" have_func("rb_obj_init_copy", "ruby.h") diff --git a/openssl_missing.c b/openssl_missing.c index 2ff719e..a23e070 100644 --- a/openssl_missing.c +++ b/openssl_missing.c @@ -177,3 +177,67 @@ int BN_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx) } #endif +#if !defined(HAVE_BN_MOD_ADD) || !defined(HAVE_BN_MOD_SUB) +int BN_nnmod(BIGNUM *r, const BIGNUM *m, const BIGNUM *d, BN_CTX *ctx) + { + /* like BN_mod, but returns non-negative remainder + * (i.e., 0 <= r < |d| always holds) */ + + if (!(BN_mod(r,m,d,ctx))) + return 0; + if (!r->neg) + return 1; + /* now -|d| < r < 0, so we have to set r := r + |d| */ + return (d->neg ? BN_sub : BN_add)(r, r, d); + } +#endif + +#if !defined(HAVE_BN_MOD_ADD) +int BN_mod_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, BN_CTX *ctx) + { + if (!BN_add(r, a, b)) return 0; + return BN_nnmod(r, r, m, ctx); + } +#endif + +#if !defined(HAVE_BN_MOD_SUB) +int BN_mod_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, BN_CTX *ctx) + { + if (!BN_sub(r, a, b)) return 0; + return BN_nnmod(r, r, m, ctx); + } +#endif + +#if !defined(HAVE_CONF_GET1_DEFAULT_CONFIG_FILE) + +#define OPENSSL_CONF "openssl.cnf" + +char *CONF_get1_default_config_file(void) + { + char *file; + int len; + + file = getenv("OPENSSL_CONF"); + if (file) + return BUF_strdup(file); + + len = strlen(X509_get_default_cert_area()); +#ifndef OPENSSL_SYS_VMS + len++; +#endif + len += strlen(OPENSSL_CONF); + + file = OPENSSL_malloc(len + 1); + + if (!file) + return NULL; + strcpy(file,X509_get_default_cert_area()); +#ifndef OPENSSL_SYS_VMS + strcat(file,"/"); +#endif + strcat(file,OPENSSL_CONF); + + return file; +} +#endif + diff --git a/openssl_missing.h b/openssl_missing.h index 5872982..a45d779 100644 --- a/openssl_missing.h +++ b/openssl_missing.h @@ -88,6 +88,29 @@ int X509_CRL_set_issuer_name(X509_CRL *x, X509_NAME *name); int X509_CRL_sort(X509_CRL *c); int X509_CRL_add0_revoked(X509_CRL *crl, X509_REVOKED *rev); int BN_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx); +int BN_mod_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, BN_CTX *ctx); +int BN_mod_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, BN_CTX *ctx); +char *CONF_get1_default_config_file(void); + +#if !defined(HAVE_X509_V_FLAG_CRL_CHECK) +# define X509_V_FLAG_CRL_CHECK 0x4 +#endif + +#if !defined(HAVE_X509_V_FLAG_CRL_CHECK_ALL) +# define X509_V_FLAG_CRL_CHECK_ALL 0x8 +#endif + +#if !defined(HAVE_X509_PURPOSE_OCSP_HELPER) +# define X509_PURPOSE_OCSP_HELPER 8 +#endif + +#if !defined(HAVE_X509_TRUST_OCSP_SIGN) +# define X509_TRUST_OCSP_SIGN 6 +#endif + +#if !defined(TRUST_X509_OCSP_REQUEST) +# define X509_TRUST_OCSP_REQUEST 7 +#endif #if defined(__cplusplus) } @@ -24,12 +24,6 @@ extern "C" { #include <version.h> #include <openssl/opensslv.h> -/* -#if (OPENSSL_VERSION_NUMBER < 0x00907000L) -# error ! This version of OSSL needs OpenSSL >= 0.9.7 for its run! -#endif - */ - #if defined(NT) || defined(_WIN32) # define OpenFile WINAPI_OpenFile #endif @@ -372,10 +372,8 @@ ossl_bn_div(VALUE self, VALUE other) WrapBN(CLASS_OF(self), obj, result); \ return obj; \ } -#if (OPENSSL_VERSION_NUMBER >= 0x00907000L) BIGNUM_3c(mod_add); BIGNUM_3c(mod_sub); -#endif BIGNUM_3c(mod_mul); BIGNUM_3c(mod_exp); @@ -649,12 +647,10 @@ Init_ossl_bn() rb_define_method(cBN, "%", ossl_bn_mod, 1); /* nnmod */ -#if (OPENSSL_VERSION_NUMBER >= 0x00907000L) rb_define_method(cBN, "mod_add", ossl_bn_mod_add, 2); rb_define_method(cBN, "mod_sub", ossl_bn_mod_sub, 2); -#endif - rb_define_method(cBN, "mod_sqr", ossl_bn_mod_sqr, 1); rb_define_method(cBN, "mod_mul", ossl_bn_mod_mul, 2); + rb_define_method(cBN, "mod_sqr", ossl_bn_mod_sqr, 1); rb_define_method(cBN, "**", ossl_bn_exp, 1); rb_define_method(cBN, "mod_exp", ossl_bn_mod_exp, 2); rb_define_method(cBN, "gcd", ossl_bn_gcd, 1); diff --git a/ossl_config.c b/ossl_config.c index 08bfb8e..5109d3d 100644 --- a/ossl_config.c +++ b/ossl_config.c @@ -45,23 +45,15 @@ ossl_config_s_load(int argc, VALUE *argv, VALUE klass) char *filename; VALUE path, obj; - if (rb_scan_args(argc, argv, -#if (OPENSSL_VERSION_NUMBER >= 0x00907000L) - "01" -#else - "10" -#endif - , &path) == 1) { + if (rb_scan_args(argc, argv, "01", &path) == 1) { SafeStringValue(path); filename = RSTRING(path)->ptr; } -#if (OPENSSL_VERSION_NUMBER >= 0x00907000L) else { if (!(filename = CONF_get1_default_config_file())) { ossl_raise(eConfigError, NULL); } } -#endif /* * FIXME * Does't work for Windows? diff --git a/ossl_x509.c b/ossl_x509.c index 0363086..5de2b6b 100644 --- a/ossl_x509.c +++ b/ossl_x509.c @@ -62,10 +62,8 @@ Init_ossl_x509() DefX509Const(V_ERR_KEYUSAGE_NO_CERTSIGN); DefX509Const(V_ERR_APPLICATION_VERIFICATION); -#if (OPENSSL_VERSION_NUMBER >= 0x00907000L) DefX509Const(V_FLAG_CRL_CHECK); DefX509Const(V_FLAG_CRL_CHECK_ALL); -#endif DefX509Const(PURPOSE_SSL_CLIENT); DefX509Const(PURPOSE_SSL_SERVER); @@ -74,17 +72,13 @@ Init_ossl_x509() DefX509Const(PURPOSE_SMIME_ENCRYPT); DefX509Const(PURPOSE_CRL_SIGN); DefX509Const(PURPOSE_ANY); -#if (OPENSSL_VERSION_NUMBER >= 0x00907000L) DefX509Const(PURPOSE_OCSP_HELPER); -#endif DefX509Const(TRUST_COMPAT); DefX509Const(TRUST_SSL_CLIENT); DefX509Const(TRUST_SSL_SERVER); DefX509Const(TRUST_EMAIL); DefX509Const(TRUST_OBJECT_SIGN); -#if (OPENSSL_VERSION_NUMBER >= 0x00907000L) DefX509Const(TRUST_OCSP_SIGN); DefX509Const(TRUST_OCSP_REQUEST); -#endif } |