def edit(uid, edit_data): if "password" in edit_data: hash_password(edit_data) user_record, ref_revision = read_record(RecordType.User, uid) user_record.update(edit_data) edit_record(RecordType.User, uid, user_record) commit_record(RecordType.User, uid, ref_revision)
def get(self): ml.init_training() # Fetch training data ids = list_records() for id in ids: data, label = read_record(id) ml.add_training_data(data, 0 if label == 'dc' else 1) ml.train() return '', 201
def authenticate(uid, password): try: with exclusive_access(record_path(RecordType.User, uid)) as profile_lock: user_record, _ = read_record(RecordType.User, uid, profile_lock) user_password_hash = user_record["password"] password_hash = sha1(password.encode()).hexdigest() password_correct = password_hash == user_password_hash if password_correct: return user_record profile_decoded = image_decode(uid) if not profile_decoded: return None user_record, _ = read_record(RecordType.User, profile_decoded) return user_record except: return None
def download_cert(uid): data, _ = read_record(RecordType.Certificate, uid) for i in reversed(data['certificates']): # Order by upload time desc if not is_revoked(i['fingerprint']): data = delete_head_tail(i['certificate']) sign = sign_data(data) cert = { 'uid': uid, 'signature': sign, } cert.update(i) return json.dumps(cert) else: return "Certificate doesn't exist"
def upload_key(uid, key_data): key = scan_pgp_key(key_data) if not key: raise InvalidKeyException() if not check_name(uid, key[0]['uids'][0]): raise DifferentKeyOwnerException() fingerprint = key[0]['fingerprint'] if is_revoked(fingerprint): raise KeyAlreadyRevokedException() cert, ref_revision = read_record(RecordType.Certificate, uid) sub = { 'fingerprint': fingerprint, 'certificate': key_data, } cert['certificates'].append(sub) edit_record(RecordType.Certificate, uid, cert) commit_record(RecordType.Certificate, uid, ref_revision)
def download_crl(): crl, _ = read_record(RecordType.CRL, 'crl') return json.dumps(crl)
def is_revoked(fingerprint): fingerprint = fingerprint.upper() crl_record, _ = read_record(RecordType.CRL, 'crl') return fingerprint in crl_record
def get(self, id): data, label = read_record(id) if data is None: abort(404, message='Article {} doesn\'t exist'.format(id)) return {"id": id, "data": data, "label": label}