def test_verify_signature_success():
    state = pruning_state()
    fees_authenticator = FeesAuthNr(state, None)

    msg = FeeData()
    msg.signatures = {
        'V4SGRU86Z58d6TV7PBUe6f':
        'dYZZFV6Fk59bFaNFaKwXfY9AqP6cr3wqTSPjoRLoLcgAi28RNErweRXRskzZ4cwRyzBCpZyzewmSPdrQb1oES83'
    }

    #                                 1         2         3         4   4
    #                        12345678901234567890123456789012345678901234567890
    inputs = [{
        ADDRESS: '2gWVuNmy8rdJrDHzQ9PDDpHkfcypyUZRsSHaqA9q1K3Gti3YXw',
        SEQNO: 153
    }]
    outputs = [{
        ADDRESS: '2gWVuNmy8rdJrDHzQ9PDDpHkfcypyUZRsSHaqA9q1K3Gti3YXw',
        AMOUNT: 9
    }]
    signatures = [
        '5cEsNP3tfVLG5hdKfW5dCNVyM6gtoUAgGDsTUsikfNw6ZEJXme4v6KxZPP6wvniwg6FZbeTMtkcQ5TY4uf3ihWsG'
    ]
    setattr(msg, "fees", [inputs, outputs, signatures])

    fees_authenticator.verify_signature(msg)
def test_verify_signature_mismatch_of_signatures():
    state = pruning_state()
    fees_authenticator = FeesAuthNr(state, None)

    msg = FeeData()
    msg.signatures = {
        'MSjKTWkPLtYoPEaTF1TUDb':
        '61PUc8K8aAkhmCjWLstxwRREBAJKbVMRuGiUXxSo1tiRwXgUfVT4TY47NJtbQymcDW3paXPWNqqD4cziJjoPQSSX'
    }

    #                                 1         2         3         4   4
    #                        12345678901234567890123456789012345678901234567890
    address = '2JMyZgFBFyp5YMsBta4gCFA5TMdUzMXrWbRvMFkW7KDNbaMrk1'
    inputs = [{ADDRESS: address, SEQNO: 1}, {ADDRESS: address, SEQNO: 1}]
    outputs = [
        {
            ADDRESS: address,
            AMOUNT: 4
        },
        {
            ADDRESS: address,
            AMOUNT: 5
        },
    ]
    signatures = [
        '2z34R9vCyohVS2V7SXf8VnkHuAm8a224D6hopKJBMbdV4z8meR8aTdLMbMiknRXnKD4YkGtZnYY1D6jSQz23FziG'
    ]
    setattr(msg, "fees", [inputs, outputs, signatures])

    with pytest.raises(InsufficientCorrectSignatures):
        fees_authenticator.verify_signature(msg)
Exemple #3
0
def test_verify_signature_incorrect_signatures(node):
    fees_authenticator = FeesAuthNr(ACCEPTABLE_WRITE_TYPES_FEE,
                                    ACCEPTABLE_QUERY_TYPES_FEE,
                                    ACCEPTABLE_ACTION_TYPES_FEE,
                                    node[0].db_manager.idr_cache, None)
    msg = FeeData()
    msg.signatures = {
        'MSjKTWkPLtYoPEaTF1TUDb':
        '61PUc8K8aAkhmCjWLstxwRREBAJKbVMRuGiUXxSo1tiRwXgUfVT4TY47NJtbQymcDW3paXPWNqqD4cziJjoPQSSX'
    }

    inputs = [{
        ADDRESS: '2jS4PHWQJKcawRxdW6GVsjnZBa1ecGdCssn7KhWYJZGTXgL7Es',
        SEQNO: 2
    }]
    outputs = [{
        ADDRESS: '2jS4PHWQJKcawRxdW6GVsjnZBa1ecGdCssn7KhWYJZGTXgL7Es',
        AMOUNT: 10
    }]
    signatures = [
        '5wuXGeWyrM2xcp68rRsYEaegaguEJBBTDQioeSgDv5jMFeaeSLPAcMs4XwcxNXBwoUAUWgxSMN9WUnZ7ADctdPyQ'
    ]
    setattr(msg, "fees", [inputs, outputs, signatures])

    with pytest.raises(InsufficientCorrectSignatures):
        fees_authenticator.verify_signature(PreSigVerification(msg))
Exemple #4
0
def test_verify_signature_invalid_signature_format(node):
    fees_authenticator = FeesAuthNr(ACCEPTABLE_WRITE_TYPES_FEE,
                                    ACCEPTABLE_QUERY_TYPES_FEE,
                                    ACCEPTABLE_ACTION_TYPES_FEE,
                                    node[0].getState(DOMAIN_LEDGER_ID), None)
    msg = FeeData()
    msg.signatures = {
        'MSjKTWkPLtYoPEaTF1TUDb':
        '61PUc8K8aAkhmCjWLstxwRREBAJKbVMRuGiUXxSo1tiRwXgUfVT4TY47NJtbQymcDW3paXPWNqqD4cziJjoPQSSX'
    }

    inputs = [{
        ADDRESS: '2jS4PHWQJKcawRxdW6GVsjnZBa1ecGdCssn7KhWYJZGTXgL7Es',
        SEQNO: 2
    }]
    outputs = [{
        ADDRESS: '2jS4PHWQJKcawRxdW6GVsjnZBa1ecGdCssn7KhWYJZGTXgL7Es',
        AMOUNT: 10
    }]
    signatures = [
        '000kKoLEAP1YCYULYqxSNKvcYigGG1fHRMbZ6N1byFhaRut4P5RDF2KGR73ffgQoyzMHabrcTvrRGHhEfQ6ZdzxB'
    ]
    setattr(msg, "fees", [inputs, outputs, signatures])

    with pytest.raises(InvalidSignatureFormat):
        fees_authenticator.verify_signature(PreSigVerification(msg))
Exemple #5
0
def test_verify_signature_success(node):
    fees_authenticator = FeesAuthNr(ACCEPTABLE_WRITE_TYPES_FEE,
                                    ACCEPTABLE_QUERY_TYPES_FEE,
                                    ACCEPTABLE_ACTION_TYPES_FEE,
                                    node[0].db_manager.idr_cache, None)

    msg = FeeData()
    msg.signatures = {
        'V4SGRU86Z58d6TV7PBUe6f':
        'dYZZFV6Fk59bFaNFaKwXfY9AqP6cr3wqTSPjoRLoLcgAi28RNErweRXRskzZ4cwRyzBCpZyzewmSPdrQb1oES83'
    }

    #                                 1         2         3         4   4
    #                        12345678901234567890123456789012345678901234567890
    inputs = [{
        ADDRESS: '2gWVuNmy8rdJrDHzQ9PDDpHkfcypyUZRsSHaqA9q1K3Gti3YXw',
        SEQNO: 153
    }]
    outputs = [{
        ADDRESS: '2gWVuNmy8rdJrDHzQ9PDDpHkfcypyUZRsSHaqA9q1K3Gti3YXw',
        AMOUNT: 9
    }]
    signatures = [
        '5cEsNP3tfVLG5hdKfW5dCNVyM6gtoUAgGDsTUsikfNw6ZEJXme4v6KxZPP6wvniwg6FZbeTMtkcQ5TY4uf3ihWsG'
    ]
    setattr(msg, "fees", [inputs, outputs, signatures])
    msg.payload_digest = msg.digest

    fees_authenticator.verify_signature(PreSigVerification(msg))
def test_verify_signature_no_fees():
    # should just run, no exceptions
    state = pruning_state()
    fees_authenticator = FeesAuthNr(state, None)
    msg = FeeData()
    msg.signatures = {
        'MSjKTWkPLtYoPEaTF1TUDb':
        '61PUc8K8aAkhmCjWLstxwRREBAJKbVMRuGiUXxSo1tiRwXgUfVT4TY47NJtbQymcDW3paXPWNqqD4cziJjoPQSSX'
    }

    fees_authenticator.verify_signature(msg)
Exemple #7
0
def test_verify_signature_no_fees(node):
    # should just run, no exceptions
    fees_authenticator = FeesAuthNr(ACCEPTABLE_WRITE_TYPES_FEE,
                                    ACCEPTABLE_QUERY_TYPES_FEE,
                                    ACCEPTABLE_ACTION_TYPES_FEE,
                                    node[0].db_manager.idr_cache, None)
    msg = FeeData()
    msg.signatures = {
        'MSjKTWkPLtYoPEaTF1TUDb':
        '61PUc8K8aAkhmCjWLstxwRREBAJKbVMRuGiUXxSo1tiRwXgUfVT4TY47NJtbQymcDW3paXPWNqqD4cziJjoPQSSX'
    }

    fees_authenticator.verify_signature(PreSigVerification(msg))
def test_verify_signature_incorrect_signatures():
    state = pruning_state()
    fees_authenticator = FeesAuthNr(state, None)
    msg = FeeData()
    msg.signatures = {
        'MSjKTWkPLtYoPEaTF1TUDb':
        '61PUc8K8aAkhmCjWLstxwRREBAJKbVMRuGiUXxSo1tiRwXgUfVT4TY47NJtbQymcDW3paXPWNqqD4cziJjoPQSSX'
    }

    inputs = [{
        ADDRESS: '2jS4PHWQJKcawRxdW6GVsjnZBa1ecGdCssn7KhWYJZGTXgL7Es',
        SEQNO: 2
    }]
    outputs = [{
        ADDRESS: '2jS4PHWQJKcawRxdW6GVsjnZBa1ecGdCssn7KhWYJZGTXgL7Es',
        AMOUNT: 10
    }]
    signatures = [
        '5wuXGeWyrM2xcp68rRsYEaegaguEJBBTDQioeSgDv5jMFeaeSLPAcMs4XwcxNXBwoUAUWgxSMN9WUnZ7ADctdPyQ'
    ]
    setattr(msg, "fees", [inputs, outputs, signatures])

    with pytest.raises(InsufficientCorrectSignatures):
        fees_authenticator.verify_signature(msg)
Exemple #9
0
def test_verify_signature_sequence_order_wrong(node):
    fees_authenticator = FeesAuthNr(ACCEPTABLE_WRITE_TYPES_FEE,
                                    ACCEPTABLE_QUERY_TYPES_FEE,
                                    ACCEPTABLE_ACTION_TYPES_FEE,
                                    node[0].db_manager.idr_cache, None)

    msg = FeeData()
    msg.signatures = {
        'MSjKTWkPLtYoPEaTF1TUDb':
        '61PUc8K8aAkhmCjWLstxwRREBAJKbVMRuGiUXxSo1tiRwXgUfVT4TY47NJtbQymcDW3paXPWNqqD4cziJjoPQSSX'
    }

    #                                 1         2         3         4   4
    #                        12345678901234567890123456789012345678901234567890
    address = '2JMyZgFBFyp5YMsBta4gCFA5TMdUzMXrWbRvMFkW7KDNbaMrk1'
    inputs = [{ADDRESS: address, SEQNO: 2}]
    outputs = [{ADDRESS: address, AMOUNT: 9}]
    signatures = [
        '2z34R9vCyohVS2V7SXf8VnkHuAm8a224D6hopKJBMbdV4z8meR8aTdLMbMiknRXnKD4YkGtZnYY1D6jSQz23FziG'
    ]
    setattr(msg, "fees", [inputs, outputs, signatures])

    with pytest.raises(InsufficientCorrectSignatures):
        fees_authenticator.verify_signature(PreSigVerification(msg))