mirror of https://github.com/docker/cli.git
vendor: opencontainers/go-digest v1.0.0
full diff: https://github.com/opencontainers/go-digest/compare/v1.0.0-rc1...v1.0.0 Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
parent
ceffcc527e
commit
f5670e1069
|
@ -52,7 +52,7 @@ github.com/moby/term 73f35e472e8f0a3f91347164138c
|
||||||
github.com/modern-go/concurrent bacd9c7ef1dd9b15be4a9909b8ac7a4e313eec94 # 1.0.3
|
github.com/modern-go/concurrent bacd9c7ef1dd9b15be4a9909b8ac7a4e313eec94 # 1.0.3
|
||||||
github.com/modern-go/reflect2 4b7aa43c6742a2c18fdef89dd197aaae7dac7ccd # 1.0.1
|
github.com/modern-go/reflect2 4b7aa43c6742a2c18fdef89dd197aaae7dac7ccd # 1.0.1
|
||||||
github.com/morikuni/aec 39771216ff4c63d11f5e604076f9c45e8be1067b # v1.0.0
|
github.com/morikuni/aec 39771216ff4c63d11f5e604076f9c45e8be1067b # v1.0.0
|
||||||
github.com/opencontainers/go-digest 279bed98673dd5bef374d3b6e4b09e2af76183bf # v1.0.0-rc1
|
github.com/opencontainers/go-digest ea51bea511f75cfa3ef6098cc253c5c3609b037a # v1.0.0
|
||||||
github.com/opencontainers/image-spec d60099175f88c47cd379c4738d158884749ed235 # v1.0.1
|
github.com/opencontainers/image-spec d60099175f88c47cd379c4738d158884749ed235 # v1.0.1
|
||||||
github.com/opencontainers/runc ff819c7e9184c13b7c2607fe6c30ae19403a7aff # v1.0.0-rc92
|
github.com/opencontainers/runc ff819c7e9184c13b7c2607fe6c30ae19403a7aff # v1.0.0-rc92
|
||||||
github.com/opentracing/opentracing-go 1361b9cd60be79c4c3a7fa9841b3c132e40066a7
|
github.com/opentracing/opentracing-go 1361b9cd60be79c4c3a7fa9841b3c132e40066a7
|
||||||
|
|
|
@ -176,6 +176,7 @@
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
Copyright 2019, 2020 OCI Contributors
|
||||||
Copyright 2016 Docker, Inc.
|
Copyright 2016 Docker, Inc.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
@ -8,20 +8,16 @@ Please see the [godoc](https://godoc.org/github.com/opencontainers/go-digest) fo
|
||||||
|
|
||||||
# What is a digest?
|
# What is a digest?
|
||||||
|
|
||||||
A digest is just a hash.
|
A digest is just a [hash](https://en.wikipedia.org/wiki/Hash_function).
|
||||||
|
|
||||||
The most common use case for a digest is to create a content
|
The most common use case for a digest is to create a content identifier for use in [Content Addressable Storage](https://en.wikipedia.org/wiki/Content-addressable_storage) systems:
|
||||||
identifier for use in [Content Addressable Storage](https://en.wikipedia.org/wiki/Content-addressable_storage)
|
|
||||||
systems:
|
|
||||||
|
|
||||||
```go
|
```go
|
||||||
id := digest.FromBytes([]byte("my content"))
|
id := digest.FromBytes([]byte("my content"))
|
||||||
```
|
```
|
||||||
|
|
||||||
In the example above, the id can be used to uniquely identify
|
In the example above, the id can be used to uniquely identify the byte slice "my content".
|
||||||
the byte slice "my content". This allows two disparate applications
|
This allows two disparate applications to agree on a verifiable identifier without having to trust one another.
|
||||||
to agree on a verifiable identifier without having to trust one
|
|
||||||
another.
|
|
||||||
|
|
||||||
An identifying digest can be verified, as follows:
|
An identifying digest can be verified, as follows:
|
||||||
|
|
||||||
|
@ -31,8 +27,7 @@ if id != digest.FromBytes([]byte("my content")) {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
A `Verifier` type can be used to handle cases where an `io.Reader`
|
A `Verifier` type can be used to handle cases where an `io.Reader` makes more sense:
|
||||||
makes more sense:
|
|
||||||
|
|
||||||
```go
|
```go
|
||||||
rd := getContent()
|
rd := getContent()
|
||||||
|
@ -44,18 +39,14 @@ if !verifier.Verified() {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
Using [Merkle DAGs](https://en.wikipedia.org/wiki/Merkle_tree), this
|
Using [Merkle DAGs](https://en.wikipedia.org/wiki/Merkle_tree), this can power a rich, safe, content distribution system.
|
||||||
can power a rich, safe, content distribution system.
|
|
||||||
|
|
||||||
# Usage
|
# Usage
|
||||||
|
|
||||||
While the [godoc](https://godoc.org/github.com/opencontainers/go-digest) is
|
While the [godoc](https://godoc.org/github.com/opencontainers/go-digest) is considered the best resource, a few important items need to be called out when using this package.
|
||||||
considered the best resource, a few important items need to be called
|
|
||||||
out when using this package.
|
|
||||||
|
|
||||||
1. Make sure to import the hash implementations into your application
|
1. Make sure to import the hash implementations into your application or the package will panic.
|
||||||
or the package will panic. You should have something like the
|
You should have something like the following in the main (or other entrypoint) of your application:
|
||||||
following in the main (or other entrypoint) of your application:
|
|
||||||
|
|
||||||
```go
|
```go
|
||||||
import (
|
import (
|
||||||
|
@ -66,11 +57,10 @@ out when using this package.
|
||||||
This may seem inconvenient but it allows you replace the hash
|
This may seem inconvenient but it allows you replace the hash
|
||||||
implementations with others, such as https://github.com/stevvooe/resumable.
|
implementations with others, such as https://github.com/stevvooe/resumable.
|
||||||
|
|
||||||
2. Even though `digest.Digest` may be assemable as a string, _always_
|
2. Even though `digest.Digest` may be assemblable as a string, _always_ verify your input with `digest.Parse` or use `Digest.Validate` when accepting untrusted input.
|
||||||
verify your input with `digest.Parse` or use `Digest.Validate`
|
While there are measures to avoid common problems, this will ensure you have valid digests in the rest of your application.
|
||||||
when accepting untrusted input. While there are measures to
|
|
||||||
avoid common problems, this will ensure you have valid digests
|
3. While alternative encodings of hash values (digests) are possible (for example, base64), this package deals exclusively with hex-encoded digests.
|
||||||
in the rest of your application.
|
|
||||||
|
|
||||||
# Stability
|
# Stability
|
||||||
|
|
||||||
|
@ -80,25 +70,27 @@ As always, before using a package export, read the [godoc](https://godoc.org/git
|
||||||
|
|
||||||
# Contributing
|
# Contributing
|
||||||
|
|
||||||
This package is considered fairly complete. It has been in production
|
This package is considered fairly complete.
|
||||||
in thousands (millions?) of deployments and is fairly battle-hardened.
|
It has been in production in thousands (millions?) of deployments and is fairly battle-hardened.
|
||||||
New additions will be met with skepticism. If you think there is a
|
New additions will be met with skepticism.
|
||||||
missing feature, please file a bug clearly describing the problem and
|
If you think there is a missing feature, please file a bug clearly describing the problem and the alternatives you tried before submitting a PR.
|
||||||
the alternatives you tried before submitting a PR.
|
|
||||||
|
|
||||||
# Reporting security issues
|
## Code of Conduct
|
||||||
|
|
||||||
Please DO NOT file a public issue, instead send your report privately to
|
Participation in the OpenContainers community is governed by [OpenContainer's Code of Conduct][code-of-conduct].
|
||||||
security@opencontainers.org.
|
|
||||||
|
|
||||||
The maintainers take security seriously. If you discover a security issue,
|
## Security
|
||||||
please bring it to their attention right away!
|
|
||||||
|
|
||||||
If you are reporting a security issue, do not create an issue or file a pull
|
If you find an issue, please follow the [security][security] protocol to report it.
|
||||||
request on GitHub. Instead, disclose the issue responsibly by sending an email
|
|
||||||
to security@opencontainers.org (which is inhabited only by the maintainers of
|
|
||||||
the various OCI projects).
|
|
||||||
|
|
||||||
# Copyright and license
|
# Copyright and license
|
||||||
|
|
||||||
Copyright © 2016 Docker, Inc. All rights reserved, except as follows. Code is released under the [Apache 2.0 license](LICENSE.code). This `README.md` file and the [`CONTRIBUTING.md`](CONTRIBUTING.md) file are licensed under the Creative Commons Attribution 4.0 International License under the terms and conditions set forth in the file [`LICENSE.docs`](LICENSE.docs). You may obtain a duplicate copy of the same license, titled CC BY-SA 4.0, at http://creativecommons.org/licenses/by-sa/4.0/.
|
Copyright © 2019, 2020 OCI Contributors
|
||||||
|
Copyright © 2016 Docker, Inc.
|
||||||
|
All rights reserved, except as follows.
|
||||||
|
Code is released under the [Apache 2.0 license](LICENSE).
|
||||||
|
This `README.md` file and the [`CONTRIBUTING.md`](CONTRIBUTING.md) file are licensed under the Creative Commons Attribution 4.0 International License under the terms and conditions set forth in the file [`LICENSE.docs`](LICENSE.docs).
|
||||||
|
You may obtain a duplicate copy of the same license, titled CC BY-SA 4.0, at http://creativecommons.org/licenses/by-sa/4.0/.
|
||||||
|
|
||||||
|
[security]: https://github.com/opencontainers/org/blob/master/security
|
||||||
|
[code-of-conduct]: https://github.com/opencontainers/org/blob/master/CODE_OF_CONDUCT.md
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
// Copyright 2019, 2020 OCI Contributors
|
||||||
// Copyright 2017 Docker, Inc.
|
// Copyright 2017 Docker, Inc.
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
// Copyright 2019, 2020 OCI Contributors
|
||||||
// Copyright 2017 Docker, Inc.
|
// Copyright 2017 Docker, Inc.
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
// Copyright 2019, 2020 OCI Contributors
|
||||||
// Copyright 2017 Docker, Inc.
|
// Copyright 2017 Docker, Inc.
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
// Copyright 2019, 2020 OCI Contributors
|
||||||
// Copyright 2017 Docker, Inc.
|
// Copyright 2017 Docker, Inc.
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
@ -29,8 +30,13 @@
|
||||||
//
|
//
|
||||||
// sha256:7173b809ca12ec5dee4506cd86be934c4596dd234ee82c0662eac04a8c2c71dc
|
// sha256:7173b809ca12ec5dee4506cd86be934c4596dd234ee82c0662eac04a8c2c71dc
|
||||||
//
|
//
|
||||||
// In this case, the string "sha256" is the algorithm and the hex bytes are
|
// The "algorithm" portion defines both the hashing algorithm used to calculate
|
||||||
// the "digest".
|
// the digest and the encoding of the resulting digest, which defaults to "hex"
|
||||||
|
// if not otherwise specified. Currently, all supported algorithms have their
|
||||||
|
// digests encoded in hex strings.
|
||||||
|
//
|
||||||
|
// In the example above, the string "sha256" is the algorithm and the hex bytes
|
||||||
|
// are the "digest".
|
||||||
//
|
//
|
||||||
// Because the Digest type is simply a string, once a valid Digest is
|
// Because the Digest type is simply a string, once a valid Digest is
|
||||||
// obtained, comparisons are cheap, quick and simple to express with the
|
// obtained, comparisons are cheap, quick and simple to express with the
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
module github.com/opencontainers/go-digest
|
||||||
|
|
||||||
|
go 1.13
|
|
@ -1,3 +1,4 @@
|
||||||
|
// Copyright 2019, 2020 OCI Contributors
|
||||||
// Copyright 2017 Docker, Inc.
|
// Copyright 2017 Docker, Inc.
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
|
Loading…
Reference in New Issue