def init_crl(): try: crl = [] edit_record(RecordType.CRL, 'crl', crl) commit_record(RecordType.CRL, 'crl', is_new=True) except: pass
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 revoke_key(uid, fingerprint): fingerprint = fingerprint.upper() cert, _ = read_record(RecordType.Certificate, uid) fingerprints = map(lambda x: x['fingerprint'], cert['certificates']) if fingerprint not in fingerprints: raise DifferentKeyOwnerException() if is_revoked(fingerprint): raise KeyAlreadyRevokedException() fp_list, ref_revision = read_record(RecordType.CRL, 'crl') fp_list.append(fingerprint) edit_record(RecordType.CRL, 'crl', fp_list) commit_record(RecordType.CRL, 'crl', ref_revision)
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 generate_record(uid): new_record = {"uid": uid, "certificates": []} edit_record(RecordType.Certificate, uid, new_record) commit_record(RecordType.Certificate, uid, is_new=True)
def register(register_data): uid = register_data["uid"] hash_password(register_data) edit_record(RecordType.User, uid, register_data) commit_record(RecordType.User, uid, is_new=True)