Ruby 1.9.3p327(2012-11-10revision37606)
Data Structures | Defines | Functions | Variables
ext/openssl/ossl_asn1.c File Reference
#include "ossl.h"
Include dependency graph for ossl_asn1.c:

Go to the source code of this file.

Data Structures

struct  timeval
struct  ossl_asn1_info_t

Defines

#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

Define 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)
#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)
#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,
 
)    rb_ivar_set((o),sivINFINITE_LENGTH,(v))
#define ossl_asn1_set_tag (   o,
 
)    rb_ivar_set((o),sivTAG,(v))
#define ossl_asn1_set_tag_class (   o,
 
)    rb_ivar_set((o),sivTAG_CLASS,(v))
#define ossl_asn1_set_tagging (   o,
 
)    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,
 
)    rb_ivar_set((o),sivVALUE,(v))

Function Documentation

VALUE asn1integer_to_num ( ASN1_INTEGER *  ai)
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)
static VALUE decode_bool ( unsigned char *  der,
int  length 
) [static]

Definition at line 334 of file ossl_asn1.c.

References NULL, ossl_raise(), 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(), 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(), 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(), 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(), 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(), 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(), rb_jump_tag(), and rb_protect().

Referenced by int_ossl_asn1_decode0_prim().

void Init_ossl_asn1 ( void  )
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]
static VALUE int_ossl_asn1_decode0_prim ( unsigned char **  pp,
long  length,
int  hlen,
int  tag,
VALUE  tc,
long *  num_read 
) [static]
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]
static VALUE ossl_asn1_decode0 ( unsigned char **  pp,
long  length,
long *  offset,
int  depth,
int  yield,
long *  num_read 
) [static]
static VALUE ossl_asn1_decode_all ( VALUE  self,
VALUE  obj 
) [static]
static int ossl_asn1_default_tag ( VALUE  obj) [static]
ASN1_TYPE* ossl_asn1_get_asn1type ( VALUE  obj)
static VALUE ossl_asn1_initialize ( int  argc,
VALUE argv,
VALUE  self 
) [static]
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]
static VALUE ossl_asn1_traverse ( VALUE  self,
VALUE  obj 
) [static]
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]
static VALUE ossl_asn1data_initialize ( VALUE  self,
VALUE  value,
VALUE  tag,
VALUE  tag_class 
) [static]
static VALUE ossl_asn1data_to_der ( VALUE  self) [static]
static VALUE ossl_asn1eoc_initialize ( VALUE  self) [static]
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]
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)

Variable Documentation

Definition at line 187 of file ossl_asn1.c.

Definition at line 193 of file ossl_asn1.c.

Definition at line 185 of file ossl_asn1.c.

Definition at line 182 of file ossl_asn1.c.

Definition at line 180 of file ossl_asn1.c.

Definition at line 184 of file ossl_asn1.c.

Definition at line 186 of file ossl_asn1.c.

Definition at line 196 of file ossl_asn1.c.

Definition at line 192 of file ossl_asn1.c.

Definition at line 191 of file ossl_asn1.c.

Definition at line 191 of file ossl_asn1.c.

Definition at line 186 of file ossl_asn1.c.

Definition at line 192 of file ossl_asn1.c.

Definition at line 194 of file ossl_asn1.c.

Definition at line 189 of file ossl_asn1.c.

Definition at line 195 of file ossl_asn1.c.

Definition at line 188 of file ossl_asn1.c.

Definition at line 181 of file ossl_asn1.c.

Definition at line 189 of file ossl_asn1.c.

Definition at line 197 of file ossl_asn1.c.

Definition at line 197 of file ossl_asn1.c.

Definition at line 190 of file ossl_asn1.c.

Definition at line 193 of file ossl_asn1.c.

Definition at line 196 of file ossl_asn1.c.

Definition at line 188 of file ossl_asn1.c.

Definition at line 190 of file ossl_asn1.c.

VALUE class_tag_map [static]

Definition at line 519 of file ossl_asn1.c.

Definition at line 178 of file ossl_asn1.c.

Referenced by ossl_x509attr_set_value().

Definition at line 177 of file ossl_asn1.c.

Referenced by ossl_x509attr_get_value().

Definition at line 483 of file ossl_asn1.c.

Definition at line 517 of file ossl_asn1.c.

Referenced by Init_ossl_asn1().

Definition at line 200 of file ossl_asn1.c.

Referenced by ossl_asn1_decode0().

Definition at line 200 of file ossl_asn1.c.

Referenced by ossl_asn1_decode0().

Definition at line 199 of file ossl_asn1.c.

ID sIMPLICIT [static]

Definition at line 199 of file ossl_asn1.c.

Definition at line 201 of file ossl_asn1.c.

Definition at line 201 of file ossl_asn1.c.

Definition at line 201 of file ossl_asn1.c.

Definition at line 201 of file ossl_asn1.c.

Definition at line 201 of file ossl_asn1.c.

ID sivVALUE [static]

Definition at line 201 of file ossl_asn1.c.

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().