Skip to content

Commit e787b30

Browse files
authored
docs: update readme for keccak 1.3 (#17)
* docs: update readme for keccak 1.3 * nit: patch license file * nit: patch readme file
1 parent 39232ab commit e787b30

File tree

2 files changed

+20
-18
lines changed

2 files changed

+20
-18
lines changed

LICENSE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@
187187
same "printed page" as the copyright notice for easier
188188
identification within third-party archives.
189189

190-
Copyright 2019 @q9f
190+
Copyright [yyyy] [name of copyright owner]
191191

192192
Licensed under the Apache License, Version 2.0 (the "License");
193193
you may not use this file except in compliance with the License.

README.md

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
1-
# The Keccak (SHA-3) digest for Ruby
1+
# The Keccak (SHA3) digest for Ruby
22

33
[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/q9f/keccak.rb/Build/main)](https://github.com/q9f/keccak.rb/actions)
44
[![GitHub top language](https://img.shields.io/github/languages/top/q9f/keccak.rb?color=black)](https://github.com/q9f/keccak.rb/pulse)
55
[![GitHub release](https://img.shields.io/github/v/release/q9f/keccak.rb?color=red)](https://github.com/q9f/keccak.rb/releases/latest)
66
[![Gem](https://img.shields.io/gem/v/keccak?color=red)](https://rubygems.org/gems/keccak)
77
[![License](https://img.shields.io/github/license/q9f/keccak.rb.svg?color=black)](LICENSE)
88

9-
This Ruby extension exposes the [Keccak](http://keccak.noekeon.org/) (SHA-3) digest `C` bindings in the non-final version used by [Ethereum](https://ethereum.org). It is based on the reference `C` implementation, version 3.2. The exposed interface is almost identical to that of the `digest` standard library.
9+
This Ruby extension exposes the [Keccak](http://keccak.noekeon.org/) (SHA3) digest `C` bindings in the non-final version used by [Ethereum](https://ethereum.org). It is based on the reference `C` implementation, version 3.2. The exposed interface is almost identical to that of the `digest` standard library. See [#16](https://github.com/q9f/keccak.rb/pull/16).
10+
11+
:warning: **Note: version `~> 1.3` exposes `digest/keccak` (`Digest::Keccak`) whereas version `~> 1.2` maintains the old `digest/sha3` (`Digest::SHA3`) for backward compatibility.** Only use `~> 1.2` if you want to lazy-patch your library. It works, but it's _not recommended._ Use `~> 1.3` and simply rename SHA3 to Keccak.
1012

1113
## Installation
1214

@@ -18,36 +20,36 @@ gem install keccak
1820
```
1921

2022
```ruby
21-
gem 'keccak', '~> 1.2'
23+
gem 'keccak', '~> 1.3'
2224
```
2325

24-
**Note**: as of version `v1.1.0`, `digest-sha3` (historic name, see below) requires Ruby 2.2. The new `keccak` version `v1.2.0` now also supports Ruby 3.0. The last version that worked on older Ruby (1.x) versions was `v1.0.2`. It can be found at the no longer maintained `digest-sha3` [repository from 2015](https://github.com/phusion/digest-sha3-ruby/releases/tag/release-1.0.2).
26+
**Note**: as of version `~> v1.1`, `digest-sha3` (historic name, see below) requires Ruby 2.2. The new `keccak` version `~> v1.2` now also supports Ruby 3.0. The last version that worked on older Ruby (1.x) versions was `~> v1.0`. It can be found at the no longer maintained `digest-sha3` [repository from 2015](https://github.com/phusion/digest-sha3-ruby/releases/tag/release-1.0.2).
2527

2628
## Usage
2729

28-
This gem extends the `digest/*` module by a `digest/sha3` class (historic reference, see history section below).
30+
This gem extends the `digest/*` module by a `digest/keccak` class.
2931

3032
```ruby
31-
require 'digest/sha3'
33+
require 'digest/keccak'
3234

3335
# Generate 512-bit digest.
34-
Digest::SHA3.digest("foo") # => "\025\227\204*..."
35-
Digest::SHA3.hexdigest("foo") # => "1597842a..."
36+
Digest::Keccak.digest("foo") # => "\025\227\204*..."
37+
Digest::Keccak.hexdigest("foo") # => "1597842a..."
3638

3739
# Generate 224-bit digest.
38-
Digest::SHA3.digest("foo", 224) # => "\332\251M\247..."
39-
Digest::SHA3.hexdigest("foo", 224) # => "daa94da7..."
40+
Digest::Keccak.digest("foo", 224) # => "\332\251M\247..."
41+
Digest::Keccak.hexdigest("foo", 224) # => "daa94da7..."
4042

4143
# Use this interface to feed data in chunks. 512-bit by default.
42-
digest = Digest::SHA3.new
44+
digest = Digest::Keccak.new
4345
digest.update("f")
4446
digest.update("o")
4547
digest.update("o")
4648
digest.digest # => "\025\227\204*..."
4749
digest.hexdigest # => "1597842a..."
4850

4951
# You can pass a hash length to the constructor.
50-
digest = Digest::SHA3.new(224)
52+
digest = Digest::Keccak.new(224)
5153
```
5254

5355
Keccak supports five hash lengths: 224-bit, 256-bit, 384-bit, 512-bit and variable length. Variable length is not supported by this Ruby extension. Unless the user specifies otherwise, this Ruby extension assumes 512-bit.
@@ -63,13 +65,13 @@ make test
6365

6466
A part of the test suite is automatically generated from Keccak's reference test suite.
6567

66-
## Warning: Keccak vs. SHA-3
68+
## Warning: Keccak vs. SHA3
6769

68-
**Note:** This gem still uses the `Digest::SHA3` namespace for reasons of backwards compatibility and long-term maintainability. See history section below.
70+
**Note:** This gem still uses the `Digest::SHA3` namespace in version `~> 1.2` for reasons of backward compatibility and long-term maintainability. See history section below.
6971

70-
:warning: This gem does **not** implement the final FIPS202 standard, today known as SHA-3 but rather an early version, commonly referred to as Keccak. The reason why this is kept around, is that Ethereum uses this earler version of Keccak. See also: [Ethereum: Difference between keccak256 and sha3](https://ethereum.stackexchange.com/questions/30369/difference-between-keccak256-and-sha3)
72+
:warning: This gem does **not** implement the final FIPS202 standard, today known as SHA3 but rather an early version, commonly referred to as Keccak. The reason why this is kept around, is that Ethereum uses this earler version of Keccak. See also: [Ethereum: Difference between keccak256 and sha3](https://ethereum.stackexchange.com/questions/30369/difference-between-keccak256-and-sha3).
7173

72-
If you are looking for the final SHA-3 gem, please use the following: https://rubygems.org/gems/sha3
74+
If you are looking for the final SHA3 gem, please use the following: https://rubygems.org/gems/sha3
7375

7476
## History
7577

@@ -79,5 +81,5 @@ This gem was later patched multiple times:
7981

8082
* https://github.com/teamhedge/digest-sha3-ruby (KECCAK, as `digest-sha3-patched`)
8183
* https://github.com/sydneyitguy/digest-sha3-ruby (KECCAK, as `digest-sha3-patched-ruby-3`)
82-
* https://github.com/steakknife/digest-sha3-ruby (actual SHA-3, do not use for Ethereum)
84+
* https://github.com/steakknife/digest-sha3-ruby (actual SHA3, do not use for Ethereum)
8385
* https://github.com/kotovalexarian/digest-keccak/ (KECCAK, as `digest-keccak`)

0 commit comments

Comments
 (0)