summaryrefslogtreecommitdiffstats
path: root/ossl.c
diff options
context:
space:
mode:
authorGOTOU Yuuzou <gotoyuzo@notwork.org>2002-12-17 10:05:50 +0000
committerGOTOU Yuuzou <gotoyuzo@notwork.org>2002-12-17 10:05:50 +0000
commit501b4edc1a3a804e759e1635e3cff62d77f31f81 (patch)
tree90b59e4068198c9e0428b683cbfcf6300d40880a /ossl.c
parentf75c38e35604b7915a53062f7513cf5ad643aace (diff)
downloadruby-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.c335
1 files changed, 168 insertions, 167 deletions
diff --git a/ossl.c b/ossl.c
index 16650cb..cc9dc2f 100644
--- a/ossl.c
+++ b/ossl.c
@@ -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 */