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
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)
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
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'
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
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'
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'