File: request_common.go

package info (click to toggle)
golang-github-azure-azure-storage-blob-go 0.15.0-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 2,084 kB
  • sloc: makefile: 3
file content (56 lines) | stat: -rw-r--r-- 2,640 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package azblob

import (
	"time"
)

// ClientProvidedKeyOptions contains headers which may be be specified from service version 2019-02-02
// or higher to encrypts the data on the service-side with the given key. Use of customer-provided keys
// must be done over HTTPS. As the encryption key itself is provided in the request, a secure connection
// must be established to transfer the key.
// Note: Azure Storage does not store or manage customer provided encryption keys. Keys are securely discarded
// as soon as possible after they’ve been used to encrypt or decrypt the blob data.
// https://docs.microsoft.com/en-us/azure/storage/common/storage-service-encryption
// https://docs.microsoft.com/en-us/azure/storage/common/customer-managed-keys-overview
type ClientProvidedKeyOptions struct {
	// A Base64-encoded AES-256 encryption key value.
	EncryptionKey *string

	// The Base64-encoded SHA256 of the encryption key.
	EncryptionKeySha256 *string

	// Specifies the algorithm to use when encrypting data using the given key. Must be AES256.
	EncryptionAlgorithm EncryptionAlgorithmType

	// Specifies the name of the encryption scope to use to encrypt the data provided in the request
	// https://docs.microsoft.com/en-us/azure/storage/blobs/encryption-scope-overview
	// https://docs.microsoft.com/en-us/azure/key-vault/general/overview
	EncryptionScope *string
}

// NewClientProvidedKeyOptions function.
// By default the value of encryption algorithm params is "AES256" for service version 2019-02-02 or higher.
func NewClientProvidedKeyOptions(ek *string, eksha256 *string, es *string) (cpk ClientProvidedKeyOptions) {
	cpk = ClientProvidedKeyOptions{}
	cpk.EncryptionKey, cpk.EncryptionKeySha256, cpk.EncryptionAlgorithm, cpk.EncryptionScope = ek, eksha256, EncryptionAlgorithmAES256, es
	return cpk
}

type ImmutabilityPolicyOptions struct {
	// A container with object-level immutability enabled is required for any options.
	// Both ImmutabilityPolicy options must be filled to set an immutability policy.
	ImmutabilityPolicyUntilDate *time.Time
	ImmutabilityPolicyMode      BlobImmutabilityPolicyModeType

	LegalHold *bool
}

func NewImmutabilityPolicyOptions(untilDate *time.Time, policyMode BlobImmutabilityPolicyModeType, legalHold *bool) ImmutabilityPolicyOptions {
	opt := ImmutabilityPolicyOptions{}
	opt.ImmutabilityPolicyUntilDate, opt.ImmutabilityPolicyMode, opt.LegalHold = untilDate, policyMode, legalHold
	return opt
}

func (pol *ImmutabilityPolicyOptions) pointers() (*time.Time, BlobImmutabilityPolicyModeType, *bool) {
	return pol.ImmutabilityPolicyUntilDate, pol.ImmutabilityPolicyMode, pol.LegalHold
}