diff options
author | GOTOU Yuuzou <gotoyuzo@notwork.org> | 2002-12-17 10:05:50 +0000 |
---|---|---|
committer | GOTOU Yuuzou <gotoyuzo@notwork.org> | 2002-12-17 10:05:50 +0000 |
commit | 501b4edc1a3a804e759e1635e3cff62d77f31f81 (patch) | |
tree | 90b59e4068198c9e0428b683cbfcf6300d40880a /ossl.c | |
parent | f75c38e35604b7915a53062f7513cf5ad643aace (diff) | |
download | ruby-openssl-history-501b4edc1a3a804e759e1635e3cff62d77f31f81.tar.gz |
* Indent by 4 spaces, 1 tab has the width of 8 spaces.
Diffstat (limited to 'ossl.c')
-rw-r--r-- | ossl.c | 335 |
1 files changed, 168 insertions, 167 deletions
@@ -22,8 +22,8 @@ # include <sys/time.h> #elif !defined(NT) struct timeval { - long tv_sec; /* seconds */ - long tv_usec; /* and microseconds */ + long tv_sec; /* seconds */ + long tv_usec; /* and microseconds */ }; #endif @@ -43,28 +43,28 @@ struct timeval { VALUE asn1time_to_time(ASN1_TIME *time) { - struct tm tm; + struct tm tm; - if (!time) { - ossl_raise(rb_eTypeError, "ASN1_TIME is NULL!"); - } - memset(&tm, 0, sizeof(struct tm)); + if (!time) { + ossl_raise(rb_eTypeError, "ASN1_TIME is NULL!"); + } + memset(&tm, 0, sizeof(struct tm)); - switch(time->type) { - case V_ASN1_UTCTIME: - if (!strptime(time->data, "%y%m%d%H%M%SZ", &tm)) { - ossl_raise(rb_eTypeError, "bad UTCTIME format"); - } - break; - case V_ASN1_GENERALIZEDTIME: - if (!strptime(time->data, "%Y%m%d%H%M%SZ", &tm)) { - ossl_raise(rb_eTypeError, "bad GENERALIZEDTIME format" ); - } - break; - default: - ossl_raise(rb_eTypeError, "unknown time format"); + switch(time->type) { + case V_ASN1_UTCTIME: + if (!strptime(time->data, "%y%m%d%H%M%SZ", &tm)) { + ossl_raise(rb_eTypeError, "bad UTCTIME format"); + } + break; + case V_ASN1_GENERALIZEDTIME: + if (!strptime(time->data, "%Y%m%d%H%M%SZ", &tm)) { + ossl_raise(rb_eTypeError, "bad GENERALIZEDTIME format" ); } - return rb_time_new(mktime(&tm) - timezone, 0); + break; + default: + ossl_raise(rb_eTypeError, "unknown time format"); + } + return rb_time_new(mktime(&tm) - timezone, 0); } /* @@ -75,9 +75,8 @@ extern struct timeval rb_time_timeval(VALUE); time_t time_to_time_t(VALUE time) { - struct timeval t = rb_time_timeval(time); - - return t.tv_sec; + struct timeval t = rb_time_timeval(time); + return t.tv_sec; } /* @@ -87,60 +86,60 @@ time_to_time_t(VALUE time) VALUE asn1integer_to_num(ASN1_INTEGER *ai) { - BIGNUM *bn; - char *txt; - VALUE num; + BIGNUM *bn; + char *txt; + VALUE num; - if (!ai) { - ossl_raise(rb_eTypeError, "ASN1_INTEGER is NULL!"); - } - if (!(bn = ASN1_INTEGER_to_BN(ai, NULL))) { - ossl_raise(eOSSLError, ""); - } + if (!ai) { + ossl_raise(rb_eTypeError, "ASN1_INTEGER is NULL!"); + } + if (!(bn = ASN1_INTEGER_to_BN(ai, NULL))) { + ossl_raise(eOSSLError, ""); + } #if 0 - if (!(txt = BN_bn2dec(bn))) { - BN_free(bn); - ossl_raise(eOSSLError, ""); - } - num = rb_cstr_to_inum(txt, 10, Qtrue); - OPENSSL_free(txt); + if (!(txt = BN_bn2dec(bn))) { + BN_free(bn); + ossl_raise(eOSSLError, ""); + } + num = rb_cstr_to_inum(txt, 10, Qtrue); + OPENSSL_free(txt); #else - num = ossl_bn_new(bn); + num = ossl_bn_new(bn); #endif - BN_free(bn); + BN_free(bn); - return num; + return num; } #if 0 ASN1_INTEGER *num_to_asn1integer(VALUE obj, ASN1_INTEGER *ai) { - BIGNUM *bn = NULL; + BIGNUM *bn = NULL; - if (RTEST(rb_obj_is_kind_of(obj, cBN))) { - bn = GetBNPtr(obj); - } else { - obj = rb_String(obj); - if (!BN_dec2bn(&bn, StringValuePtr(obj))) { - ossl_raise(eOSSLError, ""); - } - } - if (!(ai = BN_to_ASN1_INTEGER(bn, ai))) { - BN_free(bn); - ossl_raise(eOSSLError, ""); + if (RTEST(rb_obj_is_kind_of(obj, cBN))) { + bn = GetBNPtr(obj); + } else { + obj = rb_String(obj); + if (!BN_dec2bn(&bn, StringValuePtr(obj))) { + ossl_raise(eOSSLError, ""); } + } + if (!(ai = BN_to_ASN1_INTEGER(bn, ai))) { BN_free(bn); - return ai; + ossl_raise(eOSSLError, ""); + } + BN_free(bn); + return ai; } #else ASN1_INTEGER *num_to_asn1integer(VALUE obj, ASN1_INTEGER *ai) { - BIGNUM *bn = GetBNPtr(obj); - - if (!(ai = BN_to_ASN1_INTEGER(bn, ai))) { - ossl_raise(eOSSLError, ""); - } - return ai; + BIGNUM *bn = GetBNPtr(obj); + + if (!(ai = BN_to_ASN1_INTEGER(bn, ai))) { + ossl_raise(eOSSLError, ""); + } + return ai; } #endif @@ -150,31 +149,31 @@ ASN1_INTEGER *num_to_asn1integer(VALUE obj, ASN1_INTEGER *ai) int string2hex(char *buf, int buf_len, char **hexbuf, int *hexbuf_len) { - static const char hex[]="0123456789abcdef"; - int i, len = 2 * buf_len; + static const char hex[]="0123456789abcdef"; + int i, len = 2 * buf_len; - if (buf_len < 0 || len < buf_len) { /* PARANOIA? */ - return -1; - } - if (!hexbuf) { /* if no buf, return calculated len */ - if (hexbuf_len) { - *hexbuf_len = len; - } - return len; - } - if (!(*hexbuf = OPENSSL_malloc(len + 1))) { - return -1; - } - for (i = 0; i < buf_len; i++) { - (*hexbuf)[2 * i] = hex[((unsigned char)buf[i]) >> 4]; - (*hexbuf)[2 * i + 1] = hex[buf[i] & 0x0f]; - } - (*hexbuf)[2 * i] = '\0'; - + if (buf_len < 0 || len < buf_len) { /* PARANOIA? */ + return -1; + } + if (!hexbuf) { /* if no buf, return calculated len */ if (hexbuf_len) { - *hexbuf_len = len; + *hexbuf_len = len; } return len; + } + if (!(*hexbuf = OPENSSL_malloc(len + 1))) { + return -1; + } + for (i = 0; i < buf_len; i++) { + (*hexbuf)[2 * i] = hex[((unsigned char)buf[i]) >> 4]; + (*hexbuf)[2 * i + 1] = hex[buf[i] & 0x0f]; + } + (*hexbuf)[2 * i] = '\0'; + + if (hexbuf_len) { + *hexbuf_len = len; + } + return len; } /* @@ -193,24 +192,26 @@ VALUE eOSSLError; void ossl_raise(VALUE exc, const char *fmt, ...) { - va_list args; - char buf[BUFSIZ]; - int len; - long e = ERR_get_error(); + va_list args; + char buf[BUFSIZ]; + int len; + long e = ERR_get_error(); - va_start(args, fmt); - len = vsnprintf(buf, BUFSIZ, fmt, args); - va_end(args); + va_start(args, fmt); + len = vsnprintf(buf, BUFSIZ, fmt, args); + va_end(args); - if (e) { - if (dOSSL == Qtrue) { /* FULL INFO */ - len += snprintf(buf + len, BUFSIZ - len, "%s", ERR_error_string(e, NULL)); - } else { - len += snprintf(buf + len, BUFSIZ - len, "%s", ERR_reason_error_string(e)); - } - ERR_clear_error(); + if (e) { + if (dOSSL == Qtrue) { /* FULL INFO */ + len += snprintf(buf + len, BUFSIZ - len, "%s", + ERR_error_string(e, NULL)); + } else { + len += snprintf(buf + len, BUFSIZ - len, "%s", + ERR_reason_error_string(e)); } - rb_exc_raise(rb_exc_new(exc, buf, len)); + ERR_clear_error(); + } + rb_exc_raise(rb_exc_new(exc, buf, len)); } /* @@ -221,40 +222,40 @@ VALUE dOSSL; #if defined(NT) void ossl_debug(const char *fmt, ...) { - va_list args; + va_list args; - if (dOSSL == Qtrue) { - fprintf(stderr, "OSSL_DEBUG: "); - va_start(args, fmt); - vfprintf(stderr, fmt, args); - va_end(args); - fprintf(stderr, " [CONTEXT N/A]\n"); - } + if (dOSSL == Qtrue) { + fprintf(stderr, "OSSL_DEBUG: "); + va_start(args, fmt); + vfprintf(stderr, fmt, args); + va_end(args); + fprintf(stderr, " [CONTEXT N/A]\n"); + } } #endif static VALUE ossl_debug_get(VALUE self) { - return dOSSL; + return dOSSL; } static VALUE ossl_debug_set(VALUE self, VALUE val) { - VALUE old = dOSSL; - dOSSL = val; + VALUE old = dOSSL; + dOSSL = val; - if (old != dOSSL) { - if (dOSSL == Qtrue) { - CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON); - fprintf(stderr, "OSSL_DEBUG: IS NOW ON!\n"); - } else if (old == Qtrue) { - CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_OFF); - fprintf(stderr, "OSSL_DEBUG: IS NOW OFF!\n"); - } + if (old != dOSSL) { + if (dOSSL == Qtrue) { + CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON); + fprintf(stderr, "OSSL_DEBUG: IS NOW ON!\n"); + } else if (old == Qtrue) { + CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_OFF); + fprintf(stderr, "OSSL_DEBUG: IS NOW OFF!\n"); } - return val; + } + return val; } /* @@ -263,55 +264,55 @@ ossl_debug_set(VALUE self, VALUE val) void Init_openssl() { - /* - * Init timezone info - */ - tzset(); - - /* - * Init all digests, ciphers - */ - OpenSSL_add_all_algorithms(); - ERR_load_crypto_strings(); - - /* - * Init main module - */ - mOSSL = rb_define_module("OpenSSL"); - - /* - * Constants - */ - rb_define_const(mOSSL, "VERSION", rb_str_new2(OSSL_VERSION)); - rb_define_const(mOSSL, "OPENSSL_VERSION", rb_str_new2(OPENSSL_VERSION_TEXT)); - - /* - * Generic error, - * common for all classes under OpenSSL module - */ - eOSSLError = rb_define_class_under(mOSSL, "OpenSSLError", rb_eStandardError); - - /* - * Init debug core - */ - dOSSL = Qfalse; - rb_define_module_function(mOSSL, "debug", ossl_debug_get, 0); - rb_define_module_function(mOSSL, "debug=", ossl_debug_set, 1); - - /* - * Init components - */ - Init_ossl_bn(); - Init_ossl_cipher(); - Init_ossl_config(); - Init_ossl_digest(); - Init_ossl_hmac(); - Init_ossl_ns_spki(); - Init_ossl_pkcs7(); - Init_ossl_pkey(); - Init_ossl_rand(); - Init_ossl_ssl(); - Init_ossl_x509(); + /* + * Init timezone info + */ + tzset(); + + /* + * Init all digests, ciphers + */ + OpenSSL_add_all_algorithms(); + ERR_load_crypto_strings(); + + /* + * Init main module + */ + mOSSL = rb_define_module("OpenSSL"); + + /* + * Constants + */ + rb_define_const(mOSSL, "VERSION", rb_str_new2(OSSL_VERSION)); + rb_define_const(mOSSL, "OPENSSL_VERSION", rb_str_new2(OPENSSL_VERSION_TEXT)); + + /* + * Generic error, + * common for all classes under OpenSSL module + */ + eOSSLError = rb_define_class_under(mOSSL, "OpenSSLError", rb_eStandardError); + + /* + * Init debug core + */ + dOSSL = Qfalse; + rb_define_module_function(mOSSL, "debug", ossl_debug_get, 0); + rb_define_module_function(mOSSL, "debug=", ossl_debug_set, 1); + + /* + * Init components + */ + Init_ossl_bn(); + Init_ossl_cipher(); + Init_ossl_config(); + Init_ossl_digest(); + Init_ossl_hmac(); + Init_ossl_ns_spki(); + Init_ossl_pkcs7(); + Init_ossl_pkey(); + Init_ossl_rand(); + Init_ossl_ssl(); + Init_ossl_x509(); } #if defined(OSSL_DEBUG) @@ -321,7 +322,7 @@ Init_openssl() int main(int argc, char *argv[], char *env[]) { - return 0; + return 0; } #endif /* OSSL_DEBUG */ |