示例#1
0
def test_generate_service_descriptor(monkeypatch, mocker):
    '''
    Test creation of a fully signed hidden service descriptor
    '''

    # Mock the datetime function to return a constant timestamp
    class frozen_datetime(datetime.datetime):
        @classmethod
        def utcnow(cls):
            return datetime.datetime.utcfromtimestamp(UNIX_TIMESTAMP)

    monkeypatch.setattr(datetime, 'datetime', frozen_datetime)

    # Patch make_introduction_points_part to return the test introduction
    # point section
    mocker.patch('onionbalance.descriptor.make_introduction_points_part',
                 lambda *_: INTRODUCTION_POINT_PART)

    # Test basic descriptor generation.
    signed_descriptor = descriptor.generate_service_descriptor(
        PRIVATE_KEY,
        introduction_point_list=['mocked-ip-list'],
    ).encode('utf-8')
    stem.descriptor.hidden_service_descriptor.\
        HiddenServiceDescriptor(signed_descriptor, validate=True)
    assert (hashlib.sha1(signed_descriptor).hexdigest() ==
            'df4f4a7a15492205f073c32cbcfc4eb9511e4ad8')

    # Test descriptor generation with specified timestamp
    signed_descriptor = descriptor.generate_service_descriptor(
        PRIVATE_KEY,
        introduction_point_list=['mocked-ip-list'],
        timestamp=datetime.datetime.utcfromtimestamp(UNIX_TIMESTAMP),
    ).encode('utf-8')
    stem.descriptor.hidden_service_descriptor.\
        HiddenServiceDescriptor(signed_descriptor, validate=True)
    assert (hashlib.sha1(signed_descriptor).hexdigest() ==
            'df4f4a7a15492205f073c32cbcfc4eb9511e4ad8')

    # Test descriptor for deviation and replica 1
    signed_descriptor = descriptor.generate_service_descriptor(
        PRIVATE_KEY,
        introduction_point_list=['mocked-ip-list'],
        replica=1,
        deviation=24 * 60 * 60,
    ).encode('utf-8')
    stem.descriptor.hidden_service_descriptor.\
        HiddenServiceDescriptor(signed_descriptor, validate=True)
    assert (hashlib.sha1(signed_descriptor).hexdigest() ==
            'd828140cdccb1165dbc5a4b39622fcb45e6438fb')
示例#2
0
def test_generate_service_descriptor(monkeypatch, mocker):
    """
    Test creation of a fully signed hidden service descriptor
    """
    # Mock the datetime function to return a constant timestamp
    class frozen_datetime(datetime.datetime):
        @classmethod
        def utcnow(cls):
            return datetime.datetime.utcfromtimestamp(UNIX_TIMESTAMP)
    monkeypatch.setattr(datetime, 'datetime', frozen_datetime)

    # Patch make_introduction_points_part to return the test introduction
    # point section
    mocker.patch('onionbalance.descriptor.make_introduction_points_part',
                 lambda *_: INTRODUCTION_POINT_PART)

    # Test basic descriptor generation.
    signed_descriptor = descriptor.generate_service_descriptor(
        PRIVATE_KEY,
        introduction_point_list=['mocked-ip-list'],
    ).encode('utf-8')
    stem.descriptor.hidden_service_descriptor.\
        HiddenServiceDescriptor(signed_descriptor, validate=True)
    assert (hashlib.sha1(signed_descriptor).hexdigest() ==
            'df4f4a7a15492205f073c32cbcfc4eb9511e4ad8')

    # Test descriptor generation with specified timestamp
    signed_descriptor = descriptor.generate_service_descriptor(
        PRIVATE_KEY,
        introduction_point_list=['mocked-ip-list'],
        timestamp=datetime.datetime.utcfromtimestamp(UNIX_TIMESTAMP),
    ).encode('utf-8')
    stem.descriptor.hidden_service_descriptor.\
        HiddenServiceDescriptor(signed_descriptor, validate=True)
    assert (hashlib.sha1(signed_descriptor).hexdigest() ==
            'df4f4a7a15492205f073c32cbcfc4eb9511e4ad8')

    # Test descriptor for deviation and replica 1
    signed_descriptor = descriptor.generate_service_descriptor(
        PRIVATE_KEY,
        introduction_point_list=['mocked-ip-list'],
        replica=1,
        deviation=24*60*60,
    ).encode('utf-8')
    stem.descriptor.hidden_service_descriptor.\
        HiddenServiceDescriptor(signed_descriptor, validate=True)
    assert (hashlib.sha1(signed_descriptor).hexdigest() ==
            'd828140cdccb1165dbc5a4b39622fcb45e6438fb')
示例#3
0
def test_generate_service_descriptor_no_intros():
    with pytest.raises(ValueError):
        descriptor.generate_service_descriptor(
            PRIVATE_KEY,
            introduction_point_list=[],
        )
示例#4
0
def test_generate_service_descriptor_no_intros():
    with pytest.raises(ValueError):
        descriptor.generate_service_descriptor(
            PRIVATE_KEY,
            introduction_point_list=[],
        )