""" Тесты соответствия реализации ГОСТ Р 34.11-2012 («Стрибог») официальным тестовым векторам RFC 6986 / Приложение А ГОСТ Р 34.11-2012. """ import unittest from iss_ledger_117 import streebog256_hex, streebog512_hex class TestStreebogRFC6986(unittest.TestCase): """Проверка эталонных тестовых векторов из RFC 6986 §10.""" def test_vector_m1(self): """Вектор M1: 63 байта строки '0123456789...' (RFC 6986 §10.1).""" m1 = bytes.fromhex( "3231303938373635343332313039383736353433323130393837363534333231" "30393837363534333231303938373635343332313039383736353433323130" ) self.assertEqual(len(m1), 63) expected_512 = ( "486f64c1917879417fef082b3381a4e2" "11c324f074654c38823a7b76f830ad00" "fa1fbae42b1285c0352f227524bc9ab1" "6254288dd6863dccd5b9f54a1ad0541b" ) expected_256 = ( "00557be5e584fd52a449b16b0251d05d" "27f94ab76cbaa6da890b59d8ef1e159d" ) self.assertEqual(streebog512_hex(m1), expected_512) self.assertEqual(streebog256_hex(m1), expected_256) def test_vector_m2(self): """Вектор M2: 72 байта с кириллическим текстом (RFC 6986 §10.2).""" m2 = bytes.fromhex( "fbe2e5f0eee3c820fbeafaebef20fffb" "f0e1e0f0f520e0ed20e8ece0ebe5f0f2" "f120fff0eeec20f120faf2fee5e2202c" "e8f6f3ede220e8e6eee1e8f0f2d1202c" "e8f0f2e5e220e5d1" ) self.assertEqual(len(m2), 72) expected_512 = ( "28fbc9bada033b1460642bdcddb90c3f" "b3e56c497ccd0f62b8a2ad4935e85f03" "7613966de4ee00531ae60f3b5a47f8da" "e06915d5f2f194996fcabf2622e6881e" ) expected_256 = ( "508f7e553c06501d749a66fc28c6cac0" "b005746d97537fa85d9e40904efed29d" ) self.assertEqual(streebog512_hex(m2), expected_512) self.assertEqual(streebog256_hex(m2), expected_256) if __name__ == "__main__": unittest.main()