codekingpro/portable-devtools
114k
1# This file is being contributed to pyasn1-modules software.2#3# Created by Russ Housley with assistance from asn1ate v.0.6.0.4#5# Copyright (c) 2019, Vigil Security, LLC6# License: http://snmplabs.com/pyasn1/license.html7#8# Trust Anchor Format9#10# ASN.1 source from:11# https://www.rfc-editor.org/rfc/rfc5934.txt12 13from pyasn1.type import univ, char, namedtype, namedval, tag, constraint, useful14 15from pyasn1_modules import rfc298516from pyasn1_modules import rfc528017from pyasn1_modules import rfc565218from pyasn1_modules import rfc591419 20MAX = float('inf')21 22 23def _OID(*components):24 output = []25 for x in tuple(components):26 if isinstance(x, univ.ObjectIdentifier):27 output.extend(list(x))28 else:29 output.append(int(x))30 return univ.ObjectIdentifier(output)31 32 33# Imports from RFC 298534 35SingleAttribute = rfc2985.SingleAttribute36 37 38# Imports from RFC591439 40CertPathControls = rfc5914.CertPathControls41 42TrustAnchorChoice = rfc5914.TrustAnchorChoice43 44TrustAnchorTitle = rfc5914.TrustAnchorTitle45 46 47# Imports from RFC 528048 49AlgorithmIdentifier = rfc5280.AlgorithmIdentifier50 51AnotherName = rfc5280.AnotherName52 53Attribute = rfc5280.Attribute54 55Certificate = rfc5280.Certificate56 57CertificateSerialNumber = rfc5280.CertificateSerialNumber58 59Extension = rfc5280.Extension60 61Extensions = rfc5280.Extensions62 63KeyIdentifier = rfc5280.KeyIdentifier64 65Name = rfc5280.Name66 67SubjectPublicKeyInfo = rfc5280.SubjectPublicKeyInfo68 69TBSCertificate = rfc5280.TBSCertificate70 71Validity = rfc5280.Validity72 73 74# Object Identifier Arc for TAMP Message Content Types75 76id_tamp = univ.ObjectIdentifier('2.16.840.1.101.2.1.2.77')77 78 79# TAMP Status Query Message80 81id_ct_TAMP_statusQuery = _OID(id_tamp, 1)82 83 84class TAMPVersion(univ.Integer):85 pass86 87TAMPVersion.namedValues = namedval.NamedValues(88 ('v1', 1),89 ('v2', 2)90)91 92 93class TerseOrVerbose(univ.Enumerated):94 pass95 96TerseOrVerbose.namedValues = namedval.NamedValues(97 ('terse', 1),98 ('verbose', 2)99)100 101 102class HardwareSerialEntry(univ.Choice):103 pass104 105HardwareSerialEntry.componentType = namedtype.NamedTypes(106 namedtype.NamedType('all', univ.Null()),107 namedtype.NamedType('single', univ.OctetString()),108 namedtype.NamedType('block', univ.Sequence(componentType=namedtype.NamedTypes(109 namedtype.NamedType('low', univ.OctetString()),110 namedtype.NamedType('high', univ.OctetString())111 ))112 )113)114 115 116class HardwareModules(univ.Sequence):117 pass118 119HardwareModules.componentType = namedtype.NamedTypes(120 namedtype.NamedType('hwType', univ.ObjectIdentifier()),121 namedtype.NamedType('hwSerialEntries', univ.SequenceOf(122 componentType=HardwareSerialEntry()).subtype(123 subtypeSpec=constraint.ValueSizeConstraint(1, MAX)))124)125 126 127class HardwareModuleIdentifierList(univ.SequenceOf):128 pass129 130HardwareModuleIdentifierList.componentType = HardwareModules()131HardwareModuleIdentifierList.subtypeSpec=constraint.ValueSizeConstraint(1, MAX)132 133 134class Community(univ.ObjectIdentifier):135 pass136 137 138class CommunityIdentifierList(univ.SequenceOf):139 pass140 141CommunityIdentifierList.componentType = Community()142CommunityIdentifierList.subtypeSpec=constraint.ValueSizeConstraint(0, MAX)143 144 145class TargetIdentifier(univ.Choice):146 pass147 148TargetIdentifier.componentType = namedtype.NamedTypes(149 namedtype.NamedType('hwModules', HardwareModuleIdentifierList().subtype(150 implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),151 namedtype.NamedType('communities', CommunityIdentifierList().subtype(152 implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))),153 namedtype.NamedType('allModules', univ.Null().subtype(154 implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3))),155 namedtype.NamedType('uri', char.IA5String().subtype(156 implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 4))),157 namedtype.NamedType('otherName', AnotherName().subtype(158 implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 5)))159)160 161 162class SeqNumber(univ.Integer):163 pass164 165SeqNumber.subtypeSpec = constraint.ValueRangeConstraint(0, 9223372036854775807)166 167 168class TAMPMsgRef(univ.Sequence):169 pass170 171TAMPMsgRef.componentType = namedtype.NamedTypes(172 namedtype.NamedType('target', TargetIdentifier()),173 namedtype.NamedType('seqNum', SeqNumber())174)175 176 177class TAMPStatusQuery(univ.Sequence):178 pass179 180TAMPStatusQuery.componentType = namedtype.NamedTypes(181 namedtype.DefaultedNamedType('version', TAMPVersion().subtype(182 implicitTag=tag.Tag(tag.tagClassContext,183 tag.tagFormatSimple, 0)).subtype(value='v2')),184 namedtype.DefaultedNamedType('terse', TerseOrVerbose().subtype(185 implicitTag=tag.Tag(tag.tagClassContext,186 tag.tagFormatSimple, 1)).subtype(value='verbose')),187 namedtype.NamedType('query', TAMPMsgRef())188)189 190 191tamp_status_query = rfc5652.ContentInfo()192tamp_status_query['contentType'] = id_ct_TAMP_statusQuery193tamp_status_query['content'] = TAMPStatusQuery()194 195 196# TAMP Status Response Message197 198id_ct_TAMP_statusResponse = _OID(id_tamp, 2)199 200 201class KeyIdentifiers(univ.SequenceOf):202 pass203 204KeyIdentifiers.componentType = KeyIdentifier()205KeyIdentifiers.subtypeSpec=constraint.ValueSizeConstraint(1, MAX)206 207 208class TrustAnchorChoiceList(univ.SequenceOf):209 pass210 211TrustAnchorChoiceList.componentType = TrustAnchorChoice()212TrustAnchorChoiceList.subtypeSpec=constraint.ValueSizeConstraint(1, MAX)213 214 215class TAMPSequenceNumber(univ.Sequence):216 pass217 218TAMPSequenceNumber.componentType = namedtype.NamedTypes(219 namedtype.NamedType('keyId', KeyIdentifier()),220 namedtype.NamedType('seqNumber', SeqNumber())221)222 223 224class TAMPSequenceNumbers(univ.SequenceOf):225 pass226 227TAMPSequenceNumbers.componentType = TAMPSequenceNumber()228TAMPSequenceNumbers.subtypeSpec=constraint.ValueSizeConstraint(1, MAX)229 230 231class TerseStatusResponse(univ.Sequence):232 pass233 234TerseStatusResponse.componentType = namedtype.NamedTypes(235 namedtype.NamedType('taKeyIds', KeyIdentifiers()),236 namedtype.OptionalNamedType('communities', CommunityIdentifierList())237)238 239 240class VerboseStatusResponse(univ.Sequence):241 pass242 243VerboseStatusResponse.componentType = namedtype.NamedTypes(244 namedtype.NamedType('taInfo', TrustAnchorChoiceList()),245 namedtype.OptionalNamedType('continPubKeyDecryptAlg',246 AlgorithmIdentifier().subtype(implicitTag=tag.Tag(247 tag.tagClassContext, tag.tagFormatSimple, 0))),248 namedtype.OptionalNamedType('communities',249 CommunityIdentifierList().subtype(implicitTag=tag.Tag(250 tag.tagClassContext, tag.tagFormatSimple, 1))),251 namedtype.OptionalNamedType('tampSeqNumbers',252 TAMPSequenceNumbers().subtype(implicitTag=tag.Tag(253 tag.tagClassContext, tag.tagFormatSimple, 2)))254)255 256 257class StatusResponse(univ.Choice):258 pass259 260StatusResponse.componentType = namedtype.NamedTypes(261 namedtype.NamedType('terseResponse', TerseStatusResponse().subtype(262 implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),263 namedtype.NamedType('verboseResponse', VerboseStatusResponse().subtype(264 implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1)))265)266 267 268class TAMPStatusResponse(univ.Sequence):269 pass270 271TAMPStatusResponse.componentType = namedtype.NamedTypes(272 namedtype.DefaultedNamedType('version', TAMPVersion().subtype(273 implicitTag=tag.Tag(tag.tagClassContext,274 tag.tagFormatSimple, 0)).subtype(value='v2')),275 namedtype.NamedType('query', TAMPMsgRef()),276 namedtype.NamedType('response', StatusResponse()),277 namedtype.DefaultedNamedType('usesApex', univ.Boolean().subtype(value=1))278)279 280 281tamp_status_response = rfc5652.ContentInfo()282tamp_status_response['contentType'] = id_ct_TAMP_statusResponse283tamp_status_response['content'] = TAMPStatusResponse()284 285 286# Trust Anchor Update Message287 288id_ct_TAMP_update = _OID(id_tamp, 3)289 290 291class TBSCertificateChangeInfo(univ.Sequence):292 pass293 294TBSCertificateChangeInfo.componentType = namedtype.NamedTypes(295 namedtype.OptionalNamedType('serialNumber', CertificateSerialNumber()),296 namedtype.OptionalNamedType('signature', AlgorithmIdentifier().subtype(297 implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),298 namedtype.OptionalNamedType('issuer', Name().subtype(implicitTag=tag.Tag(299 tag.tagClassContext, tag.tagFormatSimple, 1))),300 namedtype.OptionalNamedType('validity', Validity().subtype(301 implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))),302 namedtype.OptionalNamedType('subject', Name().subtype(implicitTag=tag.Tag(303 tag.tagClassContext, tag.tagFormatSimple, 3))),304 namedtype.NamedType('subjectPublicKeyInfo', SubjectPublicKeyInfo().subtype(305 implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 4))),306 namedtype.OptionalNamedType('exts', Extensions().subtype(explicitTag=tag.Tag(307 tag.tagClassContext, tag.tagFormatSimple, 5)))308)309 310 311class TrustAnchorChangeInfo(univ.Sequence):312 pass313 314TrustAnchorChangeInfo.componentType = namedtype.NamedTypes(315 namedtype.NamedType('pubKey', SubjectPublicKeyInfo()),316 namedtype.OptionalNamedType('keyId', KeyIdentifier()),317 namedtype.OptionalNamedType('taTitle', TrustAnchorTitle()),318 namedtype.OptionalNamedType('certPath', CertPathControls()),319 namedtype.OptionalNamedType('exts', Extensions().subtype(320 implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1)))321)322 323 324class TrustAnchorChangeInfoChoice(univ.Choice):325 pass326 327TrustAnchorChangeInfoChoice.componentType = namedtype.NamedTypes(328 namedtype.NamedType('tbsCertChange', TBSCertificateChangeInfo().subtype(329 implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),330 namedtype.NamedType('taChange', TrustAnchorChangeInfo().subtype(331 implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1)))332)333 334 335class TrustAnchorUpdate(univ.Choice):336 pass337 338TrustAnchorUpdate.componentType = namedtype.NamedTypes(339 namedtype.NamedType('add', TrustAnchorChoice().subtype(340 implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),341 namedtype.NamedType('remove', SubjectPublicKeyInfo().subtype(342 implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))),343 namedtype.NamedType('change', TrustAnchorChangeInfoChoice().subtype(344 explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3)))345)346 347 348class TAMPUpdate(univ.Sequence):349 pass350 351TAMPUpdate.componentType = namedtype.NamedTypes(352 namedtype.DefaultedNamedType('version',353 TAMPVersion().subtype(implicitTag=tag.Tag(tag.tagClassContext,354 tag.tagFormatSimple, 0)).subtype(value='v2')),355 namedtype.DefaultedNamedType('terse',356 TerseOrVerbose().subtype(implicitTag=tag.Tag(tag.tagClassContext,357 tag.tagFormatSimple, 1)).subtype(value='verbose')),358 namedtype.NamedType('msgRef', TAMPMsgRef()),359 namedtype.NamedType('updates',360 univ.SequenceOf(componentType=TrustAnchorUpdate()).subtype(361 subtypeSpec=constraint.ValueSizeConstraint(1, MAX))),362 namedtype.OptionalNamedType('tampSeqNumbers',363 TAMPSequenceNumbers().subtype(implicitTag=tag.Tag(364 tag.tagClassContext, tag.tagFormatSimple, 2)))365)366 367 368tamp_update = rfc5652.ContentInfo()369tamp_update['contentType'] = id_ct_TAMP_update370tamp_update['content'] = TAMPUpdate()371 372 373# Trust Anchor Update Confirm Message374 375id_ct_TAMP_updateConfirm = _OID(id_tamp, 4)376 377 378class StatusCode(univ.Enumerated):379 pass380 381StatusCode.namedValues = namedval.NamedValues(382 ('success', 0),383 ('decodeFailure', 1),384 ('badContentInfo', 2),385 ('badSignedData', 3),386 ('badEncapContent', 4),387 ('badCertificate', 5),388 ('badSignerInfo', 6),389 ('badSignedAttrs', 7),390 ('badUnsignedAttrs', 8),391 ('missingContent', 9),392 ('noTrustAnchor', 10),393 ('notAuthorized', 11),394 ('badDigestAlgorithm', 12),395 ('badSignatureAlgorithm', 13),396 ('unsupportedKeySize', 14),397 ('unsupportedParameters', 15),398 ('signatureFailure', 16),399 ('insufficientMemory', 17),400 ('unsupportedTAMPMsgType', 18),401 ('apexTAMPAnchor', 19),402 ('improperTAAddition', 20),403 ('seqNumFailure', 21),404 ('contingencyPublicKeyDecrypt', 22),405 ('incorrectTarget', 23),406 ('communityUpdateFailed', 24),407 ('trustAnchorNotFound', 25),408 ('unsupportedTAAlgorithm', 26),409 ('unsupportedTAKeySize', 27),410 ('unsupportedContinPubKeyDecryptAlg', 28),411 ('missingSignature', 29),412 ('resourcesBusy', 30),413 ('versionNumberMismatch', 31),414 ('missingPolicySet', 32),415 ('revokedCertificate', 33),416 ('unsupportedTrustAnchorFormat', 34),417 ('improperTAChange', 35),418 ('malformed', 36),419 ('cmsError', 37),420 ('unsupportedTargetIdentifier', 38),421 ('other', 127)422)423 424 425class StatusCodeList(univ.SequenceOf):426 pass427 428StatusCodeList.componentType = StatusCode()429StatusCodeList.subtypeSpec=constraint.ValueSizeConstraint(1, MAX)430 431 432class TerseUpdateConfirm(StatusCodeList):433 pass434 435 436class VerboseUpdateConfirm(univ.Sequence):437 pass438 439VerboseUpdateConfirm.componentType = namedtype.NamedTypes(440 namedtype.NamedType('status', StatusCodeList()),441 namedtype.NamedType('taInfo', TrustAnchorChoiceList()),442 namedtype.OptionalNamedType('tampSeqNumbers', TAMPSequenceNumbers()),443 namedtype.DefaultedNamedType('usesApex', univ.Boolean().subtype(value=1))444)445 446 447class UpdateConfirm(univ.Choice):448 pass449 450UpdateConfirm.componentType = namedtype.NamedTypes(451 namedtype.NamedType('terseConfirm', TerseUpdateConfirm().subtype(452 implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),453 namedtype.NamedType('verboseConfirm', VerboseUpdateConfirm().subtype(454 implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1)))455)456 457 458class TAMPUpdateConfirm(univ.Sequence):459 pass460 461TAMPUpdateConfirm.componentType = namedtype.NamedTypes(462 namedtype.DefaultedNamedType('version', TAMPVersion().subtype(463 implicitTag=tag.Tag(tag.tagClassContext,464 tag.tagFormatSimple, 0)).subtype(value='v2')),465 namedtype.NamedType('update', TAMPMsgRef()),466 namedtype.NamedType('confirm', UpdateConfirm())467)468 469 470tamp_update_confirm = rfc5652.ContentInfo()471tamp_update_confirm['contentType'] = id_ct_TAMP_updateConfirm472tamp_update_confirm['content'] = TAMPUpdateConfirm()473 474 475# Apex Trust Anchor Update Message476 477id_ct_TAMP_apexUpdate = _OID(id_tamp, 5)478 479 480class TAMPApexUpdate(univ.Sequence):481 pass482 483TAMPApexUpdate.componentType = namedtype.NamedTypes(484 namedtype.DefaultedNamedType('version',485 TAMPVersion().subtype(implicitTag=tag.Tag(tag.tagClassContext,486 tag.tagFormatSimple, 0)).subtype(value='v2')),487 namedtype.DefaultedNamedType('terse',488 TerseOrVerbose().subtype(implicitTag=tag.Tag(tag.tagClassContext,489 tag.tagFormatSimple, 1)).subtype(value='verbose')),490 namedtype.NamedType('msgRef', TAMPMsgRef()),491 namedtype.NamedType('clearTrustAnchors', univ.Boolean()),492 namedtype.NamedType('clearCommunities', univ.Boolean()),493 namedtype.OptionalNamedType('seqNumber', SeqNumber()),494 namedtype.NamedType('apexTA', TrustAnchorChoice())495)496 497 498tamp_apex_update = rfc5652.ContentInfo()499tamp_apex_update['contentType'] = id_ct_TAMP_apexUpdate500tamp_apex_update['content'] = TAMPApexUpdate()501 502 503# Apex Trust Anchor Update Confirm Message504 505id_ct_TAMP_apexUpdateConfirm = _OID(id_tamp, 6)506 507 508class TerseApexUpdateConfirm(StatusCode):509 pass510 511 512class VerboseApexUpdateConfirm(univ.Sequence):513 pass514 515VerboseApexUpdateConfirm.componentType = namedtype.NamedTypes(516 namedtype.NamedType('status', StatusCode()),517 namedtype.NamedType('taInfo', TrustAnchorChoiceList()),518 namedtype.OptionalNamedType('communities',519 CommunityIdentifierList().subtype(implicitTag=tag.Tag(tag.tagClassContext,520 tag.tagFormatSimple, 0))),521 namedtype.OptionalNamedType('tampSeqNumbers',522 TAMPSequenceNumbers().subtype(implicitTag=tag.Tag(tag.tagClassContext,523 tag.tagFormatSimple, 1)))524)525 526 527class ApexUpdateConfirm(univ.Choice):528 pass529 530ApexUpdateConfirm.componentType = namedtype.NamedTypes(531 namedtype.NamedType('terseApexConfirm',532 TerseApexUpdateConfirm().subtype(implicitTag=tag.Tag(tag.tagClassContext,533 tag.tagFormatSimple, 0))),534 namedtype.NamedType('verboseApexConfirm',535 VerboseApexUpdateConfirm().subtype(implicitTag=tag.Tag(tag.tagClassContext,536 tag.tagFormatConstructed, 1)))537)538 539 540class TAMPApexUpdateConfirm(univ.Sequence):541 pass542 543TAMPApexUpdateConfirm.componentType = namedtype.NamedTypes(544 namedtype.DefaultedNamedType('version',545 TAMPVersion().subtype(implicitTag=tag.Tag(tag.tagClassContext,546 tag.tagFormatSimple, 0)).subtype(value='v2')),547 namedtype.NamedType('apexReplace', TAMPMsgRef()),548 namedtype.NamedType('apexConfirm', ApexUpdateConfirm())549)550 551 552tamp_apex_update_confirm = rfc5652.ContentInfo()553tamp_apex_update_confirm['contentType'] = id_ct_TAMP_apexUpdateConfirm554tamp_apex_update_confirm['content'] = TAMPApexUpdateConfirm()555 556 557# Community Update Message558 559id_ct_TAMP_communityUpdate = _OID(id_tamp, 7)560 561 562class CommunityUpdates(univ.Sequence):563 pass564 565CommunityUpdates.componentType = namedtype.NamedTypes(566 namedtype.OptionalNamedType('remove',567 CommunityIdentifierList().subtype(implicitTag=tag.Tag(tag.tagClassContext,568 tag.tagFormatSimple, 1))),569 namedtype.OptionalNamedType('add',570 CommunityIdentifierList().subtype(implicitTag=tag.Tag(tag.tagClassContext,571 tag.tagFormatSimple, 2)))572)573 574 575class TAMPCommunityUpdate(univ.Sequence):576 pass577 578TAMPCommunityUpdate.componentType = namedtype.NamedTypes(579 namedtype.DefaultedNamedType('version',580 TAMPVersion().subtype(implicitTag=tag.Tag(tag.tagClassContext,581 tag.tagFormatSimple, 0)).subtype(value='v2')),582 namedtype.DefaultedNamedType('terse',583 TerseOrVerbose().subtype(implicitTag=tag.Tag(tag.tagClassContext,584 tag.tagFormatSimple, 1)).subtype(value='verbose')),585 namedtype.NamedType('msgRef', TAMPMsgRef()),586 namedtype.NamedType('updates', CommunityUpdates())587)588 589 590tamp_community_update = rfc5652.ContentInfo()591tamp_community_update['contentType'] = id_ct_TAMP_communityUpdate592tamp_community_update['content'] = TAMPCommunityUpdate()593 594 595# Community Update Confirm Message596 597id_ct_TAMP_communityUpdateConfirm = _OID(id_tamp, 8)598 599 600class TerseCommunityConfirm(StatusCode):601 pass602 603 604class VerboseCommunityConfirm(univ.Sequence):605 pass606 607VerboseCommunityConfirm.componentType = namedtype.NamedTypes(608 namedtype.NamedType('status', StatusCode()),609 namedtype.OptionalNamedType('communities', CommunityIdentifierList())610)611 612 613class CommunityConfirm(univ.Choice):614 pass615 616CommunityConfirm.componentType = namedtype.NamedTypes(617 namedtype.NamedType('terseCommConfirm',618 TerseCommunityConfirm().subtype(implicitTag=tag.Tag(tag.tagClassContext,619 tag.tagFormatSimple, 0))),620 namedtype.NamedType('verboseCommConfirm',621 VerboseCommunityConfirm().subtype(implicitTag=tag.Tag(tag.tagClassContext,622 tag.tagFormatConstructed, 1)))623)624 625 626class TAMPCommunityUpdateConfirm(univ.Sequence):627 pass628 629TAMPCommunityUpdateConfirm.componentType = namedtype.NamedTypes(630 namedtype.DefaultedNamedType('version',631 TAMPVersion().subtype(implicitTag=tag.Tag(tag.tagClassContext,632 tag.tagFormatSimple, 0)).subtype(value='v2')),633 namedtype.NamedType('update', TAMPMsgRef()),634 namedtype.NamedType('commConfirm', CommunityConfirm())635)636 637 638tamp_community_update_confirm = rfc5652.ContentInfo()639tamp_community_update_confirm['contentType'] = id_ct_TAMP_communityUpdateConfirm640tamp_community_update_confirm['content'] = TAMPCommunityUpdateConfirm()641 642 643# Sequence Number Adjust Message644 645id_ct_TAMP_seqNumAdjust = _OID(id_tamp, 10)646 647 648 649class SequenceNumberAdjust(univ.Sequence):650 pass651 652SequenceNumberAdjust.componentType = namedtype.NamedTypes(653 namedtype.DefaultedNamedType('version',654 TAMPVersion().subtype(implicitTag=tag.Tag(tag.tagClassContext,655 tag.tagFormatSimple, 0)).subtype(value='v2')),656 namedtype.NamedType('msgRef', TAMPMsgRef())657)658 659 660tamp_sequence_number_adjust = rfc5652.ContentInfo()661tamp_sequence_number_adjust['contentType'] = id_ct_TAMP_seqNumAdjust662tamp_sequence_number_adjust['content'] = SequenceNumberAdjust()663 664 665# Sequence Number Adjust Confirm Message666 667id_ct_TAMP_seqNumAdjustConfirm = _OID(id_tamp, 11)668 669 670class SequenceNumberAdjustConfirm(univ.Sequence):671 pass672 673SequenceNumberAdjustConfirm.componentType = namedtype.NamedTypes(674 namedtype.DefaultedNamedType('version',675 TAMPVersion().subtype(implicitTag=tag.Tag(tag.tagClassContext,676 tag.tagFormatSimple, 0)).subtype(value='v2')),677 namedtype.NamedType('adjust', TAMPMsgRef()),678 namedtype.NamedType('status', StatusCode())679)680 681 682tamp_sequence_number_adjust_confirm = rfc5652.ContentInfo()683tamp_sequence_number_adjust_confirm['contentType'] = id_ct_TAMP_seqNumAdjustConfirm684tamp_sequence_number_adjust_confirm['content'] = SequenceNumberAdjustConfirm()685 686 687# TAMP Error Message688 689id_ct_TAMP_error = _OID(id_tamp, 9)690 691 692class TAMPError(univ.Sequence):693 pass694 695TAMPError.componentType = namedtype.NamedTypes(696 namedtype.DefaultedNamedType('version',697 TAMPVersion().subtype(implicitTag=tag.Tag(tag.tagClassContext,698 tag.tagFormatSimple, 0)).subtype(value='v2')),699 namedtype.NamedType('msgType', univ.ObjectIdentifier()),700 namedtype.NamedType('status', StatusCode()),701 namedtype.OptionalNamedType('msgRef', TAMPMsgRef())702)703 704 705tamp_error = rfc5652.ContentInfo()706tamp_error['contentType'] = id_ct_TAMP_error707tamp_error['content'] = TAMPError()708 709 710# Object Identifier Arc for Attributes711 712id_attributes = univ.ObjectIdentifier('2.16.840.1.101.2.1.5')713 714 715# contingency-public-key-decrypt-key unsigned attribute716 717id_aa_TAMP_contingencyPublicKeyDecryptKey = _OID(id_attributes, 63)718 719 720class PlaintextSymmetricKey(univ.OctetString):721 pass722 723 724contingency_public_key_decrypt_key = Attribute()725contingency_public_key_decrypt_key['type'] = id_aa_TAMP_contingencyPublicKeyDecryptKey726contingency_public_key_decrypt_key['values'][0] = PlaintextSymmetricKey()727 728 729# id-pe-wrappedApexContinKey extension730 731id_pe_wrappedApexContinKey =univ.ObjectIdentifier('1.3.6.1.5.5.7.1.20')732 733 734class ApexContingencyKey(univ.Sequence):735 pass736 737ApexContingencyKey.componentType = namedtype.NamedTypes(738 namedtype.NamedType('wrapAlgorithm', AlgorithmIdentifier()),739 namedtype.NamedType('wrappedContinPubKey', univ.OctetString())740)741 742 743wrappedApexContinKey = Extension()744wrappedApexContinKey['extnID'] = id_pe_wrappedApexContinKey745wrappedApexContinKey['critical'] = 0746wrappedApexContinKey['extnValue'] = univ.OctetString()747 748 749# Add to the map of CMS Content Type OIDs to Content Types in750# rfc5652.py751 752_cmsContentTypesMapUpdate = {753 id_ct_TAMP_statusQuery: TAMPStatusQuery(),754 id_ct_TAMP_statusResponse: TAMPStatusResponse(),755 id_ct_TAMP_update: TAMPUpdate(),756 id_ct_TAMP_updateConfirm: TAMPUpdateConfirm(),757 id_ct_TAMP_apexUpdate: TAMPApexUpdate(),758 id_ct_TAMP_apexUpdateConfirm: TAMPApexUpdateConfirm(),759 id_ct_TAMP_communityUpdate: TAMPCommunityUpdate(),760 id_ct_TAMP_communityUpdateConfirm: TAMPCommunityUpdateConfirm(),761 id_ct_TAMP_seqNumAdjust: SequenceNumberAdjust(),762 id_ct_TAMP_seqNumAdjustConfirm: SequenceNumberAdjustConfirm(),763 id_ct_TAMP_error: TAMPError(),764}765 766rfc5652.cmsContentTypesMap.update(_cmsContentTypesMapUpdate)767 768 769# Add to the map of CMS Attribute OIDs to Attribute Values in770# rfc5652.py771 772_cmsAttributesMapUpdate = {773 id_aa_TAMP_contingencyPublicKeyDecryptKey: PlaintextSymmetricKey(),774}775 776rfc5652.cmsAttributesMap.update(_cmsAttributesMapUpdate)777 778 779# Add to the map of Certificate Extension OIDs to Extensions in780# rfc5280.py781 782_certificateExtensionsMap = {783 id_pe_wrappedApexContinKey: ApexContingencyKey(),784}785 786rfc5280.certificateExtensionsMap.update(_certificateExtensionsMap)787 