diff options
author | Ramon Fernandez <ramon@mongodb.com> | 2018-01-31 11:37:12 -0500 |
---|---|---|
committer | Ramon Fernandez <ramon@mongodb.com> | 2018-01-31 11:37:12 -0500 |
commit | b5a16bea867890da4c649d791e79113fc29999ac (patch) | |
tree | 260c018094ce7e99ba23a3f944d230fc2de399e6 /src/mongo/gotools/vendor/src/github.com/10gen/openssl/hmac_test.go | |
parent | da5520555faef9a2ba9b6c9ec80539ae95ad88a5 (diff) | |
download | mongo-b5a16bea867890da4c649d791e79113fc29999ac.tar.gz |
Import tools: 4ec067b2ad33ffc54a558270f8506f8405382379 from branch master
ref: 49d61f9a36..4ec067b2ad
for: 3.7.2
TOOLS-1765 mongoreplay crashes with out of memory recording from 8GB pcap file
TOOLS-1773 Change mongoreplay encoding format
TOOLS-1776 mongoreplay hangs on open connection when finishing playback
TOOLS-1794 Add ability to filter a certain duration in mongoreplay
TOOLS-1905 Need to update spacemonkeygo/openssl fork to support newer OpenSSL libraries
TOOLS-1932 Incorrect shebang line for build.sh
TOOLS-1938 Rationalize Evergreen build variants
Diffstat (limited to 'src/mongo/gotools/vendor/src/github.com/10gen/openssl/hmac_test.go')
-rw-r--r-- | src/mongo/gotools/vendor/src/github.com/10gen/openssl/hmac_test.go | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/src/mongo/gotools/vendor/src/github.com/10gen/openssl/hmac_test.go b/src/mongo/gotools/vendor/src/github.com/10gen/openssl/hmac_test.go new file mode 100644 index 00000000000..424720e2171 --- /dev/null +++ b/src/mongo/gotools/vendor/src/github.com/10gen/openssl/hmac_test.go @@ -0,0 +1,74 @@ +// Copyright (C) 2017. See AUTHORS. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// +build !openssl_pre_1.0 + +package openssl + +import ( + "crypto/hmac" + "crypto/sha256" + "encoding/hex" + "testing" +) + +func TestSHA256HMAC(t *testing.T) { + key := []byte("d741787cc61851af045ccd37") + data := []byte("5912EEFD-59EC-43E3-ADB8-D5325AEC3271") + + h, err := NewHMAC(key, EVP_SHA256) + if err != nil { + t.Fatalf("Unable to create new HMAC: %s", err) + } + if _, err := h.Write(data); err != nil { + t.Fatalf("Unable to write data into HMAC: %s", err) + } + + var actualHMACBytes []byte + if actualHMACBytes, err = h.Final(); err != nil { + t.Fatalf("Error while finalizing HMAC: %s", err) + } + actualString := hex.EncodeToString(actualHMACBytes) + + // generate HMAC with built-in crypto lib + mac := hmac.New(sha256.New, key) + mac.Write(data) + expectedString := hex.EncodeToString(mac.Sum(nil)) + + if expectedString != actualString { + t.Errorf("HMAC was incorrect: expected=%s, actual=%s", expectedString, actualString) + } +} + +func BenchmarkSHA256HMAC(b *testing.B) { + key := []byte("d741787cc61851af045ccd37") + data := []byte("5912EEFD-59EC-43E3-ADB8-D5325AEC3271") + + h, err := NewHMAC(key, EVP_SHA256) + if err != nil { + b.Fatalf("Unable to create new HMAC: %s", err) + } + + b.ResetTimer() + for i := 0; i < b.N; i++ { + if _, err := h.Write(data); err != nil { + b.Fatalf("Unable to write data into HMAC: %s", err) + } + + var err error + if _, err = h.Final(); err != nil { + b.Fatalf("Error while finalizing HMAC: %s", err) + } + } +} |