codekingpro/portable-devtools
114k
1#2# This file is part of pyasn1-modules software.3#4# Created by Russ Housley with assistance from asn1ate v.0.6.0.5#6# Copyright (c) 2019, Vigil Security, LLC7# License: http://snmplabs.com/pyasn1/license.html8#9# Electronic Signature Policies10#11# ASN.1 source from:12# https://www.rfc-editor.org/rfc/rfc3125.txt13# https://www.rfc-editor.org/errata/eid590114# https://www.rfc-editor.org/errata/eid590215#16 17from pyasn1.type import constraint18from pyasn1.type import namedtype19from pyasn1.type import namedval20from pyasn1.type import tag21from pyasn1.type import useful22from pyasn1.type import univ23 24from pyasn1_modules import rfc528025 26MAX = float('inf')27 28 29# Imports from RFC 528030 31AlgorithmIdentifier = rfc5280.AlgorithmIdentifier32 33Attribute = rfc5280.Attribute34 35AttributeType = rfc5280.AttributeType36 37AttributeTypeAndValue = rfc5280.AttributeTypeAndValue38 39AttributeValue = rfc5280.AttributeValue40 41Certificate = rfc5280.Certificate42 43CertificateList = rfc5280.CertificateList44 45DirectoryString = rfc5280.DirectoryString46 47GeneralName = rfc5280.GeneralName48 49GeneralNames = rfc5280.GeneralNames50 51Name = rfc5280.Name52 53PolicyInformation = rfc5280.PolicyInformation54 55 56# Electronic Signature Policies57 58class CertPolicyId(univ.ObjectIdentifier):59 pass60 61 62class AcceptablePolicySet(univ.SequenceOf):63 componentType = CertPolicyId()64 65 66class SignPolExtn(univ.Sequence):67 componentType = namedtype.NamedTypes(68 namedtype.NamedType('extnID', univ.ObjectIdentifier()),69 namedtype.NamedType('extnValue', univ.OctetString())70 )71 72 73class SignPolExtensions(univ.SequenceOf):74 componentType = SignPolExtn()75 76 77class AlgAndLength(univ.Sequence):78 componentType = namedtype.NamedTypes(79 namedtype.NamedType('algID', univ.ObjectIdentifier()),80 namedtype.OptionalNamedType('minKeyLength', univ.Integer()),81 namedtype.OptionalNamedType('other', SignPolExtensions())82 )83 84 85class AlgorithmConstraints(univ.SequenceOf):86 componentType = AlgAndLength()87 88 89class AlgorithmConstraintSet(univ.Sequence):90 componentType = namedtype.NamedTypes(91 namedtype.OptionalNamedType('signerAlgorithmConstraints',92 AlgorithmConstraints().subtype(explicitTag=tag.Tag(93 tag.tagClassContext, tag.tagFormatSimple, 0))),94 namedtype.OptionalNamedType('eeCertAlgorithmConstraints',95 AlgorithmConstraints().subtype(explicitTag=tag.Tag(96 tag.tagClassContext, tag.tagFormatSimple, 1))),97 namedtype.OptionalNamedType('caCertAlgorithmConstraints',98 AlgorithmConstraints().subtype(explicitTag=tag.Tag(99 tag.tagClassContext, tag.tagFormatSimple, 2))),100 namedtype.OptionalNamedType('aaCertAlgorithmConstraints',101 AlgorithmConstraints().subtype(explicitTag=tag.Tag(102 tag.tagClassContext, tag.tagFormatSimple, 3))),103 namedtype.OptionalNamedType('tsaCertAlgorithmConstraints',104 AlgorithmConstraints().subtype(explicitTag=tag.Tag(105 tag.tagClassContext, tag.tagFormatSimple, 4)))106 )107 108 109class AttributeValueConstraints(univ.SequenceOf):110 componentType = AttributeTypeAndValue()111 112 113class AttributeTypeConstraints(univ.SequenceOf):114 componentType = AttributeType()115 116 117class AttributeConstraints(univ.Sequence):118 componentType = namedtype.NamedTypes(119 namedtype.OptionalNamedType('attributeTypeConstarints',120 AttributeTypeConstraints().subtype(explicitTag=tag.Tag(121 tag.tagClassContext, tag.tagFormatSimple, 0))),122 namedtype.OptionalNamedType('attributeValueConstarints',123 AttributeValueConstraints().subtype(explicitTag=tag.Tag(124 tag.tagClassContext, tag.tagFormatSimple, 1)))125 )126 127 128class HowCertAttribute(univ.Enumerated):129 namedValues = namedval.NamedValues(130 ('claimedAttribute', 0),131 ('certifiedAttribtes', 1),132 ('either', 2)133 )134 135 136class SkipCerts(univ.Integer):137 subtypeSpec = constraint.ValueRangeConstraint(0, MAX)138 139 140class PolicyConstraints(univ.Sequence):141 componentType = namedtype.NamedTypes(142 namedtype.OptionalNamedType('requireExplicitPolicy',143 SkipCerts().subtype(explicitTag=tag.Tag(144 tag.tagClassContext, tag.tagFormatSimple, 0))),145 namedtype.OptionalNamedType('inhibitPolicyMapping',146 SkipCerts().subtype(explicitTag=tag.Tag(147 tag.tagClassContext, tag.tagFormatSimple, 1)))148 )149 150 151class BaseDistance(univ.Integer):152 subtypeSpec = constraint.ValueRangeConstraint(0, MAX)153 154 155class GeneralSubtree(univ.Sequence):156 componentType = namedtype.NamedTypes(157 namedtype.NamedType('base', GeneralName()),158 namedtype.DefaultedNamedType('minimum',159 BaseDistance().subtype(explicitTag=tag.Tag(160 tag.tagClassContext, tag.tagFormatSimple, 0)).subtype(161 value=0)),162 namedtype.OptionalNamedType('maximum',163 BaseDistance().subtype(explicitTag=tag.Tag(164 tag.tagClassContext, tag.tagFormatSimple, 1)))165 )166 167 168class GeneralSubtrees(univ.SequenceOf):169 componentType = GeneralSubtree()170 subtypeSpec = constraint.ValueSizeConstraint(1, MAX)171 172 173class NameConstraints(univ.Sequence):174 componentType = namedtype.NamedTypes(175 namedtype.OptionalNamedType('permittedSubtrees',176 GeneralSubtrees().subtype(explicitTag=tag.Tag(177 tag.tagClassContext, tag.tagFormatSimple, 0))),178 namedtype.OptionalNamedType('excludedSubtrees',179 GeneralSubtrees().subtype(explicitTag=tag.Tag(180 tag.tagClassContext, tag.tagFormatSimple, 1)))181 )182 183 184class PathLenConstraint(univ.Integer):185 subtypeSpec = constraint.ValueRangeConstraint(0, MAX)186 187 188class CertificateTrustPoint(univ.Sequence):189 componentType = namedtype.NamedTypes(190 namedtype.NamedType('trustpoint', Certificate()),191 namedtype.OptionalNamedType('pathLenConstraint',192 PathLenConstraint().subtype(explicitTag=tag.Tag(193 tag.tagClassContext, tag.tagFormatSimple, 0))),194 namedtype.OptionalNamedType('acceptablePolicySet',195 AcceptablePolicySet().subtype(explicitTag=tag.Tag(196 tag.tagClassContext, tag.tagFormatSimple, 1))),197 namedtype.OptionalNamedType('nameConstraints',198 NameConstraints().subtype(explicitTag=tag.Tag(199 tag.tagClassContext, tag.tagFormatConstructed, 2))),200 namedtype.OptionalNamedType('policyConstraints',201 PolicyConstraints().subtype(explicitTag=tag.Tag(202 tag.tagClassContext, tag.tagFormatConstructed, 3)))203 )204 205 206class CertificateTrustTrees(univ.SequenceOf):207 componentType = CertificateTrustPoint()208 209 210class EnuRevReq(univ.Enumerated):211 namedValues = namedval.NamedValues(212 ('clrCheck', 0),213 ('ocspCheck', 1),214 ('bothCheck', 2),215 ('eitherCheck', 3),216 ('noCheck', 4),217 ('other', 5)218 )219 220 221class RevReq(univ.Sequence):222 componentType = namedtype.NamedTypes(223 namedtype.NamedType('enuRevReq', EnuRevReq()),224 namedtype.OptionalNamedType('exRevReq', SignPolExtensions())225 )226 227 228class CertRevReq(univ.Sequence):229 componentType = namedtype.NamedTypes(230 namedtype.NamedType('endCertRevReq', RevReq()),231 namedtype.NamedType('caCerts',232 RevReq().subtype(explicitTag=tag.Tag(233 tag.tagClassContext, tag.tagFormatConstructed, 0)))234 )235 236 237class AttributeTrustCondition(univ.Sequence):238 componentType = namedtype.NamedTypes(239 namedtype.NamedType('attributeMandated', univ.Boolean()),240 namedtype.NamedType('howCertAttribute', HowCertAttribute()),241 namedtype.OptionalNamedType('attrCertificateTrustTrees',242 CertificateTrustTrees().subtype(explicitTag=tag.Tag(243 tag.tagClassContext, tag.tagFormatSimple, 0))),244 namedtype.OptionalNamedType('attrRevReq',245 CertRevReq().subtype(explicitTag=tag.Tag(246 tag.tagClassContext, tag.tagFormatConstructed, 1))),247 namedtype.OptionalNamedType('attributeConstraints',248 AttributeConstraints().subtype(explicitTag=tag.Tag(249 tag.tagClassContext, tag.tagFormatConstructed, 2)))250 )251 252 253class CMSAttrs(univ.SequenceOf):254 componentType = univ.ObjectIdentifier()255 256 257class CertInfoReq(univ.Enumerated):258 namedValues = namedval.NamedValues(259 ('none', 0),260 ('signerOnly', 1),261 ('fullPath', 2)262 )263 264 265class CertRefReq(univ.Enumerated):266 namedValues = namedval.NamedValues(267 ('signerOnly', 1),268 ('fullPath', 2)269 )270 271 272class DeltaTime(univ.Sequence):273 componentType = namedtype.NamedTypes(274 namedtype.NamedType('deltaSeconds', univ.Integer()),275 namedtype.NamedType('deltaMinutes', univ.Integer()),276 namedtype.NamedType('deltaHours', univ.Integer()),277 namedtype.NamedType('deltaDays', univ.Integer())278 )279 280 281class TimestampTrustCondition(univ.Sequence):282 componentType = namedtype.NamedTypes(283 namedtype.OptionalNamedType('ttsCertificateTrustTrees',284 CertificateTrustTrees().subtype(explicitTag=tag.Tag(285 tag.tagClassContext, tag.tagFormatSimple, 0))),286 namedtype.OptionalNamedType('ttsRevReq',287 CertRevReq().subtype(explicitTag=tag.Tag(288 tag.tagClassContext, tag.tagFormatConstructed, 1))),289 namedtype.OptionalNamedType('ttsNameConstraints',290 NameConstraints().subtype(explicitTag=tag.Tag(291 tag.tagClassContext, tag.tagFormatConstructed, 2))),292 namedtype.OptionalNamedType('cautionPeriod',293 DeltaTime().subtype(explicitTag=tag.Tag(294 tag.tagClassContext, tag.tagFormatConstructed, 3))),295 namedtype.OptionalNamedType('signatureTimestampDelay',296 DeltaTime().subtype(explicitTag=tag.Tag(297 tag.tagClassContext, tag.tagFormatConstructed, 4)))298 )299 300 301class SignerRules(univ.Sequence):302 componentType = namedtype.NamedTypes(303 namedtype.OptionalNamedType('externalSignedData', univ.Boolean()),304 namedtype.NamedType('mandatedSignedAttr', CMSAttrs()),305 namedtype.NamedType('mandatedUnsignedAttr', CMSAttrs()),306 namedtype.DefaultedNamedType('mandatedCertificateRef',307 CertRefReq().subtype(explicitTag=tag.Tag(308 tag.tagClassContext, tag.tagFormatSimple, 0)).subtype(309 value='signerOnly')),310 namedtype.DefaultedNamedType('mandatedCertificateInfo',311 CertInfoReq().subtype(explicitTag=tag.Tag(312 tag.tagClassContext, tag.tagFormatSimple, 1)).subtype(313 value='none')),314 namedtype.OptionalNamedType('signPolExtensions',315 SignPolExtensions().subtype(explicitTag=tag.Tag(316 tag.tagClassContext, tag.tagFormatSimple, 2)))317 )318 319 320class MandatedUnsignedAttr(CMSAttrs):321 pass322 323 324class VerifierRules(univ.Sequence):325 componentType = namedtype.NamedTypes(326 namedtype.NamedType('mandatedUnsignedAttr', MandatedUnsignedAttr()),327 namedtype.OptionalNamedType('signPolExtensions', SignPolExtensions())328 )329 330 331class SignerAndVerifierRules(univ.Sequence):332 componentType = namedtype.NamedTypes(333 namedtype.NamedType('signerRules', SignerRules()),334 namedtype.NamedType('verifierRules', VerifierRules())335 )336 337 338class SigningCertTrustCondition(univ.Sequence):339 componentType = namedtype.NamedTypes(340 namedtype.NamedType('signerTrustTrees', CertificateTrustTrees()),341 namedtype.NamedType('signerRevReq', CertRevReq())342 )343 344 345class CommitmentTypeIdentifier(univ.ObjectIdentifier):346 pass347 348 349class FieldOfApplication(DirectoryString):350 pass351 352 353class CommitmentType(univ.Sequence):354 componentType = namedtype.NamedTypes(355 namedtype.NamedType('identifier', CommitmentTypeIdentifier()),356 namedtype.OptionalNamedType('fieldOfApplication',357 FieldOfApplication().subtype(explicitTag=tag.Tag(358 tag.tagClassContext, tag.tagFormatSimple, 0))),359 namedtype.OptionalNamedType('semantics',360 DirectoryString().subtype(explicitTag=tag.Tag(361 tag.tagClassContext, tag.tagFormatSimple, 1)))362 )363 364 365class SelectedCommitmentTypes(univ.SequenceOf):366 componentType = univ.Choice(componentType=namedtype.NamedTypes(367 namedtype.NamedType('empty', univ.Null()),368 namedtype.NamedType('recognizedCommitmentType', CommitmentType())369 ))370 371 372class CommitmentRule(univ.Sequence):373 componentType = namedtype.NamedTypes(374 namedtype.NamedType('selCommitmentTypes', SelectedCommitmentTypes()),375 namedtype.OptionalNamedType('signerAndVeriferRules',376 SignerAndVerifierRules().subtype(explicitTag=tag.Tag(377 tag.tagClassContext, tag.tagFormatConstructed, 0))),378 namedtype.OptionalNamedType('signingCertTrustCondition',379 SigningCertTrustCondition().subtype(explicitTag=tag.Tag(380 tag.tagClassContext, tag.tagFormatConstructed, 1))),381 namedtype.OptionalNamedType('timeStampTrustCondition',382 TimestampTrustCondition().subtype(explicitTag=tag.Tag(383 tag.tagClassContext, tag.tagFormatConstructed, 2))),384 namedtype.OptionalNamedType('attributeTrustCondition',385 AttributeTrustCondition().subtype(explicitTag=tag.Tag(386 tag.tagClassContext, tag.tagFormatConstructed, 3))),387 namedtype.OptionalNamedType('algorithmConstraintSet',388 AlgorithmConstraintSet().subtype(explicitTag=tag.Tag(389 tag.tagClassContext, tag.tagFormatConstructed, 4))),390 namedtype.OptionalNamedType('signPolExtensions',391 SignPolExtensions().subtype(explicitTag=tag.Tag(392 tag.tagClassContext, tag.tagFormatSimple, 5)))393 )394 395 396class CommitmentRules(univ.SequenceOf):397 componentType = CommitmentRule()398 399 400class CommonRules(univ.Sequence):401 componentType = namedtype.NamedTypes(402 namedtype.OptionalNamedType('signerAndVeriferRules',403 SignerAndVerifierRules().subtype(explicitTag=tag.Tag(404 tag.tagClassContext, tag.tagFormatConstructed, 0))),405 namedtype.OptionalNamedType('signingCertTrustCondition',406 SigningCertTrustCondition().subtype(explicitTag=tag.Tag(407 tag.tagClassContext, tag.tagFormatConstructed, 1))),408 namedtype.OptionalNamedType('timeStampTrustCondition',409 TimestampTrustCondition().subtype(explicitTag=tag.Tag(410 tag.tagClassContext, tag.tagFormatConstructed, 2))),411 namedtype.OptionalNamedType('attributeTrustCondition',412 AttributeTrustCondition().subtype(explicitTag=tag.Tag(413 tag.tagClassContext, tag.tagFormatConstructed, 3))),414 namedtype.OptionalNamedType('algorithmConstraintSet',415 AlgorithmConstraintSet().subtype(explicitTag=tag.Tag(416 tag.tagClassContext, tag.tagFormatConstructed, 4))),417 namedtype.OptionalNamedType('signPolExtensions',418 SignPolExtensions().subtype(explicitTag=tag.Tag(419 tag.tagClassContext, tag.tagFormatSimple, 5)))420 )421 422 423class PolicyIssuerName(GeneralNames):424 pass425 426 427class SignPolicyHash(univ.OctetString):428 pass429 430 431class SignPolicyId(univ.ObjectIdentifier):432 pass433 434 435class SigningPeriod(univ.Sequence):436 componentType = namedtype.NamedTypes(437 namedtype.NamedType('notBefore', useful.GeneralizedTime()),438 namedtype.OptionalNamedType('notAfter', useful.GeneralizedTime())439 )440 441 442class SignatureValidationPolicy(univ.Sequence):443 componentType = namedtype.NamedTypes(444 namedtype.NamedType('signingPeriod', SigningPeriod()),445 namedtype.NamedType('commonRules', CommonRules()),446 namedtype.NamedType('commitmentRules', CommitmentRules()),447 namedtype.OptionalNamedType('signPolExtensions', SignPolExtensions())448 )449 450 451class SignPolicyInfo(univ.Sequence):452 componentType = namedtype.NamedTypes(453 namedtype.NamedType('signPolicyIdentifier', SignPolicyId()),454 namedtype.NamedType('dateOfIssue', useful.GeneralizedTime()),455 namedtype.NamedType('policyIssuerName', PolicyIssuerName()),456 namedtype.NamedType('fieldOfApplication', FieldOfApplication()),457 namedtype.NamedType('signatureValidationPolicy', SignatureValidationPolicy()),458 namedtype.OptionalNamedType('signPolExtensions', SignPolExtensions())459 )460 461 462class SignaturePolicy(univ.Sequence):463 componentType = namedtype.NamedTypes(464 namedtype.NamedType('signPolicyHashAlg', AlgorithmIdentifier()),465 namedtype.NamedType('signPolicyInfo', SignPolicyInfo()),466 namedtype.OptionalNamedType('signPolicyHash', SignPolicyHash())467 )468 469 470 