# coding: utf-8
# PyGOST -- Pure Python GOST cryptographic functions library
-# Copyright (C) 2015-2020 Sergey Matveev <stargrave@stargrave.org>
+# Copyright (C) 2015-2022 Sergey Matveev <stargrave@stargrave.org>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
(TK26IOK.pdf)
"""
- def process_cert(self, curve_name, mode, hasher, prv_key_raw, cert_raw):
+ def process_cert(self, curve_name, hasher, prv_key_raw, cert_raw):
cert, tail = Certificate().decode(cert_raw, ctx={
"defines_by_path": (
(
spk = cert["tbsCertificate"]["subjectPublicKeyInfo"]["subjectPublicKey"]
self.assertIsNotNone(spk.defined)
_, pub_key_raw = spk.defined
- pub_key = pub_unmarshal(bytes(pub_key_raw), mode=mode)
+ pub_key = pub_unmarshal(bytes(pub_key_raw))
self.assertSequenceEqual(pub_key, public_key(curve, prv_key))
self.assertTrue(verify(
curve,
pub_key,
hasher(cert["tbsCertificate"].encode()).digest()[::-1],
bytes(cert["signatureValue"]),
- mode=mode,
))
def test_256(self):
prv_key_raw = hexdec("BFCF1D623E5CDD3032A7C6EABB4A923C46E43D640FFEAAF2C3ED39A8FA399924")[::-1]
self.process_cert(
"id-GostR3410-2001-CryptoPro-XchA-ParamSet",
- 2001,
GOST34112012256,
prv_key_raw,
cert_raw,
prv_key_raw = hexdec("3FC01CDCD4EC5F972EB482774C41E66DB7F380528DFE9E67992BA05AEE462435757530E641077CE587B976C8EEB48C48FD33FD175F0C7DE6A44E014E6BCB074B")[::-1]
self.process_cert(
"id-tc26-gost-3410-12-512-paramSetB",
- 2012,
GOST34112012512,
prv_key_raw,
cert_raw,
def _test_vector(
self,
curve_name,
- mode,
hsh,
ai_spki,
ai_sign,
prv = prv_unmarshal(prv_raw)
curve = CURVES[curve_name]
pub = public_key(curve, prv)
- pub_raw = pub_marshal(pub, mode=mode)
+ pub_raw = pub_marshal(pub)
subj = Name(("rdnSequence", RDNSequence([
RelativeDistinguishedName((
AttributeTypeAndValue((
pub,
hsh(cri.encode()).digest()[::-1],
sign,
- mode=mode,
))
cr = CertificationRequest((
("certificationRequestInfo", cri),
pub,
hsh(tbs.encode()).digest()[::-1],
sign,
- mode=mode,
))
cert = Certificate((
("tbsCertificate", tbs),
pub,
hsh(tbs.encode()).digest()[::-1],
sign,
- mode=mode,
))
crl = CertificateList((
("tbsCertList", tbs),
def test_256_test_paramset(self):
self._test_vector(
"id-GostR3410-2001-TestParamSet",
- 2001,
GOST34112012256,
AlgorithmIdentifier((
("algorithm", id_tc26_gost3410_2012_256),
def test_256a_paramset(self):
self._test_vector(
"id-tc26-gost-3410-2012-256-paramSetA",
- 2001,
GOST34112012256,
AlgorithmIdentifier((
("algorithm", id_tc26_gost3410_2012_256),
def test_512_test_paramset(self):
self._test_vector(
"id-tc26-gost-3410-2012-512-paramSetTest",
- 2012,
GOST34112012512,
AlgorithmIdentifier((
("algorithm", id_tc26_gost3410_2012_512),