diff options
Diffstat (limited to 'ext/digest')
-rw-r--r-- | ext/digest/.document | 3 | ||||
-rw-r--r-- | ext/digest/bubblebabble/bubblebabble.c | 7 | ||||
-rw-r--r-- | ext/digest/bubblebabble/depend | 4 | ||||
-rw-r--r-- | ext/digest/depend | 4 | ||||
-rw-r--r-- | ext/digest/digest.c | 42 | ||||
-rw-r--r-- | ext/digest/digest.h | 22 | ||||
-rw-r--r-- | ext/digest/md5/depend | 8 | ||||
-rw-r--r-- | ext/digest/md5/md5init.c | 3 | ||||
-rw-r--r-- | ext/digest/rmd160/depend | 8 | ||||
-rw-r--r-- | ext/digest/rmd160/rmd160init.c | 3 | ||||
-rw-r--r-- | ext/digest/sha1/depend | 8 | ||||
-rw-r--r-- | ext/digest/sha1/sha1init.c | 3 | ||||
-rw-r--r-- | ext/digest/sha2/depend | 8 | ||||
-rw-r--r-- | ext/digest/sha2/sha2init.c | 47 |
14 files changed, 117 insertions, 53 deletions
diff --git a/ext/digest/.document b/ext/digest/.document new file mode 100644 index 0000000000..beab275b5a --- /dev/null +++ b/ext/digest/.document @@ -0,0 +1,3 @@ +digest.c +bubblebabble/bubblebabble.c +*/*init.c diff --git a/ext/digest/bubblebabble/bubblebabble.c b/ext/digest/bubblebabble/bubblebabble.c index 358ab416b9..dac603c0d7 100644 --- a/ext/digest/bubblebabble/bubblebabble.c +++ b/ext/digest/bubblebabble/bubblebabble.c @@ -129,15 +129,14 @@ Init_bubblebabble(void) rb_require("digest"); - rb_mDigest = rb_path2class("Digest"); - rb_mDigest_Instance = rb_path2class("Digest::Instance"); - rb_cDigest_Class = rb_path2class("Digest::Class"); - #if 0 rb_mDigest = rb_define_module("Digest"); rb_mDigest_Instance = rb_define_module_under(rb_mDigest, "Instance"); rb_cDigest_Class = rb_define_class_under(rb_mDigest, "Class", rb_cObject); #endif + rb_mDigest = rb_digest_namespace(); + rb_mDigest_Instance = rb_const_get(rb_mDigest, rb_intern_const("Instance")); + rb_cDigest_Class = rb_const_get(rb_mDigest, rb_intern_const("Class")); rb_define_module_function(rb_mDigest, "bubblebabble", rb_digest_s_bubblebabble, 1); rb_define_singleton_method(rb_cDigest_Class, "bubblebabble", rb_digest_class_s_bubblebabble, -1); diff --git a/ext/digest/bubblebabble/depend b/ext/digest/bubblebabble/depend index 38f5ddb1e2..0da9c223ee 100644 --- a/ext/digest/bubblebabble/depend +++ b/ext/digest/bubblebabble/depend @@ -52,6 +52,7 @@ bubblebabble.o: $(hdrdir)/ruby/internal/attr/noexcept.h bubblebabble.o: $(hdrdir)/ruby/internal/attr/noinline.h bubblebabble.o: $(hdrdir)/ruby/internal/attr/nonnull.h bubblebabble.o: $(hdrdir)/ruby/internal/attr/noreturn.h +bubblebabble.o: $(hdrdir)/ruby/internal/attr/packed_struct.h bubblebabble.o: $(hdrdir)/ruby/internal/attr/pure.h bubblebabble.o: $(hdrdir)/ruby/internal/attr/restrict.h bubblebabble.o: $(hdrdir)/ruby/internal/attr/returns_nonnull.h @@ -111,7 +112,6 @@ bubblebabble.o: $(hdrdir)/ruby/internal/intern/enumerator.h bubblebabble.o: $(hdrdir)/ruby/internal/intern/error.h bubblebabble.o: $(hdrdir)/ruby/internal/intern/eval.h bubblebabble.o: $(hdrdir)/ruby/internal/intern/file.h -bubblebabble.o: $(hdrdir)/ruby/internal/intern/gc.h bubblebabble.o: $(hdrdir)/ruby/internal/intern/hash.h bubblebabble.o: $(hdrdir)/ruby/internal/intern/io.h bubblebabble.o: $(hdrdir)/ruby/internal/intern/load.h @@ -142,12 +142,12 @@ bubblebabble.o: $(hdrdir)/ruby/internal/memory.h bubblebabble.o: $(hdrdir)/ruby/internal/method.h bubblebabble.o: $(hdrdir)/ruby/internal/module.h bubblebabble.o: $(hdrdir)/ruby/internal/newobj.h -bubblebabble.o: $(hdrdir)/ruby/internal/rgengc.h bubblebabble.o: $(hdrdir)/ruby/internal/scan_args.h bubblebabble.o: $(hdrdir)/ruby/internal/special_consts.h bubblebabble.o: $(hdrdir)/ruby/internal/static_assert.h bubblebabble.o: $(hdrdir)/ruby/internal/stdalign.h bubblebabble.o: $(hdrdir)/ruby/internal/stdbool.h +bubblebabble.o: $(hdrdir)/ruby/internal/stdckdint.h bubblebabble.o: $(hdrdir)/ruby/internal/symbol.h bubblebabble.o: $(hdrdir)/ruby/internal/value.h bubblebabble.o: $(hdrdir)/ruby/internal/value_type.h diff --git a/ext/digest/depend b/ext/digest/depend index 5a84fd53ec..cb9e8d4813 100644 --- a/ext/digest/depend +++ b/ext/digest/depend @@ -52,6 +52,7 @@ digest.o: $(hdrdir)/ruby/internal/attr/noexcept.h digest.o: $(hdrdir)/ruby/internal/attr/noinline.h digest.o: $(hdrdir)/ruby/internal/attr/nonnull.h digest.o: $(hdrdir)/ruby/internal/attr/noreturn.h +digest.o: $(hdrdir)/ruby/internal/attr/packed_struct.h digest.o: $(hdrdir)/ruby/internal/attr/pure.h digest.o: $(hdrdir)/ruby/internal/attr/restrict.h digest.o: $(hdrdir)/ruby/internal/attr/returns_nonnull.h @@ -111,7 +112,6 @@ digest.o: $(hdrdir)/ruby/internal/intern/enumerator.h digest.o: $(hdrdir)/ruby/internal/intern/error.h digest.o: $(hdrdir)/ruby/internal/intern/eval.h digest.o: $(hdrdir)/ruby/internal/intern/file.h -digest.o: $(hdrdir)/ruby/internal/intern/gc.h digest.o: $(hdrdir)/ruby/internal/intern/hash.h digest.o: $(hdrdir)/ruby/internal/intern/io.h digest.o: $(hdrdir)/ruby/internal/intern/load.h @@ -142,12 +142,12 @@ digest.o: $(hdrdir)/ruby/internal/memory.h digest.o: $(hdrdir)/ruby/internal/method.h digest.o: $(hdrdir)/ruby/internal/module.h digest.o: $(hdrdir)/ruby/internal/newobj.h -digest.o: $(hdrdir)/ruby/internal/rgengc.h digest.o: $(hdrdir)/ruby/internal/scan_args.h digest.o: $(hdrdir)/ruby/internal/special_consts.h digest.o: $(hdrdir)/ruby/internal/static_assert.h digest.o: $(hdrdir)/ruby/internal/stdalign.h digest.o: $(hdrdir)/ruby/internal/stdbool.h +digest.o: $(hdrdir)/ruby/internal/stdckdint.h digest.o: $(hdrdir)/ruby/internal/symbol.h digest.o: $(hdrdir)/ruby/internal/value.h digest.o: $(hdrdir)/ruby/internal/value_type.h diff --git a/ext/digest/digest.c b/ext/digest/digest.c index 68837a674c..bd8d3e815f 100644 --- a/ext/digest/digest.c +++ b/ext/digest/digest.c @@ -534,9 +534,39 @@ rb_digest_class_init(VALUE self) * * * rb_ivar_set(cDigest_SHA1, rb_intern("metadata"), - * Data_Wrap_Struct(0, 0, 0, (void *)&sha1)); + * rb_digest_make_metadata(&sha1)); */ +#ifdef DIGEST_USE_RB_EXT_RESOLVE_SYMBOL +static const rb_data_type_t metadata_type = { + "digest/metadata", + {0}, +}; + +RUBY_FUNC_EXPORTED VALUE +rb_digest_wrap_metadata(const rb_digest_metadata_t *meta) +{ + return rb_obj_freeze(TypedData_Wrap_Struct(0, &metadata_type, (void *)meta)); +} +#endif + +static rb_digest_metadata_t * +get_metadata_ptr(VALUE obj) +{ + rb_digest_metadata_t *algo; + +#ifdef DIGEST_USE_RB_EXT_RESOLVE_SYMBOL + if (!rb_typeddata_is_kind_of(obj, &metadata_type)) return 0; + algo = RTYPEDDATA_DATA(obj); +#else +# undef RUBY_UNTYPED_DATA_WARNING +# define RUBY_UNTYPED_DATA_WARNING 0 + Data_Get_Struct(obj, rb_digest_metadata_t, algo); +#endif + + return algo; +} + static rb_digest_metadata_t * get_digest_base_metadata(VALUE klass) { @@ -554,8 +584,8 @@ get_digest_base_metadata(VALUE klass) if (NIL_P(p)) rb_raise(rb_eRuntimeError, "Digest::Base cannot be directly inherited in Ruby"); - if (!RB_TYPE_P(obj, T_DATA) || RTYPEDDATA_P(obj)) { - wrong: + algo = get_metadata_ptr(obj); + if (!algo) { if (p == klass) rb_raise(rb_eTypeError, "%"PRIsVALUE"::metadata is not initialized properly", klass); @@ -564,12 +594,6 @@ get_digest_base_metadata(VALUE klass) klass, p); } -#undef RUBY_UNTYPED_DATA_WARNING -#define RUBY_UNTYPED_DATA_WARNING 0 - Data_Get_Struct(obj, rb_digest_metadata_t, algo); - - if (!algo) goto wrong; - switch (algo->api_version) { case 3: break; diff --git a/ext/digest/digest.h b/ext/digest/digest.h index 8a4c5b7e4e..4503929bab 100644 --- a/ext/digest/digest.h +++ b/ext/digest/digest.h @@ -40,7 +40,8 @@ rb_digest_##name##_update(void *ctx, unsigned char *ptr, size_t size) \ for (; size > stride; size -= stride, ptr += stride) { \ name##_Update(ctx, ptr, stride); \ } \ - if (size > 0) name##_Update(ctx, ptr, size); \ + /* Since size <= stride, size should fit into an unsigned int */ \ + if (size > 0) name##_Update(ctx, ptr, (unsigned int)size); \ } #define DEFINE_FINISH_FUNC_FROM_FINAL(name) \ @@ -63,10 +64,29 @@ rb_id_metadata(void) return rb_intern_const("metadata"); } +#if !defined(HAVE_RB_EXT_RESOLVE_SYMBOL) +#elif !defined(RUBY_UNTYPED_DATA_WARNING) +# error RUBY_UNTYPED_DATA_WARNING is not defined +#elif RUBY_UNTYPED_DATA_WARNING +/* rb_ext_resolve_symbol() has been defined since Ruby 3.3, but digest + * bundled with 3.3 didn't use it. */ +# define DIGEST_USE_RB_EXT_RESOLVE_SYMBOL 1 +#endif + static inline VALUE rb_digest_make_metadata(const rb_digest_metadata_t *meta) { +#ifdef DIGEST_USE_RB_EXT_RESOLVE_SYMBOL + typedef VALUE (*wrapper_func_type)(const rb_digest_metadata_t *meta); + static wrapper_func_type wrapper; + if (!wrapper) { + wrapper = (wrapper_func_type)rb_ext_resolve_symbol("digest.so", "rb_digest_wrap_metadata"); + if (!wrapper) rb_raise(rb_eLoadError, "rb_digest_wrap_metadata not found"); + } + return wrapper(meta); +#else #undef RUBY_UNTYPED_DATA_WARNING #define RUBY_UNTYPED_DATA_WARNING 0 return rb_obj_freeze(Data_Wrap_Struct(0, 0, 0, (void *)meta)); +#endif } diff --git a/ext/digest/md5/depend b/ext/digest/md5/depend index ea1ceec7fd..e71915e5b4 100644 --- a/ext/digest/md5/depend +++ b/ext/digest/md5/depend @@ -55,6 +55,7 @@ md5.o: $(hdrdir)/ruby/internal/attr/noexcept.h md5.o: $(hdrdir)/ruby/internal/attr/noinline.h md5.o: $(hdrdir)/ruby/internal/attr/nonnull.h md5.o: $(hdrdir)/ruby/internal/attr/noreturn.h +md5.o: $(hdrdir)/ruby/internal/attr/packed_struct.h md5.o: $(hdrdir)/ruby/internal/attr/pure.h md5.o: $(hdrdir)/ruby/internal/attr/restrict.h md5.o: $(hdrdir)/ruby/internal/attr/returns_nonnull.h @@ -114,7 +115,6 @@ md5.o: $(hdrdir)/ruby/internal/intern/enumerator.h md5.o: $(hdrdir)/ruby/internal/intern/error.h md5.o: $(hdrdir)/ruby/internal/intern/eval.h md5.o: $(hdrdir)/ruby/internal/intern/file.h -md5.o: $(hdrdir)/ruby/internal/intern/gc.h md5.o: $(hdrdir)/ruby/internal/intern/hash.h md5.o: $(hdrdir)/ruby/internal/intern/io.h md5.o: $(hdrdir)/ruby/internal/intern/load.h @@ -145,12 +145,12 @@ md5.o: $(hdrdir)/ruby/internal/memory.h md5.o: $(hdrdir)/ruby/internal/method.h md5.o: $(hdrdir)/ruby/internal/module.h md5.o: $(hdrdir)/ruby/internal/newobj.h -md5.o: $(hdrdir)/ruby/internal/rgengc.h md5.o: $(hdrdir)/ruby/internal/scan_args.h md5.o: $(hdrdir)/ruby/internal/special_consts.h md5.o: $(hdrdir)/ruby/internal/static_assert.h md5.o: $(hdrdir)/ruby/internal/stdalign.h md5.o: $(hdrdir)/ruby/internal/stdbool.h +md5.o: $(hdrdir)/ruby/internal/stdckdint.h md5.o: $(hdrdir)/ruby/internal/symbol.h md5.o: $(hdrdir)/ruby/internal/value.h md5.o: $(hdrdir)/ruby/internal/value_type.h @@ -217,6 +217,7 @@ md5init.o: $(hdrdir)/ruby/internal/attr/noexcept.h md5init.o: $(hdrdir)/ruby/internal/attr/noinline.h md5init.o: $(hdrdir)/ruby/internal/attr/nonnull.h md5init.o: $(hdrdir)/ruby/internal/attr/noreturn.h +md5init.o: $(hdrdir)/ruby/internal/attr/packed_struct.h md5init.o: $(hdrdir)/ruby/internal/attr/pure.h md5init.o: $(hdrdir)/ruby/internal/attr/restrict.h md5init.o: $(hdrdir)/ruby/internal/attr/returns_nonnull.h @@ -276,7 +277,6 @@ md5init.o: $(hdrdir)/ruby/internal/intern/enumerator.h md5init.o: $(hdrdir)/ruby/internal/intern/error.h md5init.o: $(hdrdir)/ruby/internal/intern/eval.h md5init.o: $(hdrdir)/ruby/internal/intern/file.h -md5init.o: $(hdrdir)/ruby/internal/intern/gc.h md5init.o: $(hdrdir)/ruby/internal/intern/hash.h md5init.o: $(hdrdir)/ruby/internal/intern/io.h md5init.o: $(hdrdir)/ruby/internal/intern/load.h @@ -307,12 +307,12 @@ md5init.o: $(hdrdir)/ruby/internal/memory.h md5init.o: $(hdrdir)/ruby/internal/method.h md5init.o: $(hdrdir)/ruby/internal/module.h md5init.o: $(hdrdir)/ruby/internal/newobj.h -md5init.o: $(hdrdir)/ruby/internal/rgengc.h md5init.o: $(hdrdir)/ruby/internal/scan_args.h md5init.o: $(hdrdir)/ruby/internal/special_consts.h md5init.o: $(hdrdir)/ruby/internal/static_assert.h md5init.o: $(hdrdir)/ruby/internal/stdalign.h md5init.o: $(hdrdir)/ruby/internal/stdbool.h +md5init.o: $(hdrdir)/ruby/internal/stdckdint.h md5init.o: $(hdrdir)/ruby/internal/symbol.h md5init.o: $(hdrdir)/ruby/internal/value.h md5init.o: $(hdrdir)/ruby/internal/value_type.h diff --git a/ext/digest/md5/md5init.c b/ext/digest/md5/md5init.c index 52cba78bf1..b81fd94864 100644 --- a/ext/digest/md5/md5init.c +++ b/ext/digest/md5/md5init.c @@ -53,9 +53,8 @@ Init_md5(void) mDigest = rb_define_module("Digest"); /* let rdoc know */ #endif mDigest = rb_digest_namespace(); - cDigest_Base = rb_path2class("Digest::Base"); + cDigest_Base = rb_const_get(mDigest, rb_intern_const("Base")); cDigest_MD5 = rb_define_class_under(mDigest, "MD5", cDigest_Base); - rb_iv_set(cDigest_MD5, "metadata", rb_digest_make_metadata(&md5)); } diff --git a/ext/digest/rmd160/depend b/ext/digest/rmd160/depend index 3a0ed72732..09558ad92b 100644 --- a/ext/digest/rmd160/depend +++ b/ext/digest/rmd160/depend @@ -55,6 +55,7 @@ rmd160.o: $(hdrdir)/ruby/internal/attr/noexcept.h rmd160.o: $(hdrdir)/ruby/internal/attr/noinline.h rmd160.o: $(hdrdir)/ruby/internal/attr/nonnull.h rmd160.o: $(hdrdir)/ruby/internal/attr/noreturn.h +rmd160.o: $(hdrdir)/ruby/internal/attr/packed_struct.h rmd160.o: $(hdrdir)/ruby/internal/attr/pure.h rmd160.o: $(hdrdir)/ruby/internal/attr/restrict.h rmd160.o: $(hdrdir)/ruby/internal/attr/returns_nonnull.h @@ -114,7 +115,6 @@ rmd160.o: $(hdrdir)/ruby/internal/intern/enumerator.h rmd160.o: $(hdrdir)/ruby/internal/intern/error.h rmd160.o: $(hdrdir)/ruby/internal/intern/eval.h rmd160.o: $(hdrdir)/ruby/internal/intern/file.h -rmd160.o: $(hdrdir)/ruby/internal/intern/gc.h rmd160.o: $(hdrdir)/ruby/internal/intern/hash.h rmd160.o: $(hdrdir)/ruby/internal/intern/io.h rmd160.o: $(hdrdir)/ruby/internal/intern/load.h @@ -145,12 +145,12 @@ rmd160.o: $(hdrdir)/ruby/internal/memory.h rmd160.o: $(hdrdir)/ruby/internal/method.h rmd160.o: $(hdrdir)/ruby/internal/module.h rmd160.o: $(hdrdir)/ruby/internal/newobj.h -rmd160.o: $(hdrdir)/ruby/internal/rgengc.h rmd160.o: $(hdrdir)/ruby/internal/scan_args.h rmd160.o: $(hdrdir)/ruby/internal/special_consts.h rmd160.o: $(hdrdir)/ruby/internal/static_assert.h rmd160.o: $(hdrdir)/ruby/internal/stdalign.h rmd160.o: $(hdrdir)/ruby/internal/stdbool.h +rmd160.o: $(hdrdir)/ruby/internal/stdckdint.h rmd160.o: $(hdrdir)/ruby/internal/symbol.h rmd160.o: $(hdrdir)/ruby/internal/value.h rmd160.o: $(hdrdir)/ruby/internal/value_type.h @@ -217,6 +217,7 @@ rmd160init.o: $(hdrdir)/ruby/internal/attr/noexcept.h rmd160init.o: $(hdrdir)/ruby/internal/attr/noinline.h rmd160init.o: $(hdrdir)/ruby/internal/attr/nonnull.h rmd160init.o: $(hdrdir)/ruby/internal/attr/noreturn.h +rmd160init.o: $(hdrdir)/ruby/internal/attr/packed_struct.h rmd160init.o: $(hdrdir)/ruby/internal/attr/pure.h rmd160init.o: $(hdrdir)/ruby/internal/attr/restrict.h rmd160init.o: $(hdrdir)/ruby/internal/attr/returns_nonnull.h @@ -276,7 +277,6 @@ rmd160init.o: $(hdrdir)/ruby/internal/intern/enumerator.h rmd160init.o: $(hdrdir)/ruby/internal/intern/error.h rmd160init.o: $(hdrdir)/ruby/internal/intern/eval.h rmd160init.o: $(hdrdir)/ruby/internal/intern/file.h -rmd160init.o: $(hdrdir)/ruby/internal/intern/gc.h rmd160init.o: $(hdrdir)/ruby/internal/intern/hash.h rmd160init.o: $(hdrdir)/ruby/internal/intern/io.h rmd160init.o: $(hdrdir)/ruby/internal/intern/load.h @@ -307,12 +307,12 @@ rmd160init.o: $(hdrdir)/ruby/internal/memory.h rmd160init.o: $(hdrdir)/ruby/internal/method.h rmd160init.o: $(hdrdir)/ruby/internal/module.h rmd160init.o: $(hdrdir)/ruby/internal/newobj.h -rmd160init.o: $(hdrdir)/ruby/internal/rgengc.h rmd160init.o: $(hdrdir)/ruby/internal/scan_args.h rmd160init.o: $(hdrdir)/ruby/internal/special_consts.h rmd160init.o: $(hdrdir)/ruby/internal/static_assert.h rmd160init.o: $(hdrdir)/ruby/internal/stdalign.h rmd160init.o: $(hdrdir)/ruby/internal/stdbool.h +rmd160init.o: $(hdrdir)/ruby/internal/stdckdint.h rmd160init.o: $(hdrdir)/ruby/internal/symbol.h rmd160init.o: $(hdrdir)/ruby/internal/value.h rmd160init.o: $(hdrdir)/ruby/internal/value_type.h diff --git a/ext/digest/rmd160/rmd160init.c b/ext/digest/rmd160/rmd160init.c index 2ae81ec4d6..e4b707ed9e 100644 --- a/ext/digest/rmd160/rmd160init.c +++ b/ext/digest/rmd160/rmd160init.c @@ -49,9 +49,8 @@ Init_rmd160(void) mDigest = rb_define_module("Digest"); /* let rdoc know */ #endif mDigest = rb_digest_namespace(); - cDigest_Base = rb_path2class("Digest::Base"); + cDigest_Base = rb_const_get(mDigest, rb_intern_const("Base")); cDigest_RMD160 = rb_define_class_under(mDigest, "RMD160", cDigest_Base); - rb_iv_set(cDigest_RMD160, "metadata", rb_digest_make_metadata(&rmd160)); } diff --git a/ext/digest/sha1/depend b/ext/digest/sha1/depend index 48aaef158b..827b8a0852 100644 --- a/ext/digest/sha1/depend +++ b/ext/digest/sha1/depend @@ -55,6 +55,7 @@ sha1.o: $(hdrdir)/ruby/internal/attr/noexcept.h sha1.o: $(hdrdir)/ruby/internal/attr/noinline.h sha1.o: $(hdrdir)/ruby/internal/attr/nonnull.h sha1.o: $(hdrdir)/ruby/internal/attr/noreturn.h +sha1.o: $(hdrdir)/ruby/internal/attr/packed_struct.h sha1.o: $(hdrdir)/ruby/internal/attr/pure.h sha1.o: $(hdrdir)/ruby/internal/attr/restrict.h sha1.o: $(hdrdir)/ruby/internal/attr/returns_nonnull.h @@ -114,7 +115,6 @@ sha1.o: $(hdrdir)/ruby/internal/intern/enumerator.h sha1.o: $(hdrdir)/ruby/internal/intern/error.h sha1.o: $(hdrdir)/ruby/internal/intern/eval.h sha1.o: $(hdrdir)/ruby/internal/intern/file.h -sha1.o: $(hdrdir)/ruby/internal/intern/gc.h sha1.o: $(hdrdir)/ruby/internal/intern/hash.h sha1.o: $(hdrdir)/ruby/internal/intern/io.h sha1.o: $(hdrdir)/ruby/internal/intern/load.h @@ -145,12 +145,12 @@ sha1.o: $(hdrdir)/ruby/internal/memory.h sha1.o: $(hdrdir)/ruby/internal/method.h sha1.o: $(hdrdir)/ruby/internal/module.h sha1.o: $(hdrdir)/ruby/internal/newobj.h -sha1.o: $(hdrdir)/ruby/internal/rgengc.h sha1.o: $(hdrdir)/ruby/internal/scan_args.h sha1.o: $(hdrdir)/ruby/internal/special_consts.h sha1.o: $(hdrdir)/ruby/internal/static_assert.h sha1.o: $(hdrdir)/ruby/internal/stdalign.h sha1.o: $(hdrdir)/ruby/internal/stdbool.h +sha1.o: $(hdrdir)/ruby/internal/stdckdint.h sha1.o: $(hdrdir)/ruby/internal/symbol.h sha1.o: $(hdrdir)/ruby/internal/value.h sha1.o: $(hdrdir)/ruby/internal/value_type.h @@ -217,6 +217,7 @@ sha1init.o: $(hdrdir)/ruby/internal/attr/noexcept.h sha1init.o: $(hdrdir)/ruby/internal/attr/noinline.h sha1init.o: $(hdrdir)/ruby/internal/attr/nonnull.h sha1init.o: $(hdrdir)/ruby/internal/attr/noreturn.h +sha1init.o: $(hdrdir)/ruby/internal/attr/packed_struct.h sha1init.o: $(hdrdir)/ruby/internal/attr/pure.h sha1init.o: $(hdrdir)/ruby/internal/attr/restrict.h sha1init.o: $(hdrdir)/ruby/internal/attr/returns_nonnull.h @@ -276,7 +277,6 @@ sha1init.o: $(hdrdir)/ruby/internal/intern/enumerator.h sha1init.o: $(hdrdir)/ruby/internal/intern/error.h sha1init.o: $(hdrdir)/ruby/internal/intern/eval.h sha1init.o: $(hdrdir)/ruby/internal/intern/file.h -sha1init.o: $(hdrdir)/ruby/internal/intern/gc.h sha1init.o: $(hdrdir)/ruby/internal/intern/hash.h sha1init.o: $(hdrdir)/ruby/internal/intern/io.h sha1init.o: $(hdrdir)/ruby/internal/intern/load.h @@ -307,12 +307,12 @@ sha1init.o: $(hdrdir)/ruby/internal/memory.h sha1init.o: $(hdrdir)/ruby/internal/method.h sha1init.o: $(hdrdir)/ruby/internal/module.h sha1init.o: $(hdrdir)/ruby/internal/newobj.h -sha1init.o: $(hdrdir)/ruby/internal/rgengc.h sha1init.o: $(hdrdir)/ruby/internal/scan_args.h sha1init.o: $(hdrdir)/ruby/internal/special_consts.h sha1init.o: $(hdrdir)/ruby/internal/static_assert.h sha1init.o: $(hdrdir)/ruby/internal/stdalign.h sha1init.o: $(hdrdir)/ruby/internal/stdbool.h +sha1init.o: $(hdrdir)/ruby/internal/stdckdint.h sha1init.o: $(hdrdir)/ruby/internal/symbol.h sha1init.o: $(hdrdir)/ruby/internal/value.h sha1init.o: $(hdrdir)/ruby/internal/value_type.h diff --git a/ext/digest/sha1/sha1init.c b/ext/digest/sha1/sha1init.c index f7047bc6d3..c39959f428 100644 --- a/ext/digest/sha1/sha1init.c +++ b/ext/digest/sha1/sha1init.c @@ -55,9 +55,8 @@ Init_sha1(void) mDigest = rb_define_module("Digest"); /* let rdoc know */ #endif mDigest = rb_digest_namespace(); - cDigest_Base = rb_path2class("Digest::Base"); + cDigest_Base = rb_const_get(mDigest, rb_intern_const("Base")); cDigest_SHA1 = rb_define_class_under(mDigest, "SHA1", cDigest_Base); - rb_iv_set(cDigest_SHA1, "metadata", rb_digest_make_metadata(&sha1)); } diff --git a/ext/digest/sha2/depend b/ext/digest/sha2/depend index 47a859068c..af1600d346 100644 --- a/ext/digest/sha2/depend +++ b/ext/digest/sha2/depend @@ -55,6 +55,7 @@ sha2.o: $(hdrdir)/ruby/internal/attr/noexcept.h sha2.o: $(hdrdir)/ruby/internal/attr/noinline.h sha2.o: $(hdrdir)/ruby/internal/attr/nonnull.h sha2.o: $(hdrdir)/ruby/internal/attr/noreturn.h +sha2.o: $(hdrdir)/ruby/internal/attr/packed_struct.h sha2.o: $(hdrdir)/ruby/internal/attr/pure.h sha2.o: $(hdrdir)/ruby/internal/attr/restrict.h sha2.o: $(hdrdir)/ruby/internal/attr/returns_nonnull.h @@ -114,7 +115,6 @@ sha2.o: $(hdrdir)/ruby/internal/intern/enumerator.h sha2.o: $(hdrdir)/ruby/internal/intern/error.h sha2.o: $(hdrdir)/ruby/internal/intern/eval.h sha2.o: $(hdrdir)/ruby/internal/intern/file.h -sha2.o: $(hdrdir)/ruby/internal/intern/gc.h sha2.o: $(hdrdir)/ruby/internal/intern/hash.h sha2.o: $(hdrdir)/ruby/internal/intern/io.h sha2.o: $(hdrdir)/ruby/internal/intern/load.h @@ -145,12 +145,12 @@ sha2.o: $(hdrdir)/ruby/internal/memory.h sha2.o: $(hdrdir)/ruby/internal/method.h sha2.o: $(hdrdir)/ruby/internal/module.h sha2.o: $(hdrdir)/ruby/internal/newobj.h -sha2.o: $(hdrdir)/ruby/internal/rgengc.h sha2.o: $(hdrdir)/ruby/internal/scan_args.h sha2.o: $(hdrdir)/ruby/internal/special_consts.h sha2.o: $(hdrdir)/ruby/internal/static_assert.h sha2.o: $(hdrdir)/ruby/internal/stdalign.h sha2.o: $(hdrdir)/ruby/internal/stdbool.h +sha2.o: $(hdrdir)/ruby/internal/stdckdint.h sha2.o: $(hdrdir)/ruby/internal/symbol.h sha2.o: $(hdrdir)/ruby/internal/value.h sha2.o: $(hdrdir)/ruby/internal/value_type.h @@ -217,6 +217,7 @@ sha2init.o: $(hdrdir)/ruby/internal/attr/noexcept.h sha2init.o: $(hdrdir)/ruby/internal/attr/noinline.h sha2init.o: $(hdrdir)/ruby/internal/attr/nonnull.h sha2init.o: $(hdrdir)/ruby/internal/attr/noreturn.h +sha2init.o: $(hdrdir)/ruby/internal/attr/packed_struct.h sha2init.o: $(hdrdir)/ruby/internal/attr/pure.h sha2init.o: $(hdrdir)/ruby/internal/attr/restrict.h sha2init.o: $(hdrdir)/ruby/internal/attr/returns_nonnull.h @@ -276,7 +277,6 @@ sha2init.o: $(hdrdir)/ruby/internal/intern/enumerator.h sha2init.o: $(hdrdir)/ruby/internal/intern/error.h sha2init.o: $(hdrdir)/ruby/internal/intern/eval.h sha2init.o: $(hdrdir)/ruby/internal/intern/file.h -sha2init.o: $(hdrdir)/ruby/internal/intern/gc.h sha2init.o: $(hdrdir)/ruby/internal/intern/hash.h sha2init.o: $(hdrdir)/ruby/internal/intern/io.h sha2init.o: $(hdrdir)/ruby/internal/intern/load.h @@ -307,12 +307,12 @@ sha2init.o: $(hdrdir)/ruby/internal/memory.h sha2init.o: $(hdrdir)/ruby/internal/method.h sha2init.o: $(hdrdir)/ruby/internal/module.h sha2init.o: $(hdrdir)/ruby/internal/newobj.h -sha2init.o: $(hdrdir)/ruby/internal/rgengc.h sha2init.o: $(hdrdir)/ruby/internal/scan_args.h sha2init.o: $(hdrdir)/ruby/internal/special_consts.h sha2init.o: $(hdrdir)/ruby/internal/static_assert.h sha2init.o: $(hdrdir)/ruby/internal/stdalign.h sha2init.o: $(hdrdir)/ruby/internal/stdbool.h +sha2init.o: $(hdrdir)/ruby/internal/stdckdint.h sha2init.o: $(hdrdir)/ruby/internal/symbol.h sha2init.o: $(hdrdir)/ruby/internal/value.h sha2init.o: $(hdrdir)/ruby/internal/value_type.h diff --git a/ext/digest/sha2/sha2init.c b/ext/digest/sha2/sha2init.c index 94cccf3feb..3923e3724c 100644 --- a/ext/digest/sha2/sha2init.c +++ b/ext/digest/sha2/sha2init.c @@ -25,29 +25,50 @@ static const rb_digest_metadata_t sha##bitlen = { \ FOREACH_BITLEN(DEFINE_ALGO_METADATA) /* + * Document-class: Digest::SHA256 < Digest::Base + * * Classes for calculating message digests using the SHA-256/384/512 * Secure Hash Algorithm(s) by NIST (the US' National Institute of * Standards and Technology), described in FIPS PUB 180-2. + * + * See SHA2. + */ +/* + * Document-class: Digest::SHA384 < Digest::Base + * + * Classes for calculating message digests using the SHA-256/384/512 + * Secure Hash Algorithm(s) by NIST (the US' National Institute of + * Standards and Technology), described in FIPS PUB 180-2. + * + * See SHA2. + */ +/* + * Document-class: Digest::SHA512 < Digest::Base + * + * Classes for calculating message digests using the SHA-256/384/512 + * Secure Hash Algorithm(s) by NIST (the US' National Institute of + * Standards and Technology), described in FIPS PUB 180-2. + * + * See SHA2. */ void Init_sha2(void) { - VALUE mDigest, cDigest_Base; + VALUE mDigest, cDigest_Base, cDigest_SHA2; ID id_metadata = rb_id_metadata(); -#define DECLARE_ALGO_CLASS(bitlen) \ - VALUE cDigest_SHA##bitlen; - - FOREACH_BITLEN(DECLARE_ALGO_CLASS) - +#if 0 + mDigest = rb_define_module("Digest"); /* let rdoc know */ +#endif mDigest = rb_digest_namespace(); - cDigest_Base = rb_path2class("Digest::Base"); + cDigest_Base = rb_const_get(mDigest, rb_intern_const("Base")); + + cDigest_SHA2 = rb_define_class_under(mDigest, "SHA256", cDigest_Base); + rb_ivar_set(cDigest_SHA2, id_metadata, rb_digest_make_metadata(&sha256)); -#define DEFINE_ALGO_CLASS(bitlen) \ - cDigest_SHA##bitlen = rb_define_class_under(mDigest, "SHA" #bitlen, cDigest_Base); \ -\ - rb_ivar_set(cDigest_SHA##bitlen, id_metadata, \ - rb_digest_make_metadata(&sha##bitlen)); + cDigest_SHA2 = rb_define_class_under(mDigest, "SHA384", cDigest_Base); + rb_ivar_set(cDigest_SHA2, id_metadata, rb_digest_make_metadata(&sha384)); - FOREACH_BITLEN(DEFINE_ALGO_CLASS) + cDigest_SHA2 = rb_define_class_under(mDigest, "SHA512", cDigest_Base); + rb_ivar_set(cDigest_SHA2, id_metadata, rb_digest_make_metadata(&sha512)); } |