diff options
Diffstat (limited to 'ext/digest')
42 files changed, 2162 insertions, 349 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 4bccd221b8..dac603c0d7 100644 --- a/ext/digest/bubblebabble/bubblebabble.c +++ b/ext/digest/bubblebabble/bubblebabble.c @@ -11,8 +11,8 @@ ************************************************/ -#include "ruby.h" -#include "digest.h" +#include <ruby/ruby.h> +#include "../digest.h" static ID id_digest; @@ -37,7 +37,7 @@ bubblebabble_str_new(VALUE str_digest) digest_len = RSTRING_LEN(str_digest); if ((LONG_MAX - 2) / 3 < (digest_len | 1)) { - rb_raise(rb_eRuntimeError, "digest string too long"); + rb_raise(rb_eRuntimeError, "digest string too long"); } str = rb_str_new(0, (digest_len | 1) * 3 + 2); @@ -101,7 +101,7 @@ rb_digest_s_bubblebabble(VALUE klass, VALUE str) static VALUE rb_digest_class_s_bubblebabble(int argc, VALUE *argv, VALUE klass) { - return bubblebabble_str_new(rb_funcall2(klass, id_digest, argc, argv)); + return bubblebabble_str_new(rb_funcallv(klass, id_digest, argc, argv)); } /* Document-method: Digest::Instance#bubblebabble @@ -124,19 +124,19 @@ rb_digest_instance_bubblebabble(VALUE self) void Init_bubblebabble(void) { +#undef rb_intern VALUE rb_mDigest, rb_mDigest_Instance, rb_cDigest_Class; 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 59c6d0ce74..02d88e960c 100644 --- a/ext/digest/bubblebabble/depend +++ b/ext/digest/bubblebabble/depend @@ -1,13 +1,164 @@ # AUTOGENERATED DEPENDENCIES START bubblebabble.o: $(RUBY_EXTCONF_H) bubblebabble.o: $(arch_hdrdir)/ruby/config.h +bubblebabble.o: $(hdrdir)/ruby.h +bubblebabble.o: $(hdrdir)/ruby/assert.h +bubblebabble.o: $(hdrdir)/ruby/backward.h +bubblebabble.o: $(hdrdir)/ruby/backward/2/assume.h +bubblebabble.o: $(hdrdir)/ruby/backward/2/attributes.h +bubblebabble.o: $(hdrdir)/ruby/backward/2/bool.h +bubblebabble.o: $(hdrdir)/ruby/backward/2/inttypes.h +bubblebabble.o: $(hdrdir)/ruby/backward/2/limits.h +bubblebabble.o: $(hdrdir)/ruby/backward/2/long_long.h +bubblebabble.o: $(hdrdir)/ruby/backward/2/stdalign.h +bubblebabble.o: $(hdrdir)/ruby/backward/2/stdarg.h bubblebabble.o: $(hdrdir)/ruby/defines.h bubblebabble.o: $(hdrdir)/ruby/intern.h +bubblebabble.o: $(hdrdir)/ruby/internal/abi.h +bubblebabble.o: $(hdrdir)/ruby/internal/anyargs.h +bubblebabble.o: $(hdrdir)/ruby/internal/arithmetic.h +bubblebabble.o: $(hdrdir)/ruby/internal/arithmetic/char.h +bubblebabble.o: $(hdrdir)/ruby/internal/arithmetic/double.h +bubblebabble.o: $(hdrdir)/ruby/internal/arithmetic/fixnum.h +bubblebabble.o: $(hdrdir)/ruby/internal/arithmetic/gid_t.h +bubblebabble.o: $(hdrdir)/ruby/internal/arithmetic/int.h +bubblebabble.o: $(hdrdir)/ruby/internal/arithmetic/intptr_t.h +bubblebabble.o: $(hdrdir)/ruby/internal/arithmetic/long.h +bubblebabble.o: $(hdrdir)/ruby/internal/arithmetic/long_long.h +bubblebabble.o: $(hdrdir)/ruby/internal/arithmetic/mode_t.h +bubblebabble.o: $(hdrdir)/ruby/internal/arithmetic/off_t.h +bubblebabble.o: $(hdrdir)/ruby/internal/arithmetic/pid_t.h +bubblebabble.o: $(hdrdir)/ruby/internal/arithmetic/short.h +bubblebabble.o: $(hdrdir)/ruby/internal/arithmetic/size_t.h +bubblebabble.o: $(hdrdir)/ruby/internal/arithmetic/st_data_t.h +bubblebabble.o: $(hdrdir)/ruby/internal/arithmetic/uid_t.h +bubblebabble.o: $(hdrdir)/ruby/internal/assume.h +bubblebabble.o: $(hdrdir)/ruby/internal/attr/alloc_size.h +bubblebabble.o: $(hdrdir)/ruby/internal/attr/artificial.h +bubblebabble.o: $(hdrdir)/ruby/internal/attr/cold.h +bubblebabble.o: $(hdrdir)/ruby/internal/attr/const.h +bubblebabble.o: $(hdrdir)/ruby/internal/attr/constexpr.h +bubblebabble.o: $(hdrdir)/ruby/internal/attr/deprecated.h +bubblebabble.o: $(hdrdir)/ruby/internal/attr/diagnose_if.h +bubblebabble.o: $(hdrdir)/ruby/internal/attr/enum_extensibility.h +bubblebabble.o: $(hdrdir)/ruby/internal/attr/error.h +bubblebabble.o: $(hdrdir)/ruby/internal/attr/flag_enum.h +bubblebabble.o: $(hdrdir)/ruby/internal/attr/forceinline.h +bubblebabble.o: $(hdrdir)/ruby/internal/attr/format.h +bubblebabble.o: $(hdrdir)/ruby/internal/attr/maybe_unused.h +bubblebabble.o: $(hdrdir)/ruby/internal/attr/noalias.h +bubblebabble.o: $(hdrdir)/ruby/internal/attr/nodiscard.h +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 +bubblebabble.o: $(hdrdir)/ruby/internal/attr/warning.h +bubblebabble.o: $(hdrdir)/ruby/internal/attr/weakref.h +bubblebabble.o: $(hdrdir)/ruby/internal/cast.h +bubblebabble.o: $(hdrdir)/ruby/internal/compiler_is.h +bubblebabble.o: $(hdrdir)/ruby/internal/compiler_is/apple.h +bubblebabble.o: $(hdrdir)/ruby/internal/compiler_is/clang.h +bubblebabble.o: $(hdrdir)/ruby/internal/compiler_is/gcc.h +bubblebabble.o: $(hdrdir)/ruby/internal/compiler_is/intel.h +bubblebabble.o: $(hdrdir)/ruby/internal/compiler_is/msvc.h +bubblebabble.o: $(hdrdir)/ruby/internal/compiler_is/sunpro.h +bubblebabble.o: $(hdrdir)/ruby/internal/compiler_since.h +bubblebabble.o: $(hdrdir)/ruby/internal/config.h +bubblebabble.o: $(hdrdir)/ruby/internal/constant_p.h +bubblebabble.o: $(hdrdir)/ruby/internal/core.h +bubblebabble.o: $(hdrdir)/ruby/internal/core/rarray.h +bubblebabble.o: $(hdrdir)/ruby/internal/core/rbasic.h +bubblebabble.o: $(hdrdir)/ruby/internal/core/rbignum.h +bubblebabble.o: $(hdrdir)/ruby/internal/core/rclass.h +bubblebabble.o: $(hdrdir)/ruby/internal/core/rdata.h +bubblebabble.o: $(hdrdir)/ruby/internal/core/rfile.h +bubblebabble.o: $(hdrdir)/ruby/internal/core/rhash.h +bubblebabble.o: $(hdrdir)/ruby/internal/core/robject.h +bubblebabble.o: $(hdrdir)/ruby/internal/core/rregexp.h +bubblebabble.o: $(hdrdir)/ruby/internal/core/rstring.h +bubblebabble.o: $(hdrdir)/ruby/internal/core/rstruct.h +bubblebabble.o: $(hdrdir)/ruby/internal/core/rtypeddata.h +bubblebabble.o: $(hdrdir)/ruby/internal/ctype.h +bubblebabble.o: $(hdrdir)/ruby/internal/dllexport.h +bubblebabble.o: $(hdrdir)/ruby/internal/dosish.h +bubblebabble.o: $(hdrdir)/ruby/internal/error.h +bubblebabble.o: $(hdrdir)/ruby/internal/eval.h +bubblebabble.o: $(hdrdir)/ruby/internal/event.h +bubblebabble.o: $(hdrdir)/ruby/internal/fl_type.h +bubblebabble.o: $(hdrdir)/ruby/internal/gc.h +bubblebabble.o: $(hdrdir)/ruby/internal/glob.h +bubblebabble.o: $(hdrdir)/ruby/internal/globals.h +bubblebabble.o: $(hdrdir)/ruby/internal/has/attribute.h +bubblebabble.o: $(hdrdir)/ruby/internal/has/builtin.h +bubblebabble.o: $(hdrdir)/ruby/internal/has/c_attribute.h +bubblebabble.o: $(hdrdir)/ruby/internal/has/cpp_attribute.h +bubblebabble.o: $(hdrdir)/ruby/internal/has/declspec_attribute.h +bubblebabble.o: $(hdrdir)/ruby/internal/has/extension.h +bubblebabble.o: $(hdrdir)/ruby/internal/has/feature.h +bubblebabble.o: $(hdrdir)/ruby/internal/has/warning.h +bubblebabble.o: $(hdrdir)/ruby/internal/intern/array.h +bubblebabble.o: $(hdrdir)/ruby/internal/intern/bignum.h +bubblebabble.o: $(hdrdir)/ruby/internal/intern/class.h +bubblebabble.o: $(hdrdir)/ruby/internal/intern/compar.h +bubblebabble.o: $(hdrdir)/ruby/internal/intern/complex.h +bubblebabble.o: $(hdrdir)/ruby/internal/intern/cont.h +bubblebabble.o: $(hdrdir)/ruby/internal/intern/dir.h +bubblebabble.o: $(hdrdir)/ruby/internal/intern/enum.h +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/hash.h +bubblebabble.o: $(hdrdir)/ruby/internal/intern/io.h +bubblebabble.o: $(hdrdir)/ruby/internal/intern/load.h +bubblebabble.o: $(hdrdir)/ruby/internal/intern/marshal.h +bubblebabble.o: $(hdrdir)/ruby/internal/intern/numeric.h +bubblebabble.o: $(hdrdir)/ruby/internal/intern/object.h +bubblebabble.o: $(hdrdir)/ruby/internal/intern/parse.h +bubblebabble.o: $(hdrdir)/ruby/internal/intern/proc.h +bubblebabble.o: $(hdrdir)/ruby/internal/intern/process.h +bubblebabble.o: $(hdrdir)/ruby/internal/intern/random.h +bubblebabble.o: $(hdrdir)/ruby/internal/intern/range.h +bubblebabble.o: $(hdrdir)/ruby/internal/intern/rational.h +bubblebabble.o: $(hdrdir)/ruby/internal/intern/re.h +bubblebabble.o: $(hdrdir)/ruby/internal/intern/ruby.h +bubblebabble.o: $(hdrdir)/ruby/internal/intern/select.h +bubblebabble.o: $(hdrdir)/ruby/internal/intern/select/largesize.h +bubblebabble.o: $(hdrdir)/ruby/internal/intern/set.h +bubblebabble.o: $(hdrdir)/ruby/internal/intern/signal.h +bubblebabble.o: $(hdrdir)/ruby/internal/intern/sprintf.h +bubblebabble.o: $(hdrdir)/ruby/internal/intern/string.h +bubblebabble.o: $(hdrdir)/ruby/internal/intern/struct.h +bubblebabble.o: $(hdrdir)/ruby/internal/intern/thread.h +bubblebabble.o: $(hdrdir)/ruby/internal/intern/time.h +bubblebabble.o: $(hdrdir)/ruby/internal/intern/variable.h +bubblebabble.o: $(hdrdir)/ruby/internal/intern/vm.h +bubblebabble.o: $(hdrdir)/ruby/internal/interpreter.h +bubblebabble.o: $(hdrdir)/ruby/internal/iterator.h +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/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 +bubblebabble.o: $(hdrdir)/ruby/internal/variable.h +bubblebabble.o: $(hdrdir)/ruby/internal/warning_push.h +bubblebabble.o: $(hdrdir)/ruby/internal/xmalloc.h bubblebabble.o: $(hdrdir)/ruby/missing.h bubblebabble.o: $(hdrdir)/ruby/ruby.h bubblebabble.o: $(hdrdir)/ruby/st.h bubblebabble.o: $(hdrdir)/ruby/subst.h -bubblebabble.o: $(top_srcdir)/ext/digest/digest.h -bubblebabble.o: $(top_srcdir)/include/ruby.h +bubblebabble.o: $(srcdir)/../digest.h bubblebabble.o: bubblebabble.c # AUTOGENERATED DEPENDENCIES END diff --git a/ext/digest/bubblebabble/extconf.rb b/ext/digest/bubblebabble/extconf.rb index 53cb83934a..8fb001c61d 100644 --- a/ext/digest/bubblebabble/extconf.rb +++ b/ext/digest/bubblebabble/extconf.rb @@ -1,6 +1,4 @@ +# frozen_string_literal: false require 'mkmf' -$defs << "-DHAVE_CONFIG_H" -$INCFLAGS << " -I$(srcdir)/.." - create_makefile('digest/bubblebabble') diff --git a/ext/digest/defs.h b/ext/digest/defs.h index 77a134f364..9b11f4eca9 100644 --- a/ext/digest/defs.h +++ b/ext/digest/defs.h @@ -16,4 +16,26 @@ # define __END_DECLS #endif +#define RB_DIGEST_DIAGNOSTIC(compiler, op, flag) _Pragma(STRINGIZE(compiler diagnostic op flag)) +#ifdef RBIMPL_WARNING_IGNORED +# define RB_DIGEST_WARNING_IGNORED(flag) RBIMPL_WARNING_IGNORED(flag) +# define RB_DIGEST_WARNING_PUSH() RBIMPL_WARNING_PUSH() +# define RB_DIGEST_WARNING_POP() RBIMPL_WARNING_POP() +#elif defined(__clang__) +# define RB_DIGEST_WARNING_IGNORED(flag) RB_DIGEST_DIAGNOSTIC(clang, ignored, #flag) +# define RB_DIGEST_WARNING_PUSH() _Pragma("clang diagnostic push") +# define RB_DIGEST_WARNING_POP() _Pragma("clang diagnostic pop") +#else /* __GNUC__ */ +# define RB_DIGEST_WARNING_IGNORED(flag) RB_DIGEST_DIAGNOSTIC(GCC, ignored, #flag) +# define RB_DIGEST_WARNING_PUSH() _Pragma("GCC diagnostic push") +# define RB_DIGEST_WARNING_POP() _Pragma("GCC diagnostic pop") +#endif +#ifdef RBIMPL_HAS_WARNING +# define RB_DIGEST_HAS_WARNING(_) RBIMPL_HAS_WARNING(_) +#elif defined(__has_warning) +# define RB_DIGEST_HAS_WARNING(_) __has_warning(_) +#else +# define RB_DIGEST_HAS_WARNING(_) 0 +#endif + #endif /* DEFS_H */ diff --git a/ext/digest/depend b/ext/digest/depend index dbc2bba3cc..3eabb1d1d6 100644 --- a/ext/digest/depend +++ b/ext/digest/depend @@ -1,13 +1,164 @@ # AUTOGENERATED DEPENDENCIES START digest.o: $(RUBY_EXTCONF_H) digest.o: $(arch_hdrdir)/ruby/config.h +digest.o: $(hdrdir)/ruby.h +digest.o: $(hdrdir)/ruby/assert.h +digest.o: $(hdrdir)/ruby/backward.h +digest.o: $(hdrdir)/ruby/backward/2/assume.h +digest.o: $(hdrdir)/ruby/backward/2/attributes.h +digest.o: $(hdrdir)/ruby/backward/2/bool.h +digest.o: $(hdrdir)/ruby/backward/2/inttypes.h +digest.o: $(hdrdir)/ruby/backward/2/limits.h +digest.o: $(hdrdir)/ruby/backward/2/long_long.h +digest.o: $(hdrdir)/ruby/backward/2/stdalign.h +digest.o: $(hdrdir)/ruby/backward/2/stdarg.h digest.o: $(hdrdir)/ruby/defines.h digest.o: $(hdrdir)/ruby/intern.h +digest.o: $(hdrdir)/ruby/internal/abi.h +digest.o: $(hdrdir)/ruby/internal/anyargs.h +digest.o: $(hdrdir)/ruby/internal/arithmetic.h +digest.o: $(hdrdir)/ruby/internal/arithmetic/char.h +digest.o: $(hdrdir)/ruby/internal/arithmetic/double.h +digest.o: $(hdrdir)/ruby/internal/arithmetic/fixnum.h +digest.o: $(hdrdir)/ruby/internal/arithmetic/gid_t.h +digest.o: $(hdrdir)/ruby/internal/arithmetic/int.h +digest.o: $(hdrdir)/ruby/internal/arithmetic/intptr_t.h +digest.o: $(hdrdir)/ruby/internal/arithmetic/long.h +digest.o: $(hdrdir)/ruby/internal/arithmetic/long_long.h +digest.o: $(hdrdir)/ruby/internal/arithmetic/mode_t.h +digest.o: $(hdrdir)/ruby/internal/arithmetic/off_t.h +digest.o: $(hdrdir)/ruby/internal/arithmetic/pid_t.h +digest.o: $(hdrdir)/ruby/internal/arithmetic/short.h +digest.o: $(hdrdir)/ruby/internal/arithmetic/size_t.h +digest.o: $(hdrdir)/ruby/internal/arithmetic/st_data_t.h +digest.o: $(hdrdir)/ruby/internal/arithmetic/uid_t.h +digest.o: $(hdrdir)/ruby/internal/assume.h +digest.o: $(hdrdir)/ruby/internal/attr/alloc_size.h +digest.o: $(hdrdir)/ruby/internal/attr/artificial.h +digest.o: $(hdrdir)/ruby/internal/attr/cold.h +digest.o: $(hdrdir)/ruby/internal/attr/const.h +digest.o: $(hdrdir)/ruby/internal/attr/constexpr.h +digest.o: $(hdrdir)/ruby/internal/attr/deprecated.h +digest.o: $(hdrdir)/ruby/internal/attr/diagnose_if.h +digest.o: $(hdrdir)/ruby/internal/attr/enum_extensibility.h +digest.o: $(hdrdir)/ruby/internal/attr/error.h +digest.o: $(hdrdir)/ruby/internal/attr/flag_enum.h +digest.o: $(hdrdir)/ruby/internal/attr/forceinline.h +digest.o: $(hdrdir)/ruby/internal/attr/format.h +digest.o: $(hdrdir)/ruby/internal/attr/maybe_unused.h +digest.o: $(hdrdir)/ruby/internal/attr/noalias.h +digest.o: $(hdrdir)/ruby/internal/attr/nodiscard.h +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 +digest.o: $(hdrdir)/ruby/internal/attr/warning.h +digest.o: $(hdrdir)/ruby/internal/attr/weakref.h +digest.o: $(hdrdir)/ruby/internal/cast.h +digest.o: $(hdrdir)/ruby/internal/compiler_is.h +digest.o: $(hdrdir)/ruby/internal/compiler_is/apple.h +digest.o: $(hdrdir)/ruby/internal/compiler_is/clang.h +digest.o: $(hdrdir)/ruby/internal/compiler_is/gcc.h +digest.o: $(hdrdir)/ruby/internal/compiler_is/intel.h +digest.o: $(hdrdir)/ruby/internal/compiler_is/msvc.h +digest.o: $(hdrdir)/ruby/internal/compiler_is/sunpro.h +digest.o: $(hdrdir)/ruby/internal/compiler_since.h +digest.o: $(hdrdir)/ruby/internal/config.h +digest.o: $(hdrdir)/ruby/internal/constant_p.h +digest.o: $(hdrdir)/ruby/internal/core.h +digest.o: $(hdrdir)/ruby/internal/core/rarray.h +digest.o: $(hdrdir)/ruby/internal/core/rbasic.h +digest.o: $(hdrdir)/ruby/internal/core/rbignum.h +digest.o: $(hdrdir)/ruby/internal/core/rclass.h +digest.o: $(hdrdir)/ruby/internal/core/rdata.h +digest.o: $(hdrdir)/ruby/internal/core/rfile.h +digest.o: $(hdrdir)/ruby/internal/core/rhash.h +digest.o: $(hdrdir)/ruby/internal/core/robject.h +digest.o: $(hdrdir)/ruby/internal/core/rregexp.h +digest.o: $(hdrdir)/ruby/internal/core/rstring.h +digest.o: $(hdrdir)/ruby/internal/core/rstruct.h +digest.o: $(hdrdir)/ruby/internal/core/rtypeddata.h +digest.o: $(hdrdir)/ruby/internal/ctype.h +digest.o: $(hdrdir)/ruby/internal/dllexport.h +digest.o: $(hdrdir)/ruby/internal/dosish.h +digest.o: $(hdrdir)/ruby/internal/error.h +digest.o: $(hdrdir)/ruby/internal/eval.h +digest.o: $(hdrdir)/ruby/internal/event.h +digest.o: $(hdrdir)/ruby/internal/fl_type.h +digest.o: $(hdrdir)/ruby/internal/gc.h +digest.o: $(hdrdir)/ruby/internal/glob.h +digest.o: $(hdrdir)/ruby/internal/globals.h +digest.o: $(hdrdir)/ruby/internal/has/attribute.h +digest.o: $(hdrdir)/ruby/internal/has/builtin.h +digest.o: $(hdrdir)/ruby/internal/has/c_attribute.h +digest.o: $(hdrdir)/ruby/internal/has/cpp_attribute.h +digest.o: $(hdrdir)/ruby/internal/has/declspec_attribute.h +digest.o: $(hdrdir)/ruby/internal/has/extension.h +digest.o: $(hdrdir)/ruby/internal/has/feature.h +digest.o: $(hdrdir)/ruby/internal/has/warning.h +digest.o: $(hdrdir)/ruby/internal/intern/array.h +digest.o: $(hdrdir)/ruby/internal/intern/bignum.h +digest.o: $(hdrdir)/ruby/internal/intern/class.h +digest.o: $(hdrdir)/ruby/internal/intern/compar.h +digest.o: $(hdrdir)/ruby/internal/intern/complex.h +digest.o: $(hdrdir)/ruby/internal/intern/cont.h +digest.o: $(hdrdir)/ruby/internal/intern/dir.h +digest.o: $(hdrdir)/ruby/internal/intern/enum.h +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/hash.h +digest.o: $(hdrdir)/ruby/internal/intern/io.h +digest.o: $(hdrdir)/ruby/internal/intern/load.h +digest.o: $(hdrdir)/ruby/internal/intern/marshal.h +digest.o: $(hdrdir)/ruby/internal/intern/numeric.h +digest.o: $(hdrdir)/ruby/internal/intern/object.h +digest.o: $(hdrdir)/ruby/internal/intern/parse.h +digest.o: $(hdrdir)/ruby/internal/intern/proc.h +digest.o: $(hdrdir)/ruby/internal/intern/process.h +digest.o: $(hdrdir)/ruby/internal/intern/random.h +digest.o: $(hdrdir)/ruby/internal/intern/range.h +digest.o: $(hdrdir)/ruby/internal/intern/rational.h +digest.o: $(hdrdir)/ruby/internal/intern/re.h +digest.o: $(hdrdir)/ruby/internal/intern/ruby.h +digest.o: $(hdrdir)/ruby/internal/intern/select.h +digest.o: $(hdrdir)/ruby/internal/intern/select/largesize.h +digest.o: $(hdrdir)/ruby/internal/intern/set.h +digest.o: $(hdrdir)/ruby/internal/intern/signal.h +digest.o: $(hdrdir)/ruby/internal/intern/sprintf.h +digest.o: $(hdrdir)/ruby/internal/intern/string.h +digest.o: $(hdrdir)/ruby/internal/intern/struct.h +digest.o: $(hdrdir)/ruby/internal/intern/thread.h +digest.o: $(hdrdir)/ruby/internal/intern/time.h +digest.o: $(hdrdir)/ruby/internal/intern/variable.h +digest.o: $(hdrdir)/ruby/internal/intern/vm.h +digest.o: $(hdrdir)/ruby/internal/interpreter.h +digest.o: $(hdrdir)/ruby/internal/iterator.h +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/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 +digest.o: $(hdrdir)/ruby/internal/variable.h +digest.o: $(hdrdir)/ruby/internal/warning_push.h +digest.o: $(hdrdir)/ruby/internal/xmalloc.h digest.o: $(hdrdir)/ruby/missing.h digest.o: $(hdrdir)/ruby/ruby.h digest.o: $(hdrdir)/ruby/st.h digest.o: $(hdrdir)/ruby/subst.h -digest.o: $(top_srcdir)/include/ruby.h digest.o: digest.c digest.o: digest.h # AUTOGENERATED DEPENDENCIES END diff --git a/ext/digest/digest.c b/ext/digest/digest.c index a02eb12cd6..28f6022754 100644 --- a/ext/digest/digest.c +++ b/ext/digest/digest.c @@ -77,8 +77,8 @@ RUBY_EXTERN void Init_digest_base(void); * * Different digest algorithms (or hash functions) are available: * - * HMAC:: - * See FIPS PUB 198 The Keyed-Hash Message Authentication Code (HMAC). + * MD5:: + * See RFC 1321 The MD5 Message-Digest Algorithm * RIPEMD-160:: * As Digest::RMD160. * See http://homes.esat.kuleuven.be/~bosselae/ripemd160.html. @@ -154,7 +154,7 @@ static void rb_digest_instance_method_unimpl(VALUE self, const char *method) { rb_raise(rb_eRuntimeError, "%s does not implement %s()", - rb_obj_classname(self), method); + rb_obj_classname(self), method); } /* @@ -383,8 +383,8 @@ rb_digest_instance_equal(VALUE self, VALUE other) StringValue(str2); if (RSTRING_LEN(str1) == RSTRING_LEN(str2) && - rb_str_cmp(str1, str2) == 0) { - return Qtrue; + rb_str_cmp(str1, str2) == 0) { + return Qtrue; } return Qfalse; } @@ -406,7 +406,7 @@ rb_digest_instance_digest_length(VALUE self) /* never blindly assume that #digest() returns a string */ StringValue(digest); - return INT2NUM(RSTRING_LEN(digest)); + return LONG2NUM(RSTRING_LEN(digest)); } /* @@ -486,7 +486,7 @@ rb_digest_class_s_digest(int argc, VALUE *argv, VALUE klass) static VALUE rb_digest_class_s_hexdigest(int argc, VALUE *argv, VALUE klass) { - return hexencode_str_new(rb_funcall2(klass, id_digest, argc, argv)); + return hexencode_str_new(rb_funcallv(klass, id_digest, argc, argv)); } /* :nodoc: */ @@ -501,13 +501,77 @@ rb_digest_class_init(VALUE self) * * This abstract class provides a common interface to message digest * implementation classes written in C. + * + * ==Write a Digest subclass in C + * Digest::Base provides a common interface to message digest + * classes written in C. These classes must provide a struct + * of type rb_digest_metadata_t: + * typedef int (*rb_digest_hash_init_func_t)(void *); + * typedef void (*rb_digest_hash_update_func_t)(void *, unsigned char *, size_t); + * typedef int (*rb_digest_hash_finish_func_t)(void *, unsigned char *); + * + * typedef struct { + * int api_version; + * size_t digest_len; + * size_t block_len; + * size_t ctx_size; + * rb_digest_hash_init_func_t init_func; + * rb_digest_hash_update_func_t update_func; + * rb_digest_hash_finish_func_t finish_func; + * } rb_digest_metadata_t; + * + * This structure must be set as an instance variable named +metadata+ + * (without the +@+ in front of the name). By example: + * static const rb_digest_metadata_t sha1 = { + * RUBY_DIGEST_API_VERSION, + * SHA1_DIGEST_LENGTH, + * SHA1_BLOCK_LENGTH, + * sizeof(SHA1_CTX), + * (rb_digest_hash_init_func_t)SHA1_Init, + * (rb_digest_hash_update_func_t)SHA1_Update, + * (rb_digest_hash_finish_func_t)SHA1_Finish, + * }; + * + * + * rb_ivar_set(cDigest_SHA1, rb_intern("metadata"), + * 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) { VALUE p; - VALUE obj; + VALUE obj = Qnil; rb_digest_metadata_t *algo; for (p = klass; !NIL_P(p); p = rb_class_superclass(p)) { @@ -520,9 +584,15 @@ get_digest_base_metadata(VALUE klass) if (NIL_P(p)) rb_raise(rb_eRuntimeError, "Digest::Base cannot be directly inherited in Ruby"); -#undef RUBY_UNTYPED_DATA_WARNING -#define RUBY_UNTYPED_DATA_WARNING 0 - Data_Get_Struct(obj, rb_digest_metadata_t, algo); + algo = get_metadata_ptr(obj); + if (!algo) { + if (p == klass) + rb_raise(rb_eTypeError, "%"PRIsVALUE"::metadata is not initialized properly", + klass); + else + rb_raise(rb_eTypeError, "%"PRIsVALUE"(%"PRIsVALUE")::metadata is not initialized properly", + klass, p); + } switch (algo->api_version) { case 3: @@ -539,6 +609,12 @@ get_digest_base_metadata(VALUE klass) return algo; } +static rb_digest_metadata_t * +get_digest_obj_metadata(VALUE obj) +{ + return get_digest_base_metadata(rb_obj_class(obj)); +} + static const rb_data_type_t digest_type = { "digest", {0, RUBY_TYPED_DEFAULT_FREE, 0,}, @@ -550,7 +626,7 @@ static inline void algo_init(const rb_digest_metadata_t *algo, void *pctx) { if (algo->init_func(pctx) != 1) { - rb_raise(rb_eRuntimeError, "Digest initialization failed."); + rb_raise(rb_eRuntimeError, "Digest initialization failed."); } } @@ -562,7 +638,7 @@ rb_digest_base_alloc(VALUE klass) void *pctx; if (klass == rb_cDigest_Base) { - rb_raise(rb_eNotImpError, "Digest::Base is an abstract class"); + rb_raise(rb_eNotImpError, "Digest::Base is an abstract class"); } algo = get_digest_base_metadata(klass); @@ -585,9 +661,9 @@ rb_digest_base_copy(VALUE copy, VALUE obj) rb_check_frozen(copy); - algo = get_digest_base_metadata(rb_obj_class(copy)); - if (algo != get_digest_base_metadata(rb_obj_class(obj))) - rb_raise(rb_eTypeError, "different algorithms"); + algo = get_digest_obj_metadata(copy); + if (algo != get_digest_obj_metadata(obj)) + rb_raise(rb_eTypeError, "different algorithms"); TypedData_Get_Struct(obj, void, &digest_type, pctx1); TypedData_Get_Struct(copy, void, &digest_type, pctx2); @@ -596,14 +672,18 @@ rb_digest_base_copy(VALUE copy, VALUE obj) return copy; } -/* :nodoc: */ +/* + * call-seq: digest_base.reset -> digest_base + * + * Reset the digest to its initial state and return +self+. + */ static VALUE rb_digest_base_reset(VALUE self) { rb_digest_metadata_t *algo; void *pctx; - algo = get_digest_base_metadata(rb_obj_class(self)); + algo = get_digest_obj_metadata(self); TypedData_Get_Struct(self, void, &digest_type, pctx); @@ -612,14 +692,20 @@ rb_digest_base_reset(VALUE self) return self; } -/* :nodoc: */ +/* + * call-seq: + * digest_base.update(string) -> digest_base + * digest_base << string -> digest_base + * + * Update the digest using given _string_ and return +self+. + */ static VALUE rb_digest_base_update(VALUE self, VALUE str) { rb_digest_metadata_t *algo; void *pctx; - algo = get_digest_base_metadata(rb_obj_class(self)); + algo = get_digest_obj_metadata(self); TypedData_Get_Struct(self, void, &digest_type, pctx); @@ -638,7 +724,7 @@ rb_digest_base_finish(VALUE self) void *pctx; VALUE str; - algo = get_digest_base_metadata(rb_obj_class(self)); + algo = get_digest_obj_metadata(self); TypedData_Get_Struct(self, void, &digest_type, pctx); @@ -651,43 +737,62 @@ rb_digest_base_finish(VALUE self) return str; } -/* :nodoc: */ +/* + * call-seq: digest_base.digest_length -> Integer + * + * Return the length of the hash value in bytes. + */ static VALUE rb_digest_base_digest_length(VALUE self) { rb_digest_metadata_t *algo; - algo = get_digest_base_metadata(rb_obj_class(self)); + algo = get_digest_obj_metadata(self); - return INT2NUM(algo->digest_len); + return SIZET2NUM(algo->digest_len); } -/* :nodoc: */ +/* + * call-seq: digest_base.block_length -> Integer + * + * Return the block length of the digest in bytes. + */ static VALUE rb_digest_base_block_length(VALUE self) { rb_digest_metadata_t *algo; - algo = get_digest_base_metadata(rb_obj_class(self)); + algo = get_digest_obj_metadata(self); - return INT2NUM(algo->block_len); + return SIZET2NUM(algo->block_len); } void Init_digest(void) { +#undef rb_intern id_reset = rb_intern("reset"); id_update = rb_intern("update"); id_finish = rb_intern("finish"); id_digest = rb_intern("digest"); id_hexdigest = rb_intern("hexdigest"); id_digest_length = rb_intern("digest_length"); + id_metadata = rb_id_metadata(); + InitVM(digest); +} +void +InitVM_digest(void) +{ /* * module Digest */ rb_mDigest = rb_define_module("Digest"); +#ifdef HAVE_RB_EXT_RACTOR_SAFE + rb_ext_ractor_safe(true); +#endif + /* module functions */ rb_define_module_function(rb_mDigest, "hexencode", rb_digest_s_hexencode, 1); @@ -729,8 +834,6 @@ Init_digest(void) rb_define_singleton_method(rb_cDigest_Class, "digest", rb_digest_class_s_digest, -1); rb_define_singleton_method(rb_cDigest_Class, "hexdigest", rb_digest_class_s_hexdigest, -1); - id_metadata = rb_intern("metadata"); - /* class Digest::Base < Digest::Class */ rb_cDigest_Base = rb_define_class_under(rb_mDigest, "Base", rb_cDigest_Class); diff --git a/ext/digest/digest.gemspec b/ext/digest/digest.gemspec new file mode 100644 index 0000000000..4a01c5fde1 --- /dev/null +++ b/ext/digest/digest.gemspec @@ -0,0 +1,44 @@ +# coding: utf-8 +# frozen_string_literal: true + +Gem::Specification.new do |spec| + version_module = Module.new do + version_rb = File.join(__dir__, "lib/digest/version.rb") + module_eval(File.read(version_rb), version_rb) + end + + spec.name = "digest" + spec.version = version_module::Digest::VERSION + spec.authors = ["Akinori MUSHA"] + spec.email = ["knu@idaemons.org"] + + spec.summary = %q{Provides a framework for message digest libraries.} + spec.description = %q{Provides a framework for message digest libraries.} + spec.homepage = "https://github.com/ruby/digest" + spec.licenses = ["Ruby", "BSD-2-Clause"] + + spec.files = [ + "LICENSE.txt", + "README.md", + *Dir["lib/digest{.rb,/**/*.rb}"], + ] + + spec.required_ruby_version = ">= 2.5.0" + + spec.bindir = "exe" + spec.executables = [] + + if Gem::Platform === spec.platform and spec.platform =~ 'java' or RUBY_ENGINE == 'jruby' + spec.platform = 'java' + + spec.files += Dir["ext/java/**/*.{rb,java}", "lib/digest.jar"] + spec.require_paths = %w[lib ext/java/org/jruby/ext/digest/lib] + else + spec.extensions = Dir["ext/digest/**/extconf.rb"] + + spec.files += Dir["ext/digest/**/{*.{rb,c,h,sh},depend}"] + spec.require_paths = %w[lib] + end + + spec.metadata["msys2_mingw_dependencies"] = "openssl" +end diff --git a/ext/digest/digest.h b/ext/digest/digest.h index 30359ad348..c5c37583a6 100644 --- a/ext/digest/digest.h +++ b/ext/digest/digest.h @@ -38,9 +38,10 @@ rb_digest_##name##_update(void *ctx, unsigned char *ptr, size_t size) \ const unsigned int stride = 16384; \ \ for (; size > stride; size -= stride, ptr += stride) { \ - name##_Update(ctx, 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) \ @@ -49,3 +50,57 @@ rb_digest_##name##_finish(void *ctx, unsigned char *ptr) \ { \ return name##_Final(ptr, ctx); \ } + +static inline VALUE +rb_digest_namespace(void) +{ + rb_require("digest"); + return rb_path2class("Digest"); +} + +static inline ID +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) +{ +#if defined(EXTSTATIC) && EXTSTATIC + /* The extension is built as a static library, so safe to refer to + * rb_digest_wrap_metadata directly. */ + extern VALUE rb_digest_wrap_metadata(const rb_digest_metadata_t *meta); + return rb_digest_wrap_metadata(meta); +#else + /* The extension is built as a shared library, so we can't refer + * to rb_digest_wrap_metadata directly. */ +# ifdef DIGEST_USE_RB_EXT_RESOLVE_SYMBOL + /* If rb_ext_resolve_symbol() is available, use it to get the address of + * rb_digest_wrap_metadata. */ + typedef VALUE (*wrapper_func_type)(const rb_digest_metadata_t *meta); + static wrapper_func_type wrapper; + if (!wrapper) { + wrapper = (wrapper_func_type)(uintptr_t) + 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 + /* If rb_ext_resolve_symbol() is not available, keep using untyped + * data. */ +# undef RUBY_UNTYPED_DATA_WARNING +# define RUBY_UNTYPED_DATA_WARNING 0 + return rb_obj_freeze(Data_Wrap_Struct(0, 0, 0, (void *)meta)); +# endif +#endif +} diff --git a/ext/digest/digest_conf.rb b/ext/digest/digest_conf.rb index b2a8195fa2..099d20fcbe 100644 --- a/ext/digest/digest_conf.rb +++ b/ext/digest/digest_conf.rb @@ -1,26 +1,17 @@ -def digest_conf(name, hdr = name, funcs = nil) +# frozen_string_literal: false + +def digest_conf(name) unless with_config("bundled-#{name}") - cc = with_config("common-digest") - if cc == true or /\b#{name}\b/ =~ cc - if File.exist?("#$srcdir/#{name}cc.h") and - have_header("CommonCrypto/CommonDigest.h") - $defs << "-D#{name.upcase}_USE_COMMONDIGEST" - return :commondigest - end + case cc = with_config("common-digest", true) + when true, false + else + cc = cc.split(/[\s,]++/).any? {|pat| File.fnmatch?(pat, name)} end - - dir_config("openssl") - pkg_config("openssl") - require File.expand_path('../../openssl/deprecation', __FILE__) - if have_library("crypto") - funcs ||= name.upcase - funcs = Array(funcs) - hdr = "openssl/#{hdr}.h" - if funcs.all? {|func| OpenSSL.check_func("#{func}_Transform", hdr)} && - funcs.all? {|func| have_type("#{func}_CTX", hdr)} - $defs << "-D#{name.upcase}_USE_OPENSSL" - return :ossl - end + if cc and File.exist?("#$srcdir/#{name}cc.h") and + have_header("CommonCrypto/CommonDigest.h") + $defs << "-D#{name.upcase}_USE_COMMONDIGEST" + $headers << "#{name}cc.h" + return :commondigest end end $objs << "#{name}.#{$OBJEXT}" diff --git a/ext/digest/extconf.rb b/ext/digest/extconf.rb index a20ca8d68f..0e5f08d794 100644 --- a/ext/digest/extconf.rb +++ b/ext/digest/extconf.rb @@ -1,3 +1,4 @@ +# frozen_string_literal: false # $RoughId: extconf.rb,v 1.6 2001/07/13 15:38:27 knu Exp $ # $Id$ @@ -5,6 +6,6 @@ require "mkmf" $INSTALLFILES = { "digest.h" => "$(HDRDIR)" -} +} if $extmk create_makefile("digest") diff --git a/ext/digest/lib/digest.rb b/ext/digest/lib/digest.rb index ef43c46ac3..e995adb450 100644 --- a/ext/digest/lib/digest.rb +++ b/ext/digest/lib/digest.rb @@ -1,13 +1,28 @@ -require 'digest.so' +# frozen_string_literal: false + +if defined?(Digest) && + /\A(?:2\.|3\.0\.[0-2]\z)/.match?(RUBY_VERSION) && + caller_locations.any? { |l| + %r{/(rubygems/gem_runner|bundler/cli)\.rb}.match?(l.path) + } + # Before Ruby 3.0.3/3.1.0, the gem and bundle commands used to load + # the digest library before loading additionally installed gems, so + # you will get constant redefinition warnings and unexpected + # implementation overwriting if we proceed here. Avoid that. + return +end + +require 'digest/version' +require 'digest/loader' module Digest # A mutex for Digest(). - REQUIRE_MUTEX = Mutex.new + REQUIRE_MUTEX = Thread::Mutex.new def self.const_missing(name) # :nodoc: case name when :SHA256, :SHA384, :SHA512 - lib = 'digest/sha2.so' + lib = 'digest/sha2' else lib = File.join('digest', name.to_s.downcase) end diff --git a/ext/digest/lib/digest/loader.rb b/ext/digest/lib/digest/loader.rb new file mode 100644 index 0000000000..6b989e07be --- /dev/null +++ b/ext/digest/lib/digest/loader.rb @@ -0,0 +1,3 @@ +# frozen_string_literal: true + +require 'digest.so' diff --git a/ext/digest/lib/digest/version.rb b/ext/digest/lib/digest/version.rb new file mode 100644 index 0000000000..a56e80c54e --- /dev/null +++ b/ext/digest/lib/digest/version.rb @@ -0,0 +1,6 @@ +# frozen_string_literal: true + +module Digest + # The version string + VERSION = "3.2.1" +end diff --git a/ext/digest/md5/depend b/ext/digest/md5/depend index 288c30aa15..d1c25c28c8 100644 --- a/ext/digest/md5/depend +++ b/ext/digest/md5/depend @@ -1,18 +1,333 @@ md5.o: md5.c md5.h $(srcdir)/../defs.h +md5init.o: $(LOCAL_HDRS) # AUTOGENERATED DEPENDENCIES START +md5.o: $(RUBY_EXTCONF_H) +md5.o: $(arch_hdrdir)/ruby/config.h +md5.o: $(hdrdir)/ruby.h +md5.o: $(hdrdir)/ruby/assert.h +md5.o: $(hdrdir)/ruby/backward.h +md5.o: $(hdrdir)/ruby/backward/2/assume.h +md5.o: $(hdrdir)/ruby/backward/2/attributes.h +md5.o: $(hdrdir)/ruby/backward/2/bool.h +md5.o: $(hdrdir)/ruby/backward/2/inttypes.h +md5.o: $(hdrdir)/ruby/backward/2/limits.h +md5.o: $(hdrdir)/ruby/backward/2/long_long.h +md5.o: $(hdrdir)/ruby/backward/2/stdalign.h +md5.o: $(hdrdir)/ruby/backward/2/stdarg.h +md5.o: $(hdrdir)/ruby/defines.h +md5.o: $(hdrdir)/ruby/intern.h +md5.o: $(hdrdir)/ruby/internal/abi.h +md5.o: $(hdrdir)/ruby/internal/anyargs.h +md5.o: $(hdrdir)/ruby/internal/arithmetic.h +md5.o: $(hdrdir)/ruby/internal/arithmetic/char.h +md5.o: $(hdrdir)/ruby/internal/arithmetic/double.h +md5.o: $(hdrdir)/ruby/internal/arithmetic/fixnum.h +md5.o: $(hdrdir)/ruby/internal/arithmetic/gid_t.h +md5.o: $(hdrdir)/ruby/internal/arithmetic/int.h +md5.o: $(hdrdir)/ruby/internal/arithmetic/intptr_t.h +md5.o: $(hdrdir)/ruby/internal/arithmetic/long.h +md5.o: $(hdrdir)/ruby/internal/arithmetic/long_long.h +md5.o: $(hdrdir)/ruby/internal/arithmetic/mode_t.h +md5.o: $(hdrdir)/ruby/internal/arithmetic/off_t.h +md5.o: $(hdrdir)/ruby/internal/arithmetic/pid_t.h +md5.o: $(hdrdir)/ruby/internal/arithmetic/short.h +md5.o: $(hdrdir)/ruby/internal/arithmetic/size_t.h +md5.o: $(hdrdir)/ruby/internal/arithmetic/st_data_t.h +md5.o: $(hdrdir)/ruby/internal/arithmetic/uid_t.h +md5.o: $(hdrdir)/ruby/internal/assume.h +md5.o: $(hdrdir)/ruby/internal/attr/alloc_size.h +md5.o: $(hdrdir)/ruby/internal/attr/artificial.h +md5.o: $(hdrdir)/ruby/internal/attr/cold.h +md5.o: $(hdrdir)/ruby/internal/attr/const.h +md5.o: $(hdrdir)/ruby/internal/attr/constexpr.h +md5.o: $(hdrdir)/ruby/internal/attr/deprecated.h +md5.o: $(hdrdir)/ruby/internal/attr/diagnose_if.h +md5.o: $(hdrdir)/ruby/internal/attr/enum_extensibility.h +md5.o: $(hdrdir)/ruby/internal/attr/error.h +md5.o: $(hdrdir)/ruby/internal/attr/flag_enum.h +md5.o: $(hdrdir)/ruby/internal/attr/forceinline.h +md5.o: $(hdrdir)/ruby/internal/attr/format.h +md5.o: $(hdrdir)/ruby/internal/attr/maybe_unused.h +md5.o: $(hdrdir)/ruby/internal/attr/noalias.h +md5.o: $(hdrdir)/ruby/internal/attr/nodiscard.h +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 +md5.o: $(hdrdir)/ruby/internal/attr/warning.h +md5.o: $(hdrdir)/ruby/internal/attr/weakref.h +md5.o: $(hdrdir)/ruby/internal/cast.h +md5.o: $(hdrdir)/ruby/internal/compiler_is.h +md5.o: $(hdrdir)/ruby/internal/compiler_is/apple.h +md5.o: $(hdrdir)/ruby/internal/compiler_is/clang.h +md5.o: $(hdrdir)/ruby/internal/compiler_is/gcc.h +md5.o: $(hdrdir)/ruby/internal/compiler_is/intel.h +md5.o: $(hdrdir)/ruby/internal/compiler_is/msvc.h +md5.o: $(hdrdir)/ruby/internal/compiler_is/sunpro.h +md5.o: $(hdrdir)/ruby/internal/compiler_since.h +md5.o: $(hdrdir)/ruby/internal/config.h +md5.o: $(hdrdir)/ruby/internal/constant_p.h +md5.o: $(hdrdir)/ruby/internal/core.h +md5.o: $(hdrdir)/ruby/internal/core/rarray.h +md5.o: $(hdrdir)/ruby/internal/core/rbasic.h +md5.o: $(hdrdir)/ruby/internal/core/rbignum.h +md5.o: $(hdrdir)/ruby/internal/core/rclass.h +md5.o: $(hdrdir)/ruby/internal/core/rdata.h +md5.o: $(hdrdir)/ruby/internal/core/rfile.h +md5.o: $(hdrdir)/ruby/internal/core/rhash.h +md5.o: $(hdrdir)/ruby/internal/core/robject.h +md5.o: $(hdrdir)/ruby/internal/core/rregexp.h +md5.o: $(hdrdir)/ruby/internal/core/rstring.h +md5.o: $(hdrdir)/ruby/internal/core/rstruct.h +md5.o: $(hdrdir)/ruby/internal/core/rtypeddata.h +md5.o: $(hdrdir)/ruby/internal/ctype.h +md5.o: $(hdrdir)/ruby/internal/dllexport.h +md5.o: $(hdrdir)/ruby/internal/dosish.h +md5.o: $(hdrdir)/ruby/internal/error.h +md5.o: $(hdrdir)/ruby/internal/eval.h +md5.o: $(hdrdir)/ruby/internal/event.h +md5.o: $(hdrdir)/ruby/internal/fl_type.h +md5.o: $(hdrdir)/ruby/internal/gc.h +md5.o: $(hdrdir)/ruby/internal/glob.h +md5.o: $(hdrdir)/ruby/internal/globals.h +md5.o: $(hdrdir)/ruby/internal/has/attribute.h +md5.o: $(hdrdir)/ruby/internal/has/builtin.h +md5.o: $(hdrdir)/ruby/internal/has/c_attribute.h +md5.o: $(hdrdir)/ruby/internal/has/cpp_attribute.h +md5.o: $(hdrdir)/ruby/internal/has/declspec_attribute.h +md5.o: $(hdrdir)/ruby/internal/has/extension.h +md5.o: $(hdrdir)/ruby/internal/has/feature.h +md5.o: $(hdrdir)/ruby/internal/has/warning.h +md5.o: $(hdrdir)/ruby/internal/intern/array.h +md5.o: $(hdrdir)/ruby/internal/intern/bignum.h +md5.o: $(hdrdir)/ruby/internal/intern/class.h +md5.o: $(hdrdir)/ruby/internal/intern/compar.h +md5.o: $(hdrdir)/ruby/internal/intern/complex.h +md5.o: $(hdrdir)/ruby/internal/intern/cont.h +md5.o: $(hdrdir)/ruby/internal/intern/dir.h +md5.o: $(hdrdir)/ruby/internal/intern/enum.h +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/hash.h +md5.o: $(hdrdir)/ruby/internal/intern/io.h +md5.o: $(hdrdir)/ruby/internal/intern/load.h +md5.o: $(hdrdir)/ruby/internal/intern/marshal.h +md5.o: $(hdrdir)/ruby/internal/intern/numeric.h +md5.o: $(hdrdir)/ruby/internal/intern/object.h +md5.o: $(hdrdir)/ruby/internal/intern/parse.h +md5.o: $(hdrdir)/ruby/internal/intern/proc.h +md5.o: $(hdrdir)/ruby/internal/intern/process.h +md5.o: $(hdrdir)/ruby/internal/intern/random.h +md5.o: $(hdrdir)/ruby/internal/intern/range.h +md5.o: $(hdrdir)/ruby/internal/intern/rational.h +md5.o: $(hdrdir)/ruby/internal/intern/re.h +md5.o: $(hdrdir)/ruby/internal/intern/ruby.h +md5.o: $(hdrdir)/ruby/internal/intern/select.h +md5.o: $(hdrdir)/ruby/internal/intern/select/largesize.h +md5.o: $(hdrdir)/ruby/internal/intern/set.h +md5.o: $(hdrdir)/ruby/internal/intern/signal.h +md5.o: $(hdrdir)/ruby/internal/intern/sprintf.h +md5.o: $(hdrdir)/ruby/internal/intern/string.h +md5.o: $(hdrdir)/ruby/internal/intern/struct.h +md5.o: $(hdrdir)/ruby/internal/intern/thread.h +md5.o: $(hdrdir)/ruby/internal/intern/time.h +md5.o: $(hdrdir)/ruby/internal/intern/variable.h +md5.o: $(hdrdir)/ruby/internal/intern/vm.h +md5.o: $(hdrdir)/ruby/internal/interpreter.h +md5.o: $(hdrdir)/ruby/internal/iterator.h +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/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 +md5.o: $(hdrdir)/ruby/internal/variable.h +md5.o: $(hdrdir)/ruby/internal/warning_push.h +md5.o: $(hdrdir)/ruby/internal/xmalloc.h +md5.o: $(hdrdir)/ruby/missing.h +md5.o: $(hdrdir)/ruby/ruby.h +md5.o: $(hdrdir)/ruby/st.h +md5.o: $(hdrdir)/ruby/subst.h +md5.o: $(srcdir)/../defs.h +md5.o: md5.c +md5.o: md5.h md5init.o: $(RUBY_EXTCONF_H) md5init.o: $(arch_hdrdir)/ruby/config.h +md5init.o: $(hdrdir)/ruby.h +md5init.o: $(hdrdir)/ruby/assert.h +md5init.o: $(hdrdir)/ruby/backward.h +md5init.o: $(hdrdir)/ruby/backward/2/assume.h +md5init.o: $(hdrdir)/ruby/backward/2/attributes.h +md5init.o: $(hdrdir)/ruby/backward/2/bool.h +md5init.o: $(hdrdir)/ruby/backward/2/inttypes.h +md5init.o: $(hdrdir)/ruby/backward/2/limits.h +md5init.o: $(hdrdir)/ruby/backward/2/long_long.h +md5init.o: $(hdrdir)/ruby/backward/2/stdalign.h +md5init.o: $(hdrdir)/ruby/backward/2/stdarg.h md5init.o: $(hdrdir)/ruby/defines.h md5init.o: $(hdrdir)/ruby/intern.h +md5init.o: $(hdrdir)/ruby/internal/abi.h +md5init.o: $(hdrdir)/ruby/internal/anyargs.h +md5init.o: $(hdrdir)/ruby/internal/arithmetic.h +md5init.o: $(hdrdir)/ruby/internal/arithmetic/char.h +md5init.o: $(hdrdir)/ruby/internal/arithmetic/double.h +md5init.o: $(hdrdir)/ruby/internal/arithmetic/fixnum.h +md5init.o: $(hdrdir)/ruby/internal/arithmetic/gid_t.h +md5init.o: $(hdrdir)/ruby/internal/arithmetic/int.h +md5init.o: $(hdrdir)/ruby/internal/arithmetic/intptr_t.h +md5init.o: $(hdrdir)/ruby/internal/arithmetic/long.h +md5init.o: $(hdrdir)/ruby/internal/arithmetic/long_long.h +md5init.o: $(hdrdir)/ruby/internal/arithmetic/mode_t.h +md5init.o: $(hdrdir)/ruby/internal/arithmetic/off_t.h +md5init.o: $(hdrdir)/ruby/internal/arithmetic/pid_t.h +md5init.o: $(hdrdir)/ruby/internal/arithmetic/short.h +md5init.o: $(hdrdir)/ruby/internal/arithmetic/size_t.h +md5init.o: $(hdrdir)/ruby/internal/arithmetic/st_data_t.h +md5init.o: $(hdrdir)/ruby/internal/arithmetic/uid_t.h +md5init.o: $(hdrdir)/ruby/internal/assume.h +md5init.o: $(hdrdir)/ruby/internal/attr/alloc_size.h +md5init.o: $(hdrdir)/ruby/internal/attr/artificial.h +md5init.o: $(hdrdir)/ruby/internal/attr/cold.h +md5init.o: $(hdrdir)/ruby/internal/attr/const.h +md5init.o: $(hdrdir)/ruby/internal/attr/constexpr.h +md5init.o: $(hdrdir)/ruby/internal/attr/deprecated.h +md5init.o: $(hdrdir)/ruby/internal/attr/diagnose_if.h +md5init.o: $(hdrdir)/ruby/internal/attr/enum_extensibility.h +md5init.o: $(hdrdir)/ruby/internal/attr/error.h +md5init.o: $(hdrdir)/ruby/internal/attr/flag_enum.h +md5init.o: $(hdrdir)/ruby/internal/attr/forceinline.h +md5init.o: $(hdrdir)/ruby/internal/attr/format.h +md5init.o: $(hdrdir)/ruby/internal/attr/maybe_unused.h +md5init.o: $(hdrdir)/ruby/internal/attr/noalias.h +md5init.o: $(hdrdir)/ruby/internal/attr/nodiscard.h +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 +md5init.o: $(hdrdir)/ruby/internal/attr/warning.h +md5init.o: $(hdrdir)/ruby/internal/attr/weakref.h +md5init.o: $(hdrdir)/ruby/internal/cast.h +md5init.o: $(hdrdir)/ruby/internal/compiler_is.h +md5init.o: $(hdrdir)/ruby/internal/compiler_is/apple.h +md5init.o: $(hdrdir)/ruby/internal/compiler_is/clang.h +md5init.o: $(hdrdir)/ruby/internal/compiler_is/gcc.h +md5init.o: $(hdrdir)/ruby/internal/compiler_is/intel.h +md5init.o: $(hdrdir)/ruby/internal/compiler_is/msvc.h +md5init.o: $(hdrdir)/ruby/internal/compiler_is/sunpro.h +md5init.o: $(hdrdir)/ruby/internal/compiler_since.h +md5init.o: $(hdrdir)/ruby/internal/config.h +md5init.o: $(hdrdir)/ruby/internal/constant_p.h +md5init.o: $(hdrdir)/ruby/internal/core.h +md5init.o: $(hdrdir)/ruby/internal/core/rarray.h +md5init.o: $(hdrdir)/ruby/internal/core/rbasic.h +md5init.o: $(hdrdir)/ruby/internal/core/rbignum.h +md5init.o: $(hdrdir)/ruby/internal/core/rclass.h +md5init.o: $(hdrdir)/ruby/internal/core/rdata.h +md5init.o: $(hdrdir)/ruby/internal/core/rfile.h +md5init.o: $(hdrdir)/ruby/internal/core/rhash.h +md5init.o: $(hdrdir)/ruby/internal/core/robject.h +md5init.o: $(hdrdir)/ruby/internal/core/rregexp.h +md5init.o: $(hdrdir)/ruby/internal/core/rstring.h +md5init.o: $(hdrdir)/ruby/internal/core/rstruct.h +md5init.o: $(hdrdir)/ruby/internal/core/rtypeddata.h +md5init.o: $(hdrdir)/ruby/internal/ctype.h +md5init.o: $(hdrdir)/ruby/internal/dllexport.h +md5init.o: $(hdrdir)/ruby/internal/dosish.h +md5init.o: $(hdrdir)/ruby/internal/error.h +md5init.o: $(hdrdir)/ruby/internal/eval.h +md5init.o: $(hdrdir)/ruby/internal/event.h +md5init.o: $(hdrdir)/ruby/internal/fl_type.h +md5init.o: $(hdrdir)/ruby/internal/gc.h +md5init.o: $(hdrdir)/ruby/internal/glob.h +md5init.o: $(hdrdir)/ruby/internal/globals.h +md5init.o: $(hdrdir)/ruby/internal/has/attribute.h +md5init.o: $(hdrdir)/ruby/internal/has/builtin.h +md5init.o: $(hdrdir)/ruby/internal/has/c_attribute.h +md5init.o: $(hdrdir)/ruby/internal/has/cpp_attribute.h +md5init.o: $(hdrdir)/ruby/internal/has/declspec_attribute.h +md5init.o: $(hdrdir)/ruby/internal/has/extension.h +md5init.o: $(hdrdir)/ruby/internal/has/feature.h +md5init.o: $(hdrdir)/ruby/internal/has/warning.h +md5init.o: $(hdrdir)/ruby/internal/intern/array.h +md5init.o: $(hdrdir)/ruby/internal/intern/bignum.h +md5init.o: $(hdrdir)/ruby/internal/intern/class.h +md5init.o: $(hdrdir)/ruby/internal/intern/compar.h +md5init.o: $(hdrdir)/ruby/internal/intern/complex.h +md5init.o: $(hdrdir)/ruby/internal/intern/cont.h +md5init.o: $(hdrdir)/ruby/internal/intern/dir.h +md5init.o: $(hdrdir)/ruby/internal/intern/enum.h +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/hash.h +md5init.o: $(hdrdir)/ruby/internal/intern/io.h +md5init.o: $(hdrdir)/ruby/internal/intern/load.h +md5init.o: $(hdrdir)/ruby/internal/intern/marshal.h +md5init.o: $(hdrdir)/ruby/internal/intern/numeric.h +md5init.o: $(hdrdir)/ruby/internal/intern/object.h +md5init.o: $(hdrdir)/ruby/internal/intern/parse.h +md5init.o: $(hdrdir)/ruby/internal/intern/proc.h +md5init.o: $(hdrdir)/ruby/internal/intern/process.h +md5init.o: $(hdrdir)/ruby/internal/intern/random.h +md5init.o: $(hdrdir)/ruby/internal/intern/range.h +md5init.o: $(hdrdir)/ruby/internal/intern/rational.h +md5init.o: $(hdrdir)/ruby/internal/intern/re.h +md5init.o: $(hdrdir)/ruby/internal/intern/ruby.h +md5init.o: $(hdrdir)/ruby/internal/intern/select.h +md5init.o: $(hdrdir)/ruby/internal/intern/select/largesize.h +md5init.o: $(hdrdir)/ruby/internal/intern/set.h +md5init.o: $(hdrdir)/ruby/internal/intern/signal.h +md5init.o: $(hdrdir)/ruby/internal/intern/sprintf.h +md5init.o: $(hdrdir)/ruby/internal/intern/string.h +md5init.o: $(hdrdir)/ruby/internal/intern/struct.h +md5init.o: $(hdrdir)/ruby/internal/intern/thread.h +md5init.o: $(hdrdir)/ruby/internal/intern/time.h +md5init.o: $(hdrdir)/ruby/internal/intern/variable.h +md5init.o: $(hdrdir)/ruby/internal/intern/vm.h +md5init.o: $(hdrdir)/ruby/internal/interpreter.h +md5init.o: $(hdrdir)/ruby/internal/iterator.h +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/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 +md5init.o: $(hdrdir)/ruby/internal/variable.h +md5init.o: $(hdrdir)/ruby/internal/warning_push.h +md5init.o: $(hdrdir)/ruby/internal/xmalloc.h md5init.o: $(hdrdir)/ruby/missing.h md5init.o: $(hdrdir)/ruby/ruby.h md5init.o: $(hdrdir)/ruby/st.h md5init.o: $(hdrdir)/ruby/subst.h -md5init.o: $(top_srcdir)/ext/digest/digest.h -md5init.o: $(top_srcdir)/include/ruby.h +md5init.o: $(srcdir)/../defs.h +md5init.o: $(srcdir)/../digest.h +md5init.o: md5.h +md5init.o: md5cc.h md5init.o: md5init.c -md5init.o: md5ossl.h -md5ossl.o: md5ossl.c -md5ossl.o: md5ossl.h # AUTOGENERATED DEPENDENCIES END diff --git a/ext/digest/md5/extconf.rb b/ext/digest/md5/extconf.rb index 5140325b8f..01658e1b60 100644 --- a/ext/digest/md5/extconf.rb +++ b/ext/digest/md5/extconf.rb @@ -1,13 +1,11 @@ # -*- coding: us-ascii -*- +# frozen_string_literal: false # $RoughId: extconf.rb,v 1.3 2001/08/14 19:54:51 knu Exp $ # $Id$ require "mkmf" require File.expand_path("../../digest_conf", __FILE__) -$defs << "-DHAVE_CONFIG_H" -$INCFLAGS << " -I$(srcdir)/.." - $objs = [ "md5init.#{$OBJEXT}" ] digest_conf("md5") diff --git a/ext/digest/md5/md5.c b/ext/digest/md5/md5.c index 19fe54a693..3a7fe2cdad 100644 --- a/ext/digest/md5/md5.c +++ b/ext/digest/md5/md5.c @@ -225,7 +225,7 @@ md5_process(MD5_CTX *pms, const uint8_t *data /*[64]*/) uint32_t xbuf[16]; const uint32_t *X; - if (!((data - (const uint8_t *)0) & 3)) { + if (!(((uintptr_t)data) & 3)) { /* data are properly aligned */ X = (const uint32_t *)data; } else { diff --git a/ext/digest/md5/md5.h b/ext/digest/md5/md5.h index a0faa25e48..1b3383c5ee 100644 --- a/ext/digest/md5/md5.h +++ b/ext/digest/md5/md5.h @@ -46,7 +46,7 @@ #ifndef MD5_INCLUDED # define MD5_INCLUDED -#include "defs.h" +#include "../defs.h" /* * This code has some adaptations for the Ghostscript environment, but it diff --git a/ext/digest/md5/md5cc.h b/ext/digest/md5/md5cc.h index 63a7ae9d67..a002c17604 100644 --- a/ext/digest/md5/md5cc.h +++ b/ext/digest/md5/md5cc.h @@ -1,12 +1,27 @@ #define COMMON_DIGEST_FOR_OPENSSL 1 #include <CommonCrypto/CommonDigest.h> +#ifdef __GNUC__ +RB_DIGEST_WARNING_IGNORED(-Wdeprecated-declarations) +/* Suppress deprecation warnings of MD5 from Xcode 11.1 */ +/* Although we know MD5 is deprecated too, provide just for backward + * compatibility, as well as Apple does. */ +#endif + #define MD5_BLOCK_LENGTH CC_MD5_BLOCK_BYTES -static DEFINE_UPDATE_FUNC_FOR_UINT(MD5); -static DEFINE_FINISH_FUNC_FROM_FINAL(MD5); +static DEFINE_UPDATE_FUNC_FOR_UINT(MD5) +static DEFINE_FINISH_FUNC_FROM_FINAL(MD5) #undef MD5_Update #undef MD5_Finish #define MD5_Update rb_digest_MD5_update #define MD5_Finish rb_digest_MD5_finish + +/* + * Pre-10.6 defines are with args, which don't match the argless use in + * the function pointer inits. Thus, we redefine MD5_Init as well. + * This is a NOP on 10.6+. + */ +#undef MD5_Init +#define MD5_Init CC_MD5_Init diff --git a/ext/digest/md5/md5init.c b/ext/digest/md5/md5init.c index bcd332d648..c919060587 100644 --- a/ext/digest/md5/md5init.c +++ b/ext/digest/md5/md5init.c @@ -1,10 +1,10 @@ /* $RoughId: md5init.c,v 1.2 2001/07/13 19:49:10 knu Exp $ */ /* $Id$ */ -#include "digest.h" -#if defined(MD5_USE_OPENSSL) -#include "md5ossl.h" -#elif defined(MD5_USE_COMMONDIGEST) +#include <ruby/ruby.h> +#include "../digest.h" +#include "../defs.h" +#if defined(MD5_USE_COMMONDIGEST) #include "md5cc.h" #else #include "md5.h" @@ -21,27 +21,41 @@ static const rb_digest_metadata_t md5 = { }; /* + * Document-class: Digest::MD5 < Digest::Base * A class for calculating message digests using the MD5 * Message-Digest Algorithm by RSA Data Security, Inc., described in * RFC1321. + * + * MD5 calculates a digest of 128 bits (16 bytes). + * + * == Examples + * require 'digest' + * + * # Compute a complete digest + * Digest::MD5.hexdigest 'abc' #=> "90015098..." + * + * # Compute digest by chunks + * md5 = Digest::MD5.new # =>#<Digest::MD5> + * md5.update "ab" + * md5 << "c" # alias for #update + * md5.hexdigest # => "90015098..." + * + * # Use the same object to compute another digest + * md5.reset + * md5 << "message" + * md5.hexdigest # => "78e73102..." */ void Init_md5(void) { VALUE mDigest, cDigest_Base, cDigest_MD5; - rb_require("digest"); - #if 0 mDigest = rb_define_module("Digest"); /* let rdoc know */ #endif - mDigest = rb_path2class("Digest"); - cDigest_Base = rb_path2class("Digest::Base"); + mDigest = rb_digest_namespace(); + cDigest_Base = rb_const_get(mDigest, rb_intern_const("Base")); cDigest_MD5 = rb_define_class_under(mDigest, "MD5", cDigest_Base); - -#undef RUBY_UNTYPED_DATA_WARNING -#define RUBY_UNTYPED_DATA_WARNING 0 - rb_iv_set(cDigest_MD5, "metadata", - Data_Wrap_Struct(0, 0, 0, (void *)&md5)); + rb_iv_set(cDigest_MD5, "metadata", rb_digest_make_metadata(&md5)); } diff --git a/ext/digest/md5/md5ossl.h b/ext/digest/md5/md5ossl.h deleted file mode 100644 index 2e9347ed94..0000000000 --- a/ext/digest/md5/md5ossl.h +++ /dev/null @@ -1,15 +0,0 @@ -/* $Id$ */ - -#ifndef MD5OSSL_H_INCLUDED -#define MD5OSSL_H_INCLUDED - -#include <stddef.h> -#include <openssl/md5.h> - -#define MD5_BLOCK_LENGTH MD5_CBLOCK - -static DEFINE_FINISH_FUNC_FROM_FINAL(MD5); -#undef MD5_Finish -#define MD5_Finish rb_digest_MD5_finish - -#endif diff --git a/ext/digest/rmd160/depend b/ext/digest/rmd160/depend index 49cf2afc6f..aec484f7b3 100644 --- a/ext/digest/rmd160/depend +++ b/ext/digest/rmd160/depend @@ -1,28 +1,332 @@ -rmd160.o: rmd160.c rmd160.h $(srcdir)/../defs.h $(HDRS) $(ruby_headers) +rmd160.o: rmd160.c rmd160.h $(srcdir)/../defs.h +rmd160init.o: $(LOCAL_HDRS) # AUTOGENERATED DEPENDENCIES START +rmd160.o: $(RUBY_EXTCONF_H) +rmd160.o: $(arch_hdrdir)/ruby/config.h +rmd160.o: $(hdrdir)/ruby.h +rmd160.o: $(hdrdir)/ruby/assert.h +rmd160.o: $(hdrdir)/ruby/backward.h +rmd160.o: $(hdrdir)/ruby/backward/2/assume.h +rmd160.o: $(hdrdir)/ruby/backward/2/attributes.h +rmd160.o: $(hdrdir)/ruby/backward/2/bool.h +rmd160.o: $(hdrdir)/ruby/backward/2/inttypes.h +rmd160.o: $(hdrdir)/ruby/backward/2/limits.h +rmd160.o: $(hdrdir)/ruby/backward/2/long_long.h +rmd160.o: $(hdrdir)/ruby/backward/2/stdalign.h +rmd160.o: $(hdrdir)/ruby/backward/2/stdarg.h +rmd160.o: $(hdrdir)/ruby/defines.h +rmd160.o: $(hdrdir)/ruby/intern.h +rmd160.o: $(hdrdir)/ruby/internal/abi.h +rmd160.o: $(hdrdir)/ruby/internal/anyargs.h +rmd160.o: $(hdrdir)/ruby/internal/arithmetic.h +rmd160.o: $(hdrdir)/ruby/internal/arithmetic/char.h +rmd160.o: $(hdrdir)/ruby/internal/arithmetic/double.h +rmd160.o: $(hdrdir)/ruby/internal/arithmetic/fixnum.h +rmd160.o: $(hdrdir)/ruby/internal/arithmetic/gid_t.h +rmd160.o: $(hdrdir)/ruby/internal/arithmetic/int.h +rmd160.o: $(hdrdir)/ruby/internal/arithmetic/intptr_t.h +rmd160.o: $(hdrdir)/ruby/internal/arithmetic/long.h +rmd160.o: $(hdrdir)/ruby/internal/arithmetic/long_long.h +rmd160.o: $(hdrdir)/ruby/internal/arithmetic/mode_t.h +rmd160.o: $(hdrdir)/ruby/internal/arithmetic/off_t.h +rmd160.o: $(hdrdir)/ruby/internal/arithmetic/pid_t.h +rmd160.o: $(hdrdir)/ruby/internal/arithmetic/short.h +rmd160.o: $(hdrdir)/ruby/internal/arithmetic/size_t.h +rmd160.o: $(hdrdir)/ruby/internal/arithmetic/st_data_t.h +rmd160.o: $(hdrdir)/ruby/internal/arithmetic/uid_t.h +rmd160.o: $(hdrdir)/ruby/internal/assume.h +rmd160.o: $(hdrdir)/ruby/internal/attr/alloc_size.h +rmd160.o: $(hdrdir)/ruby/internal/attr/artificial.h +rmd160.o: $(hdrdir)/ruby/internal/attr/cold.h +rmd160.o: $(hdrdir)/ruby/internal/attr/const.h +rmd160.o: $(hdrdir)/ruby/internal/attr/constexpr.h +rmd160.o: $(hdrdir)/ruby/internal/attr/deprecated.h +rmd160.o: $(hdrdir)/ruby/internal/attr/diagnose_if.h +rmd160.o: $(hdrdir)/ruby/internal/attr/enum_extensibility.h +rmd160.o: $(hdrdir)/ruby/internal/attr/error.h +rmd160.o: $(hdrdir)/ruby/internal/attr/flag_enum.h +rmd160.o: $(hdrdir)/ruby/internal/attr/forceinline.h +rmd160.o: $(hdrdir)/ruby/internal/attr/format.h +rmd160.o: $(hdrdir)/ruby/internal/attr/maybe_unused.h +rmd160.o: $(hdrdir)/ruby/internal/attr/noalias.h +rmd160.o: $(hdrdir)/ruby/internal/attr/nodiscard.h +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 +rmd160.o: $(hdrdir)/ruby/internal/attr/warning.h +rmd160.o: $(hdrdir)/ruby/internal/attr/weakref.h +rmd160.o: $(hdrdir)/ruby/internal/cast.h +rmd160.o: $(hdrdir)/ruby/internal/compiler_is.h +rmd160.o: $(hdrdir)/ruby/internal/compiler_is/apple.h +rmd160.o: $(hdrdir)/ruby/internal/compiler_is/clang.h +rmd160.o: $(hdrdir)/ruby/internal/compiler_is/gcc.h +rmd160.o: $(hdrdir)/ruby/internal/compiler_is/intel.h +rmd160.o: $(hdrdir)/ruby/internal/compiler_is/msvc.h +rmd160.o: $(hdrdir)/ruby/internal/compiler_is/sunpro.h +rmd160.o: $(hdrdir)/ruby/internal/compiler_since.h +rmd160.o: $(hdrdir)/ruby/internal/config.h +rmd160.o: $(hdrdir)/ruby/internal/constant_p.h +rmd160.o: $(hdrdir)/ruby/internal/core.h +rmd160.o: $(hdrdir)/ruby/internal/core/rarray.h +rmd160.o: $(hdrdir)/ruby/internal/core/rbasic.h +rmd160.o: $(hdrdir)/ruby/internal/core/rbignum.h +rmd160.o: $(hdrdir)/ruby/internal/core/rclass.h +rmd160.o: $(hdrdir)/ruby/internal/core/rdata.h +rmd160.o: $(hdrdir)/ruby/internal/core/rfile.h +rmd160.o: $(hdrdir)/ruby/internal/core/rhash.h +rmd160.o: $(hdrdir)/ruby/internal/core/robject.h +rmd160.o: $(hdrdir)/ruby/internal/core/rregexp.h +rmd160.o: $(hdrdir)/ruby/internal/core/rstring.h +rmd160.o: $(hdrdir)/ruby/internal/core/rstruct.h +rmd160.o: $(hdrdir)/ruby/internal/core/rtypeddata.h +rmd160.o: $(hdrdir)/ruby/internal/ctype.h +rmd160.o: $(hdrdir)/ruby/internal/dllexport.h +rmd160.o: $(hdrdir)/ruby/internal/dosish.h +rmd160.o: $(hdrdir)/ruby/internal/error.h +rmd160.o: $(hdrdir)/ruby/internal/eval.h +rmd160.o: $(hdrdir)/ruby/internal/event.h +rmd160.o: $(hdrdir)/ruby/internal/fl_type.h +rmd160.o: $(hdrdir)/ruby/internal/gc.h +rmd160.o: $(hdrdir)/ruby/internal/glob.h +rmd160.o: $(hdrdir)/ruby/internal/globals.h +rmd160.o: $(hdrdir)/ruby/internal/has/attribute.h +rmd160.o: $(hdrdir)/ruby/internal/has/builtin.h +rmd160.o: $(hdrdir)/ruby/internal/has/c_attribute.h +rmd160.o: $(hdrdir)/ruby/internal/has/cpp_attribute.h +rmd160.o: $(hdrdir)/ruby/internal/has/declspec_attribute.h +rmd160.o: $(hdrdir)/ruby/internal/has/extension.h +rmd160.o: $(hdrdir)/ruby/internal/has/feature.h +rmd160.o: $(hdrdir)/ruby/internal/has/warning.h +rmd160.o: $(hdrdir)/ruby/internal/intern/array.h +rmd160.o: $(hdrdir)/ruby/internal/intern/bignum.h +rmd160.o: $(hdrdir)/ruby/internal/intern/class.h +rmd160.o: $(hdrdir)/ruby/internal/intern/compar.h +rmd160.o: $(hdrdir)/ruby/internal/intern/complex.h +rmd160.o: $(hdrdir)/ruby/internal/intern/cont.h +rmd160.o: $(hdrdir)/ruby/internal/intern/dir.h +rmd160.o: $(hdrdir)/ruby/internal/intern/enum.h +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/hash.h +rmd160.o: $(hdrdir)/ruby/internal/intern/io.h +rmd160.o: $(hdrdir)/ruby/internal/intern/load.h +rmd160.o: $(hdrdir)/ruby/internal/intern/marshal.h +rmd160.o: $(hdrdir)/ruby/internal/intern/numeric.h +rmd160.o: $(hdrdir)/ruby/internal/intern/object.h +rmd160.o: $(hdrdir)/ruby/internal/intern/parse.h +rmd160.o: $(hdrdir)/ruby/internal/intern/proc.h +rmd160.o: $(hdrdir)/ruby/internal/intern/process.h +rmd160.o: $(hdrdir)/ruby/internal/intern/random.h +rmd160.o: $(hdrdir)/ruby/internal/intern/range.h +rmd160.o: $(hdrdir)/ruby/internal/intern/rational.h +rmd160.o: $(hdrdir)/ruby/internal/intern/re.h +rmd160.o: $(hdrdir)/ruby/internal/intern/ruby.h +rmd160.o: $(hdrdir)/ruby/internal/intern/select.h +rmd160.o: $(hdrdir)/ruby/internal/intern/select/largesize.h +rmd160.o: $(hdrdir)/ruby/internal/intern/set.h +rmd160.o: $(hdrdir)/ruby/internal/intern/signal.h +rmd160.o: $(hdrdir)/ruby/internal/intern/sprintf.h +rmd160.o: $(hdrdir)/ruby/internal/intern/string.h +rmd160.o: $(hdrdir)/ruby/internal/intern/struct.h +rmd160.o: $(hdrdir)/ruby/internal/intern/thread.h +rmd160.o: $(hdrdir)/ruby/internal/intern/time.h +rmd160.o: $(hdrdir)/ruby/internal/intern/variable.h +rmd160.o: $(hdrdir)/ruby/internal/intern/vm.h +rmd160.o: $(hdrdir)/ruby/internal/interpreter.h +rmd160.o: $(hdrdir)/ruby/internal/iterator.h +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/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 +rmd160.o: $(hdrdir)/ruby/internal/variable.h +rmd160.o: $(hdrdir)/ruby/internal/warning_push.h +rmd160.o: $(hdrdir)/ruby/internal/xmalloc.h +rmd160.o: $(hdrdir)/ruby/missing.h +rmd160.o: $(hdrdir)/ruby/ruby.h +rmd160.o: $(hdrdir)/ruby/st.h +rmd160.o: $(hdrdir)/ruby/subst.h +rmd160.o: $(srcdir)/../defs.h +rmd160.o: rmd160.c +rmd160.o: rmd160.h rmd160init.o: $(RUBY_EXTCONF_H) rmd160init.o: $(arch_hdrdir)/ruby/config.h +rmd160init.o: $(hdrdir)/ruby.h +rmd160init.o: $(hdrdir)/ruby/assert.h +rmd160init.o: $(hdrdir)/ruby/backward.h +rmd160init.o: $(hdrdir)/ruby/backward/2/assume.h +rmd160init.o: $(hdrdir)/ruby/backward/2/attributes.h +rmd160init.o: $(hdrdir)/ruby/backward/2/bool.h +rmd160init.o: $(hdrdir)/ruby/backward/2/inttypes.h +rmd160init.o: $(hdrdir)/ruby/backward/2/limits.h +rmd160init.o: $(hdrdir)/ruby/backward/2/long_long.h +rmd160init.o: $(hdrdir)/ruby/backward/2/stdalign.h +rmd160init.o: $(hdrdir)/ruby/backward/2/stdarg.h rmd160init.o: $(hdrdir)/ruby/defines.h rmd160init.o: $(hdrdir)/ruby/intern.h +rmd160init.o: $(hdrdir)/ruby/internal/abi.h +rmd160init.o: $(hdrdir)/ruby/internal/anyargs.h +rmd160init.o: $(hdrdir)/ruby/internal/arithmetic.h +rmd160init.o: $(hdrdir)/ruby/internal/arithmetic/char.h +rmd160init.o: $(hdrdir)/ruby/internal/arithmetic/double.h +rmd160init.o: $(hdrdir)/ruby/internal/arithmetic/fixnum.h +rmd160init.o: $(hdrdir)/ruby/internal/arithmetic/gid_t.h +rmd160init.o: $(hdrdir)/ruby/internal/arithmetic/int.h +rmd160init.o: $(hdrdir)/ruby/internal/arithmetic/intptr_t.h +rmd160init.o: $(hdrdir)/ruby/internal/arithmetic/long.h +rmd160init.o: $(hdrdir)/ruby/internal/arithmetic/long_long.h +rmd160init.o: $(hdrdir)/ruby/internal/arithmetic/mode_t.h +rmd160init.o: $(hdrdir)/ruby/internal/arithmetic/off_t.h +rmd160init.o: $(hdrdir)/ruby/internal/arithmetic/pid_t.h +rmd160init.o: $(hdrdir)/ruby/internal/arithmetic/short.h +rmd160init.o: $(hdrdir)/ruby/internal/arithmetic/size_t.h +rmd160init.o: $(hdrdir)/ruby/internal/arithmetic/st_data_t.h +rmd160init.o: $(hdrdir)/ruby/internal/arithmetic/uid_t.h +rmd160init.o: $(hdrdir)/ruby/internal/assume.h +rmd160init.o: $(hdrdir)/ruby/internal/attr/alloc_size.h +rmd160init.o: $(hdrdir)/ruby/internal/attr/artificial.h +rmd160init.o: $(hdrdir)/ruby/internal/attr/cold.h +rmd160init.o: $(hdrdir)/ruby/internal/attr/const.h +rmd160init.o: $(hdrdir)/ruby/internal/attr/constexpr.h +rmd160init.o: $(hdrdir)/ruby/internal/attr/deprecated.h +rmd160init.o: $(hdrdir)/ruby/internal/attr/diagnose_if.h +rmd160init.o: $(hdrdir)/ruby/internal/attr/enum_extensibility.h +rmd160init.o: $(hdrdir)/ruby/internal/attr/error.h +rmd160init.o: $(hdrdir)/ruby/internal/attr/flag_enum.h +rmd160init.o: $(hdrdir)/ruby/internal/attr/forceinline.h +rmd160init.o: $(hdrdir)/ruby/internal/attr/format.h +rmd160init.o: $(hdrdir)/ruby/internal/attr/maybe_unused.h +rmd160init.o: $(hdrdir)/ruby/internal/attr/noalias.h +rmd160init.o: $(hdrdir)/ruby/internal/attr/nodiscard.h +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 +rmd160init.o: $(hdrdir)/ruby/internal/attr/warning.h +rmd160init.o: $(hdrdir)/ruby/internal/attr/weakref.h +rmd160init.o: $(hdrdir)/ruby/internal/cast.h +rmd160init.o: $(hdrdir)/ruby/internal/compiler_is.h +rmd160init.o: $(hdrdir)/ruby/internal/compiler_is/apple.h +rmd160init.o: $(hdrdir)/ruby/internal/compiler_is/clang.h +rmd160init.o: $(hdrdir)/ruby/internal/compiler_is/gcc.h +rmd160init.o: $(hdrdir)/ruby/internal/compiler_is/intel.h +rmd160init.o: $(hdrdir)/ruby/internal/compiler_is/msvc.h +rmd160init.o: $(hdrdir)/ruby/internal/compiler_is/sunpro.h +rmd160init.o: $(hdrdir)/ruby/internal/compiler_since.h +rmd160init.o: $(hdrdir)/ruby/internal/config.h +rmd160init.o: $(hdrdir)/ruby/internal/constant_p.h +rmd160init.o: $(hdrdir)/ruby/internal/core.h +rmd160init.o: $(hdrdir)/ruby/internal/core/rarray.h +rmd160init.o: $(hdrdir)/ruby/internal/core/rbasic.h +rmd160init.o: $(hdrdir)/ruby/internal/core/rbignum.h +rmd160init.o: $(hdrdir)/ruby/internal/core/rclass.h +rmd160init.o: $(hdrdir)/ruby/internal/core/rdata.h +rmd160init.o: $(hdrdir)/ruby/internal/core/rfile.h +rmd160init.o: $(hdrdir)/ruby/internal/core/rhash.h +rmd160init.o: $(hdrdir)/ruby/internal/core/robject.h +rmd160init.o: $(hdrdir)/ruby/internal/core/rregexp.h +rmd160init.o: $(hdrdir)/ruby/internal/core/rstring.h +rmd160init.o: $(hdrdir)/ruby/internal/core/rstruct.h +rmd160init.o: $(hdrdir)/ruby/internal/core/rtypeddata.h +rmd160init.o: $(hdrdir)/ruby/internal/ctype.h +rmd160init.o: $(hdrdir)/ruby/internal/dllexport.h +rmd160init.o: $(hdrdir)/ruby/internal/dosish.h +rmd160init.o: $(hdrdir)/ruby/internal/error.h +rmd160init.o: $(hdrdir)/ruby/internal/eval.h +rmd160init.o: $(hdrdir)/ruby/internal/event.h +rmd160init.o: $(hdrdir)/ruby/internal/fl_type.h +rmd160init.o: $(hdrdir)/ruby/internal/gc.h +rmd160init.o: $(hdrdir)/ruby/internal/glob.h +rmd160init.o: $(hdrdir)/ruby/internal/globals.h +rmd160init.o: $(hdrdir)/ruby/internal/has/attribute.h +rmd160init.o: $(hdrdir)/ruby/internal/has/builtin.h +rmd160init.o: $(hdrdir)/ruby/internal/has/c_attribute.h +rmd160init.o: $(hdrdir)/ruby/internal/has/cpp_attribute.h +rmd160init.o: $(hdrdir)/ruby/internal/has/declspec_attribute.h +rmd160init.o: $(hdrdir)/ruby/internal/has/extension.h +rmd160init.o: $(hdrdir)/ruby/internal/has/feature.h +rmd160init.o: $(hdrdir)/ruby/internal/has/warning.h +rmd160init.o: $(hdrdir)/ruby/internal/intern/array.h +rmd160init.o: $(hdrdir)/ruby/internal/intern/bignum.h +rmd160init.o: $(hdrdir)/ruby/internal/intern/class.h +rmd160init.o: $(hdrdir)/ruby/internal/intern/compar.h +rmd160init.o: $(hdrdir)/ruby/internal/intern/complex.h +rmd160init.o: $(hdrdir)/ruby/internal/intern/cont.h +rmd160init.o: $(hdrdir)/ruby/internal/intern/dir.h +rmd160init.o: $(hdrdir)/ruby/internal/intern/enum.h +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/hash.h +rmd160init.o: $(hdrdir)/ruby/internal/intern/io.h +rmd160init.o: $(hdrdir)/ruby/internal/intern/load.h +rmd160init.o: $(hdrdir)/ruby/internal/intern/marshal.h +rmd160init.o: $(hdrdir)/ruby/internal/intern/numeric.h +rmd160init.o: $(hdrdir)/ruby/internal/intern/object.h +rmd160init.o: $(hdrdir)/ruby/internal/intern/parse.h +rmd160init.o: $(hdrdir)/ruby/internal/intern/proc.h +rmd160init.o: $(hdrdir)/ruby/internal/intern/process.h +rmd160init.o: $(hdrdir)/ruby/internal/intern/random.h +rmd160init.o: $(hdrdir)/ruby/internal/intern/range.h +rmd160init.o: $(hdrdir)/ruby/internal/intern/rational.h +rmd160init.o: $(hdrdir)/ruby/internal/intern/re.h +rmd160init.o: $(hdrdir)/ruby/internal/intern/ruby.h +rmd160init.o: $(hdrdir)/ruby/internal/intern/select.h +rmd160init.o: $(hdrdir)/ruby/internal/intern/select/largesize.h +rmd160init.o: $(hdrdir)/ruby/internal/intern/set.h +rmd160init.o: $(hdrdir)/ruby/internal/intern/signal.h +rmd160init.o: $(hdrdir)/ruby/internal/intern/sprintf.h +rmd160init.o: $(hdrdir)/ruby/internal/intern/string.h +rmd160init.o: $(hdrdir)/ruby/internal/intern/struct.h +rmd160init.o: $(hdrdir)/ruby/internal/intern/thread.h +rmd160init.o: $(hdrdir)/ruby/internal/intern/time.h +rmd160init.o: $(hdrdir)/ruby/internal/intern/variable.h +rmd160init.o: $(hdrdir)/ruby/internal/intern/vm.h +rmd160init.o: $(hdrdir)/ruby/internal/interpreter.h +rmd160init.o: $(hdrdir)/ruby/internal/iterator.h +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/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 +rmd160init.o: $(hdrdir)/ruby/internal/variable.h +rmd160init.o: $(hdrdir)/ruby/internal/warning_push.h +rmd160init.o: $(hdrdir)/ruby/internal/xmalloc.h rmd160init.o: $(hdrdir)/ruby/missing.h rmd160init.o: $(hdrdir)/ruby/ruby.h rmd160init.o: $(hdrdir)/ruby/st.h rmd160init.o: $(hdrdir)/ruby/subst.h -rmd160init.o: $(top_srcdir)/ext/digest/digest.h -rmd160init.o: $(top_srcdir)/include/ruby.h +rmd160init.o: $(srcdir)/../defs.h +rmd160init.o: $(srcdir)/../digest.h +rmd160init.o: rmd160.h rmd160init.o: rmd160init.c -rmd160init.o: rmd160ossl.h -rmd160ossl.o: $(RUBY_EXTCONF_H) -rmd160ossl.o: $(arch_hdrdir)/ruby/config.h -rmd160ossl.o: $(hdrdir)/ruby/defines.h -rmd160ossl.o: $(hdrdir)/ruby/intern.h -rmd160ossl.o: $(hdrdir)/ruby/missing.h -rmd160ossl.o: $(hdrdir)/ruby/ruby.h -rmd160ossl.o: $(hdrdir)/ruby/st.h -rmd160ossl.o: $(hdrdir)/ruby/subst.h -rmd160ossl.o: $(top_srcdir)/ext/digest/defs.h -rmd160ossl.o: $(top_srcdir)/include/ruby.h -rmd160ossl.o: rmd160ossl.c -rmd160ossl.o: rmd160ossl.h # AUTOGENERATED DEPENDENCIES END diff --git a/ext/digest/rmd160/extconf.rb b/ext/digest/rmd160/extconf.rb index 49c26b0945..8b894da0c8 100644 --- a/ext/digest/rmd160/extconf.rb +++ b/ext/digest/rmd160/extconf.rb @@ -1,16 +1,18 @@ # -*- coding: us-ascii -*- +# frozen_string_literal: false # $RoughId: extconf.rb,v 1.3 2001/08/14 19:54:51 knu Exp $ # $Id$ require "mkmf" require File.expand_path("../../digest_conf", __FILE__) -$defs << "-DNDEBUG" << "-DHAVE_CONFIG_H" -$INCFLAGS << " -I$(srcdir)/.." +if try_static_assert("RUBY_API_VERSION_MAJOR < 3", "ruby/version.h") + $defs << "-DNDEBUG" +end $objs = [ "rmd160init.#{$OBJEXT}" ] -digest_conf("rmd160", "ripemd", "RIPEMD160") +digest_conf("rmd160") have_header("sys/cdefs.h") diff --git a/ext/digest/rmd160/rmd160.h b/ext/digest/rmd160/rmd160.h index 098fa05a88..6324709d96 100644 --- a/ext/digest/rmd160/rmd160.h +++ b/ext/digest/rmd160/rmd160.h @@ -26,7 +26,7 @@ #ifndef _RMD160_H_ #define _RMD160_H_ -#include "defs.h" +#include "../defs.h" typedef struct { uint32_t state[5]; /* state (ABCDE) */ diff --git a/ext/digest/rmd160/rmd160init.c b/ext/digest/rmd160/rmd160init.c index 7aa835ddfc..e4b707ed9e 100644 --- a/ext/digest/rmd160/rmd160init.c +++ b/ext/digest/rmd160/rmd160init.c @@ -1,12 +1,9 @@ /* $RoughId: rmd160init.c,v 1.3 2001/07/13 20:00:43 knu Exp $ */ /* $Id$ */ -#include "digest.h" -#if defined(RMD160_USE_OPENSSL) -#include "rmd160ossl.h" -#else +#include <ruby/ruby.h> +#include "../digest.h" #include "rmd160.h" -#endif static const rb_digest_metadata_t rmd160 = { RUBY_DIGEST_API_VERSION, @@ -19,27 +16,41 @@ static const rb_digest_metadata_t rmd160 = { }; /* + * Document-class: Digest::RMD160 < Digest::Base * A class for calculating message digests using RIPEMD-160 * cryptographic hash function, designed by Hans Dobbertin, Antoon * Bosselaers, and Bart Preneel. + * + * RMD160 calculates a digest of 160 bits (20 bytes). + * + * == Examples + * require 'digest' + * + * # Compute a complete digest + * Digest::RMD160.hexdigest 'abc' #=> "8eb208f7..." + * + * # Compute digest by chunks + * rmd160 = Digest::RMD160.new # =>#<Digest::RMD160> + * rmd160.update "ab" + * rmd160 << "c" # alias for #update + * rmd160.hexdigest # => "8eb208f7..." + * + * # Use the same object to compute another digest + * rmd160.reset + * rmd160 << "message" + * rmd160.hexdigest # => "1dddbe1b..." */ void Init_rmd160(void) { VALUE mDigest, cDigest_Base, cDigest_RMD160; - rb_require("digest"); - #if 0 mDigest = rb_define_module("Digest"); /* let rdoc know */ #endif - mDigest = rb_path2class("Digest"); - cDigest_Base = rb_path2class("Digest::Base"); + mDigest = rb_digest_namespace(); + cDigest_Base = rb_const_get(mDigest, rb_intern_const("Base")); cDigest_RMD160 = rb_define_class_under(mDigest, "RMD160", cDigest_Base); - -#undef RUBY_UNTYPED_DATA_WARNING -#define RUBY_UNTYPED_DATA_WARNING 0 - rb_iv_set(cDigest_RMD160, "metadata", - Data_Wrap_Struct(0, 0, 0, (void *)&rmd160)); + rb_iv_set(cDigest_RMD160, "metadata", rb_digest_make_metadata(&rmd160)); } diff --git a/ext/digest/rmd160/rmd160ossl.h b/ext/digest/rmd160/rmd160ossl.h deleted file mode 100644 index e6bf5ea8d0..0000000000 --- a/ext/digest/rmd160/rmd160ossl.h +++ /dev/null @@ -1,20 +0,0 @@ -/* $Id$ */ - -#ifndef RMD160OSSL_H_INCLUDED -#define RMD160OSSL_H_INCLUDED - -#include <stddef.h> -#include <openssl/ripemd.h> - -#define RMD160_CTX RIPEMD160_CTX - -#define RMD160_Init RIPEMD160_Init -#define RMD160_Update RIPEMD160_Update - -#define RMD160_BLOCK_LENGTH RIPEMD160_CBLOCK -#define RMD160_DIGEST_LENGTH RIPEMD160_DIGEST_LENGTH - -static DEFINE_FINISH_FUNC_FROM_FINAL(RIPEMD160) -#define RMD160_Finish rb_digest_RIPEMD160_finish - -#endif diff --git a/ext/digest/sha1/depend b/ext/digest/sha1/depend index 2ce73c4238..e6bd9d8f73 100644 --- a/ext/digest/sha1/depend +++ b/ext/digest/sha1/depend @@ -1,28 +1,333 @@ sha1.o: sha1.c sha1.h $(srcdir)/../defs.h +sha1init.o: $(LOCAL_HDRS) # AUTOGENERATED DEPENDENCIES START +sha1.o: $(RUBY_EXTCONF_H) +sha1.o: $(arch_hdrdir)/ruby/config.h +sha1.o: $(hdrdir)/ruby.h +sha1.o: $(hdrdir)/ruby/assert.h +sha1.o: $(hdrdir)/ruby/backward.h +sha1.o: $(hdrdir)/ruby/backward/2/assume.h +sha1.o: $(hdrdir)/ruby/backward/2/attributes.h +sha1.o: $(hdrdir)/ruby/backward/2/bool.h +sha1.o: $(hdrdir)/ruby/backward/2/inttypes.h +sha1.o: $(hdrdir)/ruby/backward/2/limits.h +sha1.o: $(hdrdir)/ruby/backward/2/long_long.h +sha1.o: $(hdrdir)/ruby/backward/2/stdalign.h +sha1.o: $(hdrdir)/ruby/backward/2/stdarg.h +sha1.o: $(hdrdir)/ruby/defines.h +sha1.o: $(hdrdir)/ruby/intern.h +sha1.o: $(hdrdir)/ruby/internal/abi.h +sha1.o: $(hdrdir)/ruby/internal/anyargs.h +sha1.o: $(hdrdir)/ruby/internal/arithmetic.h +sha1.o: $(hdrdir)/ruby/internal/arithmetic/char.h +sha1.o: $(hdrdir)/ruby/internal/arithmetic/double.h +sha1.o: $(hdrdir)/ruby/internal/arithmetic/fixnum.h +sha1.o: $(hdrdir)/ruby/internal/arithmetic/gid_t.h +sha1.o: $(hdrdir)/ruby/internal/arithmetic/int.h +sha1.o: $(hdrdir)/ruby/internal/arithmetic/intptr_t.h +sha1.o: $(hdrdir)/ruby/internal/arithmetic/long.h +sha1.o: $(hdrdir)/ruby/internal/arithmetic/long_long.h +sha1.o: $(hdrdir)/ruby/internal/arithmetic/mode_t.h +sha1.o: $(hdrdir)/ruby/internal/arithmetic/off_t.h +sha1.o: $(hdrdir)/ruby/internal/arithmetic/pid_t.h +sha1.o: $(hdrdir)/ruby/internal/arithmetic/short.h +sha1.o: $(hdrdir)/ruby/internal/arithmetic/size_t.h +sha1.o: $(hdrdir)/ruby/internal/arithmetic/st_data_t.h +sha1.o: $(hdrdir)/ruby/internal/arithmetic/uid_t.h +sha1.o: $(hdrdir)/ruby/internal/assume.h +sha1.o: $(hdrdir)/ruby/internal/attr/alloc_size.h +sha1.o: $(hdrdir)/ruby/internal/attr/artificial.h +sha1.o: $(hdrdir)/ruby/internal/attr/cold.h +sha1.o: $(hdrdir)/ruby/internal/attr/const.h +sha1.o: $(hdrdir)/ruby/internal/attr/constexpr.h +sha1.o: $(hdrdir)/ruby/internal/attr/deprecated.h +sha1.o: $(hdrdir)/ruby/internal/attr/diagnose_if.h +sha1.o: $(hdrdir)/ruby/internal/attr/enum_extensibility.h +sha1.o: $(hdrdir)/ruby/internal/attr/error.h +sha1.o: $(hdrdir)/ruby/internal/attr/flag_enum.h +sha1.o: $(hdrdir)/ruby/internal/attr/forceinline.h +sha1.o: $(hdrdir)/ruby/internal/attr/format.h +sha1.o: $(hdrdir)/ruby/internal/attr/maybe_unused.h +sha1.o: $(hdrdir)/ruby/internal/attr/noalias.h +sha1.o: $(hdrdir)/ruby/internal/attr/nodiscard.h +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 +sha1.o: $(hdrdir)/ruby/internal/attr/warning.h +sha1.o: $(hdrdir)/ruby/internal/attr/weakref.h +sha1.o: $(hdrdir)/ruby/internal/cast.h +sha1.o: $(hdrdir)/ruby/internal/compiler_is.h +sha1.o: $(hdrdir)/ruby/internal/compiler_is/apple.h +sha1.o: $(hdrdir)/ruby/internal/compiler_is/clang.h +sha1.o: $(hdrdir)/ruby/internal/compiler_is/gcc.h +sha1.o: $(hdrdir)/ruby/internal/compiler_is/intel.h +sha1.o: $(hdrdir)/ruby/internal/compiler_is/msvc.h +sha1.o: $(hdrdir)/ruby/internal/compiler_is/sunpro.h +sha1.o: $(hdrdir)/ruby/internal/compiler_since.h +sha1.o: $(hdrdir)/ruby/internal/config.h +sha1.o: $(hdrdir)/ruby/internal/constant_p.h +sha1.o: $(hdrdir)/ruby/internal/core.h +sha1.o: $(hdrdir)/ruby/internal/core/rarray.h +sha1.o: $(hdrdir)/ruby/internal/core/rbasic.h +sha1.o: $(hdrdir)/ruby/internal/core/rbignum.h +sha1.o: $(hdrdir)/ruby/internal/core/rclass.h +sha1.o: $(hdrdir)/ruby/internal/core/rdata.h +sha1.o: $(hdrdir)/ruby/internal/core/rfile.h +sha1.o: $(hdrdir)/ruby/internal/core/rhash.h +sha1.o: $(hdrdir)/ruby/internal/core/robject.h +sha1.o: $(hdrdir)/ruby/internal/core/rregexp.h +sha1.o: $(hdrdir)/ruby/internal/core/rstring.h +sha1.o: $(hdrdir)/ruby/internal/core/rstruct.h +sha1.o: $(hdrdir)/ruby/internal/core/rtypeddata.h +sha1.o: $(hdrdir)/ruby/internal/ctype.h +sha1.o: $(hdrdir)/ruby/internal/dllexport.h +sha1.o: $(hdrdir)/ruby/internal/dosish.h +sha1.o: $(hdrdir)/ruby/internal/error.h +sha1.o: $(hdrdir)/ruby/internal/eval.h +sha1.o: $(hdrdir)/ruby/internal/event.h +sha1.o: $(hdrdir)/ruby/internal/fl_type.h +sha1.o: $(hdrdir)/ruby/internal/gc.h +sha1.o: $(hdrdir)/ruby/internal/glob.h +sha1.o: $(hdrdir)/ruby/internal/globals.h +sha1.o: $(hdrdir)/ruby/internal/has/attribute.h +sha1.o: $(hdrdir)/ruby/internal/has/builtin.h +sha1.o: $(hdrdir)/ruby/internal/has/c_attribute.h +sha1.o: $(hdrdir)/ruby/internal/has/cpp_attribute.h +sha1.o: $(hdrdir)/ruby/internal/has/declspec_attribute.h +sha1.o: $(hdrdir)/ruby/internal/has/extension.h +sha1.o: $(hdrdir)/ruby/internal/has/feature.h +sha1.o: $(hdrdir)/ruby/internal/has/warning.h +sha1.o: $(hdrdir)/ruby/internal/intern/array.h +sha1.o: $(hdrdir)/ruby/internal/intern/bignum.h +sha1.o: $(hdrdir)/ruby/internal/intern/class.h +sha1.o: $(hdrdir)/ruby/internal/intern/compar.h +sha1.o: $(hdrdir)/ruby/internal/intern/complex.h +sha1.o: $(hdrdir)/ruby/internal/intern/cont.h +sha1.o: $(hdrdir)/ruby/internal/intern/dir.h +sha1.o: $(hdrdir)/ruby/internal/intern/enum.h +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/hash.h +sha1.o: $(hdrdir)/ruby/internal/intern/io.h +sha1.o: $(hdrdir)/ruby/internal/intern/load.h +sha1.o: $(hdrdir)/ruby/internal/intern/marshal.h +sha1.o: $(hdrdir)/ruby/internal/intern/numeric.h +sha1.o: $(hdrdir)/ruby/internal/intern/object.h +sha1.o: $(hdrdir)/ruby/internal/intern/parse.h +sha1.o: $(hdrdir)/ruby/internal/intern/proc.h +sha1.o: $(hdrdir)/ruby/internal/intern/process.h +sha1.o: $(hdrdir)/ruby/internal/intern/random.h +sha1.o: $(hdrdir)/ruby/internal/intern/range.h +sha1.o: $(hdrdir)/ruby/internal/intern/rational.h +sha1.o: $(hdrdir)/ruby/internal/intern/re.h +sha1.o: $(hdrdir)/ruby/internal/intern/ruby.h +sha1.o: $(hdrdir)/ruby/internal/intern/select.h +sha1.o: $(hdrdir)/ruby/internal/intern/select/largesize.h +sha1.o: $(hdrdir)/ruby/internal/intern/set.h +sha1.o: $(hdrdir)/ruby/internal/intern/signal.h +sha1.o: $(hdrdir)/ruby/internal/intern/sprintf.h +sha1.o: $(hdrdir)/ruby/internal/intern/string.h +sha1.o: $(hdrdir)/ruby/internal/intern/struct.h +sha1.o: $(hdrdir)/ruby/internal/intern/thread.h +sha1.o: $(hdrdir)/ruby/internal/intern/time.h +sha1.o: $(hdrdir)/ruby/internal/intern/variable.h +sha1.o: $(hdrdir)/ruby/internal/intern/vm.h +sha1.o: $(hdrdir)/ruby/internal/interpreter.h +sha1.o: $(hdrdir)/ruby/internal/iterator.h +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/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 +sha1.o: $(hdrdir)/ruby/internal/variable.h +sha1.o: $(hdrdir)/ruby/internal/warning_push.h +sha1.o: $(hdrdir)/ruby/internal/xmalloc.h +sha1.o: $(hdrdir)/ruby/missing.h +sha1.o: $(hdrdir)/ruby/ruby.h +sha1.o: $(hdrdir)/ruby/st.h +sha1.o: $(hdrdir)/ruby/subst.h +sha1.o: $(srcdir)/../defs.h +sha1.o: sha1.c +sha1.o: sha1.h sha1init.o: $(RUBY_EXTCONF_H) sha1init.o: $(arch_hdrdir)/ruby/config.h +sha1init.o: $(hdrdir)/ruby.h +sha1init.o: $(hdrdir)/ruby/assert.h +sha1init.o: $(hdrdir)/ruby/backward.h +sha1init.o: $(hdrdir)/ruby/backward/2/assume.h +sha1init.o: $(hdrdir)/ruby/backward/2/attributes.h +sha1init.o: $(hdrdir)/ruby/backward/2/bool.h +sha1init.o: $(hdrdir)/ruby/backward/2/inttypes.h +sha1init.o: $(hdrdir)/ruby/backward/2/limits.h +sha1init.o: $(hdrdir)/ruby/backward/2/long_long.h +sha1init.o: $(hdrdir)/ruby/backward/2/stdalign.h +sha1init.o: $(hdrdir)/ruby/backward/2/stdarg.h sha1init.o: $(hdrdir)/ruby/defines.h sha1init.o: $(hdrdir)/ruby/intern.h +sha1init.o: $(hdrdir)/ruby/internal/abi.h +sha1init.o: $(hdrdir)/ruby/internal/anyargs.h +sha1init.o: $(hdrdir)/ruby/internal/arithmetic.h +sha1init.o: $(hdrdir)/ruby/internal/arithmetic/char.h +sha1init.o: $(hdrdir)/ruby/internal/arithmetic/double.h +sha1init.o: $(hdrdir)/ruby/internal/arithmetic/fixnum.h +sha1init.o: $(hdrdir)/ruby/internal/arithmetic/gid_t.h +sha1init.o: $(hdrdir)/ruby/internal/arithmetic/int.h +sha1init.o: $(hdrdir)/ruby/internal/arithmetic/intptr_t.h +sha1init.o: $(hdrdir)/ruby/internal/arithmetic/long.h +sha1init.o: $(hdrdir)/ruby/internal/arithmetic/long_long.h +sha1init.o: $(hdrdir)/ruby/internal/arithmetic/mode_t.h +sha1init.o: $(hdrdir)/ruby/internal/arithmetic/off_t.h +sha1init.o: $(hdrdir)/ruby/internal/arithmetic/pid_t.h +sha1init.o: $(hdrdir)/ruby/internal/arithmetic/short.h +sha1init.o: $(hdrdir)/ruby/internal/arithmetic/size_t.h +sha1init.o: $(hdrdir)/ruby/internal/arithmetic/st_data_t.h +sha1init.o: $(hdrdir)/ruby/internal/arithmetic/uid_t.h +sha1init.o: $(hdrdir)/ruby/internal/assume.h +sha1init.o: $(hdrdir)/ruby/internal/attr/alloc_size.h +sha1init.o: $(hdrdir)/ruby/internal/attr/artificial.h +sha1init.o: $(hdrdir)/ruby/internal/attr/cold.h +sha1init.o: $(hdrdir)/ruby/internal/attr/const.h +sha1init.o: $(hdrdir)/ruby/internal/attr/constexpr.h +sha1init.o: $(hdrdir)/ruby/internal/attr/deprecated.h +sha1init.o: $(hdrdir)/ruby/internal/attr/diagnose_if.h +sha1init.o: $(hdrdir)/ruby/internal/attr/enum_extensibility.h +sha1init.o: $(hdrdir)/ruby/internal/attr/error.h +sha1init.o: $(hdrdir)/ruby/internal/attr/flag_enum.h +sha1init.o: $(hdrdir)/ruby/internal/attr/forceinline.h +sha1init.o: $(hdrdir)/ruby/internal/attr/format.h +sha1init.o: $(hdrdir)/ruby/internal/attr/maybe_unused.h +sha1init.o: $(hdrdir)/ruby/internal/attr/noalias.h +sha1init.o: $(hdrdir)/ruby/internal/attr/nodiscard.h +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 +sha1init.o: $(hdrdir)/ruby/internal/attr/warning.h +sha1init.o: $(hdrdir)/ruby/internal/attr/weakref.h +sha1init.o: $(hdrdir)/ruby/internal/cast.h +sha1init.o: $(hdrdir)/ruby/internal/compiler_is.h +sha1init.o: $(hdrdir)/ruby/internal/compiler_is/apple.h +sha1init.o: $(hdrdir)/ruby/internal/compiler_is/clang.h +sha1init.o: $(hdrdir)/ruby/internal/compiler_is/gcc.h +sha1init.o: $(hdrdir)/ruby/internal/compiler_is/intel.h +sha1init.o: $(hdrdir)/ruby/internal/compiler_is/msvc.h +sha1init.o: $(hdrdir)/ruby/internal/compiler_is/sunpro.h +sha1init.o: $(hdrdir)/ruby/internal/compiler_since.h +sha1init.o: $(hdrdir)/ruby/internal/config.h +sha1init.o: $(hdrdir)/ruby/internal/constant_p.h +sha1init.o: $(hdrdir)/ruby/internal/core.h +sha1init.o: $(hdrdir)/ruby/internal/core/rarray.h +sha1init.o: $(hdrdir)/ruby/internal/core/rbasic.h +sha1init.o: $(hdrdir)/ruby/internal/core/rbignum.h +sha1init.o: $(hdrdir)/ruby/internal/core/rclass.h +sha1init.o: $(hdrdir)/ruby/internal/core/rdata.h +sha1init.o: $(hdrdir)/ruby/internal/core/rfile.h +sha1init.o: $(hdrdir)/ruby/internal/core/rhash.h +sha1init.o: $(hdrdir)/ruby/internal/core/robject.h +sha1init.o: $(hdrdir)/ruby/internal/core/rregexp.h +sha1init.o: $(hdrdir)/ruby/internal/core/rstring.h +sha1init.o: $(hdrdir)/ruby/internal/core/rstruct.h +sha1init.o: $(hdrdir)/ruby/internal/core/rtypeddata.h +sha1init.o: $(hdrdir)/ruby/internal/ctype.h +sha1init.o: $(hdrdir)/ruby/internal/dllexport.h +sha1init.o: $(hdrdir)/ruby/internal/dosish.h +sha1init.o: $(hdrdir)/ruby/internal/error.h +sha1init.o: $(hdrdir)/ruby/internal/eval.h +sha1init.o: $(hdrdir)/ruby/internal/event.h +sha1init.o: $(hdrdir)/ruby/internal/fl_type.h +sha1init.o: $(hdrdir)/ruby/internal/gc.h +sha1init.o: $(hdrdir)/ruby/internal/glob.h +sha1init.o: $(hdrdir)/ruby/internal/globals.h +sha1init.o: $(hdrdir)/ruby/internal/has/attribute.h +sha1init.o: $(hdrdir)/ruby/internal/has/builtin.h +sha1init.o: $(hdrdir)/ruby/internal/has/c_attribute.h +sha1init.o: $(hdrdir)/ruby/internal/has/cpp_attribute.h +sha1init.o: $(hdrdir)/ruby/internal/has/declspec_attribute.h +sha1init.o: $(hdrdir)/ruby/internal/has/extension.h +sha1init.o: $(hdrdir)/ruby/internal/has/feature.h +sha1init.o: $(hdrdir)/ruby/internal/has/warning.h +sha1init.o: $(hdrdir)/ruby/internal/intern/array.h +sha1init.o: $(hdrdir)/ruby/internal/intern/bignum.h +sha1init.o: $(hdrdir)/ruby/internal/intern/class.h +sha1init.o: $(hdrdir)/ruby/internal/intern/compar.h +sha1init.o: $(hdrdir)/ruby/internal/intern/complex.h +sha1init.o: $(hdrdir)/ruby/internal/intern/cont.h +sha1init.o: $(hdrdir)/ruby/internal/intern/dir.h +sha1init.o: $(hdrdir)/ruby/internal/intern/enum.h +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/hash.h +sha1init.o: $(hdrdir)/ruby/internal/intern/io.h +sha1init.o: $(hdrdir)/ruby/internal/intern/load.h +sha1init.o: $(hdrdir)/ruby/internal/intern/marshal.h +sha1init.o: $(hdrdir)/ruby/internal/intern/numeric.h +sha1init.o: $(hdrdir)/ruby/internal/intern/object.h +sha1init.o: $(hdrdir)/ruby/internal/intern/parse.h +sha1init.o: $(hdrdir)/ruby/internal/intern/proc.h +sha1init.o: $(hdrdir)/ruby/internal/intern/process.h +sha1init.o: $(hdrdir)/ruby/internal/intern/random.h +sha1init.o: $(hdrdir)/ruby/internal/intern/range.h +sha1init.o: $(hdrdir)/ruby/internal/intern/rational.h +sha1init.o: $(hdrdir)/ruby/internal/intern/re.h +sha1init.o: $(hdrdir)/ruby/internal/intern/ruby.h +sha1init.o: $(hdrdir)/ruby/internal/intern/select.h +sha1init.o: $(hdrdir)/ruby/internal/intern/select/largesize.h +sha1init.o: $(hdrdir)/ruby/internal/intern/set.h +sha1init.o: $(hdrdir)/ruby/internal/intern/signal.h +sha1init.o: $(hdrdir)/ruby/internal/intern/sprintf.h +sha1init.o: $(hdrdir)/ruby/internal/intern/string.h +sha1init.o: $(hdrdir)/ruby/internal/intern/struct.h +sha1init.o: $(hdrdir)/ruby/internal/intern/thread.h +sha1init.o: $(hdrdir)/ruby/internal/intern/time.h +sha1init.o: $(hdrdir)/ruby/internal/intern/variable.h +sha1init.o: $(hdrdir)/ruby/internal/intern/vm.h +sha1init.o: $(hdrdir)/ruby/internal/interpreter.h +sha1init.o: $(hdrdir)/ruby/internal/iterator.h +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/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 +sha1init.o: $(hdrdir)/ruby/internal/variable.h +sha1init.o: $(hdrdir)/ruby/internal/warning_push.h +sha1init.o: $(hdrdir)/ruby/internal/xmalloc.h sha1init.o: $(hdrdir)/ruby/missing.h sha1init.o: $(hdrdir)/ruby/ruby.h sha1init.o: $(hdrdir)/ruby/st.h sha1init.o: $(hdrdir)/ruby/subst.h -sha1init.o: $(top_srcdir)/ext/digest/digest.h -sha1init.o: $(top_srcdir)/include/ruby.h +sha1init.o: $(srcdir)/../defs.h +sha1init.o: $(srcdir)/../digest.h +sha1init.o: sha1.h +sha1init.o: sha1cc.h sha1init.o: sha1init.c -sha1init.o: sha1ossl.h -sha1ossl.o: $(RUBY_EXTCONF_H) -sha1ossl.o: $(arch_hdrdir)/ruby/config.h -sha1ossl.o: $(hdrdir)/ruby/defines.h -sha1ossl.o: $(hdrdir)/ruby/intern.h -sha1ossl.o: $(hdrdir)/ruby/missing.h -sha1ossl.o: $(hdrdir)/ruby/ruby.h -sha1ossl.o: $(hdrdir)/ruby/st.h -sha1ossl.o: $(hdrdir)/ruby/subst.h -sha1ossl.o: $(top_srcdir)/ext/digest/defs.h -sha1ossl.o: $(top_srcdir)/include/ruby.h -sha1ossl.o: sha1ossl.c -sha1ossl.o: sha1ossl.h # AUTOGENERATED DEPENDENCIES END diff --git a/ext/digest/sha1/extconf.rb b/ext/digest/sha1/extconf.rb index 7528fb2de3..7582cd9ab5 100644 --- a/ext/digest/sha1/extconf.rb +++ b/ext/digest/sha1/extconf.rb @@ -1,16 +1,14 @@ # -*- coding: us-ascii -*- +# frozen_string_literal: false # $RoughId: extconf.rb,v 1.3 2001/08/14 19:54:51 knu Exp $ # $Id$ require "mkmf" require File.expand_path("../../digest_conf", __FILE__) -$defs << "-DHAVE_CONFIG_H" -$INCFLAGS << " -I$(srcdir)/.." - $objs = [ "sha1init.#{$OBJEXT}" ] -digest_conf("sha1", "sha") +digest_conf("sha1") have_header("sys/cdefs.h") diff --git a/ext/digest/sha1/sha1.c b/ext/digest/sha1/sha1.c index 5311227549..003c87d224 100644 --- a/ext/digest/sha1/sha1.c +++ b/ext/digest/sha1/sha1.c @@ -220,20 +220,28 @@ int SHA1_Init(SHA1_CTX *context) */ void SHA1_Update(SHA1_CTX *context, const uint8_t *data, size_t len) { - uint32_t i, j; + size_t i; + uint32_t j; _DIAGASSERT(context != 0); _DIAGASSERT(data != 0); j = context->count[0]; if ((context->count[0] += len << 3) < j) - context->count[1] += (len>>29)+1; + context->count[1]++; + context->count[1] += (uint32_t)(len >> 29); j = (j >> 3) & 63; if ((j + len) > 63) { (void)memcpy(&context->buffer[j], data, (i = 64-j)); SHA1_Transform(context->state, context->buffer); - for ( ; i + 63 < len; i += 64) + for ( ; i + 63 < len; i += 64) { + RB_DIGEST_WARNING_PUSH(); +#if defined(__GNUC__) && !defined(__clang__) && __GNUC__ >= 11 + RB_DIGEST_WARNING_IGNORED(-Wstringop-overread); +#endif SHA1_Transform(context->state, &data[i]); + RB_DIGEST_WARNING_POP(); + } j = 0; } else { i = 0; diff --git a/ext/digest/sha1/sha1.h b/ext/digest/sha1/sha1.h index 6f1c388cf2..2accc46d46 100644 --- a/ext/digest/sha1/sha1.h +++ b/ext/digest/sha1/sha1.h @@ -11,7 +11,7 @@ #ifndef _SYS_SHA1_H_ #define _SYS_SHA1_H_ -#include "defs.h" +#include "../defs.h" typedef struct { uint32_t state[5]; diff --git a/ext/digest/sha1/sha1cc.h b/ext/digest/sha1/sha1cc.h index 1376c49ec7..f39ecc6234 100644 --- a/ext/digest/sha1/sha1cc.h +++ b/ext/digest/sha1/sha1cc.h @@ -5,10 +5,18 @@ #define SHA1_DIGEST_LENGTH CC_SHA1_DIGEST_LENGTH #define SHA1_CTX CC_SHA1_CTX -static DEFINE_UPDATE_FUNC_FOR_UINT(SHA1); -static DEFINE_FINISH_FUNC_FROM_FINAL(SHA1); +static DEFINE_UPDATE_FUNC_FOR_UINT(SHA1) +static DEFINE_FINISH_FUNC_FROM_FINAL(SHA1) #undef SHA1_Update #undef SHA1_Finish #define SHA1_Update rb_digest_SHA1_update #define SHA1_Finish rb_digest_SHA1_finish + +/* + * Pre-10.6 defines are with args, which don't match the argless use in + * the function pointer inits. Thus, we redefine SHA1_Init as well. + * This is a NOP on 10.6+. + */ +#undef SHA1_Init +#define SHA1_Init CC_SHA1_Init diff --git a/ext/digest/sha1/sha1init.c b/ext/digest/sha1/sha1init.c index 1f0580883f..c39959f428 100644 --- a/ext/digest/sha1/sha1init.c +++ b/ext/digest/sha1/sha1init.c @@ -1,10 +1,9 @@ /* $RoughId: sha1init.c,v 1.2 2001/07/13 19:49:10 knu Exp $ */ /* $Id$ */ -#include "digest.h" -#if defined(SHA1_USE_OPENSSL) -#include "sha1ossl.h" -#elif defined(SHA1_USE_COMMONDIGEST) +#include <ruby/ruby.h> +#include "../digest.h" +#if defined(SHA1_USE_COMMONDIGEST) #include "sha1cc.h" #else #include "sha1.h" @@ -21,27 +20,43 @@ static const rb_digest_metadata_t sha1 = { }; /* + * Document-class: Digest::SHA1 < Digest::Base * A class for calculating message digests using the SHA-1 Secure Hash * Algorithm by NIST (the US' National Institute of Standards and * Technology), described in FIPS PUB 180-1. + * + * See Digest::Instance for digest API. + * + * SHA-1 calculates a digest of 160 bits (20 bytes). + * + * == Examples + * require 'digest' + * + * # Compute a complete digest + * Digest::SHA1.hexdigest 'abc' #=> "a9993e36..." + * + * # Compute digest by chunks + * sha1 = Digest::SHA1.new # =>#<Digest::SHA1> + * sha1.update "ab" + * sha1 << "c" # alias for #update + * sha1.hexdigest # => "a9993e36..." + * + * # Use the same object to compute another digest + * sha1.reset + * sha1 << "message" + * sha1.hexdigest # => "6f9b9af3..." */ void Init_sha1(void) { VALUE mDigest, cDigest_Base, cDigest_SHA1; - rb_require("digest"); - #if 0 mDigest = rb_define_module("Digest"); /* let rdoc know */ #endif - mDigest = rb_path2class("Digest"); - cDigest_Base = rb_path2class("Digest::Base"); + mDigest = rb_digest_namespace(); + cDigest_Base = rb_const_get(mDigest, rb_intern_const("Base")); cDigest_SHA1 = rb_define_class_under(mDigest, "SHA1", cDigest_Base); - -#undef RUBY_UNTYPED_DATA_WARNING -#define RUBY_UNTYPED_DATA_WARNING 0 - rb_iv_set(cDigest_SHA1, "metadata", - Data_Wrap_Struct(0, 0, 0, (void *)&sha1)); + rb_iv_set(cDigest_SHA1, "metadata", rb_digest_make_metadata(&sha1)); } diff --git a/ext/digest/sha1/sha1ossl.h b/ext/digest/sha1/sha1ossl.h deleted file mode 100644 index 80580b6460..0000000000 --- a/ext/digest/sha1/sha1ossl.h +++ /dev/null @@ -1,22 +0,0 @@ -/* $Id$ */ - -#ifndef SHA1OSSL_H_INCLUDED -#define SHA1OSSL_H_INCLUDED - -#include <stddef.h> -#include <openssl/sha.h> - -#define SHA1_CTX SHA_CTX - -#ifdef SHA_BLOCK_LENGTH -#define SHA1_BLOCK_LENGTH SHA_BLOCK_LENGTH -#else -#define SHA1_BLOCK_LENGTH SHA_CBLOCK -#endif -#define SHA1_DIGEST_LENGTH SHA_DIGEST_LENGTH - -static DEFINE_FINISH_FUNC_FROM_FINAL(SHA1); -#undef SHA1_Finish -#define SHA1_Finish rb_digest_SHA1_finish - -#endif diff --git a/ext/digest/sha2/depend b/ext/digest/sha2/depend index 3a47a76532..2b74776b3e 100644 --- a/ext/digest/sha2/depend +++ b/ext/digest/sha2/depend @@ -1,28 +1,332 @@ -sha2.o: sha2.c sha2.h $(srcdir)/../defs.h $(HDRS) $(ruby_headers) +sha2.o: sha2.c sha2.h $(srcdir)/../defs.h +sha2init.o: $(LOCAL_HDRS) # AUTOGENERATED DEPENDENCIES START +sha2.o: $(RUBY_EXTCONF_H) +sha2.o: $(arch_hdrdir)/ruby/config.h +sha2.o: $(hdrdir)/ruby.h +sha2.o: $(hdrdir)/ruby/assert.h +sha2.o: $(hdrdir)/ruby/backward.h +sha2.o: $(hdrdir)/ruby/backward/2/assume.h +sha2.o: $(hdrdir)/ruby/backward/2/attributes.h +sha2.o: $(hdrdir)/ruby/backward/2/bool.h +sha2.o: $(hdrdir)/ruby/backward/2/inttypes.h +sha2.o: $(hdrdir)/ruby/backward/2/limits.h +sha2.o: $(hdrdir)/ruby/backward/2/long_long.h +sha2.o: $(hdrdir)/ruby/backward/2/stdalign.h +sha2.o: $(hdrdir)/ruby/backward/2/stdarg.h +sha2.o: $(hdrdir)/ruby/defines.h +sha2.o: $(hdrdir)/ruby/intern.h +sha2.o: $(hdrdir)/ruby/internal/abi.h +sha2.o: $(hdrdir)/ruby/internal/anyargs.h +sha2.o: $(hdrdir)/ruby/internal/arithmetic.h +sha2.o: $(hdrdir)/ruby/internal/arithmetic/char.h +sha2.o: $(hdrdir)/ruby/internal/arithmetic/double.h +sha2.o: $(hdrdir)/ruby/internal/arithmetic/fixnum.h +sha2.o: $(hdrdir)/ruby/internal/arithmetic/gid_t.h +sha2.o: $(hdrdir)/ruby/internal/arithmetic/int.h +sha2.o: $(hdrdir)/ruby/internal/arithmetic/intptr_t.h +sha2.o: $(hdrdir)/ruby/internal/arithmetic/long.h +sha2.o: $(hdrdir)/ruby/internal/arithmetic/long_long.h +sha2.o: $(hdrdir)/ruby/internal/arithmetic/mode_t.h +sha2.o: $(hdrdir)/ruby/internal/arithmetic/off_t.h +sha2.o: $(hdrdir)/ruby/internal/arithmetic/pid_t.h +sha2.o: $(hdrdir)/ruby/internal/arithmetic/short.h +sha2.o: $(hdrdir)/ruby/internal/arithmetic/size_t.h +sha2.o: $(hdrdir)/ruby/internal/arithmetic/st_data_t.h +sha2.o: $(hdrdir)/ruby/internal/arithmetic/uid_t.h +sha2.o: $(hdrdir)/ruby/internal/assume.h +sha2.o: $(hdrdir)/ruby/internal/attr/alloc_size.h +sha2.o: $(hdrdir)/ruby/internal/attr/artificial.h +sha2.o: $(hdrdir)/ruby/internal/attr/cold.h +sha2.o: $(hdrdir)/ruby/internal/attr/const.h +sha2.o: $(hdrdir)/ruby/internal/attr/constexpr.h +sha2.o: $(hdrdir)/ruby/internal/attr/deprecated.h +sha2.o: $(hdrdir)/ruby/internal/attr/diagnose_if.h +sha2.o: $(hdrdir)/ruby/internal/attr/enum_extensibility.h +sha2.o: $(hdrdir)/ruby/internal/attr/error.h +sha2.o: $(hdrdir)/ruby/internal/attr/flag_enum.h +sha2.o: $(hdrdir)/ruby/internal/attr/forceinline.h +sha2.o: $(hdrdir)/ruby/internal/attr/format.h +sha2.o: $(hdrdir)/ruby/internal/attr/maybe_unused.h +sha2.o: $(hdrdir)/ruby/internal/attr/noalias.h +sha2.o: $(hdrdir)/ruby/internal/attr/nodiscard.h +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 +sha2.o: $(hdrdir)/ruby/internal/attr/warning.h +sha2.o: $(hdrdir)/ruby/internal/attr/weakref.h +sha2.o: $(hdrdir)/ruby/internal/cast.h +sha2.o: $(hdrdir)/ruby/internal/compiler_is.h +sha2.o: $(hdrdir)/ruby/internal/compiler_is/apple.h +sha2.o: $(hdrdir)/ruby/internal/compiler_is/clang.h +sha2.o: $(hdrdir)/ruby/internal/compiler_is/gcc.h +sha2.o: $(hdrdir)/ruby/internal/compiler_is/intel.h +sha2.o: $(hdrdir)/ruby/internal/compiler_is/msvc.h +sha2.o: $(hdrdir)/ruby/internal/compiler_is/sunpro.h +sha2.o: $(hdrdir)/ruby/internal/compiler_since.h +sha2.o: $(hdrdir)/ruby/internal/config.h +sha2.o: $(hdrdir)/ruby/internal/constant_p.h +sha2.o: $(hdrdir)/ruby/internal/core.h +sha2.o: $(hdrdir)/ruby/internal/core/rarray.h +sha2.o: $(hdrdir)/ruby/internal/core/rbasic.h +sha2.o: $(hdrdir)/ruby/internal/core/rbignum.h +sha2.o: $(hdrdir)/ruby/internal/core/rclass.h +sha2.o: $(hdrdir)/ruby/internal/core/rdata.h +sha2.o: $(hdrdir)/ruby/internal/core/rfile.h +sha2.o: $(hdrdir)/ruby/internal/core/rhash.h +sha2.o: $(hdrdir)/ruby/internal/core/robject.h +sha2.o: $(hdrdir)/ruby/internal/core/rregexp.h +sha2.o: $(hdrdir)/ruby/internal/core/rstring.h +sha2.o: $(hdrdir)/ruby/internal/core/rstruct.h +sha2.o: $(hdrdir)/ruby/internal/core/rtypeddata.h +sha2.o: $(hdrdir)/ruby/internal/ctype.h +sha2.o: $(hdrdir)/ruby/internal/dllexport.h +sha2.o: $(hdrdir)/ruby/internal/dosish.h +sha2.o: $(hdrdir)/ruby/internal/error.h +sha2.o: $(hdrdir)/ruby/internal/eval.h +sha2.o: $(hdrdir)/ruby/internal/event.h +sha2.o: $(hdrdir)/ruby/internal/fl_type.h +sha2.o: $(hdrdir)/ruby/internal/gc.h +sha2.o: $(hdrdir)/ruby/internal/glob.h +sha2.o: $(hdrdir)/ruby/internal/globals.h +sha2.o: $(hdrdir)/ruby/internal/has/attribute.h +sha2.o: $(hdrdir)/ruby/internal/has/builtin.h +sha2.o: $(hdrdir)/ruby/internal/has/c_attribute.h +sha2.o: $(hdrdir)/ruby/internal/has/cpp_attribute.h +sha2.o: $(hdrdir)/ruby/internal/has/declspec_attribute.h +sha2.o: $(hdrdir)/ruby/internal/has/extension.h +sha2.o: $(hdrdir)/ruby/internal/has/feature.h +sha2.o: $(hdrdir)/ruby/internal/has/warning.h +sha2.o: $(hdrdir)/ruby/internal/intern/array.h +sha2.o: $(hdrdir)/ruby/internal/intern/bignum.h +sha2.o: $(hdrdir)/ruby/internal/intern/class.h +sha2.o: $(hdrdir)/ruby/internal/intern/compar.h +sha2.o: $(hdrdir)/ruby/internal/intern/complex.h +sha2.o: $(hdrdir)/ruby/internal/intern/cont.h +sha2.o: $(hdrdir)/ruby/internal/intern/dir.h +sha2.o: $(hdrdir)/ruby/internal/intern/enum.h +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/hash.h +sha2.o: $(hdrdir)/ruby/internal/intern/io.h +sha2.o: $(hdrdir)/ruby/internal/intern/load.h +sha2.o: $(hdrdir)/ruby/internal/intern/marshal.h +sha2.o: $(hdrdir)/ruby/internal/intern/numeric.h +sha2.o: $(hdrdir)/ruby/internal/intern/object.h +sha2.o: $(hdrdir)/ruby/internal/intern/parse.h +sha2.o: $(hdrdir)/ruby/internal/intern/proc.h +sha2.o: $(hdrdir)/ruby/internal/intern/process.h +sha2.o: $(hdrdir)/ruby/internal/intern/random.h +sha2.o: $(hdrdir)/ruby/internal/intern/range.h +sha2.o: $(hdrdir)/ruby/internal/intern/rational.h +sha2.o: $(hdrdir)/ruby/internal/intern/re.h +sha2.o: $(hdrdir)/ruby/internal/intern/ruby.h +sha2.o: $(hdrdir)/ruby/internal/intern/select.h +sha2.o: $(hdrdir)/ruby/internal/intern/select/largesize.h +sha2.o: $(hdrdir)/ruby/internal/intern/set.h +sha2.o: $(hdrdir)/ruby/internal/intern/signal.h +sha2.o: $(hdrdir)/ruby/internal/intern/sprintf.h +sha2.o: $(hdrdir)/ruby/internal/intern/string.h +sha2.o: $(hdrdir)/ruby/internal/intern/struct.h +sha2.o: $(hdrdir)/ruby/internal/intern/thread.h +sha2.o: $(hdrdir)/ruby/internal/intern/time.h +sha2.o: $(hdrdir)/ruby/internal/intern/variable.h +sha2.o: $(hdrdir)/ruby/internal/intern/vm.h +sha2.o: $(hdrdir)/ruby/internal/interpreter.h +sha2.o: $(hdrdir)/ruby/internal/iterator.h +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/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 +sha2.o: $(hdrdir)/ruby/internal/variable.h +sha2.o: $(hdrdir)/ruby/internal/warning_push.h +sha2.o: $(hdrdir)/ruby/internal/xmalloc.h +sha2.o: $(hdrdir)/ruby/missing.h +sha2.o: $(hdrdir)/ruby/ruby.h +sha2.o: $(hdrdir)/ruby/st.h +sha2.o: $(hdrdir)/ruby/subst.h +sha2.o: $(srcdir)/../defs.h +sha2.o: sha2.c +sha2.o: sha2.h sha2init.o: $(RUBY_EXTCONF_H) sha2init.o: $(arch_hdrdir)/ruby/config.h +sha2init.o: $(hdrdir)/ruby.h +sha2init.o: $(hdrdir)/ruby/assert.h +sha2init.o: $(hdrdir)/ruby/backward.h +sha2init.o: $(hdrdir)/ruby/backward/2/assume.h +sha2init.o: $(hdrdir)/ruby/backward/2/attributes.h +sha2init.o: $(hdrdir)/ruby/backward/2/bool.h +sha2init.o: $(hdrdir)/ruby/backward/2/inttypes.h +sha2init.o: $(hdrdir)/ruby/backward/2/limits.h +sha2init.o: $(hdrdir)/ruby/backward/2/long_long.h +sha2init.o: $(hdrdir)/ruby/backward/2/stdalign.h +sha2init.o: $(hdrdir)/ruby/backward/2/stdarg.h sha2init.o: $(hdrdir)/ruby/defines.h sha2init.o: $(hdrdir)/ruby/intern.h +sha2init.o: $(hdrdir)/ruby/internal/abi.h +sha2init.o: $(hdrdir)/ruby/internal/anyargs.h +sha2init.o: $(hdrdir)/ruby/internal/arithmetic.h +sha2init.o: $(hdrdir)/ruby/internal/arithmetic/char.h +sha2init.o: $(hdrdir)/ruby/internal/arithmetic/double.h +sha2init.o: $(hdrdir)/ruby/internal/arithmetic/fixnum.h +sha2init.o: $(hdrdir)/ruby/internal/arithmetic/gid_t.h +sha2init.o: $(hdrdir)/ruby/internal/arithmetic/int.h +sha2init.o: $(hdrdir)/ruby/internal/arithmetic/intptr_t.h +sha2init.o: $(hdrdir)/ruby/internal/arithmetic/long.h +sha2init.o: $(hdrdir)/ruby/internal/arithmetic/long_long.h +sha2init.o: $(hdrdir)/ruby/internal/arithmetic/mode_t.h +sha2init.o: $(hdrdir)/ruby/internal/arithmetic/off_t.h +sha2init.o: $(hdrdir)/ruby/internal/arithmetic/pid_t.h +sha2init.o: $(hdrdir)/ruby/internal/arithmetic/short.h +sha2init.o: $(hdrdir)/ruby/internal/arithmetic/size_t.h +sha2init.o: $(hdrdir)/ruby/internal/arithmetic/st_data_t.h +sha2init.o: $(hdrdir)/ruby/internal/arithmetic/uid_t.h +sha2init.o: $(hdrdir)/ruby/internal/assume.h +sha2init.o: $(hdrdir)/ruby/internal/attr/alloc_size.h +sha2init.o: $(hdrdir)/ruby/internal/attr/artificial.h +sha2init.o: $(hdrdir)/ruby/internal/attr/cold.h +sha2init.o: $(hdrdir)/ruby/internal/attr/const.h +sha2init.o: $(hdrdir)/ruby/internal/attr/constexpr.h +sha2init.o: $(hdrdir)/ruby/internal/attr/deprecated.h +sha2init.o: $(hdrdir)/ruby/internal/attr/diagnose_if.h +sha2init.o: $(hdrdir)/ruby/internal/attr/enum_extensibility.h +sha2init.o: $(hdrdir)/ruby/internal/attr/error.h +sha2init.o: $(hdrdir)/ruby/internal/attr/flag_enum.h +sha2init.o: $(hdrdir)/ruby/internal/attr/forceinline.h +sha2init.o: $(hdrdir)/ruby/internal/attr/format.h +sha2init.o: $(hdrdir)/ruby/internal/attr/maybe_unused.h +sha2init.o: $(hdrdir)/ruby/internal/attr/noalias.h +sha2init.o: $(hdrdir)/ruby/internal/attr/nodiscard.h +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 +sha2init.o: $(hdrdir)/ruby/internal/attr/warning.h +sha2init.o: $(hdrdir)/ruby/internal/attr/weakref.h +sha2init.o: $(hdrdir)/ruby/internal/cast.h +sha2init.o: $(hdrdir)/ruby/internal/compiler_is.h +sha2init.o: $(hdrdir)/ruby/internal/compiler_is/apple.h +sha2init.o: $(hdrdir)/ruby/internal/compiler_is/clang.h +sha2init.o: $(hdrdir)/ruby/internal/compiler_is/gcc.h +sha2init.o: $(hdrdir)/ruby/internal/compiler_is/intel.h +sha2init.o: $(hdrdir)/ruby/internal/compiler_is/msvc.h +sha2init.o: $(hdrdir)/ruby/internal/compiler_is/sunpro.h +sha2init.o: $(hdrdir)/ruby/internal/compiler_since.h +sha2init.o: $(hdrdir)/ruby/internal/config.h +sha2init.o: $(hdrdir)/ruby/internal/constant_p.h +sha2init.o: $(hdrdir)/ruby/internal/core.h +sha2init.o: $(hdrdir)/ruby/internal/core/rarray.h +sha2init.o: $(hdrdir)/ruby/internal/core/rbasic.h +sha2init.o: $(hdrdir)/ruby/internal/core/rbignum.h +sha2init.o: $(hdrdir)/ruby/internal/core/rclass.h +sha2init.o: $(hdrdir)/ruby/internal/core/rdata.h +sha2init.o: $(hdrdir)/ruby/internal/core/rfile.h +sha2init.o: $(hdrdir)/ruby/internal/core/rhash.h +sha2init.o: $(hdrdir)/ruby/internal/core/robject.h +sha2init.o: $(hdrdir)/ruby/internal/core/rregexp.h +sha2init.o: $(hdrdir)/ruby/internal/core/rstring.h +sha2init.o: $(hdrdir)/ruby/internal/core/rstruct.h +sha2init.o: $(hdrdir)/ruby/internal/core/rtypeddata.h +sha2init.o: $(hdrdir)/ruby/internal/ctype.h +sha2init.o: $(hdrdir)/ruby/internal/dllexport.h +sha2init.o: $(hdrdir)/ruby/internal/dosish.h +sha2init.o: $(hdrdir)/ruby/internal/error.h +sha2init.o: $(hdrdir)/ruby/internal/eval.h +sha2init.o: $(hdrdir)/ruby/internal/event.h +sha2init.o: $(hdrdir)/ruby/internal/fl_type.h +sha2init.o: $(hdrdir)/ruby/internal/gc.h +sha2init.o: $(hdrdir)/ruby/internal/glob.h +sha2init.o: $(hdrdir)/ruby/internal/globals.h +sha2init.o: $(hdrdir)/ruby/internal/has/attribute.h +sha2init.o: $(hdrdir)/ruby/internal/has/builtin.h +sha2init.o: $(hdrdir)/ruby/internal/has/c_attribute.h +sha2init.o: $(hdrdir)/ruby/internal/has/cpp_attribute.h +sha2init.o: $(hdrdir)/ruby/internal/has/declspec_attribute.h +sha2init.o: $(hdrdir)/ruby/internal/has/extension.h +sha2init.o: $(hdrdir)/ruby/internal/has/feature.h +sha2init.o: $(hdrdir)/ruby/internal/has/warning.h +sha2init.o: $(hdrdir)/ruby/internal/intern/array.h +sha2init.o: $(hdrdir)/ruby/internal/intern/bignum.h +sha2init.o: $(hdrdir)/ruby/internal/intern/class.h +sha2init.o: $(hdrdir)/ruby/internal/intern/compar.h +sha2init.o: $(hdrdir)/ruby/internal/intern/complex.h +sha2init.o: $(hdrdir)/ruby/internal/intern/cont.h +sha2init.o: $(hdrdir)/ruby/internal/intern/dir.h +sha2init.o: $(hdrdir)/ruby/internal/intern/enum.h +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/hash.h +sha2init.o: $(hdrdir)/ruby/internal/intern/io.h +sha2init.o: $(hdrdir)/ruby/internal/intern/load.h +sha2init.o: $(hdrdir)/ruby/internal/intern/marshal.h +sha2init.o: $(hdrdir)/ruby/internal/intern/numeric.h +sha2init.o: $(hdrdir)/ruby/internal/intern/object.h +sha2init.o: $(hdrdir)/ruby/internal/intern/parse.h +sha2init.o: $(hdrdir)/ruby/internal/intern/proc.h +sha2init.o: $(hdrdir)/ruby/internal/intern/process.h +sha2init.o: $(hdrdir)/ruby/internal/intern/random.h +sha2init.o: $(hdrdir)/ruby/internal/intern/range.h +sha2init.o: $(hdrdir)/ruby/internal/intern/rational.h +sha2init.o: $(hdrdir)/ruby/internal/intern/re.h +sha2init.o: $(hdrdir)/ruby/internal/intern/ruby.h +sha2init.o: $(hdrdir)/ruby/internal/intern/select.h +sha2init.o: $(hdrdir)/ruby/internal/intern/select/largesize.h +sha2init.o: $(hdrdir)/ruby/internal/intern/set.h +sha2init.o: $(hdrdir)/ruby/internal/intern/signal.h +sha2init.o: $(hdrdir)/ruby/internal/intern/sprintf.h +sha2init.o: $(hdrdir)/ruby/internal/intern/string.h +sha2init.o: $(hdrdir)/ruby/internal/intern/struct.h +sha2init.o: $(hdrdir)/ruby/internal/intern/thread.h +sha2init.o: $(hdrdir)/ruby/internal/intern/time.h +sha2init.o: $(hdrdir)/ruby/internal/intern/variable.h +sha2init.o: $(hdrdir)/ruby/internal/intern/vm.h +sha2init.o: $(hdrdir)/ruby/internal/interpreter.h +sha2init.o: $(hdrdir)/ruby/internal/iterator.h +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/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 +sha2init.o: $(hdrdir)/ruby/internal/variable.h +sha2init.o: $(hdrdir)/ruby/internal/warning_push.h +sha2init.o: $(hdrdir)/ruby/internal/xmalloc.h sha2init.o: $(hdrdir)/ruby/missing.h sha2init.o: $(hdrdir)/ruby/ruby.h sha2init.o: $(hdrdir)/ruby/st.h sha2init.o: $(hdrdir)/ruby/subst.h -sha2init.o: $(top_srcdir)/ext/digest/digest.h -sha2init.o: $(top_srcdir)/include/ruby.h +sha2init.o: $(srcdir)/../digest.h +sha2init.o: sha2.h +sha2init.o: sha2cc.h sha2init.o: sha2init.c -sha2init.o: sha2ossl.h -sha2ossl.o: $(RUBY_EXTCONF_H) -sha2ossl.o: $(arch_hdrdir)/ruby/config.h -sha2ossl.o: $(hdrdir)/ruby/defines.h -sha2ossl.o: $(hdrdir)/ruby/intern.h -sha2ossl.o: $(hdrdir)/ruby/missing.h -sha2ossl.o: $(hdrdir)/ruby/ruby.h -sha2ossl.o: $(hdrdir)/ruby/st.h -sha2ossl.o: $(hdrdir)/ruby/subst.h -sha2ossl.o: $(top_srcdir)/ext/digest/defs.h -sha2ossl.o: $(top_srcdir)/include/ruby.h -sha2ossl.o: sha2ossl.c -sha2ossl.o: sha2ossl.h # AUTOGENERATED DEPENDENCIES END diff --git a/ext/digest/sha2/extconf.rb b/ext/digest/sha2/extconf.rb index 142a7f7077..3b772675e1 100644 --- a/ext/digest/sha2/extconf.rb +++ b/ext/digest/sha2/extconf.rb @@ -1,16 +1,14 @@ # -*- coding: us-ascii -*- +# frozen_string_literal: false # $RoughId: extconf.rb,v 1.4 2001/08/14 19:54:51 knu Exp $ # $Id$ require "mkmf" require File.expand_path("../../digest_conf", __FILE__) -$defs << "-DHAVE_CONFIG_H" -$INCFLAGS << " -I$(srcdir)/.." - $objs = [ "sha2init.#{$OBJEXT}" ] -unless digest_conf("sha2", "sha", %w[SHA256 SHA512]) +unless digest_conf("sha2") have_type("u_int8_t") end @@ -18,6 +16,4 @@ have_header("sys/cdefs.h") $preload = %w[digest] -if have_type("uint64_t", "defs.h", $defs.join(' ')) - create_makefile("digest/sha2") -end +create_makefile("digest/sha2") diff --git a/ext/digest/sha2/lib/sha2.rb b/ext/digest/sha2/lib/sha2.rb index 58d12e9b09..f17593a206 100644 --- a/ext/digest/sha2/lib/sha2.rb +++ b/ext/digest/sha2/lib/sha2.rb @@ -1,3 +1,4 @@ +# frozen_string_literal: false #-- # sha2.rb - defines Digest::SHA2 class which wraps up the SHA256, # SHA384, and SHA512 classes. @@ -10,17 +11,51 @@ # $Id$ require 'digest' -require 'digest/sha2.so' +require 'digest/sha2/loader' module Digest # # A meta digest provider class for SHA256, SHA384 and SHA512. # + # FIPS 180-2 describes SHA2 family of digest algorithms. It defines + # three algorithms: + # * one which works on chunks of 512 bits and returns a 256-bit + # digest (SHA256), + # * one which works on chunks of 1024 bits and returns a 384-bit + # digest (SHA384), + # * and one which works on chunks of 1024 bits and returns a 512-bit + # digest (SHA512). + # + # ==Examples + # require 'digest' + # + # # Compute a complete digest + # Digest::SHA2.hexdigest 'abc' # => "ba7816bf8..." + # Digest::SHA2.new(256).hexdigest 'abc' # => "ba7816bf8..." + # Digest::SHA256.hexdigest 'abc' # => "ba7816bf8..." + # + # Digest::SHA2.new(384).hexdigest 'abc' # => "cb00753f4..." + # Digest::SHA384.hexdigest 'abc' # => "cb00753f4..." + # + # Digest::SHA2.new(512).hexdigest 'abc' # => "ddaf35a19..." + # Digest::SHA512.hexdigest 'abc' # => "ddaf35a19..." + # + # # Compute digest by chunks + # sha2 = Digest::SHA2.new # =>#<Digest::SHA2:256> + # sha2.update "ab" + # sha2 << "c" # alias for #update + # sha2.hexdigest # => "ba7816bf8..." + # + # # Use the same object to compute another digest + # sha2.reset + # sha2 << "message" + # sha2.hexdigest # => "ab530a13e..." + # class SHA2 < Digest::Class # call-seq: # Digest::SHA2.new(bitlen = 256) -> digest_obj # - # Creates a new SHA2 hash object with a given bit length. + # Create a new SHA2 hash object with a given bit length. # # Valid bit lengths are 256, 384 and 512. def initialize(bitlen = 256) @@ -40,7 +75,7 @@ module Digest # call-seq: # digest_obj.reset -> digest_obj # - # Resets the digest to the initial state and returns self. + # Reset the digest to the initial state and return self. def reset @sha2.reset self @@ -50,7 +85,7 @@ module Digest # digest_obj.update(string) -> digest_obj # digest_obj << string -> digest_obj # - # Updates the digest using a given _string_ and returns self. + # Update the digest using a given _string_ and return self. def update(str) @sha2.update(str) self @@ -66,7 +101,7 @@ module Digest # call-seq: # digest_obj.block_length -> Integer # - # Returns the block length of the digest in bytes. + # Return the block length of the digest in bytes. # # Digest::SHA256.new.block_length * 8 # # => 512 @@ -81,7 +116,7 @@ module Digest # call-seq: # digest_obj.digest_length -> Integer # - # Returns the length of the hash value of the digest in bytes. + # Return the length of the hash value (the digest) in bytes. # # Digest::SHA256.new.digest_length * 8 # # => 256 diff --git a/ext/digest/sha2/lib/sha2/loader.rb b/ext/digest/sha2/lib/sha2/loader.rb new file mode 100644 index 0000000000..7d6d04a59c --- /dev/null +++ b/ext/digest/sha2/lib/sha2/loader.rb @@ -0,0 +1,3 @@ +# frozen_string_literal: true + +require 'digest/sha2.so' diff --git a/ext/digest/sha2/sha2.c b/ext/digest/sha2/sha2.c index 1d29ee2d76..21d5acbe96 100644 --- a/ext/digest/sha2/sha2.c +++ b/ext/digest/sha2/sha2.c @@ -34,7 +34,7 @@ * $Id$ */ -#include "defs.h" +#include "../defs.h" #include <string.h> /* memcpy()/memset() or bcopy()/bzero() */ #include <assert.h> /* assert() */ #include "sha2.h" @@ -94,7 +94,7 @@ /* * Define the followingsha2_* types to types of the correct length on - * the native archtecture. Most BSD systems and Linux define u_intXX_t + * the native architecture. Most BSD systems and Linux define u_intXX_t * types. Machines with very recent ANSI C headers, can use the * uintXX_t definintions from inttypes.h by defining SHA2_USE_INTTYPES_H * during compile or in the sha.h header file. @@ -128,7 +128,7 @@ typedef u_int64_t sha2_word64; /* Exactly 8 bytes */ #define SHA512_SHORT_BLOCK_LENGTH (SHA512_BLOCK_LENGTH - 16) -#if (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || defined(__GNUC__) || defined(_HPUX_SOURCE) || defined(__IBMC__) +#if (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || defined(__GNUC__) || defined(__IBMC__) #define ULL(number) number##ULL #else #define ULL(number) (uint64_t)(number) @@ -575,7 +575,7 @@ void SHA256_Update(SHA256_CTX* context, const sha2_byte *data, size_t len) { usedspace = freespace = 0; } -int SHA256_Final(sha2_byte digest[], SHA256_CTX* context) { +int SHA256_Final(sha2_byte digest[SHA256_DIGEST_LENGTH], SHA256_CTX* context) { sha2_word32 *d = (sha2_word32*)digest; unsigned int usedspace; @@ -640,7 +640,7 @@ int SHA256_Final(sha2_byte digest[], SHA256_CTX* context) { return 1; } -char *SHA256_End(SHA256_CTX* context, char buffer[]) { +char *SHA256_End(SHA256_CTX* context, char buffer[SHA256_DIGEST_STRING_LENGTH]) { sha2_byte digest[SHA256_DIGEST_LENGTH], *d = digest; int i; @@ -943,7 +943,7 @@ void SHA512_Last(SHA512_CTX* context) { SHA512_Transform(context, (sha2_word64*)context->buffer); } -int SHA512_Final(sha2_byte digest[], SHA512_CTX* context) { +int SHA512_Final(sha2_byte digest[SHA512_DIGEST_LENGTH], SHA512_CTX* context) { sha2_word64 *d = (sha2_word64*)digest; /* Sanity check: */ @@ -973,7 +973,7 @@ int SHA512_Final(sha2_byte digest[], SHA512_CTX* context) { return 1; } -char *SHA512_End(SHA512_CTX* context, char buffer[]) { +char *SHA512_End(SHA512_CTX* context, char buffer[SHA512_DIGEST_STRING_LENGTH]) { sha2_byte digest[SHA512_DIGEST_LENGTH], *d = digest; int i; @@ -1019,7 +1019,7 @@ void SHA384_Update(SHA384_CTX* context, const sha2_byte* data, size_t len) { SHA512_Update((SHA512_CTX*)context, data, len); } -int SHA384_Final(sha2_byte digest[], SHA384_CTX* context) { +int SHA384_Final(sha2_byte digest[SHA384_DIGEST_LENGTH], SHA384_CTX* context) { sha2_word64 *d = (sha2_word64*)digest; /* Sanity check: */ @@ -1049,7 +1049,7 @@ int SHA384_Final(sha2_byte digest[], SHA384_CTX* context) { return 1; } -char *SHA384_End(SHA384_CTX* context, char buffer[]) { +char *SHA384_End(SHA384_CTX* context, char buffer[SHA384_DIGEST_STRING_LENGTH]) { sha2_byte digest[SHA384_DIGEST_LENGTH], *d = digest; int i; diff --git a/ext/digest/sha2/sha2cc.h b/ext/digest/sha2/sha2cc.h index 49d463088f..1245a2e2c7 100644 --- a/ext/digest/sha2/sha2cc.h +++ b/ext/digest/sha2/sha2cc.h @@ -1,18 +1,45 @@ #define COMMON_DIGEST_FOR_OPENSSL 1 #include <CommonCrypto/CommonDigest.h> +/* + * Prior to 10.5, OpenSSL-compatible definitions are missing for + * SHA2 macros, though the CC_ versions are present. + * Add the missing definitions we actually use here if needed. + * Note that the definitions are the argless 10.6+-style. + * The weird CTX mismatch is copied from the 10.6 header. + */ +#ifndef SHA256_DIGEST_LENGTH +#define SHA256_DIGEST_LENGTH CC_SHA256_DIGEST_LENGTH +#define SHA256_CTX CC_SHA256_CTX +#define SHA256_Update CC_SHA256_Update +#define SHA256_Final CC_SHA256_Final +#endif /* !defined SHA256_DIGEST_LENGTH */ + +#ifndef SHA384_DIGEST_LENGTH +#define SHA384_DIGEST_LENGTH CC_SHA384_DIGEST_LENGTH +#define SHA512_CTX CC_SHA512_CTX +#define SHA384_Update CC_SHA384_Update +#define SHA384_Final CC_SHA384_Final +#endif /* !defined SHA384_DIGEST_LENGTH */ + +#ifndef SHA512_DIGEST_LENGTH +#define SHA512_DIGEST_LENGTH CC_SHA512_DIGEST_LENGTH +#define SHA512_Update CC_SHA512_Update +#define SHA512_Final CC_SHA512_Final +#endif /* !defined SHA512_DIGEST_LENGTH */ + #define SHA256_BLOCK_LENGTH CC_SHA256_BLOCK_BYTES #define SHA384_BLOCK_LENGTH CC_SHA384_BLOCK_BYTES #define SHA512_BLOCK_LENGTH CC_SHA512_BLOCK_BYTES #define SHA384_CTX CC_SHA512_CTX -static DEFINE_UPDATE_FUNC_FOR_UINT(SHA256); -static DEFINE_FINISH_FUNC_FROM_FINAL(SHA256); -static DEFINE_UPDATE_FUNC_FOR_UINT(SHA384); -static DEFINE_FINISH_FUNC_FROM_FINAL(SHA384); -static DEFINE_UPDATE_FUNC_FOR_UINT(SHA512); -static DEFINE_FINISH_FUNC_FROM_FINAL(SHA512); +static DEFINE_UPDATE_FUNC_FOR_UINT(SHA256) +static DEFINE_FINISH_FUNC_FROM_FINAL(SHA256) +static DEFINE_UPDATE_FUNC_FOR_UINT(SHA384) +static DEFINE_FINISH_FUNC_FROM_FINAL(SHA384) +static DEFINE_UPDATE_FUNC_FOR_UINT(SHA512) +static DEFINE_FINISH_FUNC_FROM_FINAL(SHA512) #undef SHA256_Update @@ -29,3 +56,15 @@ static DEFINE_FINISH_FUNC_FROM_FINAL(SHA512); #undef SHA512_Finish #define SHA512_Update rb_digest_SHA512_update #define SHA512_Finish rb_digest_SHA512_finish + +/* + * Pre-10.6 defines are with args, which don't match the argless use in + * the function pointer inits. Thus, we redefine SHA*_Init as well. + * This is a NOP on 10.6+. + */ +#undef SHA256_Init +#define SHA256_Init CC_SHA256_Init +#undef SHA384_Init +#define SHA384_Init CC_SHA384_Init +#undef SHA512_Init +#define SHA512_Init CC_SHA512_Init diff --git a/ext/digest/sha2/sha2init.c b/ext/digest/sha2/sha2init.c index 09ccee5ac4..3923e3724c 100644 --- a/ext/digest/sha2/sha2init.c +++ b/ext/digest/sha2/sha2init.c @@ -1,10 +1,9 @@ /* $RoughId: sha2init.c,v 1.3 2001/07/13 20:00:43 knu Exp $ */ /* $Id$ */ -#include "digest.h" -#if defined(SHA2_USE_OPENSSL) -#include "sha2ossl.h" -#elif defined(SHA2_USE_COMMONDIGEST) +#include <ruby/ruby.h> +#include "../digest.h" +#if defined(SHA2_USE_COMMONDIGEST) #include "sha2cc.h" #else #include "sha2.h" @@ -26,35 +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; - ID id_metadata; - -#define DECLARE_ALGO_CLASS(bitlen) \ - VALUE cDigest_SHA##bitlen; + VALUE mDigest, cDigest_Base, cDigest_SHA2; + ID id_metadata = rb_id_metadata(); - FOREACH_BITLEN(DECLARE_ALGO_CLASS) - - rb_require("digest"); - - id_metadata = rb_intern_const("metadata"); +#if 0 + mDigest = rb_define_module("Digest"); /* let rdoc know */ +#endif + mDigest = rb_digest_namespace(); + cDigest_Base = rb_const_get(mDigest, rb_intern_const("Base")); - mDigest = rb_path2class("Digest"); - cDigest_Base = rb_path2class("Digest::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, \ - Data_Wrap_Struct(0, 0, 0, (void *)&sha##bitlen)); + cDigest_SHA2 = rb_define_class_under(mDigest, "SHA384", cDigest_Base); + rb_ivar_set(cDigest_SHA2, id_metadata, rb_digest_make_metadata(&sha384)); -#undef RUBY_UNTYPED_DATA_WARNING -#define RUBY_UNTYPED_DATA_WARNING 0 - 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)); } diff --git a/ext/digest/sha2/sha2ossl.h b/ext/digest/sha2/sha2ossl.h deleted file mode 100644 index f7258ee64a..0000000000 --- a/ext/digest/sha2/sha2ossl.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef SHA2OSSL_H_INCLUDED -#define SHA2OSSL_H_INCLUDED - -#include <stddef.h> -#include <openssl/sha.h> - -#define SHA256_BLOCK_LENGTH SHA256_CBLOCK -#define SHA384_BLOCK_LENGTH SHA512_CBLOCK -#define SHA512_BLOCK_LENGTH SHA512_CBLOCK - -#ifndef __DragonFly__ -#define SHA384_Final SHA512_Final -#endif - -typedef SHA512_CTX SHA384_CTX; - -#undef SHA256_Finish -#undef SHA384_Finish -#undef SHA512_Finish -#define SHA256_Finish rb_digest_SHA256_finish -#define SHA384_Finish rb_digest_SHA384_finish -#define SHA512_Finish rb_digest_SHA512_finish -static DEFINE_FINISH_FUNC_FROM_FINAL(SHA256); -static DEFINE_FINISH_FUNC_FROM_FINAL(SHA384); -static DEFINE_FINISH_FUNC_FROM_FINAL(SHA512); - -#endif diff --git a/ext/digest/test.sh b/ext/digest/test.sh deleted file mode 100644 index 328c7575e6..0000000000 --- a/ext/digest/test.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/sh -# -# $RoughId: test.sh,v 1.5 2001/07/13 15:38:27 knu Exp $ -# $Id$ - -RUBY=${RUBY:=ruby} -MAKE=${MAKE:=make} -CFLAGS=${CFLAGS:=-Wall} - -${RUBY} extconf.rb --with-cflags="${CFLAGS}" -${MAKE} clean -${MAKE} - -for algo in md5 rmd160 sha1 sha2; do - args=--with-cflags="${CFLAGS}" - - if [ $WITH_BUNDLED_ENGINES ]; then - args="$args --with-bundled-$algo" - fi - - (cd $algo && - ${RUBY} extconf.rb $args; - ${MAKE} clean; - ${MAKE}) - ln -sf ../../$algo/$algo.so lib/digest/ -done - -${RUBY} -I. -I./lib ../../test/digest/test_digest.rb - -rm lib/digest/*.so |
