@@ -16,6 +16,8 @@ import (
16
16
blocks "gx/ipfs/QmYsEQydGrsxNZfAiskvQ76N2xE9hDQtSAkRSynwMiUK3c/go-block-format"
17
17
"gx/ipfs/QmceUdzxkimdYsgtX733uNgzf1DLHyBKN6ehGSp85ayppM/go-ipfs-cmdkit"
18
18
cid "gx/ipfs/QmeSrf6pzut73u6zLQkRFQ3ygt3k6XFT2kjdYP8Tnkwwyg/go-cid"
19
+
20
+ "github.com/pkg/errors"
19
21
)
20
22
21
23
type BlockStat struct {
@@ -128,7 +130,7 @@ It reads from stdin, and <key> is a base58 encoded multihash.
128
130
cmdkit .FileArg ("data" , true , false , "The data to be stored as an IPFS block." ).EnableStdin (),
129
131
},
130
132
Options : []cmdkit.Option {
131
- cmdkit .StringOption ("format" , "f" , "cid format for blocks to be created with." ). WithDefault ( "v0" ) ,
133
+ cmdkit .StringOption ("format" , "f" , "cid format for blocks to be created with." ),
132
134
cmdkit .StringOption ("mhtype" , "multihash hash function" ).WithDefault ("sha2-256" ),
133
135
cmdkit .IntOption ("mhlen" , "multihash hash length" ).WithDefault (- 1 ),
134
136
},
@@ -157,27 +159,32 @@ It reads from stdin, and <key> is a base58 encoded multihash.
157
159
return
158
160
}
159
161
162
+ mhtype , _ := req .Options ["mhtype" ].(string )
163
+ mhtval , ok := mh .Names [mhtype ]
164
+ if ! ok {
165
+ err := fmt .Errorf ("unrecognized multihash function: %s" , mhtype )
166
+ res .SetError (err , cmdkit .ErrNormal )
167
+ return
168
+ }
169
+
160
170
var pref cid.Prefix
161
171
pref .Version = 1
162
172
163
- format , _ := req .Options ["format" ].(string )
173
+ format := req .Options ["format" ].(string )
164
174
formatval , ok := cid .Codecs [format ]
165
175
if ! ok {
166
176
res .SetError (fmt .Errorf ("unrecognized format: %s" , format ), cmdkit .ErrNormal )
167
177
return
168
178
}
169
- if format == "v0" {
179
+ if format == "v0" || ( format == "" && mhtval == mh . SHA2_256 ) {
170
180
pref .Version = 0
171
181
}
172
- pref .Codec = formatval
173
-
174
- mhtype , _ := req .Options ["mhtype" ].(string )
175
- mhtval , ok := mh .Names [mhtype ]
176
- if ! ok {
177
- err := fmt .Errorf ("unrecognized multihash function: %s" , mhtype )
178
- res .SetError (err , cmdkit .ErrNormal )
182
+ if mhtval != mh .SHA2_256 && pref .Version == 0 {
183
+ res .SetError (errors .New ("cannot generate CIDv0 with non-sha256 hash function" ), cmdkit .ErrNormal )
179
184
return
180
185
}
186
+
187
+ pref .Codec = formatval
181
188
pref .MhType = mhtval
182
189
183
190
mhlen , ok := req .Options ["mhlen" ].(int )
0 commit comments