MCPcopy Create free account
hub / github.com/Azure/azure-storage-python / QueueEncryptionSamples

Class QueueEncryptionSamples

samples/queue/encryption_usage.py:96–213  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

94
95
96class QueueEncryptionSamples():
97 def __init__(self, account):
98 self.account = account
99
100 def run_all_samples(self):
101 self.service = self.account.create_queue_service()
102
103 self.put_encrypted_message()
104 self.peek_get_update_encrypted()
105 self.decrypt_with_key_encryption_key()
106 self.require_encryption()
107 self.alternate_key_algorithms()
108
109 def _get_queue_reference(self, prefix='queue'):
110 queue_name = '{}{}'.format(prefix, str(uuid.uuid4()).replace('-', ''))
111 return queue_name
112
113 def _create_queue(self, prefix='queue'):
114 queue_name = self._get_queue_reference(prefix)
115 self.service.create_queue(queue_name)
116 return queue_name
117
118 def put_encrypted_message(self):
119 queue_name = self._create_queue()
120
121 # KeyWrapper implements the key encryption key interface
122 # outlined in the get/update message documentation.
123 # Setting the key_encryption_key property will tell these
124 # APIs to encrypt messages.
125 self.service.key_encryption_key = KeyWrapper('key1')
126 self.service.put_message(queue_name, 'message1')
127
128 self.service.delete_queue(queue_name)
129
130 def peek_get_update_encrypted(self):
131 queue_name = self._create_queue()
132
133 # The KeyWrapper is still needed for encryption
134 self.service.key_encryption_key = KeyWrapper('key1')
135 self.service.put_message(queue_name, 'message1')
136
137 # KeyResolver is used to resolve a key from its id.
138 # Its interface is defined in the get/peek messages documentation.
139 key_resolver = KeyResolver()
140 key_resolver.put_key(self.service.key_encryption_key)
141 self.service.key_resolver_function = key_resolver.resolve_key
142 self.service.peek_messages(queue_name)
143 messages = self.service.get_messages(queue_name)
144 self.service.update_message(queue_name,
145 messages[0].id,
146 messages[0].pop_receipt,
147 0,
148 content='encrypted_message2')
149
150 self.service.delete_queue(queue_name)
151
152 def require_encryption(self):
153 queue_name = self._create_queue()

Callers 1

Calls

no outgoing calls

Tested by 1