Merge pull request #3483 from ipfs/feat/block-put-hash

cmd/block: add selection of multihash parameters to block put command
This commit is contained in:
Jeromy Johnson 2016-12-08 13:33:33 -08:00 committed by GitHub
commit 2aded6785d
2 changed files with 32 additions and 3 deletions

View File

@ -117,6 +117,8 @@ It reads from stdin, and <key> is a base58 encoded multihash.
},
Options: []cmds.Option{
cmds.StringOption("format", "f", "cid format for blocks to be created with.").Default("v0"),
cmds.StringOption("mhtype", "multihash hash function").Default("sha2-256"),
cmds.IntOption("mhlen", "multihash hash length").Default(-1),
},
Run: func(req cmds.Request, res cmds.Response) {
n, err := req.InvocContext().GetNode()
@ -143,11 +145,10 @@ It reads from stdin, and <key> is a base58 encoded multihash.
return
}
format, _, _ := req.Option("format").String()
var pref cid.Prefix
pref.MhType = mh.SHA2_256
pref.MhLength = -1
pref.Version = 1
format, _, _ := req.Option("format").String()
switch format {
case "cbor":
pref.Codec = cid.DagCBOR
@ -163,6 +164,21 @@ It reads from stdin, and <key> is a base58 encoded multihash.
return
}
mhtype, _, _ := req.Option("mhtype").String()
mhtval, ok := mh.Names[mhtype]
if !ok {
res.SetError(fmt.Errorf("unrecognized multihash function: %s", mhtype), cmds.ErrNormal)
return
}
pref.MhType = mhtval
mhlen, _, err := req.Option("mhlen").Int()
if err != nil {
res.SetError(err, cmds.ErrNormal)
return
}
pref.MhLength = mhlen
bcid, err := pref.Sum(data)
if err != nil {
res.SetError(err, cmds.ErrNormal)

View File

@ -184,6 +184,19 @@ test_expect_success "block get output looks right" '
test_cmp pb_block_out ../t0051-object-data/testPut.pb
'
test_expect_success "can set multihash type and length on block put" '
HASH=$(echo "foooo" | ipfs block put --format=raw --mhtype=sha3 --mhlen=16)
'
test_expect_success "output looks good" '
test "z25ScPysKoxJBcPxczn9NvuHiZU5" = "$HASH"
'
test_expect_success "can read block with different hash" '
ipfs block get $HASH > blk_get_out &&
echo "foooo" > blk_get_exp &&
test_cmp blk_get_exp blk_get_out
'
#
# Misc tests
#