From 6f120959c33dd2297da042e28318375f905a8182 Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Wed, 4 Sep 2019 15:39:00 +0300 Subject: [PATCH] Partly supported ContentInfo.SignedData.certificates --- pygost/asn1schemas/cms.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/pygost/asn1schemas/cms.py b/pygost/asn1schemas/cms.py index f5e0a90..f168c1c 100644 --- a/pygost/asn1schemas/cms.py +++ b/pygost/asn1schemas/cms.py @@ -36,6 +36,7 @@ from pygost.asn1schemas.oids import id_signedData from pygost.asn1schemas.oids import id_tc26_gost3410_2012_256 from pygost.asn1schemas.oids import id_tc26_gost3410_2012_512 from pygost.asn1schemas.x509 import AlgorithmIdentifier +from pygost.asn1schemas.x509 import Certificate from pygost.asn1schemas.x509 import SubjectPublicKeyInfo @@ -270,12 +271,26 @@ class SignerInfos(SetOf): schema = SignerInfo() +class CertificateChoices(Choice): + schema = ( + ('certificate', Certificate()), + # ('extendedCertificate', ExtendedCertificate(impl=tag_ctxp(0))), + # ('v1AttrCert', AttributeCertificateV1(impl=tag_ctxc(1))), # V1 is osbolete + # ('v2AttrCert', AttributeCertificateV2(impl=tag_ctxc(2))), + # ('other', OtherCertificateFormat(impl=tag_ctxc(3))), + ) + + +class CertificateSet(SetOf): + schema = CertificateChoices() + + class SignedData(Sequence): schema = ( ("version", CMSVersion()), ("digestAlgorithms", DigestAlgorithmIdentifiers()), ("encapContentInfo", EncapsulatedContentInfo()), - # ("certificates", CertificateSet(impl=tag_ctxc(0), optional=True)), + ("certificates", CertificateSet(impl=tag_ctxc(0), optional=True)), # ("crls", RevocationInfoChoices(impl=tag_ctxc(1), optional=True)), ("signerInfos", SignerInfos()), ) -- 2.44.0