Commit Graph

56 Commits

Author SHA1 Message Date
gammazero
83a0e939a4 Add unit test for unexpected eof 2023-04-04 14:08:15 +10:00
gammazero
166a3a6880 CidFromReader should not wrap valid EOF return.
When reading from an io.Reader that has no data, the io.EOF error should not be wrapped in ErrInvalidCid. This is not an invalid CID, and is not the same as a partial read which is indicated by io.ErrUnexpectedEOF.

This fix is needed because existing code that uses CidFromReader may check for the end of an input stream by `if err == io.EOF` instead of the preferred `if errors.Is(err, io.EOF)`, and that code break at runtime after upgrading to go-cid v0.4.0.
2023-04-04 14:08:15 +10:00
Henrique Dias
b98e249130 feat: wrap parsing errors into ErrInvalidCid 2023-03-20 09:29:34 +01:00
Rod Vagg
06fe289a6a fix: use crypto/rand.Read 2023-02-09 15:30:24 +11:00
Jorropo
68090a8273 Revert "fix: bring back, but deprecate CodecToStr and Codecs"
This reverts commit 548365f3a7.
2022-09-04 16:00:09 +02:00
Rod Vagg
548365f3a7 fix: bring back, but deprecate CodecToStr and Codecs
use go-multicodec as the source of truth
2022-09-04 13:03:33 +02:00
Marcin Rataj
b2064d74a8 fix: remove invalid multicodec2string mappings (#137)
* refactor: remove Codecs table
* chore: go-cid 0.2.0

Codec table was missing dag-json and it had invalid code for dag-cbor.
It also had invalid string representation of dag-pb -- it was using
'protobuf' which is a totally different code.

This removes invalid mappings entirely.
https://github.com/multiformats/go-multicodec should be used instead.
2022-04-21 22:39:31 +02:00
Daniel Martí
de6c03deae amend the CidFromReader slice extension math
The append+make slice extension idiom works, but note that append uses
the slice's length as its base. We need to append the number of bytes
required for length to reach cidLength, not the capacity.

The added test case panicked before this change, and works now:

	--- FAIL: TestReadCidsFromBuffer (0.00s)
	panic: runtime error: slice bounds out of range [:73] with capacity 64 [recovered]
		panic: runtime error: slice bounds out of range [:73] with capacity 64

	goroutine 37 [running]:
	testing.tRunner.func1.2({0x570d60, 0xc000016438})
		testing/testing.go:1203 +0x24e
	testing.tRunner.func1()
		testing/testing.go:1206 +0x218
	panic({0x570d60, 0xc000016438})
		runtime/panic.go:1038 +0x215
	github.com/ipfs/go-cid.CidFromReader({0x5b0e20, 0xc000010900})
		github.com/ipfs/go-cid/cid.go:803 +0x75f
	github.com/ipfs/go-cid.TestReadCidsFromBuffer(0xc00014ba00)
		github.com/ipfs/go-cid/cid_test.go:710 +0x625
	testing.tRunner(0xc00014ba00, 0x58af38)
		testing/testing.go:1253 +0x102
	created by testing.(*T).Run
		testing/testing.go:1300 +0x35a
	exit status 2
	FAIL	github.com/ipfs/go-cid	0.004s
2021-07-16 10:10:50 +01:00
Daniel Martí
c4c8760a80 implement CidFromReader
And reuse two CidFromBytes tests for it, which includes both CIDv0 and
CIDv1 cases as inputs, as well as some inputs that should error.

Fixes #126.
2021-07-15 01:01:22 +01:00
Ian Davis
0717510dfb chore: fixups from running go vet, go fmt and staticcheck 2021-05-07 15:43:00 +01:00
Rod Vagg
efe2d2de45 coverage: more tests for cid 2020-10-15 14:00:36 +11:00
Rod Vagg
8647a1d84b fix: make tests run with Go 1.15
> ./cid_test.go:451:52: conversion from uint64 to string yields a string of one rune, not a string of digits (did you mean fmt.Sprint(x)?)
2020-10-15 14:00:36 +11:00
Alex Good
de49849130 Add the dagjose multiformat 2020-10-15 14:00:36 +11:00
Marcin Rataj
d683e9243c test: lowercase base36
Base36 was introduced mainly for use in DNS, and various user agents
force lowercase, so tests should use that instead.

License: MIT
Signed-off-by: Marcin Rataj <lidel@lidel.org>
2020-05-25 17:46:16 +02:00
Peter Rabbitson
18af217de6 Add explicit base36 test 2020-05-25 14:06:26 +02:00
Rod Vagg
8dd6fe2778 feat: add Filecoin multicodecs
* fil-commitment-unsealed
* fil-commitment-sealed

Ref: https://github.com/multiformats/multicodec/pull/161
Ref: https://github.com/multiformats/multicodec/pull/172
2020-05-13 11:22:42 +10:00
Steven Allen
5df89959a0 test: test parsing non-sha256 hashes 2019-12-02 20:41:59 -05:00
Whyrusleeping
79e75dffeb Merge pull request #95 from ipfs/feat/cid-from-bytes
Add a function to read a cid from an array of bytes
2019-11-12 10:17:18 +09:00
whyrusleeping
d93d4baeab add a simple test for reading cids from a buffer 2019-11-11 16:48:19 -08:00
Jakub Sztandera
9238d1a533 Verify that prefix is correct v0 prefix
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2019-11-11 20:00:31 +01:00
Marcin Rataj
3f1777738f Add libp2p-key multicodec
Context: https://github.com/multiformats/multicodec/issues/130

License: MIT
Signed-off-by: Marcin Rataj <lidel@lidel.org>
2019-05-28 01:40:54 +02:00
Steven Allen
f04f9216e7 default cidv1 to base32 2019-05-06 16:22:17 -07:00
Steven Allen
cf3b4efcaf fix inline CIDs generated by Prefix.Sum 2019-02-20 19:06:04 -08:00
Hector Sanjuan
00439572fb Let Cid implement Binary[Un]Marshaler and Text[Un]Marshaler interfaces.
This makes Cid implement https://golang.org/pkg/encoding/#BinaryMarshaler
which is used by go-codec to decide if things know how to serialize themselves
(currently we need do manual wrapping for anything containing a CID).

Since I was at it, I did the TextMarshaling one too.
2019-02-19 16:41:30 +00:00
Samuel Li
3ec3578fe9 add dash to codecs table 2018-10-07 11:44:18 -07:00
Kevin Atkinson
9831436a6f Change string representation to represent actual binary representation. 2018-08-31 00:35:47 -04:00
Kevin Atkinson
d7974d2277 Export version() method, various other code cleanups. 2018-08-31 00:34:19 -04:00
dignifiedquire
e153340e5a feat: use CIDs as their byte representation instead of a struct 2018-08-31 00:33:47 -04:00
Kevin Atkinson
bea727bbd1 Enhance tests. 2018-08-30 00:30:14 -04:00
Kevin Atkinson
9091e50b29 Rename Format method to Encode. 2018-08-30 00:30:14 -04:00
Kevin Atkinson
a0b3b11e63 Create a new Format method that is like StringOfBase but never errors 2018-08-30 00:30:14 -04:00
Steven Allen
d6e0b4e5a7 add String benchmark
We call String all over the place so we should make sure it remains fast.
2018-08-10 16:23:25 -07:00
Hector Sanjuan
8028fee095 Add Decred codecs
0xe0 and 0xe1 have been assigned to Decred block and tx in the
multicodecs table. https://github.com/multiformats/multicodec/pull/78

License: MIT
Signed-off-by: Hector Sanjuan <hector@protocol.ai>
2018-07-23 19:28:53 +02:00
Fritz Schneider
d204c18f7a make test a little more clear 2018-07-11 11:24:59 -10:00
Fritz Schneider
b41162260a fix typo 2018-07-11 11:21:16 -10:00
Fritz Schneider
9cb0b7bcae use value receiver 2018-07-11 11:20:53 -10:00
Steven Allen
63d4b33fcf Add CID Prefix constructors.
One can now generate a CID by calling:

```go
cid.NewPrefixV1(cid.DagCBOR, mh.SHA_256).Sum(data)
```

Lots of code was already doing this by manually constructing CID Prefixes but
that tends to be a bit verbose and error prone.
2017-08-30 12:42:46 -07:00
Herman Junge
7d345d4817 Switch from byte to uint64 2017-06-30 10:00:21 -04:00
Herman Junge
3c03b9e581 Improve tests 2017-06-30 03:01:26 -04:00
Herman Junge
f6990413f7 Added map of string to codecs 2017-06-29 21:00:23 -04:00
Łukasz Magiera
b42583c8bf Add StringOfBase function 2017-06-19 17:25:51 +02:00
Jeromy
92cac2f002 add an example to the tests to play around with the feature 2017-03-18 19:17:44 -07:00
Jeromy
7bcaf9264a do cid json handling in this package 2017-02-05 23:52:06 -08:00
Jeromy
4ff5ee2b99 Update go-multibase, multihash. add test for hex 2017-02-02 18:39:00 -08:00
Jeromy
f623f824db fix build failures i introduced 2016-11-23 10:04:56 -08:00
Jakub Sztandera
9116bf8025 Fix lengths in prefix too 2016-11-17 19:16:05 +01:00
Jakub Sztandera
5da6d87c58 Add test for max lenght varint 2016-11-17 18:53:33 +01:00
Lars Gierth
d0e0822854 Add Parse func accepting various types 2016-11-17 17:25:57 +01:00
Jeromy
02ce4e9b23 fix decoding of empty strings 2016-10-24 17:30:53 -07:00
Jeromy
8677934d48 add small test to fuzz cid creation routines 2016-10-09 12:19:14 -07:00