From a7c90583753453746cf9bd112eb148fe3f23b24f Mon Sep 17 00:00:00 2001 From: Andreas Auernhammer Date: Tue, 31 Jul 2018 20:15:12 +0200 Subject: [PATCH] crypto: implement Stringer for S3 and SSEC (#6216) This commit adds a `fmt.Stringer` implementation for SSE-S3 and SSE-C. The string representation is the domain used for object key sealing. See: `ObjectKey.Seal(...)` and `ObjectKey.Unseal(...)` --- cmd/crypto/sse.go | 8 ++++++++ cmd/crypto/sse_test.go | 31 +++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 cmd/crypto/sse_test.go diff --git a/cmd/crypto/sse.go b/cmd/crypto/sse.go index d1621783f..44415e2cc 100644 --- a/cmd/crypto/sse.go +++ b/cmd/crypto/sse.go @@ -65,6 +65,14 @@ const ( InsecureSealAlgorithm = "DARE-SHA256" ) +// String returns the SSE domain as string. For SSE-S3 the +// domain is "SSE-S3". +func (s3) String() string { return "SSE-S3" } + +// String returns the SSE domain as string. For SSE-C the +// domain is "SSE-C". +func (ssec) String() string { return "SSE-C" } + // EncryptSinglePart encrypts an io.Reader which must be the // the body of a single-part PUT request. func EncryptSinglePart(r io.Reader, key ObjectKey) io.Reader { diff --git a/cmd/crypto/sse_test.go b/cmd/crypto/sse_test.go new file mode 100644 index 000000000..2d1ccb64a --- /dev/null +++ b/cmd/crypto/sse_test.go @@ -0,0 +1,31 @@ +// Minio Cloud Storage, (C) 2015, 2016, 2017, 2018 Minio, Inc. +// +// 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. + +package crypto + +import "testing" + +func TestS3String(t *testing.T) { + const Domain = "SSE-S3" + if domain := S3.String(); domain != Domain { + t.Errorf("S3's string method returns wrong domain: got '%s' - want '%s'", domain, Domain) + } +} + +func TestSSECString(t *testing.T) { + const Domain = "SSE-C" + if domain := SSEC.String(); domain != Domain { + t.Errorf("SSEC's string method returns wrong domain: got '%s' - want '%s'", domain, Domain) + } +}