12 #define NewSPKI(klass) \
13 TypedData_Wrap_Struct((klass), &ossl_netscape_spki_type, 0)
14 #define SetSPKI(obj, spki) do { \
16 ossl_raise(rb_eRuntimeError, "SPKI wasn't initialized!"); \
18 RTYPEDDATA_DATA(obj) = (spki); \
20 #define GetSPKI(obj, spki) do { \
21 TypedData_Get_Struct((obj), NETSCAPE_SPKI, &ossl_netscape_spki_type, (spki)); \
23 ossl_raise(rb_eRuntimeError, "SPKI wasn't initialized!"); \
43 ossl_netscape_spki_free(
void *spki)
45 NETSCAPE_SPKI_free(spki);
49 "OpenSSL/NETSCAPE_SPKI",
51 0, ossl_netscape_spki_free,
57 ossl_spki_alloc(
VALUE klass)
63 if (!(spki = NETSCAPE_SPKI_new())) {
83 const unsigned char *p;
89 if (!(spki = NETSCAPE_SPKI_b64_decode(
RSTRING_PTR(buffer), RSTRING_LENINT(buffer)))) {
109 ossl_spki_to_der(
VALUE self)
117 if ((
len = i2d_NETSCAPE_SPKI(spki,
NULL)) <= 0)
121 if (i2d_NETSCAPE_SPKI(spki, &p) <= 0)
135 ossl_spki_to_pem(
VALUE self)
142 if (!(data = NETSCAPE_SPKI_b64_encode(spki))) {
158 ossl_spki_print(
VALUE self)
164 if (!(out = BIO_new(BIO_s_mem()))) {
167 if (!NETSCAPE_SPKI_print(out, spki)) {
183 ossl_spki_get_public_key(
VALUE self)
189 if (!(pkey = NETSCAPE_SPKI_get_pubkey(spki))) {
216 if (!NETSCAPE_SPKI_set_pubkey(spki, pkey))
228 ossl_spki_get_challenge(
VALUE self)
233 if (spki->spkac->challenge->length <= 0) {
238 return rb_str_new((
const char *)spki->spkac->challenge->data,
239 spki->spkac->challenge->length);
260 RSTRING_LENINT(
str))) {
290 if (!NETSCAPE_SPKI_sign(spki, pkey, md)) {
316 switch (NETSCAPE_SPKI_verify(spki, pkey)) {