mirror of
https://github.com/status-im/status-go.git
synced 2025-02-22 03:38:27 +00:00
91 lines
3.3 KiB
Markdown
91 lines
3.3 KiB
Markdown
|
# go-multihash
|
||
|
|
||
|
[](http://ipn.io)
|
||
|
[](https://github.com/multiformats/multiformats)
|
||
|
[](https://webchat.freenode.net/?channels=%23ipfs)
|
||
|
[](https://github.com/RichardLitt/standard-readme)
|
||
|
[](https://godoc.org/github.com/multiformats/go-multihash)
|
||
|
[](https://travis-ci.org/multiformats/go-multihash)
|
||
|
[](https://codecov.io/github/multiformats/go-multihash?branch=master)
|
||
|
|
||
|
> [multihash](https://github.com/multiformats/multihash) implementation in Go
|
||
|
|
||
|
## Table of Contents
|
||
|
|
||
|
- [Install](#install)
|
||
|
- [Usage](#usage)
|
||
|
- [Maintainers](#maintainers)
|
||
|
- [Contribute](#contribute)
|
||
|
- [License](#license)
|
||
|
|
||
|
## Install
|
||
|
|
||
|
`go-multihash` is a standard Go module which can be installed with:
|
||
|
|
||
|
```sh
|
||
|
go get github.com/multiformats/go-multihash
|
||
|
```
|
||
|
|
||
|
## Usage
|
||
|
|
||
|
|
||
|
### Example
|
||
|
|
||
|
This example takes a standard hex-encoded data and uses `EncodeName` to calculate the SHA1 multihash value for the buffer.
|
||
|
|
||
|
The resulting hex-encoded data corresponds to: `<hash function code><digest size><hash function output>`, which could be re-parsed
|
||
|
with `Multihash.FromHexString()`.
|
||
|
|
||
|
|
||
|
```go
|
||
|
package main
|
||
|
|
||
|
import (
|
||
|
"encoding/hex"
|
||
|
"fmt"
|
||
|
|
||
|
"github.com/multiformats/go-multihash"
|
||
|
)
|
||
|
|
||
|
func main() {
|
||
|
// ignores errors for simplicity.
|
||
|
// don't do that at home.
|
||
|
// Decode a SHA1 hash to a binary buffer
|
||
|
buf, _ := hex.DecodeString("0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33")
|
||
|
|
||
|
// Create a new multihash with it.
|
||
|
mHashBuf, _ := multihash.EncodeName(buf, "sha1")
|
||
|
// Print the multihash as hex string
|
||
|
fmt.Printf("hex: %s\n", hex.EncodeToString(mHashBuf))
|
||
|
|
||
|
// Parse the binary multihash to a DecodedMultihash
|
||
|
mHash, _ := multihash.Decode(mHashBuf)
|
||
|
// Convert the sha1 value to hex string
|
||
|
sha1hex := hex.EncodeToString(mHash.Digest)
|
||
|
// Print all the information in the multihash
|
||
|
fmt.Printf("obj: %v 0x%x %d %s\n", mHash.Name, mHash.Code, mHash.Length, sha1hex)
|
||
|
}
|
||
|
```
|
||
|
|
||
|
To run, copy to [example/foo.go](example/foo.go) and:
|
||
|
|
||
|
```
|
||
|
> cd example/
|
||
|
> go build
|
||
|
> ./example
|
||
|
hex: 11140beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33
|
||
|
obj: sha1 0x11 20 0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33
|
||
|
```
|
||
|
|
||
|
## Contribute
|
||
|
|
||
|
Contributions welcome. Please check out [the issues](https://github.com/multiformats/go-multihash/issues).
|
||
|
|
||
|
Check out our [contributing document](https://github.com/multiformats/multiformats/blob/master/contributing.md) for more information on how we work, and about contributing in general. Please be aware that all interactions related to multiformats are subject to the IPFS [Code of Conduct](https://github.com/ipfs/community/blob/master/code-of-conduct.md).
|
||
|
|
||
|
Small note: If editing the README, please conform to the [standard-readme](https://github.com/RichardLitt/standard-readme) specification.
|
||
|
|
||
|
## License
|
||
|
|
||
|
[MIT](LICENSE) © 2014 Juan Batiz-Benet
|