testSSECEncryptionPutGet tests encryption with customer provided encryption keys
()
| 7125 | |
| 7126 | // testSSECEncryptionPutGet tests encryption with customer provided encryption keys |
| 7127 | func testSSECEncryptionPutGet() { |
| 7128 | // initialize logging params |
| 7129 | startTime := time.Now() |
| 7130 | testName := getFuncName() |
| 7131 | function := "PutEncryptedObject(bucketName, objectName, reader, sse)" |
| 7132 | args := map[string]interface{}{ |
| 7133 | "bucketName": "", |
| 7134 | "objectName": "", |
| 7135 | "sse": "", |
| 7136 | } |
| 7137 | |
| 7138 | c, err := NewClient(ClientConfig{}) |
| 7139 | if err != nil { |
| 7140 | logError(testName, function, args, startTime, "", "MinIO client object creation failed", err) |
| 7141 | return |
| 7142 | } |
| 7143 | |
| 7144 | // Generate a new random bucket name. |
| 7145 | bucketName := randString(60, rand.NewSource(time.Now().UnixNano()), "minio-go-test-") |
| 7146 | args["bucketName"] = bucketName |
| 7147 | |
| 7148 | // Make a new bucket. |
| 7149 | err = c.MakeBucket(context.Background(), bucketName, minio.MakeBucketOptions{Region: "us-east-1"}) |
| 7150 | if err != nil { |
| 7151 | logError(testName, function, args, startTime, "", "MakeBucket failed", err) |
| 7152 | return |
| 7153 | } |
| 7154 | |
| 7155 | defer cleanupBucket(bucketName, c) |
| 7156 | |
| 7157 | testCases := []struct { |
| 7158 | buf []byte |
| 7159 | }{ |
| 7160 | {buf: bytes.Repeat([]byte("F"), 1)}, |
| 7161 | {buf: bytes.Repeat([]byte("F"), 15)}, |
| 7162 | {buf: bytes.Repeat([]byte("F"), 16)}, |
| 7163 | {buf: bytes.Repeat([]byte("F"), 17)}, |
| 7164 | {buf: bytes.Repeat([]byte("F"), 31)}, |
| 7165 | {buf: bytes.Repeat([]byte("F"), 32)}, |
| 7166 | {buf: bytes.Repeat([]byte("F"), 33)}, |
| 7167 | {buf: bytes.Repeat([]byte("F"), 1024)}, |
| 7168 | {buf: bytes.Repeat([]byte("F"), 1024*2)}, |
| 7169 | {buf: bytes.Repeat([]byte("F"), 1024*1024)}, |
| 7170 | } |
| 7171 | |
| 7172 | const password = "correct horse battery staple" // https://xkcd.com/936/ |
| 7173 | |
| 7174 | for i, testCase := range testCases { |
| 7175 | // Generate a random object name |
| 7176 | objectName := randString(60, rand.NewSource(time.Now().UnixNano()), "") |
| 7177 | args["objectName"] = objectName |
| 7178 | |
| 7179 | // Secured object |
| 7180 | sse := encrypt.DefaultPBKDF([]byte(password), []byte(bucketName+objectName)) |
| 7181 | args["sse"] = sse |
| 7182 | |
| 7183 | // Put encrypted data |
| 7184 | _, err = c.PutObject(context.Background(), bucketName, objectName, bytes.NewReader(testCase.buf), int64(len(testCase.buf)), minio.PutObjectOptions{ServerSideEncryption: sse}) |
no test coverage detected