digest 1.0.0 → 3.1.0.pre2

Sign up to get free protection for your applications and to get access to all the features.
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