Example #1
0
def test_sign_hash():
    ctx = test_cert_acquire_key()
    data = os.urandom(1024)
    length = 0 if test_cn.endswith(b'2012') else 2001
    hash1 = csp.Hash(ctx, data, length)
    signature1 = hash1.sign()
    return signature1, data
Example #2
0
def test_verify_hash():
    sign, data = test_sign_hash()
    ctx = test_cert_acquire_key()
    cs = csp.CertStore(ctx, b"MY")
    cert = list(c for c in cs.find_by_name(bytes(test_cn)) if csp.CertInfo(c).name() == b'CN=' + test_cn)[0]
    length = 0 if test_cn.endswith(b'2012') else 2001
    hash1 = csp.Hash(ctx, data, length)
    assert hash1.verify(cert, sign)
Example #3
0
def test_derive_key():
    ctx = csp.Crypt(
        b'',
        PROV_GOST,
        csp.CRYPT_VERIFYCONTEXT,
        test_provider
    )
    data = b'1234'
    hash1 = csp.Hash(ctx, data)
    key1 = hash1.derive_key()
    return key1
Example #4
0
def test_hash_hmac():
    key = test_derive_key()
    ctx = csp.Crypt(
        b'',
        PROV_GOST,
        csp.CRYPT_VERIFYCONTEXT,
        test_provider
    )
    data = b'The quick brown fox jumps over the lazy dog'
    hash1 = csp.Hash(ctx, data, key, 0)
    digest_str = hexlify(hash1.digest())
    print(digest_str)
    assert digest_str == b'3e7dea7f2384b6c5a3d0e24aaa29c05e89ddd762145030ec22c71a6db8b2c1f4'
Example #5
0
def test_hash_digest_random():
    '''
    Test Hash()

    Объект Hash может инициализироваться данными из байтовой строки или быть
    пустым. Метод `Hash.update()` добавляет данные из байтовой строки `s` к
    хэшу. Метод `Hash.digest()` возвращает хэш в виде байтовой строки.
    После вызова digest() добавлять данные больше нельзя.
    '''
    ctx = csp.Crypt(
        b'',
        PROV_GOST,
        csp.CRYPT_VERIFYCONTEXT,
        test_provider
    )
    data = os.urandom(1024)
    length = 0 if test_cn.endswith(b'2012') else 2001
    hash1 = csp.Hash(ctx, data, length)
    hash2 = csp.Hash(ctx, length)
    hash2.update(data)
    digest1 = hash1.digest()
    digest2 = hash2.digest()
    print(hexlify(digest1), hexlify(digest2))
    assert digest1 == digest2
Example #6
0
def test_hash_digest_string():
    ctx = csp.Crypt(
        b'',
        PROV_GOST,
        csp.CRYPT_VERIFYCONTEXT,
        test_provider
    )
    data = b'The quick brown fox jumps over the lazy dog'
    length = 0 if test_cn.endswith(b'2012') else 2001
    hash1 = csp.Hash(ctx, data, length)
    digest_str = hexlify(hash1.digest())
    print(digest_str, length)
    if length == 2001:
        assert digest_str == b'9004294a361a508c586fe53d1f1b02746765e71b765472786e4770d565830a76'
        return
    assert digest_str == b'3e7dea7f2384b6c5a3d0e24aaa29c05e89ddd762145030ec22c71a6db8b2c1f4'
Example #7
0
def test_hash_digest_empty():
    ctx = csp.Crypt(
        b'',
        PROV_GOST,
        csp.CRYPT_VERIFYCONTEXT,
        test_provider
    )
    data = b''
    length = 0 if test_cn.endswith(b'2012') else 2001
    hash1 = csp.Hash(ctx, data, length)
    digest_str = hexlify(hash1.digest())
    print(digest_str, length)
    if length == 2001:
        assert digest_str == b'981e5f3ca30c841487830f84fb433e13ac1101569b9c13584ac483234cd656c0'
        return
    assert digest_str == b'3f539a213e97c802cc229d474c6aa32a825a360b2a933a949fd925208d9ce1bb'