@@ -143,20 +143,7 @@ VALUE cASN1Data;
143143static VALUE cASN1Primitive ;
144144static VALUE cASN1Constructive ;
145145
146- static VALUE cASN1EndOfContent ;
147- static VALUE cASN1Boolean ; /* BOOLEAN */
148- static VALUE cASN1Integer , cASN1Enumerated ; /* INTEGER */
149- static VALUE cASN1BitString ; /* BIT STRING */
150- static VALUE cASN1OctetString , cASN1UTF8String ; /* STRINGs */
151- static VALUE cASN1NumericString , cASN1PrintableString ;
152- static VALUE cASN1T61String , cASN1VideotexString ;
153- static VALUE cASN1IA5String , cASN1GraphicString ;
154- static VALUE cASN1ISO64String , cASN1GeneralString ;
155- static VALUE cASN1UniversalString , cASN1BMPString ;
156- static VALUE cASN1Null ; /* NULL */
157146static VALUE cASN1ObjectId ; /* OBJECT IDENTIFIER */
158- static VALUE cASN1UTCTime , cASN1GeneralizedTime ; /* TIME */
159- static VALUE cASN1Sequence , cASN1Set ; /* CONSTRUCTIVE */
160147
161148static VALUE sym_IMPLICIT , sym_EXPLICIT ;
162149static VALUE sym_UNIVERSAL , sym_APPLICATION , sym_CONTEXT_SPECIFIC , sym_PRIVATE ;
@@ -177,49 +164,6 @@ obj_to_asn1obj(VALUE obj)
177164
178165/********/
179166
180- typedef struct {
181- const char * name ;
182- VALUE * klass ;
183- } ossl_asn1_info_t ;
184-
185- static const ossl_asn1_info_t ossl_asn1_info [] = {
186- { "EOC" , & cASN1EndOfContent , }, /* 0 */
187- { "BOOLEAN" , & cASN1Boolean , }, /* 1 */
188- { "INTEGER" , & cASN1Integer , }, /* 2 */
189- { "BIT_STRING" , & cASN1BitString , }, /* 3 */
190- { "OCTET_STRING" , & cASN1OctetString , }, /* 4 */
191- { "NULL" , & cASN1Null , }, /* 5 */
192- { "OBJECT" , & cASN1ObjectId , }, /* 6 */
193- { "OBJECT_DESCRIPTOR" , NULL , }, /* 7 */
194- { "EXTERNAL" , NULL , }, /* 8 */
195- { "REAL" , NULL , }, /* 9 */
196- { "ENUMERATED" , & cASN1Enumerated , }, /* 10 */
197- { "EMBEDDED_PDV" , NULL , }, /* 11 */
198- { "UTF8STRING" , & cASN1UTF8String , }, /* 12 */
199- { "RELATIVE_OID" , NULL , }, /* 13 */
200- { "[UNIVERSAL 14]" , NULL , }, /* 14 */
201- { "[UNIVERSAL 15]" , NULL , }, /* 15 */
202- { "SEQUENCE" , & cASN1Sequence , }, /* 16 */
203- { "SET" , & cASN1Set , }, /* 17 */
204- { "NUMERICSTRING" , & cASN1NumericString , }, /* 18 */
205- { "PRINTABLESTRING" , & cASN1PrintableString , }, /* 19 */
206- { "T61STRING" , & cASN1T61String , }, /* 20 */
207- { "VIDEOTEXSTRING" , & cASN1VideotexString , }, /* 21 */
208- { "IA5STRING" , & cASN1IA5String , }, /* 22 */
209- { "UTCTIME" , & cASN1UTCTime , }, /* 23 */
210- { "GENERALIZEDTIME" , & cASN1GeneralizedTime , }, /* 24 */
211- { "GRAPHICSTRING" , & cASN1GraphicString , }, /* 25 */
212- { "ISO64STRING" , & cASN1ISO64String , }, /* 26 */
213- { "GENERALSTRING" , & cASN1GeneralString , }, /* 27 */
214- { "UNIVERSALSTRING" , & cASN1UniversalString , }, /* 28 */
215- { "CHARACTER_STRING" , NULL , }, /* 29 */
216- { "BMPSTRING" , & cASN1BMPString , }, /* 30 */
217- };
218-
219- enum {ossl_asn1_info_size = (sizeof (ossl_asn1_info )/sizeof (ossl_asn1_info [0 ]))};
220-
221- static VALUE class_tag_map ;
222-
223167/*
224168 * call-seq:
225169 * OpenSSL::ASN1::ObjectId.register(object_id, short_name, long_name)
@@ -347,40 +291,10 @@ ossl_asn1obj_eq(VALUE self, VALUE other)
347291 return rb_str_equal (oid1 , oid2 );
348292}
349293
350- #define OSSL_ASN1_IMPL_FACTORY_METHOD (klass ) \
351- static VALUE ossl_asn1_##klass(int argc, VALUE *argv, VALUE self)\
352- { return rb_funcallv_public(cASN1##klass, rb_intern("new"), argc, argv); }
353-
354- OSSL_ASN1_IMPL_FACTORY_METHOD (Boolean )
355- OSSL_ASN1_IMPL_FACTORY_METHOD (Integer )
356- OSSL_ASN1_IMPL_FACTORY_METHOD (Enumerated )
357- OSSL_ASN1_IMPL_FACTORY_METHOD (BitString )
358- OSSL_ASN1_IMPL_FACTORY_METHOD (OctetString )
359- OSSL_ASN1_IMPL_FACTORY_METHOD (UTF8String )
360- OSSL_ASN1_IMPL_FACTORY_METHOD (NumericString )
361- OSSL_ASN1_IMPL_FACTORY_METHOD (PrintableString )
362- OSSL_ASN1_IMPL_FACTORY_METHOD (T61String )
363- OSSL_ASN1_IMPL_FACTORY_METHOD (VideotexString )
364- OSSL_ASN1_IMPL_FACTORY_METHOD (IA5String )
365- OSSL_ASN1_IMPL_FACTORY_METHOD (GraphicString )
366- OSSL_ASN1_IMPL_FACTORY_METHOD (ISO64String )
367- OSSL_ASN1_IMPL_FACTORY_METHOD (GeneralString )
368- OSSL_ASN1_IMPL_FACTORY_METHOD (UniversalString )
369- OSSL_ASN1_IMPL_FACTORY_METHOD (BMPString )
370- OSSL_ASN1_IMPL_FACTORY_METHOD (Null )
371- OSSL_ASN1_IMPL_FACTORY_METHOD (ObjectId )
372- OSSL_ASN1_IMPL_FACTORY_METHOD (UTCTime )
373- OSSL_ASN1_IMPL_FACTORY_METHOD (GeneralizedTime )
374- OSSL_ASN1_IMPL_FACTORY_METHOD (Sequence )
375- OSSL_ASN1_IMPL_FACTORY_METHOD (Set )
376- OSSL_ASN1_IMPL_FACTORY_METHOD (EndOfContent )
377-
378294void
379295Init_ossl_asn1 (void )
380296{
381297#undef rb_intern
382- VALUE ary ;
383- int i ;
384298
385299#if 0
386300 mOSSL = rb_define_module ("OpenSSL" );
@@ -409,55 +323,12 @@ Init_ossl_asn1(void)
409323 * classes defined in it.
410324 */
411325 eASN1Error = rb_define_class_under (mASN1 , "ASN1Error" , eOSSLError );
412- ary = rb_ary_new ();
413-
414- /*
415- * Array storing tag names at the tag's index.
416- */
417- rb_define_const (mASN1 , "UNIVERSAL_TAG_NAME" , ary );
418- for (i = 0 ; i < ossl_asn1_info_size ; i ++ ){
419- if (ossl_asn1_info [i ].name [0 ] == '[' ) continue ;
420- rb_define_const (mASN1 , ossl_asn1_info [i ].name , INT2NUM (i ));
421- rb_ary_store (ary , i , rb_str_new2 (ossl_asn1_info [i ].name ));
422- }
423-
424326
425327 cASN1Data = rb_define_class_under (mASN1 , "ASN1Data" , rb_cObject );
426328 cASN1Primitive = rb_define_class_under (mASN1 , "Primitive" , cASN1Data );
427329
428330 cASN1Constructive = rb_define_class_under (mASN1 ,"Constructive" , cASN1Data );
429- #define OSSL_ASN1_DEFINE_CLASS (name , super ) \
430- do{\
431- cASN1##name = rb_define_class_under(mASN1, #name, cASN1##super);\
432- rb_define_module_function(mASN1, #name, ossl_asn1_##name, -1);\
433- }while(0)
434-
435- OSSL_ASN1_DEFINE_CLASS (Boolean , Primitive );
436- OSSL_ASN1_DEFINE_CLASS (Integer , Primitive );
437- OSSL_ASN1_DEFINE_CLASS (Enumerated , Primitive );
438- OSSL_ASN1_DEFINE_CLASS (BitString , Primitive );
439- OSSL_ASN1_DEFINE_CLASS (OctetString , Primitive );
440- OSSL_ASN1_DEFINE_CLASS (UTF8String , Primitive );
441- OSSL_ASN1_DEFINE_CLASS (NumericString , Primitive );
442- OSSL_ASN1_DEFINE_CLASS (PrintableString , Primitive );
443- OSSL_ASN1_DEFINE_CLASS (T61String , Primitive );
444- OSSL_ASN1_DEFINE_CLASS (VideotexString , Primitive );
445- OSSL_ASN1_DEFINE_CLASS (IA5String , Primitive );
446- OSSL_ASN1_DEFINE_CLASS (GraphicString , Primitive );
447- OSSL_ASN1_DEFINE_CLASS (ISO64String , Primitive );
448- OSSL_ASN1_DEFINE_CLASS (GeneralString , Primitive );
449- OSSL_ASN1_DEFINE_CLASS (UniversalString , Primitive );
450- OSSL_ASN1_DEFINE_CLASS (BMPString , Primitive );
451- OSSL_ASN1_DEFINE_CLASS (Null , Primitive );
452- OSSL_ASN1_DEFINE_CLASS (ObjectId , Primitive );
453- OSSL_ASN1_DEFINE_CLASS (UTCTime , Primitive );
454- OSSL_ASN1_DEFINE_CLASS (GeneralizedTime , Primitive );
455-
456- OSSL_ASN1_DEFINE_CLASS (Sequence , Constructive );
457- OSSL_ASN1_DEFINE_CLASS (Set , Constructive );
458-
459- OSSL_ASN1_DEFINE_CLASS (EndOfContent , Data );
460-
331+ cASN1ObjectId = rb_define_class_under (mASN1 ,"ObjectId" , cASN1Primitive );
461332
462333#if 0
463334 cASN1ObjectId = rb_define_class_under (mASN1 , "ObjectId" , cASN1Primitive ); /* let rdoc know */
@@ -469,30 +340,4 @@ do{\
469340 rb_define_alias (cASN1ObjectId , "short_name" , "sn" );
470341 rb_define_alias (cASN1ObjectId , "long_name" , "ln" );
471342 rb_define_method (cASN1ObjectId , "==" , ossl_asn1obj_eq , 1 );
472-
473- class_tag_map = rb_hash_new ();
474- rb_hash_aset (class_tag_map , cASN1EndOfContent , INT2NUM (V_ASN1_EOC ));
475- rb_hash_aset (class_tag_map , cASN1Boolean , INT2NUM (V_ASN1_BOOLEAN ));
476- rb_hash_aset (class_tag_map , cASN1Integer , INT2NUM (V_ASN1_INTEGER ));
477- rb_hash_aset (class_tag_map , cASN1BitString , INT2NUM (V_ASN1_BIT_STRING ));
478- rb_hash_aset (class_tag_map , cASN1OctetString , INT2NUM (V_ASN1_OCTET_STRING ));
479- rb_hash_aset (class_tag_map , cASN1Null , INT2NUM (V_ASN1_NULL ));
480- rb_hash_aset (class_tag_map , cASN1ObjectId , INT2NUM (V_ASN1_OBJECT ));
481- rb_hash_aset (class_tag_map , cASN1Enumerated , INT2NUM (V_ASN1_ENUMERATED ));
482- rb_hash_aset (class_tag_map , cASN1UTF8String , INT2NUM (V_ASN1_UTF8STRING ));
483- rb_hash_aset (class_tag_map , cASN1Sequence , INT2NUM (V_ASN1_SEQUENCE ));
484- rb_hash_aset (class_tag_map , cASN1Set , INT2NUM (V_ASN1_SET ));
485- rb_hash_aset (class_tag_map , cASN1NumericString , INT2NUM (V_ASN1_NUMERICSTRING ));
486- rb_hash_aset (class_tag_map , cASN1PrintableString , INT2NUM (V_ASN1_PRINTABLESTRING ));
487- rb_hash_aset (class_tag_map , cASN1T61String , INT2NUM (V_ASN1_T61STRING ));
488- rb_hash_aset (class_tag_map , cASN1VideotexString , INT2NUM (V_ASN1_VIDEOTEXSTRING ));
489- rb_hash_aset (class_tag_map , cASN1IA5String , INT2NUM (V_ASN1_IA5STRING ));
490- rb_hash_aset (class_tag_map , cASN1UTCTime , INT2NUM (V_ASN1_UTCTIME ));
491- rb_hash_aset (class_tag_map , cASN1GeneralizedTime , INT2NUM (V_ASN1_GENERALIZEDTIME ));
492- rb_hash_aset (class_tag_map , cASN1GraphicString , INT2NUM (V_ASN1_GRAPHICSTRING ));
493- rb_hash_aset (class_tag_map , cASN1ISO64String , INT2NUM (V_ASN1_ISO64STRING ));
494- rb_hash_aset (class_tag_map , cASN1GeneralString , INT2NUM (V_ASN1_GENERALSTRING ));
495- rb_hash_aset (class_tag_map , cASN1UniversalString , INT2NUM (V_ASN1_UNIVERSALSTRING ));
496- rb_hash_aset (class_tag_map , cASN1BMPString , INT2NUM (V_ASN1_BMPSTRING ));
497- rb_define_const (mASN1 , "CLASS_TAG_MAP" , class_tag_map );
498343}
0 commit comments