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
dms3
go-dms3
Commits
a9dfe410
Unverified
Commit
a9dfe410
authored
Mar 22, 2018
by
Whyrusleeping
Committed by
GitHub
Mar 22, 2018
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #4563 from ipfs/fix/block-mhtype
commands/block: use CIDv1 with custom mhtype
parents
5c6f8578
efb74199
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
41 additions
and
12 deletions
+41
-12
core/commands/block.go
core/commands/block.go
+29
-12
test/sharness/t0050-block.sh
test/sharness/t0050-block.sh
+12
-0
No files found.
core/commands/block.go
View file @
a9dfe410
...
...
@@ -3,6 +3,7 @@ package commands
import
(
"bytes"
"context"
"errors"
"fmt"
"io"
"io/ioutil"
...
...
@@ -121,6 +122,9 @@ var blockPutCmd = &cmds.Command{
ShortDescription
:
`
'ipfs block put' is a plumbing command for storing raw IPFS blocks.
It reads from stdin, and <key> is a base58 encoded multihash.
By default CIDv0 is going to be generated. Setting 'mhtype' to anything other
than 'sha2-256' or format to anything other than 'v0' will result in CIDv1.
`
,
},
...
...
@@ -128,7 +132,7 @@ It reads from stdin, and <key> is a base58 encoded multihash.
cmdkit
.
FileArg
(
"data"
,
true
,
false
,
"The data to be stored as an IPFS block."
)
.
EnableStdin
(),
},
Options
:
[]
cmdkit
.
Option
{
cmdkit
.
StringOption
(
"format"
,
"f"
,
"cid format for blocks to be created with."
)
.
WithDefault
(
"v0"
)
,
cmdkit
.
StringOption
(
"format"
,
"f"
,
"cid format for blocks to be created with."
),
cmdkit
.
StringOption
(
"mhtype"
,
"multihash hash function"
)
.
WithDefault
(
"sha2-256"
),
cmdkit
.
IntOption
(
"mhlen"
,
"multihash hash length"
)
.
WithDefault
(
-
1
),
},
...
...
@@ -157,27 +161,40 @@ It reads from stdin, and <key> is a base58 encoded multihash.
return
}
mhtype
,
_
:=
req
.
Options
[
"mhtype"
]
.
(
string
)
mhtval
,
ok
:=
mh
.
Names
[
mhtype
]
if
!
ok
{
err
:=
fmt
.
Errorf
(
"unrecognized multihash function: %s"
,
mhtype
)
res
.
SetError
(
err
,
cmdkit
.
ErrNormal
)
return
}
var
pref
cid
.
Prefix
pref
.
Version
=
1
format
,
_
:=
req
.
Options
[
"format"
]
.
(
string
)
formatval
,
ok
:=
cid
.
Codecs
[
format
]
if
!
ok
{
res
.
SetError
(
fmt
.
Errorf
(
"unrecognized format: %s"
,
format
),
cmdkit
.
ErrNormal
)
return
format
,
formatSet
:=
req
.
Options
[
"format"
]
.
(
string
)
if
!
formatSet
{
if
mhtval
==
mh
.
SHA2_256
{
format
=
"v0"
}
else
{
format
=
"protobuf"
}
}
if
format
==
"v0"
{
pref
.
Version
=
0
}
pref
.
Codec
=
formatval
mhtype
,
_
:=
req
.
Options
[
"mhtype"
]
.
(
string
)
mhtval
,
ok
:=
mh
.
Names
[
mhtype
]
formatval
,
ok
:=
cid
.
Codecs
[
format
]
if
!
ok
{
err
:=
fmt
.
Errorf
(
"unrecognized multihash function: %s"
,
mhtype
)
res
.
SetError
(
err
,
cmdkit
.
ErrNormal
)
res
.
SetError
(
fmt
.
Errorf
(
"unrecognized format: '%s'"
,
format
),
cmdkit
.
ErrNormal
)
return
}
if
mhtval
!=
mh
.
SHA2_256
&&
pref
.
Version
==
0
{
res
.
SetError
(
errors
.
New
(
"cannot generate CIDv0 with non-sha256 hash function"
),
cmdkit
.
ErrNormal
)
return
}
pref
.
Codec
=
formatval
pref
.
MhType
=
mhtval
mhlen
,
ok
:=
req
.
Options
[
"mhlen"
]
.
(
int
)
...
...
test/sharness/t0050-block.sh
View file @
a9dfe410
...
...
@@ -209,4 +209,16 @@ test_expect_success "no panic in output" '
test_expect_code 1 grep "panic" stat_out
'
test_expect_success
"can set multihash type and length on block put without format"
'
HASH=$(echo "foooo" | ipfs block put --mhtype=sha3 --mhlen=20)
'
test_expect_success
"output looks good"
'
test "z8bwYCvQPhyDY7VUTsUdGdE8Evm1ktSPV" = "$HASH"
'
test_expect_success
"put with sha3 and cidv0 fails"
'
echo "foooo" | test_must_fail ipfs block put --mhtype=sha3 --mhlen=20 --format=v0
'
test_done
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