ossl_asn1.c File Reference
`#include "ossl.h"`

Go to the source code of this file.

## Data Structures

struct | timeval
struct | ossl_asn1_info_t

## Macros

#define | DO_IT_VIA_RUBY 0
#define | ossl_asn1_get_value(o) rb_attr_get((o),sivVALUE)
#define | ossl_asn1_get_tag(o) rb_attr_get((o),sivTAG)
#define | ossl_asn1_get_tagging(o) rb_attr_get((o),sivTAGGING)
#define | ossl_asn1_get_tag_class(o) rb_attr_get((o),sivTAG_CLASS)
#define | ossl_asn1_get_infinite_length(o) rb_attr_get((o),sivINFINITE_LENGTH)
#define | ossl_asn1_set_value(o, v) rb_ivar_set((o),sivVALUE,(v))
#define | ossl_asn1_set_tag(o, v) rb_ivar_set((o),sivTAG,(v))
#define | ossl_asn1_set_tagging(o, v) rb_ivar_set((o),sivTAGGING,(v))
#define | ossl_asn1_set_tag_class(o, v) rb_ivar_set((o),sivTAG_CLASS,(v))
#define | ossl_asn1_set_infinite_length(o, v) rb_ivar_set((o),sivINFINITE_LENGTH,(v))
#define | ossl_asn1_object_size(cons, len, tag) (cons) == 2 ? (len) + ASN1_object_size((cons), 0, (tag)) : ASN1_object_size((cons), (len), (tag))
#define | ossl_asn1_put_object(pp, cons, len, tag, xc) (cons) == 2 ? ASN1_put_object((pp), (cons), 0, (tag), (xc)) : ASN1_put_object((pp), (cons), (len), (tag), (xc))
#define | OSSL_ASN1_IMPL_FACTORY_METHOD(klass)
#define | OSSL_ASN1_DEFINE_CLASS(name, super)

## Functions

static VALUE | join_der (VALUE enumerable)
static VALUE | ossl_asn1_decode0 (unsigned char **pp, long length, long *offset, int depth, int yield, long *num_read)
static VALUE | ossl_asn1_initialize (int argc, VALUE *argv, VALUE self)
static VALUE | ossl_asn1eoc_initialize (VALUE self)
VALUE | asn1time_to_time (ASN1_TIME *time)
struct timeval | rb_time_timeval (VALUE)
time_t | time_to_time_t (VALUE time)
VALUE | asn1str_to_str (ASN1_STRING *str)
VALUE | asn1integer_to_num (ASN1_INTEGER *ai)
ASN1_INTEGER * | num_to_asn1integer (VALUE obj, ASN1_INTEGER *ai)
static ASN1_BOOLEAN | obj_to_asn1bool (VALUE obj)
static ASN1_INTEGER * | obj_to_asn1int (VALUE obj)
static ASN1_BIT_STRING * | obj_to_asn1bstr (VALUE obj, long unused_bits)
static ASN1_STRING * | obj_to_asn1str (VALUE obj)
static ASN1_NULL * | obj_to_asn1null (VALUE obj)
static ASN1_OBJECT * | obj_to_asn1obj (VALUE obj)
static ASN1_UTCTIME * | obj_to_asn1utime (VALUE time)
static ASN1_GENERALIZEDTIME * | obj_to_asn1gtime (VALUE time)
static ASN1_STRING * | obj_to_asn1derstr (VALUE obj)
static VALUE | decode_bool (unsigned char *der, int length)
static VALUE | decode_int (unsigned char *der, int length)
static VALUE | decode_bstr (unsigned char *der, int length, long *unused_bits)
static VALUE | decode_enum (unsigned char *der, int length)
static VALUE | decode_null (unsigned char *der, int length)
static VALUE | decode_obj (unsigned char *der, int length)
static VALUE | decode_time (unsigned char *der, int length)
static VALUE | decode_eoc (unsigned char *der, int length)
static int | ossl_asn1_default_tag (VALUE obj)
ASN1_TYPE * | ossl_asn1_get_asn1type (VALUE obj)
static int | ossl_asn1_tag (VALUE obj)
static int | ossl_asn1_is_explicit (VALUE obj)
static int | ossl_asn1_tag_class (VALUE obj)
static VALUE | ossl_asn1_class2sym (int tc)
static VALUE | ossl_asn1data_initialize (VALUE self, VALUE value, VALUE tag, VALUE tag_class)
static VALUE | join_der_i (VALUE i, VALUE str)
static VALUE | ossl_asn1data_to_der (VALUE self)
static VALUE | int_ossl_asn1_decode0_prim (unsigned char **pp, long length, int hlen, int tag, VALUE tc, long *num_read)
static VALUE | int_ossl_asn1_decode0_cons (unsigned char **pp, long max_len, long length, long *offset, int depth, int yield, int j, int tag, VALUE tc, long *num_read)
static void | int_ossl_decode_sanity_check (long len, long read, long offset)
static VALUE | ossl_asn1_traverse (VALUE self, VALUE obj)
static VALUE | ossl_asn1_decode (VALUE self, VALUE obj)
static VALUE | ossl_asn1_decode_all (VALUE self, VALUE obj)
static int | ossl_i2d_ASN1_TYPE (ASN1_TYPE *a, unsigned char **pp)
static void | ossl_ASN1_TYPE_free (ASN1_TYPE *a)
static VALUE | ossl_asn1prim_to_der (VALUE self)
static VALUE | ossl_asn1cons_to_der (VALUE self)
static VALUE | ossl_asn1cons_each (VALUE self)
static VALUE | ossl_asn1obj_s_register (VALUE self, VALUE oid, VALUE sn, VALUE ln)
static VALUE | ossl_asn1obj_get_sn (VALUE self)
static VALUE | ossl_asn1obj_get_ln (VALUE self)
static VALUE | ossl_asn1obj_get_oid (VALUE self)
void | Init_ossl_asn1 ()

## Variables

VALUE | mASN1
VALUE | eASN1Error
VALUE | cASN1Data
VALUE | cASN1Primitive
VALUE | cASN1Constructive
VALUE | cASN1EndOfContent
VALUE | cASN1Boolean
VALUE | cASN1Integer
VALUE | cASN1Enumerated
VALUE | cASN1BitString
VALUE | cASN1OctetString
VALUE | cASN1UTF8String
VALUE | cASN1NumericString
VALUE | cASN1PrintableString
VALUE | cASN1T61String
VALUE | cASN1VideotexString
VALUE | cASN1IA5String
VALUE | cASN1GraphicString
VALUE | cASN1ISO64String
VALUE | cASN1GeneralString
VALUE | cASN1UniversalString
VALUE | cASN1BMPString
VALUE | cASN1Null
VALUE | cASN1ObjectId
VALUE | cASN1UTCTime
VALUE | cASN1GeneralizedTime
VALUE | cASN1Sequence
VALUE | cASN1Set
static ID | sIMPLICIT
static ID | sEXPLICIT
static ID | sUNIVERSAL
static ID | sAPPLICATION
static ID | sCONTEXT_SPECIFIC
static ID | sPRIVATE
static ID | sivVALUE
static ID | sivTAG
static ID | sivTAG_CLASS
static ID | sivTAGGING
static ID | sivINFINITE_LENGTH
static ID | sivUNUSED_BITS
static ossl_asn1_info_t | ossl_asn1_info []
int | ossl_asn1_info_size = (sizeof(ossl_asn1_info)/sizeof(ossl_asn1_info[0]))
static VALUE | class_tag_map

## Macro Definition Documentation

#define DO_IT_VIA_RUBY 0

Definition at line 96 of file ossl_asn1.c.

#define OSSL_ASN1_DEFINE_CLASS | ( |  | name,
|  |  | super
| ) |  |

Value:
do{\
cASN1##name = rb_define_class_under(mASN1, #name, cASN1##super);\
rb_define_module_function(mASN1, #name, ossl_asn1_##name, -1);\
}while(0)

Referenced by Init_ossl_asn1().

#define ossl_asn1_get_infinite_length | ( |  | o | ) | rb_attr_get((o),sivINFINITE_LENGTH)

Definition at line 169 of file ossl_asn1.c.

Referenced by ossl_asn1cons_to_der(), and ossl_asn1data_to_der().

#define ossl_asn1_get_tag | ( |  | o | ) | rb_attr_get((o),sivTAG)

Definition at line 166 of file ossl_asn1.c.

Referenced by int_ossl_asn1_decode0_cons(), ossl_asn1_tag(), ossl_asn1cons_to_der(), and ossl_asn1prim_to_der().

#define ossl_asn1_get_tag_class | ( |  | o | ) | rb_attr_get((o),sivTAG_CLASS)

Definition at line 168 of file ossl_asn1.c.

Referenced by int_ossl_asn1_decode0_cons(), and ossl_asn1_tag_class().

#define ossl_asn1_get_tagging | ( |  | o | ) | rb_attr_get((o),sivTAGGING)

Definition at line 167 of file ossl_asn1.c.

Referenced by ossl_asn1_is_explicit().

#define ossl_asn1_get_value | ( |  | o | ) | rb_attr_get((o),sivVALUE)

Definition at line 165 of file ossl_asn1.c.

Referenced by ossl_asn1_get_asn1type(), ossl_asn1cons_each(), ossl_asn1cons_to_der(), ossl_asn1data_to_der(), ossl_asn1obj_get_ln(), ossl_asn1obj_get_oid(), and ossl_asn1obj_get_sn().

#define OSSL_ASN1_IMPL_FACTORY_METHOD | ( |  | klass | ) |

Value:
static VALUE ossl_asn1_##klass(int argc, VALUE *argv, VALUE self)\
{ return rb_funcall3(cASN1##klass, rb_intern("new"), argc, argv); }

Definition at line 1400 of file ossl_asn1.c.

#define ossl_asn1_object_size | ( |  | cons,
|  |  | len,
|  |  | tag
| ) |  | (cons) == 2 ? (len) + ASN1_object_size((cons), 0, (tag)) : ASN1_object_size((cons), (len), (tag))

Definition at line 209 of file ossl_asn1.c.

Referenced by ossl_asn1cons_to_der(), ossl_asn1data_to_der(), and ossl_asn1prim_to_der().

#define ossl_asn1_put_object | ( |  | pp,
|  |  | cons,
|  |  | len,
|  |  | tag,
|  |  | xc
| ) |  | (cons) == 2 ? ASN1_put_object((pp), (cons), 0, (tag), (xc)) : ASN1_put_object((pp), (cons), (len), (tag), (xc))

Definition at line 210 of file ossl_asn1.c.

Referenced by ossl_asn1cons_to_der(), ossl_asn1data_to_der(), and ossl_asn1prim_to_der().

#define ossl_asn1_set_infinite_length | ( |  | o,
|  |  | v
| ) |  | rb_ivar_set((o),sivINFINITE_LENGTH,(v))

Definition at line 175 of file ossl_asn1.c.

Referenced by int_ossl_asn1_decode0_cons(), ossl_asn1_initialize(), ossl_asn1data_initialize(), and ossl_asn1eoc_initialize().

#define ossl_asn1_set_tag | ( |  | o,
|  |  | v
| ) |  | rb_ivar_set((o),sivTAG,(v))

Definition at line 172 of file ossl_asn1.c.

Referenced by ossl_asn1_initialize(), ossl_asn1data_initialize(), and ossl_asn1eoc_initialize().

#define ossl_asn1_set_tag_class | ( |  | o,
|  |  | v
| ) |  | rb_ivar_set((o),sivTAG_CLASS,(v))

Definition at line 174 of file ossl_asn1.c.

Referenced by ossl_asn1_initialize(), ossl_asn1data_initialize(), and ossl_asn1eoc_initialize().

#define ossl_asn1_set_tagging | ( |  | o,
|  |  | v
| ) |  | rb_ivar_set((o),sivTAGGING,(v))

Definition at line 173 of file ossl_asn1.c.

Referenced by ossl_asn1_initialize(), and ossl_asn1eoc_initialize().

#define ossl_asn1_set_value | ( |  | o,
|  |  | v
| ) |  | rb_ivar_set((o),sivVALUE,(v))

Definition at line 171 of file ossl_asn1.c.

Referenced by ossl_asn1_initialize(), ossl_asn1data_initialize(), and ossl_asn1eoc_initialize().

## Function Documentation

VALUE asn1integer_to_num | ( | ASN1_INTEGER * | ai | ) |

Definition at line 98 of file ossl_asn1.c.

References eOSSLError, NULL, ossl_bn_new(), ossl_raise(), Qtrue, rb_cstr_to_inum(), and rb_eTypeError.

Referenced by decode_enum(), decode_int(), ossl_pkcs7ri_get_serial(), ossl_pkcs7si_get_serial(), ossl_x509_get_serial(), and ossl_x509revoked_get_serial().

VALUE asn1str_to_str | ( | ASN1_STRING * | str | ) |

Definition at line 87 of file ossl_asn1.c.

References rb_str_new().

Referenced by ossl_pkcs7ri_get_enc_key().

VALUE asn1time_to_time | ( | ASN1_TIME * | time | ) |

Definition at line 32 of file ossl_asn1.c.

References argv, INT2NUM(), ossl_raise(), Qnil, rb_cTime, rb_eTypeError, rb_funcall2(), rb_intern, and rb_warning().

Referenced by decode_time(), ossl_pkcs7si_get_signed_time(), ossl_x509_get_not_after(), ossl_x509_get_not_before(), ossl_x509crl_get_last_update(), ossl_x509crl_get_next_update(), and ossl_x509revoked_get_time().

static VALUE decode_bool | ( | unsigned char * | der,
|  | int | length
| ) |  |

static

Definition at line 334 of file ossl_asn1.c.

References NULL, ossl_raise(), p, Qfalse, and Qtrue.

Referenced by int_ossl_asn1_decode0_prim().

static VALUE decode_bstr | ( | unsigned char * | der,
|  | int | length,
|  | long * | unused_bits
| ) |  |

static

Definition at line 366 of file ossl_asn1.c.

References len, NULL, ossl_raise(), p, and rb_str_new().

Referenced by int_ossl_asn1_decode0_prim().

static VALUE decode_enum | ( | unsigned char * | der,
|  | int | length
| ) |  |

static

Definition at line 387 of file ossl_asn1.c.

References _, asn1integer_to_num(), NULL, ossl_raise(), p, rb_jump_tag(), and rb_protect().

Referenced by int_ossl_asn1_decode0_prim().

static VALUE decode_eoc | ( | unsigned char * | der,
|  | int | length
| ) |  |

static

Definition at line 468 of file ossl_asn1.c.

References NULL, ossl_raise(), and rb_str_new().

Referenced by int_ossl_asn1_decode0_prim().

static VALUE decode_int | ( | unsigned char * | der,
|  | int | length
| ) |  |

static

Definition at line 347 of file ossl_asn1.c.

References _, asn1integer_to_num(), NULL, ossl_raise(), p, rb_jump_tag(), and rb_protect().

Referenced by int_ossl_asn1_decode0_prim().

static VALUE decode_null | ( | unsigned char * | der,
|  | int | length
| ) |  |

static

Definition at line 406 of file ossl_asn1.c.

References NULL, ossl_raise(), p, and Qnil.

Referenced by int_ossl_asn1_decode0_prim().

static VALUE decode_obj | ( | unsigned char * | der,
|  | int | length
| ) |  |

static

Definition at line 420 of file ossl_asn1.c.

References NULL, ossl_membio2str(), ossl_raise(), p, and rb_str_new2().

Referenced by int_ossl_asn1_decode0_prim().

static VALUE decode_time | ( | unsigned char * | der,
|  | int | length
| ) |  |

static

Definition at line 449 of file ossl_asn1.c.

References _, asn1time_to_time(), NULL, ossl_raise(), p, rb_jump_tag(), and rb_protect().

Referenced by int_ossl_asn1_decode0_prim().

void Init_ossl_asn1 | ( | void |  | ) |

Definition at line 1429 of file ossl_asn1.c.

References eOSSLError, i, INT2NUM(), mOSSL, name, ossl_asn1_decode(), ossl_asn1_decode_all(), OSSL_ASN1_DEFINE_CLASS, ossl_asn1_info_size, ossl_asn1_initialize(), ossl_asn1_traverse(), ossl_asn1cons_each(), ossl_asn1cons_to_der(), ossl_asn1data_initialize(), ossl_asn1data_to_der(), ossl_asn1eoc_initialize(), ossl_asn1obj_get_ln(), ossl_asn1obj_get_oid(), ossl_asn1obj_get_sn(), ossl_asn1obj_s_register(), ossl_asn1prim_to_der(), Qtrue, rb_ary_new(), rb_ary_store(), rb_attr(), rb_cObject, rb_define_alias(), rb_define_class_under(), rb_define_const(), rb_define_method(), rb_define_module(), rb_define_module_function(), rb_define_module_under(), rb_define_singleton_method(), rb_global_variable(), rb_hash_aset(), rb_hash_new(), rb_include_module(), rb_intern, rb_mEnumerable, rb_str_new2(), and rb_undef_method().

Referenced by Init_openssl().

static VALUE int_ossl_asn1_decode0_cons | ( | unsigned char ** | pp,
|  | long | max_len,
|  | long | length,
|  | long * | offset,
|  | int | depth,
|  | int | yield,
|  | int | j,
|  | int | tag,
|  | VALUE | tc,
|  | long * | num_read
| ) |  |

static

Definition at line 853 of file ossl_asn1.c.

References args, ID2SYM, INT2NUM(), ossl_asn1_info_t::klass, NUM2INT, ossl_asn1_decode0(), ossl_asn1_get_tag, ossl_asn1_get_tag_class, ossl_asn1_initialize(), ossl_asn1_set_infinite_length, ossl_asn1data_initialize(), ossl_raise(), Qfalse, Qnil, Qtrue, rb_ary_new(), rb_ary_push(), rb_obj_alloc(), and SYM2ID.

Referenced by ossl_asn1_decode0().

static VALUE int_ossl_asn1_decode0_prim | ( | unsigned char ** | pp,
|  | long | length,
|  | int | hlen,
|  | int | tag,
|  | VALUE | tc,
|  | long * | num_read
| ) |  |

static

Definition at line 780 of file ossl_asn1.c.

References args, decode_bool(), decode_bstr(), decode_enum(), decode_eoc(), decode_int(), decode_null(), decode_obj(), decode_time(), ID2SYM, INT2NUM(), ossl_asn1_info_t::klass, LONG2NUM, ossl_asn1_initialize(), ossl_asn1data_initialize(), p, Qnil, rb_ivar_set(), rb_obj_alloc(), and rb_str_new().

Referenced by ossl_asn1_decode0().

static void int_ossl_decode_sanity_check | ( | long | len,
|  | long | read,
|  | long | offset
| ) |  |

static

Definition at line 983 of file ossl_asn1.c.

References ossl_raise().

Referenced by ossl_asn1_decode(), ossl_asn1_decode_all(), and ossl_asn1_traverse().

static VALUE join_der | ( | VALUE | enumerable | ) |

static

Definition at line 730 of file ossl_asn1.c.

References join_der_i(), rb_block_call, rb_intern, and rb_str_new().

Referenced by ossl_asn1cons_to_der(), and ossl_asn1data_to_der().

static VALUE join_der_i | ( | VALUE | i,
|  | VALUE | str
| ) |  |

static

Definition at line 721 of file ossl_asn1.c.

References ossl_to_der_if_possible(), Qnil, rb_str_append(), and StringValue.

Referenced by join_der().

ASN1_INTEGER* num_to_asn1integer | ( | VALUE | obj,
|  | ASN1_INTEGER * | ai
| ) |  |

Definition at line 150 of file ossl_asn1.c.

References eOSSLError, GetBNPtr(), NULL, and ossl_raise().

Referenced by obj_to_asn1int(), ossl_x509_set_serial(), and ossl_x509revoked_set_serial().

static ASN1_BOOLEAN obj_to_asn1bool | ( | VALUE | obj | ) |

static

Definition at line 220 of file ossl_asn1.c.

References RTEST.

Referenced by ossl_asn1_get_asn1type().

static ASN1_BIT_STRING* obj_to_asn1bstr | ( | VALUE | obj,
|  | long | unused_bits
| ) |  |

static

Definition at line 236 of file ossl_asn1.c.

References NULL, ossl_raise(), RSTRING_LENINT, RSTRING_PTR, and StringValue.

Referenced by ossl_asn1_get_asn1type().

static ASN1_STRING* obj_to_asn1derstr | ( | VALUE | obj | ) |

static

Definition at line 317 of file ossl_asn1.c.

References NULL, ossl_raise(), ossl_to_der(), RSTRING_LENINT, and RSTRING_PTR.

Referenced by ossl_asn1_get_asn1type().

static ASN1_GENERALIZEDTIME* obj_to_asn1gtime | ( | VALUE | time | ) |

static

Definition at line 304 of file ossl_asn1.c.

References NULL, ossl_raise(), time_t, and time_to_time_t().

Referenced by ossl_asn1_get_asn1type().

static ASN1_INTEGER* obj_to_asn1int | ( | VALUE | obj | ) |

static

Definition at line 230 of file ossl_asn1.c.

References NULL, and num_to_asn1integer().

Referenced by ossl_asn1_get_asn1type().

static ASN1_NULL* obj_to_asn1null | ( | VALUE | obj | ) |

static

Definition at line 265 of file ossl_asn1.c.

References NIL_P, NULL, and ossl_raise().

Referenced by ossl_asn1_get_asn1type().

static ASN1_OBJECT* obj_to_asn1obj | ( | VALUE | obj | ) |

static

Definition at line 278 of file ossl_asn1.c.

References ossl_raise(), RSTRING_PTR, and StringValue.

Referenced by ossl_asn1_get_asn1type(), and ossl_asn1obj_get_oid().

static ASN1_STRING* obj_to_asn1str | ( | VALUE | obj | ) |

static

Definition at line 252 of file ossl_asn1.c.

References NULL, ossl_raise(), RSTRING_LENINT, RSTRING_PTR, and StringValue.

Referenced by ossl_asn1_get_asn1type().

static ASN1_UTCTIME* obj_to_asn1utime | ( | VALUE | time | ) |

static

Definition at line 291 of file ossl_asn1.c.

References NULL, ossl_raise(), time_t, and time_to_time_t().

Referenced by ossl_asn1_get_asn1type().

static VALUE ossl_asn1_class2sym | ( | int | tc | ) |

static

Definition at line 677 of file ossl_asn1.c.

References ID2SYM.

Referenced by ossl_asn1_decode0().

static VALUE ossl_asn1_decode | ( | VALUE | self,
|  | VALUE | obj
| ) |  |

static

Definition at line 1042 of file ossl_asn1.c.

References int_ossl_decode_sanity_check(), len, ossl_asn1_decode0(), ossl_to_der_if_possible(), p, rb_str_new4(), RSTRING_LEN, RSTRING_PTR, and StringValue.

Referenced by Init_ossl_asn1().

static VALUE ossl_asn1_decode0 | ( | unsigned char ** | pp,
|  | long | length,
|  | long * | offset,
|  | int | depth,
|  | int | yield,
|  | long * | num_read
| ) |  |

static

Definition at line 920 of file ossl_asn1.c.

References arg, INT2NUM(), int_ossl_asn1_decode0_cons(), int_ossl_asn1_decode0_prim(), len, LONG2NUM, NULL, ossl_asn1_class2sym(), ossl_raise(), p, Qfalse, Qtrue, rb_ary_new(), rb_ary_push(), rb_yield(), sAPPLICATION, sCONTEXT_SPECIFIC, sPRIVATE, and sUNIVERSAL.

Referenced by int_ossl_asn1_decode0_cons(), ossl_asn1_decode(), ossl_asn1_decode_all(), and ossl_asn1_traverse().

static VALUE ossl_asn1_decode_all | ( | VALUE | self,
|  | VALUE | obj
| ) |  |

static

Definition at line 1072 of file ossl_asn1.c.

References int_ossl_decode_sanity_check(), len, ossl_asn1_decode0(), ossl_to_der_if_possible(), p, rb_ary_new(), rb_ary_push(), rb_str_new4(), RSTRING_LEN, RSTRING_PTR, and StringValue.

Referenced by Init_ossl_asn1().

static int ossl_asn1_default_tag | ( | VALUE | obj | ) |

static

Definition at line 600 of file ossl_asn1.c.

References CLASS_OF, NUM2INT, ossl_raise(), Qnil, rb_class2name(), rb_class_superclass(), and rb_hash_lookup.

Referenced by ossl_asn1_get_asn1type(), ossl_asn1_initialize(), ossl_asn1cons_to_der(), and ossl_asn1eoc_initialize().

ASN1_TYPE* ossl_asn1_get_asn1type | ( | VALUE | obj | ) |

Definition at line 524 of file ossl_asn1.c.

References NIL_P, NULL, NUM2INT, obj_to_asn1bool(), obj_to_asn1bstr(), obj_to_asn1derstr(), obj_to_asn1gtime(), obj_to_asn1int(), obj_to_asn1null(), obj_to_asn1obj(), obj_to_asn1str(), obj_to_asn1utime(), ossl_asn1_default_tag(), ossl_asn1_get_value, ossl_raise(), and rb_attr_get().

Referenced by ossl_asn1prim_to_der(), and ossl_x509attr_set_value().

static VALUE ossl_asn1_initialize | ( | int | argc,
|  | VALUE * | argv,
|  | VALUE | self
| ) |  |

static

Definition at line 1120 of file ossl_asn1.c.

References ID2SYM, INT2NUM(), NIL_P, NUM2INT, ossl_asn1_default_tag(), ossl_asn1_set_infinite_length, ossl_asn1_set_tag, ossl_asn1_set_tag_class, ossl_asn1_set_tagging, ossl_asn1_set_value, ossl_raise(), Qfalse, Qnil, rb_scan_args(), SYM2ID, and SYMBOL_P.

Referenced by Init_ossl_asn1(), int_ossl_asn1_decode0_cons(), and int_ossl_asn1_decode0_prim().

static int ossl_asn1_is_explicit | ( | VALUE | obj | ) |

static

Definition at line 631 of file ossl_asn1.c.

References NIL_P, ossl_asn1_get_tagging, ossl_raise(), SYM2ID, and SYMBOL_P.

Referenced by ossl_asn1cons_to_der(), and ossl_asn1prim_to_der().

static int ossl_asn1_tag | ( | VALUE | obj | ) |

static

Definition at line 619 of file ossl_asn1.c.

References NIL_P, NUM2INT, ossl_asn1_get_tag, and ossl_raise().

Referenced by ossl_asn1data_to_der().

static int ossl_asn1_tag_class | ( | VALUE | obj | ) |

static

Definition at line 652 of file ossl_asn1.c.

References NIL_P, ossl_asn1_get_tag_class, ossl_raise(), SYM2ID, and SYMBOL_P.

Referenced by ossl_asn1cons_to_der(), ossl_asn1data_to_der(), and ossl_asn1prim_to_der().

static VALUE ossl_asn1_traverse | ( | VALUE | self,
|  | VALUE | obj
| ) |  |

static

Definition at line 1014 of file ossl_asn1.c.

References int_ossl_decode_sanity_check(), len, ossl_asn1_decode0(), ossl_to_der_if_possible(), p, Qnil, rb_str_new4(), RSTRING_LEN, RSTRING_PTR, and StringValue.

Referenced by Init_ossl_asn1().

static void ossl_ASN1_TYPE_free | ( | ASN1_TYPE * | a | ) |

static

Definition at line 1182 of file ossl_asn1.c.

Referenced by ossl_asn1prim_to_der().

static VALUE ossl_asn1cons_each | ( | VALUE | self | ) |

static

Definition at line 1340 of file ossl_asn1.c.

References ossl_asn1_get_value, and rb_ary_each().

Referenced by Init_ossl_asn1().

static VALUE ossl_asn1cons_to_der | ( | VALUE | self | ) |

static

Definition at line 1244 of file ossl_asn1.c.

References ASN1_put_eoc(), CLASS_OF, join_der(), NUM2INT, ossl_asn1_default_tag(), ossl_asn1_get_infinite_length, ossl_asn1_get_tag, ossl_asn1_get_value, ossl_asn1_is_explicit(), ossl_asn1_object_size, ossl_asn1_put_object, ossl_asn1_tag_class(), ossl_raise(), ossl_str_adjust, p, Qnil, Qtrue, rb_ary_entry(), rb_cArray, rb_obj_is_kind_of(), rb_str_new(), RSTRING_LEN, RSTRING_LENINT, and RSTRING_PTR.

Referenced by Init_ossl_asn1().

static VALUE ossl_asn1data_initialize | ( | VALUE | self,
|  | VALUE | value,
|  | VALUE | tag,
|  | VALUE | tag_class
| ) |  |

static

Definition at line 706 of file ossl_asn1.c.

References NUM2INT, ossl_asn1_set_infinite_length, ossl_asn1_set_tag, ossl_asn1_set_tag_class, ossl_asn1_set_value, ossl_raise(), Qfalse, SYM2ID, and SYMBOL_P.

Referenced by Init_ossl_asn1(), int_ossl_asn1_decode0_cons(), and int_ossl_asn1_decode0_prim().

static VALUE ossl_asn1data_to_der | ( | VALUE | self | ) |

static

Definition at line 747 of file ossl_asn1.c.

References join_der(), NULL, ossl_asn1_get_infinite_length, ossl_asn1_get_value, ossl_asn1_object_size, ossl_asn1_put_object, ossl_asn1_tag(), ossl_asn1_tag_class(), ossl_raise(), ossl_str_adjust, p, Qtrue, rb_cArray, rb_obj_is_kind_of(), rb_str_new(), RSTRING_LEN, RSTRING_LENINT, RSTRING_PTR, and StringValue.

Referenced by Init_ossl_asn1().

static VALUE ossl_asn1eoc_initialize | ( | VALUE | self | ) |

static

Definition at line 1156 of file ossl_asn1.c.

References ID2SYM, INT2NUM(), ossl_asn1_default_tag(), ossl_asn1_set_infinite_length, ossl_asn1_set_tag, ossl_asn1_set_tag_class, ossl_asn1_set_tagging, ossl_asn1_set_value, Qfalse, Qnil, and rb_str_new().

Referenced by Init_ossl_asn1().

static VALUE ossl_asn1obj_get_ln | ( | VALUE | self | ) |

static

Definition at line 1373 of file ossl_asn1.c.

References ossl_asn1_get_value, Qnil, rb_str_new2(), and StringValuePtr.

Referenced by Init_ossl_asn1().

static VALUE ossl_asn1obj_get_oid | ( | VALUE | self | ) |

static

Definition at line 1386 of file ossl_asn1.c.

References buf, obj_to_asn1obj(), ossl_asn1_get_value, and rb_str_new2().

Referenced by Init_ossl_asn1().

static VALUE ossl_asn1obj_get_sn | ( | VALUE | self | ) |

static

Definition at line 1360 of file ossl_asn1.c.

References ossl_asn1_get_value, Qnil, rb_str_new2(), and StringValuePtr.

Referenced by Init_ossl_asn1().

static VALUE ossl_asn1obj_s_register | ( | VALUE | self,
|  | VALUE | oid,
|  | VALUE | sn,
|  | VALUE | ln
| ) |  |

static

Definition at line 1347 of file ossl_asn1.c.

References NULL, ossl_raise(), Qtrue, RSTRING_PTR, and StringValue.

Referenced by Init_ossl_asn1().

static VALUE ossl_asn1prim_to_der | ( | VALUE | self | ) |

static

Definition at line 1201 of file ossl_asn1.c.

References assert, buf, len, NULL, NUM2INT, ossl_asn1_get_asn1type(), ossl_asn1_get_tag, ossl_asn1_is_explicit(), ossl_asn1_object_size, ossl_asn1_put_object, ossl_asn1_tag_class(), ossl_ASN1_TYPE_free(), ossl_buf2str(), ossl_i2d_ASN1_TYPE(), ossl_raise(), p, and rb_long2int.

Referenced by Init_ossl_asn1().

static int ossl_i2d_ASN1_TYPE | ( | ASN1_TYPE * | a,
|  | unsigned char ** | pp
| ) |  |

static

Definition at line 1171 of file ossl_asn1.c.

Referenced by ossl_asn1prim_to_der().

struct timeval rb_time_timeval | ( | VALUE |  | ) |

read

Definition at line 2442 of file time.c.

Referenced by old_thread_select(), rb_thread_sleep(), and wait_for_single_fd().

time_t time_to_time_t | ( | VALUE | time | ) |

Definition at line 78 of file ossl_asn1.c.

References NUM2LONG(), rb_Integer(), and time_t.

Referenced by obj_to_asn1gtime(), obj_to_asn1utime(), ossl_x509_set_not_after(), ossl_x509_set_not_before(), ossl_x509crl_set_last_update(), ossl_x509crl_set_next_update(), and ossl_x509revoked_set_time().

## Variable Documentation

VALUE cASN1BitString

Definition at line 187 of file ossl_asn1.c.

VALUE cASN1BMPString

Definition at line 193 of file ossl_asn1.c.

VALUE cASN1Boolean

Definition at line 185 of file ossl_asn1.c.

VALUE cASN1Constructive

Definition at line 182 of file ossl_asn1.c.

VALUE cASN1Data

Definition at line 180 of file ossl_asn1.c.

VALUE cASN1EndOfContent

Definition at line 184 of file ossl_asn1.c.

VALUE cASN1Enumerated

Definition at line 186 of file ossl_asn1.c.

VALUE cASN1GeneralizedTime

Definition at line 196 of file ossl_asn1.c.

VALUE cASN1GeneralString

Definition at line 192 of file ossl_asn1.c.

VALUE cASN1GraphicString

Definition at line 191 of file ossl_asn1.c.

VALUE cASN1IA5String

Definition at line 191 of file ossl_asn1.c.

VALUE cASN1Integer

Definition at line 186 of file ossl_asn1.c.

VALUE cASN1ISO64String

Definition at line 192 of file ossl_asn1.c.

VALUE cASN1Null

Definition at line 194 of file ossl_asn1.c.

VALUE cASN1NumericString

Definition at line 189 of file ossl_asn1.c.

VALUE cASN1ObjectId

Definition at line 195 of file ossl_asn1.c.

VALUE cASN1OctetString

Definition at line 188 of file ossl_asn1.c.

VALUE cASN1Primitive

Definition at line 181 of file ossl_asn1.c.

VALUE cASN1PrintableString

Definition at line 189 of file ossl_asn1.c.

VALUE cASN1Sequence

Definition at line 197 of file ossl_asn1.c.

VALUE cASN1Set

Definition at line 197 of file ossl_asn1.c.

VALUE cASN1T61String

Definition at line 190 of file ossl_asn1.c.

VALUE cASN1UniversalString

Definition at line 193 of file ossl_asn1.c.

VALUE cASN1UTCTime

Definition at line 196 of file ossl_asn1.c.

VALUE cASN1UTF8String

Definition at line 188 of file ossl_asn1.c.

VALUE cASN1VideotexString

Definition at line 190 of file ossl_asn1.c.

VALUE class_tag_map

static

Definition at line 519 of file ossl_asn1.c.

VALUE eASN1Error

Definition at line 178 of file ossl_asn1.c.

Referenced by ossl_x509attr_set_value().

VALUE mASN1

Definition at line 177 of file ossl_asn1.c.

Referenced by ossl_x509attr_get_value().

ossl_asn1_info_t ossl_asn1_info[]

static

Definition at line 483 of file ossl_asn1.c.

int ossl_asn1_info_size = (sizeof(ossl_asn1_info)/sizeof(ossl_asn1_info[0]))

Definition at line 517 of file ossl_asn1.c.

Referenced by Init_ossl_asn1().

ID sAPPLICATION

static

Definition at line 200 of file ossl_asn1.c.

Referenced by ossl_asn1_decode0().

ID sCONTEXT_SPECIFIC

static

Definition at line 200 of file ossl_asn1.c.

Referenced by ossl_asn1_decode0().

ID sEXPLICIT

static

Definition at line 199 of file ossl_asn1.c.

ID sIMPLICIT

static

Definition at line 199 of file ossl_asn1.c.

ID sivINFINITE_LENGTH

static

Definition at line 201 of file ossl_asn1.c.

ID sivTAG

static

Definition at line 201 of file ossl_asn1.c.

ID sivTAG_CLASS

static

Definition at line 201 of file ossl_asn1.c.

ID sivTAGGING

static

Definition at line 201 of file ossl_asn1.c.

ID sivUNUSED_BITS

static

Definition at line 201 of file ossl_asn1.c.

ID sivVALUE

static

Definition at line 201 of file ossl_asn1.c.

ID sPRIVATE

static

Definition at line 200 of file ossl_asn1.c.

Referenced by ossl_asn1_decode0().

ID sUNIVERSAL

static

Definition at line 200 of file ossl_asn1.c.

Referenced by ossl_asn1_decode0().