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