Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
mf
go-multiaddr
Commits
567daf24
Unverified
Commit
567daf24
authored
Dec 13, 2018
by
idk
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
made garlic64 variable-length
parent
0f1c1ba0
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
22 additions
and
8 deletions
+22
-8
multiaddr_test.go
multiaddr_test.go
+3
-3
protocols.go
protocols.go
+1
-1
transcoders.go
transcoders.go
+18
-4
No files found.
multiaddr_test.go
View file @
567daf24
...
...
@@ -185,7 +185,7 @@ func TestStringToBytes(t *testing.T) {
}
if
!
bytes
.
Equal
(
b1
,
b2
)
{
t
.
Error
(
"failed to convert "
,
s
,
"to"
,
b1
,
"got"
,
b2
)
t
.
Error
(
"failed to convert
\n
"
,
s
,
"to
\n
"
,
b1
,
"got
\n
"
,
b2
)
}
if
err
:=
validateBytes
(
b2
);
err
!=
nil
{
...
...
@@ -199,7 +199,7 @@ func TestStringToBytes(t *testing.T) {
testString
(
"/onion/aaimaq4ygg2iegci:80"
,
"bc030010c0439831b48218480050"
)
testString
(
"/onion3/vww6ybal4bd7szmgncyruucpgfkqahzddi37ktceo3ah7ngmcopnpyyd:1234"
,
"bd03adadec040be047f9658668b11a504f3155001f231a37f54c4476c07fb4cc139ed7e30304d2"
)
testString
(
"/garlic64/jT~IyXaoauTni6N4517EG8mrFUKpy0IlgZh-EY9csMAk82Odatmzr~YTZy8Hv7u~wvkg75EFNOyqb~nAPg-khyp2TS~ObUz8WlqYAM2VlEzJ7wJB91P-cUlKF18zSzVoJFmsrcQHZCirSbWoOknS6iNmsGRh5KVZsBEfp1Dg3gwTipTRIx7Vl5Vy~1OSKQVjYiGZS9q8RL0MF~7xFiKxZDLbPxk0AK9TzGGqm~wMTI2HS0Gm4Ycy8LYPVmLvGonIBYndg2bJC7WLuF6tVjVquiokSVDKFwq70BCUU5AU-EvdOD5KEOAM7mPfw-gJUG4tm1TtvcobrObqoRnmhXPTBTN5H7qDD12AvlwFGnfAlBXjuP4xOUAISL5SRLiulrsMSiT4GcugSI80mF6sdB0zWRgL1yyvoVWeTBn1TqjO27alr95DGTluuSqrNAxgpQzCKEWAyzrQkBfo2avGAmmz2NaHaAvYbOg0QSJz1PLjv2jdPW~ofiQmrGWM1cd~1cCqAAAA"
,
"ca038d3fc8c976a86ae4e78ba378e75ec41bc9ab1542a9cb422581987e118f5cb0c024f3639d6ad9b3aff613672f07bfbbbfc2f920ef910534ecaa6ff9c03e0fa4872a764d2fce6d4cfc5a5a9800cd95944cc9ef0241f753fe71494a175f334b35682459acadc4076428ab49b5a83a49d2ea2366b06461e4a559b0111fa750e0de0c138a94d1231ed5979572ff53922905636221994bdabc44bd0c17fef11622b16432db3f193400af53cc61aa9bfc0c4c8d874b41a6e18732f0b60f5662ef1a89c80589dd8366c90bb58bb85ead56356aba2a244950ca170abbd01094539014f84bdd383e4a10e00cee63dfc3e809506e2d9b54edbdca1bace6eaa119e68573d30533791fba830f5d80be5c051a77c09415e3b8fe3139400848be5244b8ae96bb0c4a24f819cba0488f34985eac741d3359180bd72cafa1559e4c19f54ea8cedbb6a5afde4319396eb92aab340c60a50cc2284580cb3ad09017e8d9abc60269b3d8d687680bd86ce834412273d4f2e3bf68dd3d6fe87e2426ac658cd5c77fd5c0aa000000"
)
"ca038
3038
d3fc8c976a86ae4e78ba378e75ec41bc9ab1542a9cb422581987e118f5cb0c024f3639d6ad9b3aff613672f07bfbbbfc2f920ef910534ecaa6ff9c03e0fa4872a764d2fce6d4cfc5a5a9800cd95944cc9ef0241f753fe71494a175f334b35682459acadc4076428ab49b5a83a49d2ea2366b06461e4a559b0111fa750e0de0c138a94d1231ed5979572ff53922905636221994bdabc44bd0c17fef11622b16432db3f193400af53cc61aa9bfc0c4c8d874b41a6e18732f0b60f5662ef1a89c80589dd8366c90bb58bb85ead56356aba2a244950ca170abbd01094539014f84bdd383e4a10e00cee63dfc3e809506e2d9b54edbdca1bace6eaa119e68573d30533791fba830f5d80be5c051a77c09415e3b8fe3139400848be5244b8ae96bb0c4a24f819cba0488f34985eac741d3359180bd72cafa1559e4c19f54ea8cedbb6a5afde4319396eb92aab340c60a50cc2284580cb3ad09017e8d9abc60269b3d8d687680bd86ce834412273d4f2e3bf68dd3d6fe87e2426ac658cd5c77fd5c0aa000000"
)
}
func
TestBytesToString
(
t
*
testing
.
T
)
{
...
...
@@ -231,7 +231,7 @@ func TestBytesToString(t *testing.T) {
testString
(
"/onion/aaimaq4ygg2iegci:80"
,
"bc030010c0439831b48218480050"
)
testString
(
"/onion3/vww6ybal4bd7szmgncyruucpgfkqahzddi37ktceo3ah7ngmcopnpyyd:1234"
,
"bd03adadec040be047f9658668b11a504f3155001f231a37f54c4476c07fb4cc139ed7e30304d2"
)
testString
(
"/garlic64/jT~IyXaoauTni6N4517EG8mrFUKpy0IlgZh-EY9csMAk82Odatmzr~YTZy8Hv7u~wvkg75EFNOyqb~nAPg-khyp2TS~ObUz8WlqYAM2VlEzJ7wJB91P-cUlKF18zSzVoJFmsrcQHZCirSbWoOknS6iNmsGRh5KVZsBEfp1Dg3gwTipTRIx7Vl5Vy~1OSKQVjYiGZS9q8RL0MF~7xFiKxZDLbPxk0AK9TzGGqm~wMTI2HS0Gm4Ycy8LYPVmLvGonIBYndg2bJC7WLuF6tVjVquiokSVDKFwq70BCUU5AU-EvdOD5KEOAM7mPfw-gJUG4tm1TtvcobrObqoRnmhXPTBTN5H7qDD12AvlwFGnfAlBXjuP4xOUAISL5SRLiulrsMSiT4GcugSI80mF6sdB0zWRgL1yyvoVWeTBn1TqjO27alr95DGTluuSqrNAxgpQzCKEWAyzrQkBfo2avGAmmz2NaHaAvYbOg0QSJz1PLjv2jdPW~ofiQmrGWM1cd~1cCqAAAA"
,
"ca038d3fc8c976a86ae4e78ba378e75ec41bc9ab1542a9cb422581987e118f5cb0c024f3639d6ad9b3aff613672f07bfbbbfc2f920ef910534ecaa6ff9c03e0fa4872a764d2fce6d4cfc5a5a9800cd95944cc9ef0241f753fe71494a175f334b35682459acadc4076428ab49b5a83a49d2ea2366b06461e4a559b0111fa750e0de0c138a94d1231ed5979572ff53922905636221994bdabc44bd0c17fef11622b16432db3f193400af53cc61aa9bfc0c4c8d874b41a6e18732f0b60f5662ef1a89c80589dd8366c90bb58bb85ead56356aba2a244950ca170abbd01094539014f84bdd383e4a10e00cee63dfc3e809506e2d9b54edbdca1bace6eaa119e68573d30533791fba830f5d80be5c051a77c09415e3b8fe3139400848be5244b8ae96bb0c4a24f819cba0488f34985eac741d3359180bd72cafa1559e4c19f54ea8cedbb6a5afde4319396eb92aab340c60a50cc2284580cb3ad09017e8d9abc60269b3d8d687680bd86ce834412273d4f2e3bf68dd3d6fe87e2426ac658cd5c77fd5c0aa000000"
)
"ca038
3038
d3fc8c976a86ae4e78ba378e75ec41bc9ab1542a9cb422581987e118f5cb0c024f3639d6ad9b3aff613672f07bfbbbfc2f920ef910534ecaa6ff9c03e0fa4872a764d2fce6d4cfc5a5a9800cd95944cc9ef0241f753fe71494a175f334b35682459acadc4076428ab49b5a83a49d2ea2366b06461e4a559b0111fa750e0de0c138a94d1231ed5979572ff53922905636221994bdabc44bd0c17fef11622b16432db3f193400af53cc61aa9bfc0c4c8d874b41a6e18732f0b60f5662ef1a89c80589dd8366c90bb58bb85ead56356aba2a244950ca170abbd01094539014f84bdd383e4a10e00cee63dfc3e809506e2d9b54edbdca1bace6eaa119e68573d30533791fba830f5d80be5c051a77c09415e3b8fe3139400848be5244b8ae96bb0c4a24f819cba0488f34985eac741d3359180bd72cafa1559e4c19f54ea8cedbb6a5afde4319396eb92aab340c60a50cc2284580cb3ad09017e8d9abc60269b3d8d687680bd86ce834412273d4f2e3bf68dd3d6fe87e2426ac658cd5c77fd5c0aa000000"
)
}
...
...
protocols.go
View file @
567daf24
...
...
@@ -100,7 +100,7 @@ var (
Name
:
"garlic64"
,
Code
:
P_GARLIC64
,
VCode
:
CodeToVarint
(
P_GARLIC64
),
Size
:
3096
,
Size
:
LengthPrefixedVarSize
,
Transcoder
:
TranscoderGarlic64
,
}
protoUTP
=
Protocol
{
...
...
transcoders.go
View file @
567daf24
...
...
@@ -5,7 +5,6 @@ import (
"encoding/base32"
"encoding/base64"
"encoding/binary"
//"encoding/hex"
"fmt"
"net"
"strconv"
...
...
@@ -213,7 +212,7 @@ func onion3BtS(b []byte) (string, error) {
return
str
,
nil
}
var
TranscoderGarlic64
=
NewTranscoderFromFunctions
(
garlic64StB
,
garlic64BtS
,
nil
)
var
TranscoderGarlic64
=
NewTranscoderFromFunctions
(
garlic64StB
,
garlic64BtS
,
garlicValidate
)
// i2p uses an alternate character set for base64 addresses. This returns an appropriate encoder.
func
garlicBase64Encoding
()
*
base64
.
Encoding
{
...
...
@@ -222,7 +221,7 @@ func garlicBase64Encoding() *base64.Encoding {
func
garlic64StB
(
s
string
)
([]
byte
,
error
)
{
// i2p base64 address
if
len
(
s
)
!=
5
16
{
if
len
(
s
)
<
516
||
len
(
s
)
>
6
16
{
return
nil
,
fmt
.
Errorf
(
"failed to parse garlic addr: %s not an i2p base64 address. len: %d
\n
"
,
s
,
len
(
s
))
}
garlicHostBytes
,
err
:=
garlicBase64Encoding
()
.
DecodeString
(
s
)
...
...
@@ -237,10 +236,25 @@ func garlic64StB(s string) ([]byte, error) {
}
func
garlic64BtS
(
b
[]
byte
)
(
string
,
error
)
{
addr
:=
garlicBase64Encoding
()
.
EncodeToString
(
b
[
0
:
387
]
)
addr
:=
garlicBase64Encoding
()
.
EncodeToString
(
b
)
return
addr
,
nil
}
func
garlicValidate
(
b
[]
byte
)
error
{
if
len
(
b
)
>
516
||
len
(
b
)
<
616
{
fmt
.
Errorf
(
"failed to parse garlic addr: %s not an i2p base64 address. len: %d
\n
"
,
b
,
len
(
b
))
}
s
,
err
:=
garlic64BtS
(
b
)
if
err
!=
nil
{
return
fmt
.
Errorf
(
"failed to decode base64 i2p addr: %s %s"
,
s
,
err
)
}
_
,
err
=
garlicBase64Encoding
()
.
DecodeString
(
s
)
if
err
!=
nil
{
return
fmt
.
Errorf
(
"failed to decode base64 i2p addr: %s %s"
,
s
,
err
)
}
return
nil
}
var
TranscoderP2P
=
NewTranscoderFromFunctions
(
p2pStB
,
p2pBtS
,
p2pVal
)
func
p2pStB
(
s
string
)
([]
byte
,
error
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment