Beispiel #1
0
def verify_encrypted_bulletin_handler():
    data = get_post_data(request)
    encryptedBulletin = str_to_int(data.get('encryptedBulletin')[0])
    sumRangeProof = str_to_int(data.get('encryptedBulletin')[1])
    mainKey = str_to_int(data.get('mainKey'))
    verified = verify_encrypted_bulletin(encryptedBulletin, sumRangeProof,
                                         mainKey)
    return jsonify({"verified": verified})
Beispiel #2
0
def calculate_main_key_hanlder():
    data = get_post_data(request)
    publicKeysCommits = list(
        map(lambda publicKeyCommit: str_to_int(publicKeyCommit),
            data.get('publicKeysCommits')))
    secretKeysOfCommits = str_to_int(data.get('secretKeysOfCommits'))
    mainKey = calculate_main_key(publicKeysCommits, secretKeysOfCommits)
    return jsonify({"mainKey": int_to_str(mainKey)})
Beispiel #3
0
def verify_equality_of_dl_handler():
    data = get_post_data(request)
    decrypted = str_to_int(data.get('decrypted'))
    publicKey = str_to_hex(data.get('publicKey'))
    sum_A = str_to_int(data.get('sum_A'))

    verified = verify_equality_of_dl_wrapped(decrypted, sum_A, publicKey)

    return jsonify({"verified": verified})
Beispiel #4
0
def add_encrypted_bulletins_to_sum_handler():
    data = get_post_data(request)
    encryptedBulletins = list(str_to_int(data.get('encryptedBulletins')))
    mainKey = str_to_int(data.get('mainKey'))
    prevSums = data.get('prevSums')

    sum_A, sum_B = add_encrypted_bulletins_to_sum(encryptedBulletins, mainKey,
                                                  prevSums)

    return jsonify({"sum_A": int_to_str(sum_A), "sum_B": int_to_str(sum_B)})
Beispiel #5
0
def calculate_voting_result_rtk_handler():
    data = get_post_data(request)

    indexes = str_to_int(data.get('indexes'))

    polynomialCoefficientsExponents = str_to_int(
        data.get('polynomialCoefficientsExponents'))
    partialDecrypts = str_to_int(data.get('partialDecrypts'))

    sum_A = str_to_int(data.get('sum_A'))
    sum_B = str_to_int(data.get('sum_B'))

    votersNum = str_to_int(data.get('votersNum'))
    optionsNum = str_to_int(data.get('optionsNum'))

    commissionPubKey = str_to_hex(data.get('commissionPubKey'))
    decryptKey = str_to_int(data.get('decryptKey'))
    commissionDecrypt = str_to_int(data.get('commissionDecrypt'))

    result, error = calculate_voting_result_rtk(
        indexes, votersNum, optionsNum, polynomialCoefficientsExponents,
        partialDecrypts, sum_A, sum_B, decryptKey, commissionPubKey,
        commissionDecrypt)

    if not result:
        return jsonify(error), 400
    else:
        return jsonify({"result": result})
Beispiel #6
0
def subtract_encrypted_bulletins_from_sum_handler():
    data = get_post_data(request)
    encryptedBulletins = list(
        map(lambda v: [str_to_int(v[0]), str_to_int(v[1])],
            data.get('encryptedBulletins')))
    mainKey = str_to_int(data.get('mainKey'))
    prevSums = data.get('prevSums')

    sum_A, sum_B = subtract_encrypted_bulletins_from_sum(
        encryptedBulletins, mainKey, prevSums)

    return jsonify({"sum_A": int_to_str(sum_A), "sum_B": int_to_str(sum_B)})
Beispiel #7
0
def unblind_public_keys_hanlder():
    data = get_post_data(request)
    publicKeysCommits = list(
        map(lambda publicKeyCommit: str_to_int(publicKeyCommit),
            data.get('publicKeysCommits')))
    secretKeysOfCommits = str_to_int(data.get('secretKeysOfCommits'))
    unblindedPublicKeys = unblind_public_keys(publicKeysCommits,
                                              secretKeysOfCommits)
    return jsonify({
        "unblindedPublicKeys":
        list(
            map(lambda publicKey: int_to_str([publicKey.x, publicKey.y]),
                unblindedPublicKeys))
    })
Beispiel #8
0
def calculate_voting_result_v2_handler():
    data = get_post_data(request)

    indexes = str_to_int(data.get('indexes'))

    polynomialCoefficientsExponents = str_to_int(
        data.get('polynomialCoefficientsExponents'))
    partialDecrypts = str_to_int(data.get('partialDecrypts'))

    mainKey = str_to_int(data.get('mainKey'))

    sum_A = str_to_int(data.get('sum_A'))
    sum_B = str_to_int(data.get('sum_B'))

    votersNum = str_to_int(data.get('votersNum'))
    optionsNum = str_to_int(data.get('optionsNum'))

    result, error = calculate_voting_result(indexes, votersNum, optionsNum,
                                            polynomialCoefficientsExponents,
                                            partialDecrypts, sum_A, sum_B,
                                            mainKey)

    if not result:
        return jsonify(error), 400
    else:
        return jsonify({"result": result})
Beispiel #9
0
def add_commission_key_handler():
    data = get_post_data(request)
    decryptKey = str_to_int(data.get('decryptKey'))
    commissionPubKey = str_to_hex(data.get('commissionPubKey'))
    result, data = add_commission_key(decryptKey, commissionPubKey)
    if not result:
        return jsonify(data), 400
    else:
        return jsonify({"mainKey": int_to_str(data)})
Beispiel #10
0
def calculate_encrypted_shadows_handler():
    data = get_post_data(request)
    coefficients = str_to_int(data.get('polynomialCoefficients'))
    unblindedPublicKeys = list(
        map(lambda publicKey: str_to_int(publicKey),
            data.get('unblindedPublicKeys')))
    encryptedShadows = calculate_encrypted_shadows(coefficients,
                                                   unblindedPublicKeys)
    return jsonify({
        "encryptedShadows":
        list(
            map(
                lambda encryptedShadow: {
                    "privateKey":
                    int_to_str(encryptedShadow[0]),
                    "publicKey":
                    int_to_str([encryptedShadow[1].x, encryptedShadow[1].y])
                }, encryptedShadows))
    })
Beispiel #11
0
def calculate_polynomial_coefficients_exponents_handler():
    data = get_post_data(request)
    coefficients = str_to_int(data.get('polynomialCoefficients'))
    polynomialCoefficientsExponents = calculate_polynomial_coefficients_exponents(
        coefficients)
    return jsonify({
        "polynomialCoefficientsExponents":
        list(
            map(lambda exponent: int_to_str([exponent.x, exponent.y]),
                polynomialCoefficientsExponents))
    })
Beispiel #12
0
def decrypt_and_check_shadows_handler():
    data = get_post_data(request)
    privateKey = str_to_int(data.get('privateKey'))
    idx = str_to_int(data.get('idx'))
    polynomialCoefficientsExponents = list(
        str_to_int(data.get('polynomialCoefficientsExponents')))
    encrypted_shadows = list(
        map(
            lambda shadow: [
                str_to_int(shadow['privateKey']),
                str_to_int([shadow['publicKey'][0], shadow['publicKey'][1]])
            ], data.get('encryptedShadows')))

    unblindedPublicKeys = list(
        map(lambda publicKey: str_to_int(publicKey),
            data.get('unblindedPublicKeys')))

    result = decrypt_and_check_shadows(privateKey, idx, encrypted_shadows,
                                       polynomialCoefficientsExponents,
                                       unblindedPublicKeys)
    return result
Beispiel #13
0
def verify_encrypted_bulletins_handler_v2():
    data = get_post_data(request)
    encryptedBulletins = str_to_int(data.get('encryptedBulletins'))
    mainKey = str_to_int(data.get('mainKey'))
    verified = verify_encrypted_bulletins_v2(encryptedBulletins, mainKey)
    return jsonify({"verified": verified})
Beispiel #14
0
def partially_decrypt_sum_a_handler():
    data = get_post_data(request)
    sum_A = str_to_int(data.get('sum_A'))
    decryptedShadowsSum = str_to_int(data.get('decryptedShadowsSum'))
    partiallyDecrypted = partially_decrypt_sum_a(sum_A, decryptedShadowsSum)
    return jsonify({"partiallyDecrypted": int_to_str(partiallyDecrypted)})
Beispiel #15
0
def generate_polynomial_coefficients_handler():
    data = get_post_data(request)
    privateKey = str_to_int(data.get('privateKey'))
    k = str_to_int(data.get('k'))
    coefficients = generate_polynomial_coefficients(privateKey, k)
    return jsonify({"polynomialCoefficients": int_to_str(coefficients)})
Beispiel #16
0
def make_encrypted_bulletin_handler():
    data = get_post_data(request)
    bulletin = str_to_int(data.get('bulletin'))
    mainKey = str_to_int(data.get('mainKey'))
    encrypted_bulletin, proof = make_encrypted_bulletin(bulletin, mainKey)
    return jsonify([list(int_to_str(encrypted_bulletin)), int_to_str(proof)])
Beispiel #17
0
def restore_common_secret_handler():
    data = get_post_data(request)
    indexes = str_to_int(data.get('indexes'))
    decryptedShadowsSums = str_to_int(data.get('decryptedShadowsSums'))
    commonSecret = restore_common_secret(indexes, decryptedShadowsSums)
    return jsonify({"commonSecret": int_to_str(commonSecret)})