mirror of
https://github.com/minio/minio.git
synced 2025-01-12 15:33:22 -05:00
crypto: remove dead code (#9516)
This commit removes some crypto-related code that is not used anywhere anymore.
This commit is contained in:
parent
145f501a21
commit
a9e83dd42c
@ -247,22 +247,6 @@ func EncryptRequest(content io.Reader, r *http.Request, bucket, object string, m
|
|||||||
return newEncryptReader(content, key, bucket, object, metadata, crypto.S3.IsRequested(r.Header))
|
return newEncryptReader(content, key, bucket, object, metadata, crypto.S3.IsRequested(r.Header))
|
||||||
}
|
}
|
||||||
|
|
||||||
// DecryptCopyRequest decrypts the object with the client provided key. It also removes
|
|
||||||
// the client-side-encryption metadata from the object and sets the correct headers.
|
|
||||||
func DecryptCopyRequest(client io.Writer, r *http.Request, bucket, object string, metadata map[string]string) (io.WriteCloser, error) {
|
|
||||||
var (
|
|
||||||
key []byte
|
|
||||||
err error
|
|
||||||
)
|
|
||||||
if crypto.SSECopy.IsRequested(r.Header) {
|
|
||||||
key, err = ParseSSECopyCustomerRequest(r.Header, metadata)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return newDecryptWriter(client, key, bucket, object, 0, metadata)
|
|
||||||
}
|
|
||||||
|
|
||||||
func decryptObjectInfo(key []byte, bucket, object string, metadata map[string]string) ([]byte, error) {
|
func decryptObjectInfo(key []byte, bucket, object string, metadata map[string]string) ([]byte, error) {
|
||||||
switch {
|
switch {
|
||||||
default:
|
default:
|
||||||
@ -317,14 +301,6 @@ func decryptObjectInfo(key []byte, bucket, object string, metadata map[string]st
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func newDecryptWriter(client io.Writer, key []byte, bucket, object string, seqNumber uint32, metadata map[string]string) (io.WriteCloser, error) {
|
|
||||||
objectEncryptionKey, err := decryptObjectInfo(key, bucket, object, metadata)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return newDecryptWriterWithObjectKey(client, objectEncryptionKey, seqNumber, metadata)
|
|
||||||
}
|
|
||||||
|
|
||||||
func newDecryptWriterWithObjectKey(client io.Writer, objectEncryptionKey []byte, seqNumber uint32, metadata map[string]string) (io.WriteCloser, error) {
|
func newDecryptWriterWithObjectKey(client io.Writer, objectEncryptionKey []byte, seqNumber uint32, metadata map[string]string) (io.WriteCloser, error) {
|
||||||
writer, err := sio.DecryptWriter(client, sio.Config{
|
writer, err := sio.DecryptWriter(client, sio.Config{
|
||||||
Key: objectEncryptionKey,
|
Key: objectEncryptionKey,
|
||||||
@ -450,26 +426,6 @@ func DecryptBlocksRequestR(inputReader io.Reader, h http.Header, offset,
|
|||||||
return w, nil
|
return w, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// DecryptRequestWithSequenceNumber decrypts the object with the client provided key. It also removes
|
|
||||||
// the client-side-encryption metadata from the object and sets the correct headers.
|
|
||||||
func DecryptRequestWithSequenceNumber(client io.Writer, r *http.Request, bucket, object string, seqNumber uint32, metadata map[string]string) (io.WriteCloser, error) {
|
|
||||||
if crypto.S3.IsEncrypted(metadata) {
|
|
||||||
return newDecryptWriter(client, nil, bucket, object, seqNumber, metadata)
|
|
||||||
}
|
|
||||||
|
|
||||||
key, err := ParseSSECustomerRequest(r)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return newDecryptWriter(client, key, bucket, object, seqNumber, metadata)
|
|
||||||
}
|
|
||||||
|
|
||||||
// DecryptRequest decrypts the object with client provided key for SSE-C and SSE-S3. It also removes
|
|
||||||
// the encryption metadata from the object and sets the correct headers.
|
|
||||||
func DecryptRequest(client io.Writer, r *http.Request, bucket, object string, metadata map[string]string) (io.WriteCloser, error) {
|
|
||||||
return DecryptRequestWithSequenceNumber(client, r, bucket, object, 0, metadata)
|
|
||||||
}
|
|
||||||
|
|
||||||
// DecryptBlocksReader - decrypts multipart parts, while implementing
|
// DecryptBlocksReader - decrypts multipart parts, while implementing
|
||||||
// a io.Reader compatible interface.
|
// a io.Reader compatible interface.
|
||||||
type DecryptBlocksReader struct {
|
type DecryptBlocksReader struct {
|
||||||
|
@ -78,135 +78,6 @@ func TestEncryptRequest(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var decryptRequestTests = []struct {
|
|
||||||
bucket, object string
|
|
||||||
header map[string]string
|
|
||||||
metadata map[string]string
|
|
||||||
shouldFail bool
|
|
||||||
}{
|
|
||||||
{
|
|
||||||
bucket: "bucket",
|
|
||||||
object: "object",
|
|
||||||
header: map[string]string{
|
|
||||||
crypto.SSECAlgorithm: "AES256",
|
|
||||||
crypto.SSECKey: "MzJieXRlc2xvbmdzZWNyZXRrZXltdXN0cHJvdmlkZWQ=",
|
|
||||||
crypto.SSECKeyMD5: "7PpPLAK26ONlVUGOWlusfg==",
|
|
||||||
},
|
|
||||||
metadata: map[string]string{
|
|
||||||
crypto.SSESealAlgorithm: crypto.InsecureSealAlgorithm,
|
|
||||||
crypto.SSEIV: "7nQqotA8xgrPx6QK7Ap3GCfjKitqJSrGP7xzgErSJlw=",
|
|
||||||
crypto.SSECSealedKey: "EAAfAAAAAAD7v1hQq3PFRUHsItalxmrJqrOq6FwnbXNarxOOpb8jTWONPPKyM3Gfjkjyj6NCf+aB/VpHCLCTBA==",
|
|
||||||
},
|
|
||||||
shouldFail: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
bucket: "bucket",
|
|
||||||
object: "object",
|
|
||||||
header: map[string]string{
|
|
||||||
crypto.SSECAlgorithm: "AES256",
|
|
||||||
crypto.SSECKey: "MzJieXRlc2xvbmdzZWNyZXRrZXltdXN0cHJvdmlkZWQ=",
|
|
||||||
crypto.SSECKeyMD5: "7PpPLAK26ONlVUGOWlusfg==",
|
|
||||||
},
|
|
||||||
metadata: map[string]string{
|
|
||||||
crypto.SSESealAlgorithm: crypto.SealAlgorithm,
|
|
||||||
crypto.SSEIV: "qEqmsONcorqlcZXJxaw32H04eyXyXwUgjHzlhkaIYrU=",
|
|
||||||
crypto.SSECSealedKey: "IAAfAIM14ugTGcM/dIrn4iQMrkl1sjKyeBQ8FBEvRebYj8vWvxG+0cJRpC6NXRU1wJN50JaUOATjO7kz0wZ2mA==",
|
|
||||||
},
|
|
||||||
shouldFail: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
bucket: "bucket",
|
|
||||||
object: "object",
|
|
||||||
header: map[string]string{
|
|
||||||
crypto.SSECAlgorithm: "AES256",
|
|
||||||
crypto.SSECKey: "XAm0dRrJsEsyPb1UuFNezv1bl9hxuYsgUVC/MUctE2k=",
|
|
||||||
crypto.SSECKeyMD5: "bY4wkxQejw9mUJfo72k53A==",
|
|
||||||
},
|
|
||||||
metadata: map[string]string{
|
|
||||||
crypto.SSESealAlgorithm: "HMAC-SHA3",
|
|
||||||
crypto.SSEIV: "XAm0dRrJsEsyPb1UuFNezv1bl9hxuYsgUVC/MUctE2k=",
|
|
||||||
crypto.SSECSealedKey: "SY5E9AvI2tI7/nUrUAssIGE32Hcs4rR9z/CUuPqu5N4=",
|
|
||||||
},
|
|
||||||
shouldFail: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
bucket: "bucket",
|
|
||||||
object: "object",
|
|
||||||
header: map[string]string{
|
|
||||||
crypto.SSECAlgorithm: "AES256",
|
|
||||||
crypto.SSECKey: "XAm0dRrJsEsyPb1UuFNezv1bl9hxuYsgUVC/MUctE2k=",
|
|
||||||
crypto.SSECKeyMD5: "bY4wkxQejw9mUJfo72k53A==",
|
|
||||||
},
|
|
||||||
metadata: map[string]string{
|
|
||||||
crypto.SSESealAlgorithm: crypto.InsecureSealAlgorithm,
|
|
||||||
crypto.SSEIV: "RrJsEsyPb1UuFNezv1bl9hxuYsgUVC/MUctE2k=",
|
|
||||||
crypto.SSECSealedKey: "SY5E9AvI2tI7/nUrUAssIGE32Hcs4rR9z/CUuPqu5N4=",
|
|
||||||
},
|
|
||||||
shouldFail: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
bucket: "bucket",
|
|
||||||
object: "object",
|
|
||||||
header: map[string]string{
|
|
||||||
crypto.SSECAlgorithm: "AES256",
|
|
||||||
crypto.SSECKey: "XAm0dRrJsEsyPb1UuFNezv1bl9hxuYsgUVC/MUctE2k=",
|
|
||||||
crypto.SSECKeyMD5: "bY4wkxQejw9mUJfo72k53A==",
|
|
||||||
},
|
|
||||||
metadata: map[string]string{
|
|
||||||
crypto.SSESealAlgorithm: crypto.InsecureSealAlgorithm,
|
|
||||||
crypto.SSEIV: "XAm0dRrJsEsyPb1UuFNezv1bl9ehxuYsgUVC/MUctE2k=",
|
|
||||||
crypto.SSECSealedKey: "SY5E9AvI2tI7/nUrUAssIGE32Hds4rR9z/CUuPqu5N4=",
|
|
||||||
},
|
|
||||||
shouldFail: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
bucket: "bucket",
|
|
||||||
object: "object-2",
|
|
||||||
header: map[string]string{
|
|
||||||
crypto.SSECAlgorithm: "AES256",
|
|
||||||
crypto.SSECKey: "MzJieXRlc2xvbmdzZWNyZXRrZXltdXN0cHJvdmlkZWQ=",
|
|
||||||
crypto.SSECKeyMD5: "7PpPLAK26ONlVUGOWlusfg==",
|
|
||||||
},
|
|
||||||
metadata: map[string]string{
|
|
||||||
crypto.SSESealAlgorithm: crypto.SealAlgorithm,
|
|
||||||
crypto.SSEIV: "qEqmsONcorqlcZXJxaw32H04eyXyXwUgjHzlhkaIYrU=",
|
|
||||||
crypto.SSECSealedKey: "IAAfAIM14ugTGcM/dIrn4iQMrkl1sjKyeBQ8FBEvRebYj8vWvxG+0cJRpC6NXRU1wJN50JaUOATjO7kz0wZ2mA==",
|
|
||||||
},
|
|
||||||
shouldFail: true,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestDecryptRequest(t *testing.T) {
|
|
||||||
defer func(flag bool) { globalIsSSL = flag }(globalIsSSL)
|
|
||||||
globalIsSSL = true
|
|
||||||
for i, test := range decryptRequestTests[1:] {
|
|
||||||
client := bytes.NewBuffer(nil)
|
|
||||||
req := &http.Request{Header: http.Header{}}
|
|
||||||
for k, v := range test.header {
|
|
||||||
req.Header.Set(k, v)
|
|
||||||
}
|
|
||||||
_, err := DecryptRequest(client, req, test.bucket, test.object, test.metadata)
|
|
||||||
if err != nil && !test.shouldFail {
|
|
||||||
t.Fatalf("Test %d: Failed to encrypt request: %v", i, err)
|
|
||||||
}
|
|
||||||
if err == nil && test.shouldFail {
|
|
||||||
t.Fatalf("Test %d: should fail but passed", i)
|
|
||||||
}
|
|
||||||
if key, ok := test.metadata[crypto.SSECKey]; ok {
|
|
||||||
t.Errorf("Test %d: Client provided key survived in metadata - key: %s", i, key)
|
|
||||||
}
|
|
||||||
if kdf, ok := test.metadata[crypto.SSESealAlgorithm]; ok && !test.shouldFail {
|
|
||||||
t.Errorf("Test %d: ServerSideEncryptionKDF should not be part of metadata: %v", i, kdf)
|
|
||||||
}
|
|
||||||
if iv, ok := test.metadata[crypto.SSEIV]; ok && !test.shouldFail {
|
|
||||||
t.Errorf("Test %d: crypto.SSEIV should not be part of metadata: %v", i, iv)
|
|
||||||
}
|
|
||||||
if mac, ok := test.metadata[crypto.SSECSealedKey]; ok && !test.shouldFail {
|
|
||||||
t.Errorf("Test %d: ServerSideEncryptionKeyMAC should not be part of metadata: %v", i, mac)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var decryptObjectInfoTests = []struct {
|
var decryptObjectInfoTests = []struct {
|
||||||
info ObjectInfo
|
info ObjectInfo
|
||||||
headers http.Header
|
headers http.Header
|
||||||
|
Loading…
Reference in New Issue
Block a user