from os import urandom
from sys import argv
from sys import exit as sys_exit
-from sys import stderr
from textwrap import fill
from pyderasn import Any
from pyderasn import BitString
from pyderasn import Integer
-from pyderasn import ObjectIdentifier
from pyderasn import OctetString
from pyderasn import PrintableString
from pyderasn import UTCTime
+from pygost.asn1schemas.oids import id_at_commonName
from pygost.asn1schemas.oids import id_ce_subjectKeyIdentifier
from pygost.asn1schemas.oids import id_tc26_gost3410_2012_512
from pygost.asn1schemas.oids import id_tc26_gost3410_2012_512_paramSetA
-from pygost.asn1schemas.oids import id_tc26_gost3411_2012_512
from pygost.asn1schemas.oids import id_tc26_signwithdigest_gost3410_2012_512
from pygost.asn1schemas.prvkey import PrivateKey
from pygost.asn1schemas.prvkey import PrivateKeyAlgorithmIdentifier
from pygost.gost34112012512 import GOST34112012512
if len(argv) != 2:
- print("Usage: cert-selfsigned-example.py COMMON-NAME", file=stderr)
- sys_exit(1)
+ sys_exit("Usage: cert-selfsigned-example.py COMMON-NAME")
+
def pem(obj):
- return fill(standard_b64encode(obj.encode()).decode('ascii'), 64)
+ return fill(standard_b64encode(obj.encode()).decode("ascii"), 64)
+
key_params = GostR34102012PublicKeyParameters((
("publicKeyParamSet", id_tc26_gost3410_2012_512_paramSetA),
- ("digestParamSet", id_tc26_gost3411_2012_512),
))
prv_raw = urandom(64)
prv = prv_unmarshal(prv_raw)
curve = CURVES["id-tc26-gost-3410-12-512-paramSetA"]
pub_raw = pub_marshal(public_key(curve, prv), mode=2012)
-id_at_commonName = ObjectIdentifier("2.5.4.3")
subj = Name(("rdnSequence", RDNSequence([
RelativeDistinguishedName((
AttributeTypeAndValue((
("signatureValue", BitString(sign(
curve,
prv,
- GOST34112012512(tbs.encode()).digest(),
+ GOST34112012512(tbs.encode()).digest()[::-1],
mode=2012,
))),
))