digest 1.0.0 → 3.1.0.pre2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 167eabf30e08121767b43efb87416093469e9b13742ec848645eb1e0108fbd01
4
- data.tar.gz: 2689f6fc2502e420fc0b07ea1318f280089c9983c3081003a275e29b12cf9bfc
3
+ metadata.gz: b9e055404c669016e5396b100ec0f300762ee25382705476e541c146c722c359
4
+ data.tar.gz: 78502d4308b80141cf0adc91097a3f742ba0a26030f7bdddfefd41d0c344eb11
5
5
  SHA512:
6
- metadata.gz: 1bb1bb02c2d95a2e11b305ca813a8af85f7edb47b0eb4b2300b383af38be233ebf48ea4ba63467c8991a37ff03f676f3c01c5317221d8019dfd5d5b2a0db5442
7
- data.tar.gz: 4fe7e3d971977df6eec664073973a26b29bb413c3975a254953c74fc8845ddefb003a8eeed1aa5a8ee9fe5b38b21ec774f33dabfba0db2e9542555cfd5373965
6
+ metadata.gz: 7e064d1ce651832f2c8bc528292983c045274c089a5179a3b20750dfa2ba0d4d3d4d97be187ae89eafcd61e86c43cfae7ebf7a61d367430dc378a1ac668c8d32
7
+ data.tar.gz: 31e7e2d7ad75b0e2bfe429d818ac310ceba62329168eba5916a8fcfd52733976a496c9de340679dabe88032d7e9169068f6abd7945794bcd10e1e285fc4559b4
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Digest
2
2
 
3
- [![Build Status](https://travis-ci.org/ruby/digest.svg?branch=master)](https://travis-ci.org/ruby/digest)
3
+ ![CI](https://github.com/ruby/digest/workflows/CI/badge.svg?branch=master&event=push)
4
4
 
5
5
  This module provides a framework for message digest libraries.
6
6
 
@@ -1,6 +1,4 @@
1
1
  # frozen_string_literal: false
2
2
  require 'mkmf'
3
3
 
4
- $defs << "-DHAVE_CONFIG_H"
5
-
6
4
  create_makefile('digest/bubblebabble')
data/ext/digest/digest.c CHANGED
@@ -765,6 +765,10 @@ InitVM_digest(void)
765
765
  */
766
766
  rb_mDigest = rb_define_module("Digest");
767
767
 
768
+ #ifdef HAVE_RB_EXT_RACTOR_SAFE
769
+ rb_ext_ractor_safe(true);
770
+ #endif
771
+
768
772
  /* module functions */
769
773
  rb_define_module_function(rb_mDigest, "hexencode", rb_digest_s_hexencode, 1);
770
774
 
data/ext/digest/digest.h CHANGED
@@ -62,3 +62,11 @@ rb_id_metadata(void)
62
62
  {
63
63
  return rb_intern_const("metadata");
64
64
  }
65
+
66
+ static inline VALUE
67
+ rb_digest_make_metadata(const rb_digest_metadata_t *meta)
68
+ {
69
+ #undef RUBY_UNTYPED_DATA_WARNING
70
+ #define RUBY_UNTYPED_DATA_WARNING 0
71
+ return rb_obj_freeze(Data_Wrap_Struct(0, 0, 0, (void *)meta));
72
+ }
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'digest.so'
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'digest/sha2.so'
@@ -6,8 +6,6 @@
6
6
  require "mkmf"
7
7
  require File.expand_path("../../digest_conf", __FILE__)
8
8
 
9
- $defs << "-DHAVE_CONFIG_H"
10
-
11
9
  $objs = [ "md5init.#{$OBJEXT}" ]
12
10
 
13
11
  digest_conf("md5")
@@ -57,8 +57,5 @@ Init_md5(void)
57
57
 
58
58
  cDigest_MD5 = rb_define_class_under(mDigest, "MD5", cDigest_Base);
59
59
 
60
- #undef RUBY_UNTYPED_DATA_WARNING
61
- #define RUBY_UNTYPED_DATA_WARNING 0
62
- rb_iv_set(cDigest_MD5, "metadata",
63
- Data_Wrap_Struct(0, 0, 0, (void *)&md5));
60
+ rb_iv_set(cDigest_MD5, "metadata", rb_digest_make_metadata(&md5));
64
61
  }
@@ -6,7 +6,9 @@
6
6
  require "mkmf"
7
7
  require File.expand_path("../../digest_conf", __FILE__)
8
8
 
9
- $defs << "-DNDEBUG" << "-DHAVE_CONFIG_H"
9
+ if try_static_assert("RUBY_API_VERSION_MAJOR < 3", "ruby/version.h")
10
+ $defs << "-DNDEBUG"
11
+ end
10
12
 
11
13
  $objs = [ "rmd160init.#{$OBJEXT}" ]
12
14
 
@@ -53,8 +53,5 @@ Init_rmd160(void)
53
53
 
54
54
  cDigest_RMD160 = rb_define_class_under(mDigest, "RMD160", cDigest_Base);
55
55
 
56
- #undef RUBY_UNTYPED_DATA_WARNING
57
- #define RUBY_UNTYPED_DATA_WARNING 0
58
- rb_iv_set(cDigest_RMD160, "metadata",
59
- Data_Wrap_Struct(0, 0, 0, (void *)&rmd160));
56
+ rb_iv_set(cDigest_RMD160, "metadata", rb_digest_make_metadata(&rmd160));
60
57
  }
@@ -6,8 +6,6 @@
6
6
  require "mkmf"
7
7
  require File.expand_path("../../digest_conf", __FILE__)
8
8
 
9
- $defs << "-DHAVE_CONFIG_H"
10
-
11
9
  $objs = [ "sha1init.#{$OBJEXT}" ]
12
10
 
13
11
  digest_conf("sha1")
@@ -59,8 +59,5 @@ Init_sha1(void)
59
59
 
60
60
  cDigest_SHA1 = rb_define_class_under(mDigest, "SHA1", cDigest_Base);
61
61
 
62
- #undef RUBY_UNTYPED_DATA_WARNING
63
- #define RUBY_UNTYPED_DATA_WARNING 0
64
- rb_iv_set(cDigest_SHA1, "metadata",
65
- Data_Wrap_Struct(0, 0, 0, (void *)&sha1));
62
+ rb_iv_set(cDigest_SHA1, "metadata", rb_digest_make_metadata(&sha1));
66
63
  }
@@ -6,8 +6,6 @@
6
6
  require "mkmf"
7
7
  require File.expand_path("../../digest_conf", __FILE__)
8
8
 
9
- $defs << "-DHAVE_CONFIG_H"
10
-
11
9
  $objs = [ "sha2init.#{$OBJEXT}" ]
12
10
 
13
11
  unless digest_conf("sha2")
@@ -94,7 +94,7 @@
94
94
 
95
95
  /*
96
96
  * Define the followingsha2_* types to types of the correct length on
97
- * the native archtecture. Most BSD systems and Linux define u_intXX_t
97
+ * the native architecture. Most BSD systems and Linux define u_intXX_t
98
98
  * types. Machines with very recent ANSI C headers, can use the
99
99
  * uintXX_t definintions from inttypes.h by defining SHA2_USE_INTTYPES_H
100
100
  * during compile or in the sha.h header file.
@@ -575,7 +575,7 @@ void SHA256_Update(SHA256_CTX* context, const sha2_byte *data, size_t len) {
575
575
  usedspace = freespace = 0;
576
576
  }
577
577
 
578
- int SHA256_Final(sha2_byte digest[], SHA256_CTX* context) {
578
+ int SHA256_Final(sha2_byte digest[SHA256_DIGEST_LENGTH], SHA256_CTX* context) {
579
579
  sha2_word32 *d = (sha2_word32*)digest;
580
580
  unsigned int usedspace;
581
581
 
@@ -640,7 +640,7 @@ int SHA256_Final(sha2_byte digest[], SHA256_CTX* context) {
640
640
  return 1;
641
641
  }
642
642
 
643
- char *SHA256_End(SHA256_CTX* context, char buffer[]) {
643
+ char *SHA256_End(SHA256_CTX* context, char buffer[SHA256_DIGEST_STRING_LENGTH]) {
644
644
  sha2_byte digest[SHA256_DIGEST_LENGTH], *d = digest;
645
645
  int i;
646
646
 
@@ -943,7 +943,7 @@ void SHA512_Last(SHA512_CTX* context) {
943
943
  SHA512_Transform(context, (sha2_word64*)context->buffer);
944
944
  }
945
945
 
946
- int SHA512_Final(sha2_byte digest[], SHA512_CTX* context) {
946
+ int SHA512_Final(sha2_byte digest[SHA512_DIGEST_LENGTH], SHA512_CTX* context) {
947
947
  sha2_word64 *d = (sha2_word64*)digest;
948
948
 
949
949
  /* Sanity check: */
@@ -973,7 +973,7 @@ int SHA512_Final(sha2_byte digest[], SHA512_CTX* context) {
973
973
  return 1;
974
974
  }
975
975
 
976
- char *SHA512_End(SHA512_CTX* context, char buffer[]) {
976
+ char *SHA512_End(SHA512_CTX* context, char buffer[SHA512_DIGEST_STRING_LENGTH]) {
977
977
  sha2_byte digest[SHA512_DIGEST_LENGTH], *d = digest;
978
978
  int i;
979
979
 
@@ -1019,7 +1019,7 @@ void SHA384_Update(SHA384_CTX* context, const sha2_byte* data, size_t len) {
1019
1019
  SHA512_Update((SHA512_CTX*)context, data, len);
1020
1020
  }
1021
1021
 
1022
- int SHA384_Final(sha2_byte digest[], SHA384_CTX* context) {
1022
+ int SHA384_Final(sha2_byte digest[SHA384_DIGEST_LENGTH], SHA384_CTX* context) {
1023
1023
  sha2_word64 *d = (sha2_word64*)digest;
1024
1024
 
1025
1025
  /* Sanity check: */
@@ -1049,7 +1049,7 @@ int SHA384_Final(sha2_byte digest[], SHA384_CTX* context) {
1049
1049
  return 1;
1050
1050
  }
1051
1051
 
1052
- char *SHA384_End(SHA384_CTX* context, char buffer[]) {
1052
+ char *SHA384_End(SHA384_CTX* context, char buffer[SHA384_DIGEST_STRING_LENGTH]) {
1053
1053
  sha2_byte digest[SHA384_DIGEST_LENGTH], *d = digest;
1054
1054
  int i;
1055
1055
 
@@ -47,9 +47,7 @@ Init_sha2(void)
47
47
  cDigest_SHA##bitlen = rb_define_class_under(mDigest, "SHA" #bitlen, cDigest_Base); \
48
48
  \
49
49
  rb_ivar_set(cDigest_SHA##bitlen, id_metadata, \
50
- Data_Wrap_Struct(0, 0, 0, (void *)&sha##bitlen));
50
+ rb_digest_make_metadata(&sha##bitlen));
51
51
 
52
- #undef RUBY_UNTYPED_DATA_WARNING
53
- #define RUBY_UNTYPED_DATA_WARNING 0
54
52
  FOREACH_BITLEN(DEFINE_ALGO_CLASS)
55
53
  }
@@ -11,7 +11,7 @@
11
11
  # $Id$
12
12
 
13
13
  require 'digest'
14
- require 'digest/sha2.so'
14
+ require 'digest/sha2/loader'
15
15
 
16
16
  module Digest
17
17
  #
data/lib/digest.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: false
2
- require 'digest.so'
2
+
3
+ require 'digest/loader'
3
4
 
4
5
  module Digest
5
6
  # A mutex for Digest().
@@ -8,7 +9,7 @@ module Digest
8
9
  def self.const_missing(name) # :nodoc:
9
10
  case name
10
11
  when :SHA256, :SHA384, :SHA512
11
- lib = 'digest/sha2.so'
12
+ lib = 'digest/sha2'
12
13
  else
13
14
  lib = File.join('digest', name.to_s.downcase)
14
15
  end
metadata CHANGED
@@ -1,79 +1,30 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: digest
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 3.1.0.pre2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Akinori MUSHA
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-12-03 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: bundler
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: rake
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: rake-compiler
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
11
+ date: 2021-09-30 00:00:00.000000000 Z
12
+ dependencies: []
55
13
  description: Provides a framework for message digest libraries.
56
14
  email:
57
15
  - knu@idaemons.org
58
16
  executables: []
59
17
  extensions:
60
- - ext/digest/extconf.rb
61
18
  - ext/digest/bubblebabble/extconf.rb
19
+ - ext/digest/extconf.rb
62
20
  - ext/digest/md5/extconf.rb
63
21
  - ext/digest/rmd160/extconf.rb
64
22
  - ext/digest/sha1/extconf.rb
65
23
  - ext/digest/sha2/extconf.rb
66
24
  extra_rdoc_files: []
67
25
  files:
68
- - ".gitignore"
69
- - ".travis.yml"
70
- - Gemfile
71
26
  - LICENSE.txt
72
27
  - README.md
73
- - Rakefile
74
- - bin/console
75
- - bin/setup
76
- - digest.gemspec
77
28
  - ext/digest/bubblebabble/bubblebabble.c
78
29
  - ext/digest/bubblebabble/extconf.rb
79
30
  - ext/digest/defs.h
@@ -81,6 +32,8 @@ files:
81
32
  - ext/digest/digest.h
82
33
  - ext/digest/digest_conf.rb
83
34
  - ext/digest/extconf.rb
35
+ - ext/digest/lib/digest/loader.rb
36
+ - ext/digest/lib/digest/sha2/loader.rb
84
37
  - ext/digest/md5/extconf.rb
85
38
  - ext/digest/md5/md5.c
86
39
  - ext/digest/md5/md5.h
@@ -96,14 +49,13 @@ files:
96
49
  - ext/digest/sha1/sha1cc.h
97
50
  - ext/digest/sha1/sha1init.c
98
51
  - ext/digest/sha2/extconf.rb
99
- - ext/digest/sha2/lib/sha2.rb
100
52
  - ext/digest/sha2/sha2.c
101
53
  - ext/digest/sha2/sha2.h
102
54
  - ext/digest/sha2/sha2cc.h
103
55
  - ext/digest/sha2/sha2init.c
104
56
  - ext/digest/test.sh
105
- - ext/openssl/deprecation.rb
106
57
  - lib/digest.rb
58
+ - lib/digest/sha2.rb
107
59
  homepage: https://github.com/ruby/digest
108
60
  licenses:
109
61
  - Ruby
@@ -118,14 +70,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
118
70
  requirements:
119
71
  - - ">="
120
72
  - !ruby/object:Gem::Version
121
- version: 2.3.0
73
+ version: 2.5.0
122
74
  required_rubygems_version: !ruby/object:Gem::Requirement
123
75
  requirements:
124
- - - ">="
76
+ - - ">"
125
77
  - !ruby/object:Gem::Version
126
- version: '0'
78
+ version: 1.3.1
127
79
  requirements: []
128
- rubygems_version: 3.2.0.rc.2
80
+ rubygems_version: 3.2.22
129
81
  signing_key:
130
82
  specification_version: 4
131
83
  summary: Provides a framework for message digest libraries.
data/.gitignore DELETED
@@ -1,12 +0,0 @@
1
- /.bundle/
2
- /.yardoc
3
- /Gemfile.lock
4
- /_yardoc/
5
- /coverage/
6
- /doc/
7
- /pkg/
8
- /spec/reports/
9
- /tmp/
10
- *.bundle
11
- *.so
12
- *.o
data/.travis.yml DELETED
@@ -1,8 +0,0 @@
1
- sudo: false
2
- language: ruby
3
- rvm:
4
- - 2.3.6
5
- - 2.4.3
6
- - 2.5.0
7
- - ruby-head
8
- before_install: gem install bundler
data/Gemfile DELETED
@@ -1,6 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
4
-
5
- # Specify your gem's dependencies in digest.gemspec
6
- gemspec
data/Rakefile DELETED
@@ -1,15 +0,0 @@
1
- require "bundler/gem_tasks"
2
- require "rake/testtask"
3
-
4
- Rake::TestTask.new(:test) do |t|
5
- t.libs << "test" << "test/lib"
6
- t.libs << "lib"
7
- t.test_files = FileList["test/**/test_*.rb"]
8
- end
9
-
10
- require 'rake/extensiontask'
11
- %w(bubblebabble md5 rmd160 sha1 sha2).each do |ext|
12
- Rake::ExtensionTask.new("digest/#{ext}")
13
- end
14
-
15
- task :default => :test
data/bin/console DELETED
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require "bundler/setup"
4
- require "digest"
5
-
6
- # You can add fixtures and/or initialization code here to make experimenting
7
- # with your gem easier. You can also use a different console, if you like.
8
-
9
- # (If you use this, don't forget to add pry to your Gemfile!)
10
- # require "pry"
11
- # Pry.start
12
-
13
- require "irb"
14
- IRB.start(__FILE__)
data/bin/setup DELETED
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
- IFS=$'\n\t'
4
- set -vx
5
-
6
- bundle install
7
-
8
- # Do any other automated setup that you need to do here
data/digest.gemspec DELETED
@@ -1,45 +0,0 @@
1
- # coding: utf-8
2
- # frozen_string_literal: true
3
-
4
- Gem::Specification.new do |spec|
5
- spec.name = "digest"
6
- spec.version = "1.0.0"
7
- spec.authors = ["Akinori MUSHA"]
8
- spec.email = ["knu@idaemons.org"]
9
-
10
- spec.summary = %q{Provides a framework for message digest libraries.}
11
- spec.description = %q{Provides a framework for message digest libraries.}
12
- spec.homepage = "https://github.com/ruby/digest"
13
- spec.licenses = ["Ruby", "BSD-2-Clause"]
14
-
15
- spec.files = [
16
- ".gitignore", ".travis.yml", "Gemfile", "LICENSE.txt", "README.md", "Rakefile", "bin/console", "bin/setup",
17
- "digest.gemspec", "ext/digest/bubblebabble/bubblebabble.c", "ext/digest/bubblebabble/extconf.rb", "ext/digest/defs.h",
18
- "ext/digest/digest.c", "ext/digest/digest.h", "ext/digest/digest_conf.rb", "ext/digest/extconf.rb",
19
- "ext/digest/md5/extconf.rb", "ext/digest/md5/md5.c", "ext/digest/md5/md5.h", "ext/digest/md5/md5cc.h",
20
- "ext/digest/md5/md5init.c", "ext/digest/rmd160/extconf.rb", "ext/digest/rmd160/rmd160.c",
21
- "ext/digest/rmd160/rmd160.h", "ext/digest/rmd160/rmd160init.c",
22
- "ext/digest/sha1/extconf.rb", "ext/digest/sha1/sha1.c", "ext/digest/sha1/sha1.h", "ext/digest/sha1/sha1cc.h",
23
- "ext/digest/sha1/sha1init.c", "ext/digest/sha2/extconf.rb", "ext/digest/sha2/lib/sha2.rb",
24
- "ext/digest/sha2/sha2.c", "ext/digest/sha2/sha2.h", "ext/digest/sha2/sha2cc.h", "ext/digest/sha2/sha2init.c",
25
- "ext/digest/test.sh", "ext/openssl/deprecation.rb", "lib/digest.rb"
26
- ]
27
- spec.required_ruby_version = ">= 2.3.0"
28
-
29
- spec.bindir = "exe"
30
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
31
- spec.require_paths = ["lib"]
32
- spec.extensions = %w[
33
- ext/digest/extconf.rb
34
- ext/digest/bubblebabble/extconf.rb
35
- ext/digest/md5/extconf.rb
36
- ext/digest/rmd160/extconf.rb
37
- ext/digest/sha1/extconf.rb
38
- ext/digest/sha2/extconf.rb
39
- ]
40
- spec.metadata["msys2_mingw_dependencies"] = "openssl"
41
-
42
- spec.add_development_dependency "bundler"
43
- spec.add_development_dependency "rake"
44
- spec.add_development_dependency "rake-compiler"
45
- end
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: false
2
- module OpenSSL
3
- def self.deprecated_warning_flag
4
- unless flag = (@deprecated_warning_flag ||= nil)
5
- if try_compile("", flag = "-Werror=deprecated-declarations")
6
- $warnflags << " #{flag}"
7
- else
8
- flag = ""
9
- end
10
- @deprecated_warning_flag = flag
11
- end
12
- flag
13
- end
14
-
15
- def self.check_func(func, header)
16
- have_func(func, header, deprecated_warning_flag)
17
- end
18
-
19
- def self.check_func_or_macro(func, header)
20
- check_func(func, header) or
21
- have_macro(func, header) && $defs.push("-DHAVE_#{func.upcase}")
22
- end
23
- end