Odyssey
Classes | Functions | Variables
cli.certificates Namespace Reference

Classes

class  CertificateCommand
 
class  UploadCertificateCommand
 

Functions

def __derive_key__ (password, salt=None)
 
def __encrypt_data__ (password, salt, data)
 
def update_secrets_value (secret_id, salt, private_key)
 
def get_secret_value (client, secret_id)
 
def put_secret_value (client, secret_id, secrets)
 

Variables

list AWS_REGIONS
 
string SALT = 'LTzkm1w/p3ReDm9kmfmnwQ=='
 
string ENCODING = 'utf-8'
 
int AES_KEY_BYTES = 32
 

Detailed Description

Run cumanage operations in an AWS hosted stack.

Function Documentation

◆ __derive_key__()

def cli.certificates.__derive_key__ (   password,
  salt = None 
)
Return key using PBKDF2

Definition at line 25 of file certificates.py.

25 def __derive_key__(password, salt=None):
26  '''Return key using PBKDF2'''
27  if not salt:
28  salt = SALT
29  return PBKDF2(
30  password,
31  salt.encode(ENCODING),
32  AES_KEY_BYTES
33  )
34 
35 

◆ __encrypt_data__()

def cli.certificates.__encrypt_data__ (   password,
  salt,
  data 
)
Encrypt given data using password and PBKDF2 key stretching

Definition at line 36 of file certificates.py.

36 def __encrypt_data__(password, salt, data):
37  '''Encrypt given data using password and PBKDF2 key stretching'''
38  key = __derive_key__(password, salt)
39  aes_cipher = AES.new(key, AES.MODE_CTR, counter=Counter.new(128))
40  return aes_cipher.encrypt(data.encode(ENCODING))
41 
42 

◆ get_secret_value()

def cli.certificates.get_secret_value (   client,
  secret_id 
)
Return the JSON data for the provided `secret_id`

If there is no secret for the provided `secret_id` return an empty
dictionary.

Definition at line 118 of file certificates.py.

118 def get_secret_value(client, secret_id):
119  '''Return the JSON data for the provided `secret_id`
120 
121  If there is no secret for the provided `secret_id` return an empty
122  dictionary.
123  '''
124  try:
125  response = client.get_secret_value(SecretId=secret_id)
126  return json.loads(response['SecretString'])
127  except client.exceptions.ResourceNotFoundException:
128  return {}
129 
130 

◆ put_secret_value()

def cli.certificates.put_secret_value (   client,
  secret_id,
  secrets 
)
Create or Update secret value of the provided `secret_id`

Definition at line 131 of file certificates.py.

131 def put_secret_value(client, secret_id, secrets):
132  '''Create or Update secret value of the provided `secret_id`'''
133  json_secrets = json.dumps(secrets)
134  if get_secret_value(client, secret_id) == {}:
135  response = client.create_secret(
136  Name=secret_id,
137  SecretString=json_secrets
138  )
139  else:
140  response = client.put_secret_value(
141  SecretId=secret_id,
142  SecretString=json.dumps(secrets)
143  )
144  return response['ARN']

◆ update_secrets_value()

def cli.certificates.update_secrets_value (   secret_id,
  salt,
  private_key 
)
Update new secrets value for `secret_id`

Definition at line 102 of file certificates.py.

102 def update_secrets_value(secret_id, salt, private_key):
103  '''Update new secrets value for `secret_id`'''
104  arns = []
105  for region in AWS_REGIONS:
106  client = boto3.client('secretsmanager', region_name=region)
107  secret_dictionary = get_secret_value(client, secret_id)
108 
109  secret_dictionary['salt'] = salt
110  secret_dictionary['password'] = private_key
111 
112  arn = put_secret_value(client, secret_id, secret_dictionary)
113  arns.append(arn)
114 
115  return arns
116 
117 

Variable Documentation

◆ AWS_REGIONS

list cli.certificates.AWS_REGIONS
Initial value:
1 = [
2  'us-east-2',
3  'us-west-2',
4 ]

Definition at line 16 of file certificates.py.