def assert_message_equals_plaintext(self, message): assert isinstance(message, str) ciphertext = b64_aes_encrypt(message) plaintext = b64_aes_decrypt(ciphertext) self.assertEqual(plaintext, message) self.assertIsInstance(ciphertext, str) self.assertIsInstance(plaintext, str)
def save(self, domain_name): try: importers = get_openmrs_importers_by_domain(domain_name) importer = importers[0] if importers else None # TODO: Support multiple if importer is None: importer = OpenmrsImporter(domain=domain_name) importer.server_url = self.cleaned_data['server_url'] importer.username = self.cleaned_data['username'] if self.cleaned_data['password']: # Don't save it if it hasn't been changed. importer.password = b64_aes_encrypt(self.cleaned_data['password']) importer.location_id = self.cleaned_data['location_id'] importer.import_frequency = self.cleaned_data['import_frequency'] importer.log_level = self.cleaned_data['log_level'] importer.report_uuid = self.cleaned_data['report_uuid'] importer.report_params = self.cleaned_data['report_params'] importer.case_type = self.cleaned_data['case_type'] importer.owner_id = self.cleaned_data['owner_id'] importer.location_type_name = self.cleaned_data['location_type_name'] importer.external_id_column = self.cleaned_data['external_id_column'] importer.name_columns = self.cleaned_data['name_columns'] importer.column_map = list(map(ColumnMapping.wrap, self.cleaned_data['column_map'])) importer.save() return True except Exception as err: logging.error('Unable to save OpenMRS Importer: %s' % err) return False
def test_password_bug(self): self.rep.auth_type = BASIC_AUTH self.rep.username = "******" plaintext = "Don't save me decrypted!" ciphertext = b64_aes_encrypt(plaintext) bytestring_repr = f"b'{ciphertext}'" # bug fixed by commit 3a900068 self.rep.password = f'${ALGO_AES}${bytestring_repr}' conn = self.rep.connection_settings self.assertEqual(conn.plaintext_password, self.rep.plaintext_password)
def _update_importer(self, importer, data): for key, value in data.items(): if key == 'password' and value != PASSWORD_PLACEHOLDER: value = b64_aes_encrypt(value) elif key == 'report_params': value = json.loads(value) elif key == 'column_map': list_of_dicts = json.loads(value) value = [ColumnMapping(**d) for d in list_of_dicts] setattr(importer, key, value) importer.save()
def set_repeater_attr(self, repeater, cleaned_data): repeater.domain = self.domain repeater.url = cleaned_data['url'] repeater.auth_type = cleaned_data['auth_type'] or None repeater.username = cleaned_data['username'] if cleaned_data['password'] != PASSWORD_PLACEHOLDER: repeater.password = '******'.format( algo=ALGO_AES, ciphertext=b64_aes_encrypt(cleaned_data['password'])) repeater.format = cleaned_data['format'] repeater.skip_cert_verify = cleaned_data['skip_cert_verify'] return repeater
def set_repeater_attr(self, repeater, cleaned_data): repeater.domain = self.domain repeater.url = cleaned_data['url'] repeater.auth_type = cleaned_data['auth_type'] or None repeater.username = cleaned_data['username'] if cleaned_data['password'] != PASSWORD_PLACEHOLDER: repeater.password = '******'.format( algo=ALGO_AES, ciphertext=b64_aes_encrypt(cleaned_data['password']) ) repeater.format = cleaned_data['format'] repeater.skip_cert_verify = cleaned_data['skip_cert_verify'] return repeater
def _update_importer(self, importer, data): for key, value in data.items(): if key == 'password': if value == PASSWORD_PLACEHOLDER: continue # Skip updating the password if it hasn't been changed. else: value = b64_aes_encrypt(value) elif key == 'report_params': value = json.loads(value) elif key == 'column_map': list_of_dicts = json.loads(value) value = [ColumnMapping(**d) for d in list_of_dicts] setattr(importer, key, value) importer.save()
def last_token(self, token: Optional[dict]): if token is None: self.last_token_aes = '' else: plaintext = json.dumps(token) self.last_token_aes = b64_aes_encrypt(plaintext)
def plaintext_client_secret(self, plaintext): if plaintext != PASSWORD_PLACEHOLDER: ciphertext = b64_aes_encrypt(plaintext) self.client_secret = f'${ALGO_AES}${ciphertext}'
def plaintext_password(self, plaintext): if plaintext != PASSWORD_PLACEHOLDER: ciphertext = b64_aes_encrypt(plaintext) self.password = f'${ALGO_AES}${ciphertext}'
def plaintext_password(self, plaintext): if plaintext != PASSWORD_PLACEHOLDER: self.password = '******'.format( algo=ALGO_AES, ciphertext=b64_aes_encrypt(plaintext))
def save_model(self, request, obj, form, change): obj.api_token = b64_aes_encrypt(obj.api_token) super(TransifexOrganizationAdmin, self).save_model(request, obj, form, change)