Class: OpenSSL::Netscape::SPKI
- Inherits:
-
Object
- Object
- OpenSSL::Netscape::SPKI
- Defined in:
- ossl_ns_spki.c
Instance Method Summary collapse
- #challenge ⇒ Object
- #challenge=(str) ⇒ Object
- #initialize(*args) ⇒ Object constructor
- #public_key ⇒ Object
-
#public_key=(key) ⇒ Object
NO DUP - OK.
- #sign(key, digest) ⇒ Object
- #to_der ⇒ Object
- #to_pem ⇒ Object (also: #to_s)
- #to_text ⇒ Object
-
#verify(key) ⇒ Object
Checks that cert signature is made with PRIVversion of this PUBLIC ‘key’.
Constructor Details
#initialize(*args) ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'ossl_ns_spki.c', line 54 static VALUE ossl_spki_initialize(int argc, VALUE *argv, VALUE self) { NETSCAPE_SPKI *spki; VALUE buffer; unsigned char *p; if (rb_scan_args(argc, argv, "01", &buffer) == 0) { return self; } StringValue(buffer); if (!(spki = NETSCAPE_SPKI_b64_decode(RSTRING(buffer)->ptr, -1))) { p = RSTRING(buffer)->ptr; if (!(spki = d2i_NETSCAPE_SPKI(NULL, &p, RSTRING(buffer)->len))) { ossl_raise(eSPKIError, NULL); } } NETSCAPE_SPKI_free(DATA_PTR(self)); DATA_PTR(self) = spki; ERR_clear_error(); return self; } |
Instance Method Details
#challenge ⇒ Object
164 165 166 167 168 169 170 171 172 173 174 175 176 177 |
# File 'ossl_ns_spki.c', line 164 static VALUE ossl_spki_get_challenge(VALUE self) { NETSCAPE_SPKI *spki; GetSPKI(self, spki); if (spki->spkac->challenge->length <= 0) { OSSL_Debug("Challenge.length <= 0?"); return rb_str_new(0, 0); } return rb_str_new(spki->spkac->challenge->data, spki->spkac->challenge->length); } |
#challenge=(str) ⇒ Object
179 180 181 182 183 184 185 186 187 188 189 190 191 192 |
# File 'ossl_ns_spki.c', line 179 static VALUE ossl_spki_set_challenge(VALUE self, VALUE str) { NETSCAPE_SPKI *spki; StringValue(str); GetSPKI(self, spki); if (!ASN1_STRING_set(spki->spkac->challenge, RSTRING(str)->ptr, RSTRING(str)->len)) { ossl_raise(eSPKIError, NULL); } return str; } |
#public_key ⇒ Object
137 138 139 140 141 142 143 144 145 146 147 148 149 |
# File 'ossl_ns_spki.c', line 137 static VALUE ossl_spki_get_public_key(VALUE self) { NETSCAPE_SPKI *spki; EVP_PKEY *pkey; GetSPKI(self, spki); if (!(pkey = NETSCAPE_SPKI_get_pubkey(spki))) { /* adds an reference */ ossl_raise(eSPKIError, NULL); } return ossl_pkey_new(pkey); /* NO DUP - OK */ } |
#public_key=(key) ⇒ Object
NO DUP - OK
151 152 153 154 155 156 157 158 159 160 161 162 |
# File 'ossl_ns_spki.c', line 151 static VALUE ossl_spki_set_public_key(VALUE self, VALUE key) { NETSCAPE_SPKI *spki; GetSPKI(self, spki); if (!NETSCAPE_SPKI_set_pubkey(spki, GetPKeyPtr(key))) { /* NO NEED TO DUP */ ossl_raise(eSPKIError, NULL); } return key; } |
#sign(key, digest) ⇒ Object
194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 |
# File 'ossl_ns_spki.c', line 194 static VALUE ossl_spki_sign(VALUE self, VALUE key, VALUE digest) { NETSCAPE_SPKI *spki; EVP_PKEY *pkey; const EVP_MD *md; pkey = GetPrivPKeyPtr(key); /* NO NEED TO DUP */ md = GetDigestPtr(digest); GetSPKI(self, spki); if (!NETSCAPE_SPKI_sign(spki, pkey, md)) { ossl_raise(eSPKIError, NULL); } return self; } |
#to_der ⇒ Object
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'ossl_ns_spki.c', line 78 static VALUE ossl_spki_to_der(VALUE self) { NETSCAPE_SPKI *spki; VALUE str; long len; unsigned char *p; GetSPKI(self, spki); if ((len = i2d_NETSCAPE_SPKI(spki, NULL)) <= 0) ossl_raise(eX509CertError, NULL); str = rb_str_new(0, len); p = RSTRING(str)->ptr; if (i2d_NETSCAPE_SPKI(spki, &p) <= 0) ossl_raise(eX509CertError, NULL); ossl_str_adjust(str, p); return str; } |
#to_pem ⇒ Object Also known as: to_s
98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
# File 'ossl_ns_spki.c', line 98 static VALUE ossl_spki_to_pem(VALUE self) { NETSCAPE_SPKI *spki; char *data; VALUE str; GetSPKI(self, spki); if (!(data = NETSCAPE_SPKI_b64_encode(spki))) { ossl_raise(eSPKIError, NULL); } str = ossl_buf2str(data, strlen(data)); return str; } |
#to_text ⇒ Object
114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
# File 'ossl_ns_spki.c', line 114 static VALUE ossl_spki_print(VALUE self) { NETSCAPE_SPKI *spki; BIO *out; BUF_MEM *buf; VALUE str; GetSPKI(self, spki); if (!(out = BIO_new(BIO_s_mem()))) { ossl_raise(eSPKIError, NULL); } if (!NETSCAPE_SPKI_print(out, spki)) { BIO_free(out); ossl_raise(eSPKIError, NULL); } BIO_get_mem_ptr(out, &buf); str = rb_str_new(buf->data, buf->length); BIO_free(out); return str; } |
#verify(key) ⇒ Object
Checks that cert signature is made with PRIVversion of this PUBLIC ‘key’
214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 |
# File 'ossl_ns_spki.c', line 214 static VALUE ossl_spki_verify(VALUE self, VALUE key) { NETSCAPE_SPKI *spki; GetSPKI(self, spki); switch (NETSCAPE_SPKI_verify(spki, GetPKeyPtr(key))) { /* NO NEED TO DUP */ case 0: return Qfalse; case 1: return Qtrue; default: ossl_raise(eSPKIError, NULL); } return Qnil; /* dummy */ } |