base58 0.2.1 → 0.2.2
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 +4 -4
- data/CHANGELOG +3 -0
- data/VERSION +1 -1
- data/base58.gemspec +3 -3
- data/lib/base58.rb +11 -2
- data/test/test_base58.rb +15 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c9b47376957f4dbd7b96af742f18a5a0acef4fbcd47d7df25d1063051d52cb3f
|
4
|
+
data.tar.gz: e358735d555fede75daa17a1e425738ebd6e7921a74be2e028a0f2d0b4e16e5a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1349c672d885fe401e8d2c7f98d219394ec76d03116ffe9323ec49cc10648df453742951020fb5f2f68f2ed7a6ec1867cdd851d99a34cfa3b96163e24a9ebbaa
|
7
|
+
data.tar.gz: 88a6a954d7d49c22dc2fa81b15686b8c260b27acec06db06236987e8b12137e8a4335f912867d9cddfa32d11464484a30e97fbb9ef9319181c6afed6e77a58ac
|
data/CHANGELOG
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.2
|
data/base58.gemspec
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: base58 0.2.
|
5
|
+
# stub: base58 0.2.2 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "base58".freeze
|
9
|
-
s.version = "0.2.
|
9
|
+
s.version = "0.2.2"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib".freeze]
|
13
13
|
s.authors = ["Douglas F Shearer".freeze]
|
14
|
-
s.date = "2018-01-
|
14
|
+
s.date = "2018-01-11"
|
15
15
|
s.description = "Base58 is a Ruby library for converting ints or binaries to and from base58.".freeze
|
16
16
|
s.email = "dougal.s@gmail.com".freeze
|
17
17
|
s.extra_rdoc_files = [
|
data/lib/base58.rb
CHANGED
@@ -53,7 +53,7 @@ class Base58
|
|
53
53
|
prefix = ''
|
54
54
|
end
|
55
55
|
|
56
|
-
prefix + int_to_base58(binary_val.
|
56
|
+
prefix + int_to_base58(binary_val.unpack('H*')[0].to_i(16), alphabet)
|
57
57
|
end
|
58
58
|
|
59
59
|
# Converts a base58 string to an ASCII-8BIT (binary) encoded string.
|
@@ -63,7 +63,16 @@ class Base58
|
|
63
63
|
raise ArgumentError, 'Invalid alphabet selection.' unless ALPHABETS.include?(alphabet)
|
64
64
|
nzeroes = base58_val.chars.find_index{|c| c != ALPHABETS[alphabet][0]} || base58_val.length-1
|
65
65
|
prefix = nzeroes < 0 ? '' : '00' * nzeroes
|
66
|
-
[prefix + base58_to_int(base58_val, alphabet)
|
66
|
+
[prefix + Private::int_to_hex(base58_to_int(base58_val, alphabet))].pack('H*')
|
67
|
+
end
|
68
|
+
|
69
|
+
module Private
|
70
|
+
def self.int_to_hex int
|
71
|
+
hex = int.to_s(16)
|
72
|
+
# The hex string must always consist of an even number of characters,
|
73
|
+
# otherwise the pack() parsing will be misaligned.
|
74
|
+
(hex.length % 2 == 0) ? hex : ('0'+hex)
|
75
|
+
end
|
67
76
|
end
|
68
77
|
|
69
78
|
class << self
|
data/test/test_base58.rb
CHANGED
@@ -531,7 +531,8 @@ EXAMPLES = {
|
|
531
531
|
"6hHHZB" => "\xCE\xE3\x15Y".force_encoding('BINARY'),
|
532
532
|
"6hHKum" => "\xCE\xE3)\x00".force_encoding('BINARY'),
|
533
533
|
"6hLgFW" => "\xCE\xEA\xAA(".force_encoding('BINARY'),
|
534
|
-
"6hBRKR" => "\xCE\xD1\x9Ek".force_encoding('BINARY')
|
534
|
+
"6hBRKR" => "\xCE\xD1\x9Ek".force_encoding('BINARY'),
|
535
|
+
"7xBSG3j7NgPksBpPnX1G7y19EuAy4swQexDoECfWdys" => "\x01\xAD<l'\xAF!\x96N\x93u\x93\xE2\xAF\x92p\x96=\x89n\xD7\x953\x17\x12\x8E\xBD\xA2\x04\x84~Z".force_encoding('BINARY')
|
535
536
|
},
|
536
537
|
:bitcoin => {
|
537
538
|
"6Hknds" => "\xCE\xE99\x86".force_encoding('BINARY'),
|
@@ -539,7 +540,8 @@ EXAMPLES = {
|
|
539
540
|
"6Hiizc" => "\xCE\xE3\x15Y".force_encoding('BINARY'),
|
540
541
|
"6HikVM" => "\xCE\xE3)\x00".force_encoding('BINARY'),
|
541
542
|
"6HmGgw" => "\xCE\xEA\xAA(".force_encoding('BINARY'),
|
542
|
-
"6Hcrkr" => "\xCE\xD1\x9Ek".force_encoding('BINARY')
|
543
|
+
"6Hcrkr" => "\xCE\xD1\x9Ek".force_encoding('BINARY'),
|
544
|
+
"7Ycsh3K7oGpLTcQpNx1h7Z19fVbZ4TXqEYePfdFwDZT" => "\x01\xAD<l'\xAF!\x96N\x93u\x93\xE2\xAF\x92p\x96=\x89n\xD7\x953\x17\x12\x8E\xBD\xA2\x04\x84~Z".force_encoding('BINARY')
|
543
545
|
},
|
544
546
|
:ripple => {
|
545
547
|
"aHk8d1" => "\xCE\xE99\x86".force_encoding('BINARY'),
|
@@ -547,7 +549,8 @@ EXAMPLES = {
|
|
547
549
|
"aH55zc" => "\xCE\xE3\x15Y".force_encoding('BINARY'),
|
548
550
|
"aH5kVM" => "\xCE\xE3)\x00".force_encoding('BINARY'),
|
549
551
|
"aHmGgA" => "\xCE\xEA\xAA(".force_encoding('BINARY'),
|
550
|
-
"aHciki" => "\xCE\xD1\x9Ek".force_encoding('BINARY')
|
552
|
+
"aHciki" => "\xCE\xD1\x9Ek".force_encoding('BINARY'),
|
553
|
+
"fYc16sKfoGFLTcQF4xr6fZr9CVbZhTXqNYePCdEADZT" => "\x01\xAD<l'\xAF!\x96N\x93u\x93\xE2\xAF\x92p\x96=\x89n\xD7\x953\x17\x12\x8E\xBD\xA2\x04\x84~Z".force_encoding('BINARY')
|
551
554
|
}
|
552
555
|
}
|
553
556
|
|
@@ -708,6 +711,15 @@ EXAMPLES = {
|
|
708
711
|
end
|
709
712
|
end
|
710
713
|
|
714
|
+
def test_base58_to_binary_round_trip
|
715
|
+
BINARY_STRING_EXAMPLES.each do |alphabet, examples|
|
716
|
+
examples.each do |base_58, binary|
|
717
|
+
assert_equal base_58, Base58.binary_to_base58(Base58.base58_to_binary(base_58, alphabet), alphabet)
|
718
|
+
assert_equal binary, Base58.base58_to_binary(Base58.binary_to_base58(binary, alphabet), alphabet)
|
719
|
+
end
|
720
|
+
end
|
721
|
+
end
|
722
|
+
|
711
723
|
def test_int_to_base58_all_alphabets
|
712
724
|
EXAMPLES.each do |alphabet, examples|
|
713
725
|
examples.each do |expected, integer|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: base58
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Douglas F Shearer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-01-
|
11
|
+
date: 2018-01-11 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Base58 is a Ruby library for converting ints or binaries to and from
|
14
14
|
base58.
|