diff options
Diffstat (limited to 'devdocs/go/crypto%2Fhmac%2Findex.html')
| -rw-r--r-- | devdocs/go/crypto%2Fhmac%2Findex.html | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/devdocs/go/crypto%2Fhmac%2Findex.html b/devdocs/go/crypto%2Fhmac%2Findex.html new file mode 100644 index 00000000..e08e7719 --- /dev/null +++ b/devdocs/go/crypto%2Fhmac%2Findex.html @@ -0,0 +1,23 @@ +<h1> Package hmac </h1> <ul id="short-nav"> +<li><code>import "crypto/hmac"</code></li> +<li><a href="#pkg-overview" class="overviewLink">Overview</a></li> +<li><a href="#pkg-index" class="indexLink">Index</a></li> +</ul> <h2 id="pkg-overview">Overview </h2> <p>Package hmac implements the Keyed-Hash Message Authentication Code (HMAC) as defined in U.S. Federal Information Processing Standards Publication 198. An HMAC is a cryptographic hash that uses a key to sign a message. The receiver verifies the hash by recomputing it using the same key. </p> +<p>Receivers should be careful to use Equal to compare MACs in order to avoid timing side-channels: </p> +<pre data-language="go">// ValidMAC reports whether messageMAC is a valid HMAC tag for message. +func ValidMAC(message, messageMAC, key []byte) bool { + mac := hmac.New(sha256.New, key) + mac.Write(message) + expectedMAC := mac.Sum(nil) + return hmac.Equal(messageMAC, expectedMAC) +} +</pre> <h2 id="pkg-index">Index </h2> <ul id="manual-nav"> +<li><a href="#Equal">func Equal(mac1, mac2 []byte) bool</a></li> +<li><a href="#New">func New(h func() hash.Hash, key []byte) hash.Hash</a></li> +</ul> <h3>Package files</h3> <p> <span>hmac.go</span> </p> <h2 id="Equal">func <span>Equal</span> <span title="Added in Go 1.1">1.1</span> </h2> <pre data-language="go">func Equal(mac1, mac2 []byte) bool</pre> <p>Equal compares two MACs for equality without leaking timing information. </p> +<h2 id="New">func <span>New</span> </h2> <pre data-language="go">func New(h func() hash.Hash, key []byte) hash.Hash</pre> <p>New returns a new HMAC hash using the given <span>hash.Hash</span> type and key. New functions like sha256.New from <span>crypto/sha256</span> can be used as h. h must return a new Hash every time it is called. Note that unlike other hash implementations in the standard library, the returned Hash does not implement <span>encoding.BinaryMarshaler</span> or <span>encoding.BinaryUnmarshaler</span>. </p><div class="_attribution"> + <p class="_attribution-p"> + © Google, Inc.<br>Licensed under the Creative Commons Attribution License 3.0.<br> + <a href="http://golang.org/pkg/crypto/hmac/" class="_attribution-link">http://golang.org/pkg/crypto/hmac/</a> + </p> +</div> |
