diff options
author | Michal Rokos <m.rokos@sh.cvut.cz> | 2002-06-05 08:47:22 +0000 |
---|---|---|
committer | Michal Rokos <m.rokos@sh.cvut.cz> | 2002-06-05 08:47:22 +0000 |
commit | 67695a65d2c9b4c8c050189b53a12551e3c97f69 (patch) | |
tree | 12f9edfa697c366b25fda980dceae9cd40aae6de /ossl_ns_spki.c | |
parent | bee16a04ed38699b423f2b100dfa2444f210d9ae (diff) | |
download | ruby-openssl-history-67695a65d2c9b4c8c050189b53a12551e3c97f69.tar.gz |
HMAC and SPKI cleanups & ports
Diffstat (limited to 'ossl_ns_spki.c')
-rw-r--r-- | ossl_ns_spki.c | 87 |
1 files changed, 49 insertions, 38 deletions
diff --git a/ossl_ns_spki.c b/ossl_ns_spki.c index f1c0f89..d23cd97 100644 --- a/ossl_ns_spki.c +++ b/ossl_ns_spki.c @@ -10,8 +10,18 @@ */ #include "ossl.h" -#define WrapSPKI(obj, spki) obj = Data_Wrap_Struct(cSPKI, 0, NETSCAPE_SPKI_free, spki) -#define GetSPKI(obj, spki) Data_Get_Struct(obj, NETSCAPE_SPKI, spki) +#define WrapSPKI(obj, spki) do { \ + if (!spki) { \ + rb_raise(rb_eRuntimeError, "SPKI wasn't initialized!"); \ + } \ + obj = Data_Wrap_Struct(cSPKI, 0, NETSCAPE_SPKI_free, spki); \ +} while (0) +#define GetSPKI(obj, spki) do { \ + Data_Get_Struct(obj, NETSCAPE_SPKI, spki); \ + if (!spki) { \ + rb_raise(rb_eRuntimeError, "SPKI wasn't initialized!"); \ + } \ +} while (0) /* * Classes @@ -27,9 +37,9 @@ VALUE eSPKIError; * Private functions */ static VALUE -ossl_spki_s_new(int argc, VALUE *argv, VALUE klass) +ossl_spki_s_allocate(VALUE klass) { - NETSCAPE_SPKI *spki = NULL; + NETSCAPE_SPKI *spki; VALUE obj; if (!(spki = NETSCAPE_SPKI_new())) { @@ -38,23 +48,20 @@ ossl_spki_s_new(int argc, VALUE *argv, VALUE klass) WrapSPKI(obj, spki); - rb_obj_call_init(obj, argc, argv); - return obj; } static VALUE ossl_spki_initialize(int argc, VALUE *argv, VALUE self) { - NETSCAPE_SPKI *spki = NULL; + NETSCAPE_SPKI *spki; VALUE buffer; - if (argc == 0) + if (rb_scan_args(argc, argv, "01", &buffer) == 0) { return self; + } - buffer = rb_String(argv[0]); - - if (!(spki = NETSCAPE_SPKI_b64_decode(RSTRING(buffer)->ptr, -1))) { + if (!(spki = NETSCAPE_SPKI_b64_decode(StringValuePtr(buffer), -1))) { OSSL_Raise(eSPKIError, ""); } @@ -67,8 +74,8 @@ ossl_spki_initialize(int argc, VALUE *argv, VALUE self) static VALUE ossl_spki_to_pem(VALUE self) { - NETSCAPE_SPKI *spki = NULL; - char *data = NULL; + NETSCAPE_SPKI *spki; + char *data; VALUE str; GetSPKI(self, spki); @@ -84,11 +91,11 @@ ossl_spki_to_pem(VALUE self) } static VALUE -ossl_spki_to_text(VALUE self) +ossl_spki_print(VALUE self) { - NETSCAPE_SPKI *spki = NULL; - BIO *out = NULL; - BUF_MEM *buf = NULL; + NETSCAPE_SPKI *spki; + BIO *out; + BUF_MEM *buf; VALUE str; GetSPKI(self, spki); @@ -110,8 +117,8 @@ ossl_spki_to_text(VALUE self) static VALUE ossl_spki_get_public_key(VALUE self) { - NETSCAPE_SPKI *spki = NULL; - EVP_PKEY *pkey = NULL; + NETSCAPE_SPKI *spki; + EVP_PKEY *pkey; GetSPKI(self, spki); @@ -125,8 +132,8 @@ ossl_spki_get_public_key(VALUE self) static VALUE ossl_spki_set_public_key(VALUE self, VALUE pubk) { - NETSCAPE_SPKI *spki = NULL; - EVP_PKEY *pkey = NULL; + NETSCAPE_SPKI *spki; + EVP_PKEY *pkey; GetSPKI(self, spki); @@ -143,7 +150,7 @@ ossl_spki_set_public_key(VALUE self, VALUE pubk) static VALUE ossl_spki_get_challenge(VALUE self) { - NETSCAPE_SPKI *spki = NULL; + NETSCAPE_SPKI *spki; GetSPKI(self, spki); @@ -156,11 +163,11 @@ ossl_spki_get_challenge(VALUE self) static VALUE ossl_spki_set_challenge(VALUE self, VALUE str) { - NETSCAPE_SPKI *spki = NULL; + NETSCAPE_SPKI *spki; GetSPKI(self, spki); - - str = rb_String(str); + + StringValue(str); if (!ASN1_STRING_set(spki->spkac->challenge, RSTRING(str)->ptr, RSTRING(str)->len)) { OSSL_Raise(eSPKIError, ""); @@ -172,9 +179,9 @@ ossl_spki_set_challenge(VALUE self, VALUE str) static VALUE ossl_spki_sign(VALUE self, VALUE key, VALUE digest) { - NETSCAPE_SPKI *spki = NULL; - EVP_PKEY *pkey = NULL; - const EVP_MD *md = NULL; + NETSCAPE_SPKI *spki; + EVP_PKEY *pkey; + const EVP_MD *md; GetSPKI(self, spki); @@ -199,9 +206,9 @@ ossl_spki_sign(VALUE self, VALUE key, VALUE digest) static VALUE ossl_spki_verify(VALUE self, VALUE key) { - NETSCAPE_SPKI *spki = NULL; - EVP_PKEY *pkey = NULL; - int result = 0; + NETSCAPE_SPKI *spki; + EVP_PKEY *pkey; + int result; GetSPKI(self, spki); @@ -212,9 +219,9 @@ ossl_spki_verify(VALUE self, VALUE key) if (result < 0) { OSSL_Raise(eSPKIError, ""); - } else if (result > 0) + } else if (result > 0) { return Qtrue; - + } return Qfalse; } @@ -222,16 +229,20 @@ ossl_spki_verify(VALUE self, VALUE key) * NETSCAPE_SPKI init */ void -Init_ossl_spki(VALUE module) +Init_ossl_ns_spki() { - eSPKIError = rb_define_class_under(module, "SPKIError", eOSSLError); + mNetscape = rb_define_module_under(mOSSL, "Netscape"); + + eSPKIError = rb_define_class_under(mNetscape, "SPKIError", eOSSLError); - cSPKI = rb_define_class_under(module, "SPKI", rb_cObject); - rb_define_singleton_method(cSPKI, "new", ossl_spki_s_new, -1); + cSPKI = rb_define_class_under(mNetscape, "SPKI", rb_cObject); + + rb_define_singleton_method(cSPKI, "allocate", ossl_spki_s_allocate, 0); rb_define_method(cSPKI, "initialize", ossl_spki_initialize, -1); + rb_define_method(cSPKI, "to_pem", ossl_spki_to_pem, 0); rb_define_alias(cSPKI, "to_s", "to_pem"); - rb_define_method(cSPKI, "to_text", ossl_spki_to_text, 0); + rb_define_method(cSPKI, "to_text", ossl_spki_print, 0); rb_define_method(cSPKI, "public_key", ossl_spki_get_public_key, 0); rb_define_method(cSPKI, "public_key=", ossl_spki_set_public_key, 1); rb_define_method(cSPKI, "sign", ossl_spki_sign, 2); |