digest 3.1.1 → 3.2.0.pre0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE.txt +4 -3
- data/README.md +10 -0
- data/ext/digest/bubblebabble/bubblebabble.c +3 -4
- data/ext/digest/digest.c +33 -9
- data/ext/digest/digest.h +37 -3
- data/ext/digest/md5/md5cc.h +18 -2
- data/ext/digest/md5/md5init.c +1 -2
- data/ext/digest/rmd160/rmd160init.c +1 -2
- data/ext/digest/sha1/sha1cc.h +8 -0
- data/ext/digest/sha1/sha1init.c +1 -2
- data/ext/digest/sha2/sha2cc.h +39 -0
- data/ext/digest/sha2/sha2init.c +34 -13
- data/lib/digest/version.rb +1 -1
- metadata +3 -4
- data/ext/digest/test.sh +0 -30
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b483eb57905b2f3160885f8ed98050921b9b3e13005ddfdc5af7247f0c80941e
|
4
|
+
data.tar.gz: 5d2e8f21b545eba60d48fc2b1a8799f46f12ae5740257fef5d956843e6f285df
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0aebec72ac962b1ba44caad93e6df25076ae0622955f5cfdb068379919a2aa5aae85ef5cbe3ab186a0bbbd1bd0242cb47d4fb6406fd5fad0894fef77ed95d121
|
7
|
+
data.tar.gz: 615ebcf317c30885746bdd75b3d6c1c681036f2282ba912cdb2ff1eae5086d1460f37fc3fa7ae9f6dd9e9b2be9ee0be7ebe6fa276b0fb7acd73ce2ae250a1a1f
|
data/LICENSE.txt
CHANGED
@@ -4,10 +4,11 @@ Redistribution and use in source and binary forms, with or without
|
|
4
4
|
modification, are permitted provided that the following conditions
|
5
5
|
are met:
|
6
6
|
1. Redistributions of source code must retain the above copyright
|
7
|
-
notice, this list of conditions and the following disclaimer.
|
7
|
+
notice, this list of conditions and the following disclaimer.
|
8
8
|
2. Redistributions in binary form must reproduce the above copyright
|
9
|
-
notice, this list of conditions and the following disclaimer in the
|
10
|
-
documentation and/or other materials provided with the
|
9
|
+
notice, this list of conditions and the following disclaimer in the
|
10
|
+
documentation and/or other materials provided with the
|
11
|
+
distribution.
|
11
12
|
|
12
13
|
THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
13
14
|
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
data/README.md
CHANGED
@@ -82,6 +82,16 @@ SHA2 family::
|
|
82
82
|
|
83
83
|
The latest versions of the FIPS publications can be found here: http://csrc.nist.gov/publications/PubsFIPS.html.
|
84
84
|
|
85
|
+
## For Gem developers
|
86
|
+
|
87
|
+
If you want to use digest algorithms in your C extension, you can use the `digest.h` header file provided by digest gem. You should add the following code to your `extconf.rb`:
|
88
|
+
|
89
|
+
```ruby
|
90
|
+
spec = Gem::Specification.find_by_name("digest")
|
91
|
+
source_dir = File.join(spec.full_gem_path, "ext", "digest")
|
92
|
+
$INCFLAGS += " -I#{source_dir}"
|
93
|
+
```
|
94
|
+
|
85
95
|
## Development
|
86
96
|
|
87
97
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
@@ -129,15 +129,14 @@ Init_bubblebabble(void)
|
|
129
129
|
|
130
130
|
rb_require("digest");
|
131
131
|
|
132
|
-
rb_mDigest = rb_path2class("Digest");
|
133
|
-
rb_mDigest_Instance = rb_path2class("Digest::Instance");
|
134
|
-
rb_cDigest_Class = rb_path2class("Digest::Class");
|
135
|
-
|
136
132
|
#if 0
|
137
133
|
rb_mDigest = rb_define_module("Digest");
|
138
134
|
rb_mDigest_Instance = rb_define_module_under(rb_mDigest, "Instance");
|
139
135
|
rb_cDigest_Class = rb_define_class_under(rb_mDigest, "Class", rb_cObject);
|
140
136
|
#endif
|
137
|
+
rb_mDigest = rb_digest_namespace();
|
138
|
+
rb_mDigest_Instance = rb_const_get(rb_mDigest, rb_intern_const("Instance"));
|
139
|
+
rb_cDigest_Class = rb_const_get(rb_mDigest, rb_intern_const("Class"));
|
141
140
|
|
142
141
|
rb_define_module_function(rb_mDigest, "bubblebabble", rb_digest_s_bubblebabble, 1);
|
143
142
|
rb_define_singleton_method(rb_cDigest_Class, "bubblebabble", rb_digest_class_s_bubblebabble, -1);
|
data/ext/digest/digest.c
CHANGED
@@ -534,9 +534,39 @@ rb_digest_class_init(VALUE self)
|
|
534
534
|
*
|
535
535
|
*
|
536
536
|
* rb_ivar_set(cDigest_SHA1, rb_intern("metadata"),
|
537
|
-
*
|
537
|
+
* rb_digest_make_metadata(&sha1));
|
538
538
|
*/
|
539
539
|
|
540
|
+
#ifdef DIGEST_USE_RB_EXT_RESOLVE_SYMBOL
|
541
|
+
static const rb_data_type_t metadata_type = {
|
542
|
+
"digest/metadata",
|
543
|
+
{0},
|
544
|
+
};
|
545
|
+
|
546
|
+
RUBY_FUNC_EXPORTED VALUE
|
547
|
+
rb_digest_wrap_metadata(const rb_digest_metadata_t *meta)
|
548
|
+
{
|
549
|
+
return rb_obj_freeze(TypedData_Wrap_Struct(0, &metadata_type, (void *)meta));
|
550
|
+
}
|
551
|
+
#endif
|
552
|
+
|
553
|
+
static rb_digest_metadata_t *
|
554
|
+
get_metadata_ptr(VALUE obj)
|
555
|
+
{
|
556
|
+
rb_digest_metadata_t *algo;
|
557
|
+
|
558
|
+
#ifdef DIGEST_USE_RB_EXT_RESOLVE_SYMBOL
|
559
|
+
if (!rb_typeddata_is_kind_of(obj, &metadata_type)) return 0;
|
560
|
+
algo = RTYPEDDATA_DATA(obj);
|
561
|
+
#else
|
562
|
+
# undef RUBY_UNTYPED_DATA_WARNING
|
563
|
+
# define RUBY_UNTYPED_DATA_WARNING 0
|
564
|
+
Data_Get_Struct(obj, rb_digest_metadata_t, algo);
|
565
|
+
#endif
|
566
|
+
|
567
|
+
return algo;
|
568
|
+
}
|
569
|
+
|
540
570
|
static rb_digest_metadata_t *
|
541
571
|
get_digest_base_metadata(VALUE klass)
|
542
572
|
{
|
@@ -554,8 +584,8 @@ get_digest_base_metadata(VALUE klass)
|
|
554
584
|
if (NIL_P(p))
|
555
585
|
rb_raise(rb_eRuntimeError, "Digest::Base cannot be directly inherited in Ruby");
|
556
586
|
|
557
|
-
|
558
|
-
|
587
|
+
algo = get_metadata_ptr(obj);
|
588
|
+
if (!algo) {
|
559
589
|
if (p == klass)
|
560
590
|
rb_raise(rb_eTypeError, "%"PRIsVALUE"::metadata is not initialized properly",
|
561
591
|
klass);
|
@@ -564,12 +594,6 @@ get_digest_base_metadata(VALUE klass)
|
|
564
594
|
klass, p);
|
565
595
|
}
|
566
596
|
|
567
|
-
#undef RUBY_UNTYPED_DATA_WARNING
|
568
|
-
#define RUBY_UNTYPED_DATA_WARNING 0
|
569
|
-
Data_Get_Struct(obj, rb_digest_metadata_t, algo);
|
570
|
-
|
571
|
-
if (!algo) goto wrong;
|
572
|
-
|
573
597
|
switch (algo->api_version) {
|
574
598
|
case 3:
|
575
599
|
break;
|
data/ext/digest/digest.h
CHANGED
@@ -40,7 +40,8 @@ rb_digest_##name##_update(void *ctx, unsigned char *ptr, size_t size) \
|
|
40
40
|
for (; size > stride; size -= stride, ptr += stride) { \
|
41
41
|
name##_Update(ctx, ptr, stride); \
|
42
42
|
} \
|
43
|
-
|
43
|
+
/* Since size <= stride, size should fit into an unsigned int */ \
|
44
|
+
if (size > 0) name##_Update(ctx, ptr, (unsigned int)size); \
|
44
45
|
}
|
45
46
|
|
46
47
|
#define DEFINE_FINISH_FUNC_FROM_FINAL(name) \
|
@@ -63,10 +64,43 @@ rb_id_metadata(void)
|
|
63
64
|
return rb_intern_const("metadata");
|
64
65
|
}
|
65
66
|
|
67
|
+
#if !defined(HAVE_RB_EXT_RESOLVE_SYMBOL)
|
68
|
+
#elif !defined(RUBY_UNTYPED_DATA_WARNING)
|
69
|
+
# error RUBY_UNTYPED_DATA_WARNING is not defined
|
70
|
+
#elif RUBY_UNTYPED_DATA_WARNING
|
71
|
+
/* rb_ext_resolve_symbol() has been defined since Ruby 3.3, but digest
|
72
|
+
* bundled with 3.3 didn't use it. */
|
73
|
+
# define DIGEST_USE_RB_EXT_RESOLVE_SYMBOL 1
|
74
|
+
#endif
|
75
|
+
|
66
76
|
static inline VALUE
|
67
77
|
rb_digest_make_metadata(const rb_digest_metadata_t *meta)
|
68
78
|
{
|
69
|
-
#
|
70
|
-
|
79
|
+
#if defined(EXTSTATIC) && EXTSTATIC
|
80
|
+
/* The extension is built as a static library, so safe to refer to
|
81
|
+
* rb_digest_wrap_metadata directly. */
|
82
|
+
extern VALUE rb_digest_wrap_metadata(const rb_digest_metadata_t *meta);
|
83
|
+
return rb_digest_wrap_metadata(meta);
|
84
|
+
#else
|
85
|
+
/* The extension is built as a shared library, so we can't refer
|
86
|
+
* to rb_digest_wrap_metadata directly. */
|
87
|
+
# ifdef DIGEST_USE_RB_EXT_RESOLVE_SYMBOL
|
88
|
+
/* If rb_ext_resolve_symbol() is available, use it to get the address of
|
89
|
+
* rb_digest_wrap_metadata. */
|
90
|
+
typedef VALUE (*wrapper_func_type)(const rb_digest_metadata_t *meta);
|
91
|
+
static wrapper_func_type wrapper;
|
92
|
+
if (!wrapper) {
|
93
|
+
wrapper = (wrapper_func_type)(uintptr_t)
|
94
|
+
rb_ext_resolve_symbol("digest.so", "rb_digest_wrap_metadata");
|
95
|
+
if (!wrapper) rb_raise(rb_eLoadError, "rb_digest_wrap_metadata not found");
|
96
|
+
}
|
97
|
+
return wrapper(meta);
|
98
|
+
# else
|
99
|
+
/* If rb_ext_resolve_symbol() is not available, keep using untyped
|
100
|
+
* data. */
|
101
|
+
# undef RUBY_UNTYPED_DATA_WARNING
|
102
|
+
# define RUBY_UNTYPED_DATA_WARNING 0
|
71
103
|
return rb_obj_freeze(Data_Wrap_Struct(0, 0, 0, (void *)meta));
|
104
|
+
# endif
|
105
|
+
#endif
|
72
106
|
}
|
data/ext/digest/md5/md5cc.h
CHANGED
@@ -1,8 +1,16 @@
|
|
1
1
|
#define COMMON_DIGEST_FOR_OPENSSL 1
|
2
2
|
#include <CommonCrypto/CommonDigest.h>
|
3
3
|
|
4
|
-
#ifdef
|
5
|
-
#
|
4
|
+
#ifdef __GNUC__
|
5
|
+
# define RB_DIGEST_DIAGNOSTIC(compiler, op, flag) _Pragma(STRINGIZE(compiler diagnostic op flag))
|
6
|
+
# ifdef RBIMPL_WARNING_IGNORED
|
7
|
+
# define RB_DIGEST_WARNING_IGNORED(flag) RBIMPL_WARNING_IGNORED(flag)
|
8
|
+
# elif defined(__clang__)
|
9
|
+
# define RB_DIGEST_WARNING_IGNORED(flag) RB_DIGEST_DIAGNOSTIC(clang, ignored, #flag)
|
10
|
+
# else /* __GNUC__ */
|
11
|
+
# define RB_DIGEST_WARNING_IGNORED(flag) RB_DIGEST_DIAGNOSTIC(GCC, ignored, #flag)
|
12
|
+
# endif
|
13
|
+
RB_DIGEST_WARNING_IGNORED(-Wdeprecated-declarations)
|
6
14
|
/* Suppress deprecation warnings of MD5 from Xcode 11.1 */
|
7
15
|
/* Although we know MD5 is deprecated too, provide just for backward
|
8
16
|
* compatibility, as well as Apple does. */
|
@@ -17,3 +25,11 @@ static DEFINE_FINISH_FUNC_FROM_FINAL(MD5)
|
|
17
25
|
#undef MD5_Finish
|
18
26
|
#define MD5_Update rb_digest_MD5_update
|
19
27
|
#define MD5_Finish rb_digest_MD5_finish
|
28
|
+
|
29
|
+
/*
|
30
|
+
* Pre-10.6 defines are with args, which don't match the argless use in
|
31
|
+
* the function pointer inits. Thus, we redefine MD5_Init as well.
|
32
|
+
* This is a NOP on 10.6+.
|
33
|
+
*/
|
34
|
+
#undef MD5_Init
|
35
|
+
#define MD5_Init CC_MD5_Init
|
data/ext/digest/md5/md5init.c
CHANGED
@@ -53,9 +53,8 @@ Init_md5(void)
|
|
53
53
|
mDigest = rb_define_module("Digest"); /* let rdoc know */
|
54
54
|
#endif
|
55
55
|
mDigest = rb_digest_namespace();
|
56
|
-
cDigest_Base =
|
56
|
+
cDigest_Base = rb_const_get(mDigest, rb_intern_const("Base"));
|
57
57
|
|
58
58
|
cDigest_MD5 = rb_define_class_under(mDigest, "MD5", cDigest_Base);
|
59
|
-
|
60
59
|
rb_iv_set(cDigest_MD5, "metadata", rb_digest_make_metadata(&md5));
|
61
60
|
}
|
@@ -49,9 +49,8 @@ Init_rmd160(void)
|
|
49
49
|
mDigest = rb_define_module("Digest"); /* let rdoc know */
|
50
50
|
#endif
|
51
51
|
mDigest = rb_digest_namespace();
|
52
|
-
cDigest_Base =
|
52
|
+
cDigest_Base = rb_const_get(mDigest, rb_intern_const("Base"));
|
53
53
|
|
54
54
|
cDigest_RMD160 = rb_define_class_under(mDigest, "RMD160", cDigest_Base);
|
55
|
-
|
56
55
|
rb_iv_set(cDigest_RMD160, "metadata", rb_digest_make_metadata(&rmd160));
|
57
56
|
}
|
data/ext/digest/sha1/sha1cc.h
CHANGED
@@ -12,3 +12,11 @@ static DEFINE_FINISH_FUNC_FROM_FINAL(SHA1)
|
|
12
12
|
#undef SHA1_Finish
|
13
13
|
#define SHA1_Update rb_digest_SHA1_update
|
14
14
|
#define SHA1_Finish rb_digest_SHA1_finish
|
15
|
+
|
16
|
+
/*
|
17
|
+
* Pre-10.6 defines are with args, which don't match the argless use in
|
18
|
+
* the function pointer inits. Thus, we redefine SHA1_Init as well.
|
19
|
+
* This is a NOP on 10.6+.
|
20
|
+
*/
|
21
|
+
#undef SHA1_Init
|
22
|
+
#define SHA1_Init CC_SHA1_Init
|
data/ext/digest/sha1/sha1init.c
CHANGED
@@ -55,9 +55,8 @@ Init_sha1(void)
|
|
55
55
|
mDigest = rb_define_module("Digest"); /* let rdoc know */
|
56
56
|
#endif
|
57
57
|
mDigest = rb_digest_namespace();
|
58
|
-
cDigest_Base =
|
58
|
+
cDigest_Base = rb_const_get(mDigest, rb_intern_const("Base"));
|
59
59
|
|
60
60
|
cDigest_SHA1 = rb_define_class_under(mDigest, "SHA1", cDigest_Base);
|
61
|
-
|
62
61
|
rb_iv_set(cDigest_SHA1, "metadata", rb_digest_make_metadata(&sha1));
|
63
62
|
}
|
data/ext/digest/sha2/sha2cc.h
CHANGED
@@ -1,6 +1,33 @@
|
|
1
1
|
#define COMMON_DIGEST_FOR_OPENSSL 1
|
2
2
|
#include <CommonCrypto/CommonDigest.h>
|
3
3
|
|
4
|
+
/*
|
5
|
+
* Prior to 10.5, OpenSSL-compatible definitions are missing for
|
6
|
+
* SHA2 macros, though the CC_ versions are present.
|
7
|
+
* Add the missing definitions we actually use here if needed.
|
8
|
+
* Note that the definitions are the argless 10.6+-style.
|
9
|
+
* The weird CTX mismatch is copied from the 10.6 header.
|
10
|
+
*/
|
11
|
+
#ifndef SHA256_DIGEST_LENGTH
|
12
|
+
#define SHA256_DIGEST_LENGTH CC_SHA256_DIGEST_LENGTH
|
13
|
+
#define SHA256_CTX CC_SHA256_CTX
|
14
|
+
#define SHA256_Update CC_SHA256_Update
|
15
|
+
#define SHA256_Final CC_SHA256_Final
|
16
|
+
#endif /* !defined SHA256_DIGEST_LENGTH */
|
17
|
+
|
18
|
+
#ifndef SHA384_DIGEST_LENGTH
|
19
|
+
#define SHA384_DIGEST_LENGTH CC_SHA384_DIGEST_LENGTH
|
20
|
+
#define SHA512_CTX CC_SHA512_CTX
|
21
|
+
#define SHA384_Update CC_SHA384_Update
|
22
|
+
#define SHA384_Final CC_SHA384_Final
|
23
|
+
#endif /* !defined SHA384_DIGEST_LENGTH */
|
24
|
+
|
25
|
+
#ifndef SHA512_DIGEST_LENGTH
|
26
|
+
#define SHA512_DIGEST_LENGTH CC_SHA512_DIGEST_LENGTH
|
27
|
+
#define SHA512_Update CC_SHA512_Update
|
28
|
+
#define SHA512_Final CC_SHA512_Final
|
29
|
+
#endif /* !defined SHA512_DIGEST_LENGTH */
|
30
|
+
|
4
31
|
#define SHA256_BLOCK_LENGTH CC_SHA256_BLOCK_BYTES
|
5
32
|
#define SHA384_BLOCK_LENGTH CC_SHA384_BLOCK_BYTES
|
6
33
|
#define SHA512_BLOCK_LENGTH CC_SHA512_BLOCK_BYTES
|
@@ -29,3 +56,15 @@ static DEFINE_FINISH_FUNC_FROM_FINAL(SHA512)
|
|
29
56
|
#undef SHA512_Finish
|
30
57
|
#define SHA512_Update rb_digest_SHA512_update
|
31
58
|
#define SHA512_Finish rb_digest_SHA512_finish
|
59
|
+
|
60
|
+
/*
|
61
|
+
* Pre-10.6 defines are with args, which don't match the argless use in
|
62
|
+
* the function pointer inits. Thus, we redefine SHA*_Init as well.
|
63
|
+
* This is a NOP on 10.6+.
|
64
|
+
*/
|
65
|
+
#undef SHA256_Init
|
66
|
+
#define SHA256_Init CC_SHA256_Init
|
67
|
+
#undef SHA384_Init
|
68
|
+
#define SHA384_Init CC_SHA384_Init
|
69
|
+
#undef SHA512_Init
|
70
|
+
#define SHA512_Init CC_SHA512_Init
|
data/ext/digest/sha2/sha2init.c
CHANGED
@@ -25,29 +25,50 @@ static const rb_digest_metadata_t sha##bitlen = { \
|
|
25
25
|
FOREACH_BITLEN(DEFINE_ALGO_METADATA)
|
26
26
|
|
27
27
|
/*
|
28
|
+
* Document-class: Digest::SHA256 < Digest::Base
|
29
|
+
*
|
28
30
|
* Classes for calculating message digests using the SHA-256/384/512
|
29
31
|
* Secure Hash Algorithm(s) by NIST (the US' National Institute of
|
30
32
|
* Standards and Technology), described in FIPS PUB 180-2.
|
33
|
+
*
|
34
|
+
* See SHA2.
|
35
|
+
*/
|
36
|
+
/*
|
37
|
+
* Document-class: Digest::SHA384 < Digest::Base
|
38
|
+
*
|
39
|
+
* Classes for calculating message digests using the SHA-256/384/512
|
40
|
+
* Secure Hash Algorithm(s) by NIST (the US' National Institute of
|
41
|
+
* Standards and Technology), described in FIPS PUB 180-2.
|
42
|
+
*
|
43
|
+
* See SHA2.
|
44
|
+
*/
|
45
|
+
/*
|
46
|
+
* Document-class: Digest::SHA512 < Digest::Base
|
47
|
+
*
|
48
|
+
* Classes for calculating message digests using the SHA-256/384/512
|
49
|
+
* Secure Hash Algorithm(s) by NIST (the US' National Institute of
|
50
|
+
* Standards and Technology), described in FIPS PUB 180-2.
|
51
|
+
*
|
52
|
+
* See SHA2.
|
31
53
|
*/
|
32
54
|
void
|
33
55
|
Init_sha2(void)
|
34
56
|
{
|
35
|
-
VALUE mDigest, cDigest_Base;
|
57
|
+
VALUE mDigest, cDigest_Base, cDigest_SHA2;
|
36
58
|
ID id_metadata = rb_id_metadata();
|
37
59
|
|
38
|
-
#
|
39
|
-
|
40
|
-
|
41
|
-
FOREACH_BITLEN(DECLARE_ALGO_CLASS)
|
42
|
-
|
60
|
+
#if 0
|
61
|
+
mDigest = rb_define_module("Digest"); /* let rdoc know */
|
62
|
+
#endif
|
43
63
|
mDigest = rb_digest_namespace();
|
44
|
-
cDigest_Base =
|
64
|
+
cDigest_Base = rb_const_get(mDigest, rb_intern_const("Base"));
|
65
|
+
|
66
|
+
cDigest_SHA2 = rb_define_class_under(mDigest, "SHA256", cDigest_Base);
|
67
|
+
rb_ivar_set(cDigest_SHA2, id_metadata, rb_digest_make_metadata(&sha256));
|
45
68
|
|
46
|
-
|
47
|
-
|
48
|
-
\
|
49
|
-
rb_ivar_set(cDigest_SHA##bitlen, id_metadata, \
|
50
|
-
rb_digest_make_metadata(&sha##bitlen));
|
69
|
+
cDigest_SHA2 = rb_define_class_under(mDigest, "SHA384", cDigest_Base);
|
70
|
+
rb_ivar_set(cDigest_SHA2, id_metadata, rb_digest_make_metadata(&sha384));
|
51
71
|
|
52
|
-
|
72
|
+
cDigest_SHA2 = rb_define_class_under(mDigest, "SHA512", cDigest_Base);
|
73
|
+
rb_ivar_set(cDigest_SHA2, id_metadata, rb_digest_make_metadata(&sha512));
|
53
74
|
}
|
data/lib/digest/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: digest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.2.0.pre0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Akinori MUSHA
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-12-11 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Provides a framework for message digest libraries.
|
14
14
|
email:
|
@@ -53,7 +53,6 @@ files:
|
|
53
53
|
- ext/digest/sha2/sha2.h
|
54
54
|
- ext/digest/sha2/sha2cc.h
|
55
55
|
- ext/digest/sha2/sha2init.c
|
56
|
-
- ext/digest/test.sh
|
57
56
|
- lib/digest.rb
|
58
57
|
- lib/digest/sha2.rb
|
59
58
|
- lib/digest/version.rb
|
@@ -78,7 +77,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
78
77
|
- !ruby/object:Gem::Version
|
79
78
|
version: '0'
|
80
79
|
requirements: []
|
81
|
-
rubygems_version: 3.
|
80
|
+
rubygems_version: 3.5.11
|
82
81
|
signing_key:
|
83
82
|
specification_version: 4
|
84
83
|
summary: Provides a framework for message digest libraries.
|
data/ext/digest/test.sh
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
#!/bin/sh
|
2
|
-
#
|
3
|
-
# $RoughId: test.sh,v 1.5 2001/07/13 15:38:27 knu Exp $
|
4
|
-
# $Id$
|
5
|
-
|
6
|
-
RUBY=${RUBY:=ruby}
|
7
|
-
MAKE=${MAKE:=make}
|
8
|
-
CFLAGS=${CFLAGS:=-Wall}
|
9
|
-
|
10
|
-
${RUBY} extconf.rb --with-cflags="${CFLAGS}"
|
11
|
-
${MAKE} clean
|
12
|
-
${MAKE}
|
13
|
-
|
14
|
-
for algo in md5 rmd160 sha1 sha2; do
|
15
|
-
args=--with-cflags="${CFLAGS}"
|
16
|
-
|
17
|
-
if [ $WITH_BUNDLED_ENGINES ]; then
|
18
|
-
args="$args --with-bundled-$algo"
|
19
|
-
fi
|
20
|
-
|
21
|
-
(cd $algo &&
|
22
|
-
${RUBY} extconf.rb $args;
|
23
|
-
${MAKE} clean;
|
24
|
-
${MAKE})
|
25
|
-
ln -sf ../../$algo/$algo.so lib/digest/
|
26
|
-
done
|
27
|
-
|
28
|
-
${RUBY} -I. -I./lib ../../test/digest/test_digest.rb
|
29
|
-
|
30
|
-
rm lib/digest/*.so
|