| # This file is being contributed to pyasn1-modules software. |
| # |
| # Created by Russ Housley with assistance from asn1ate v.0.6.0. |
| # |
| # Copyright (c) 2019, Vigil Security, LLC |
| # License: http://snmplabs.com/pyasn1/license.html |
| # |
| # Trust Anchor Format |
| # |
| # ASN.1 source from: |
| # https://www.rfc-editor.org/rfc/rfc5934.txt |
| |
| from pyasn1.type import univ, char, namedtype, namedval, tag, constraint, useful |
| |
| from pyasn1_modules import rfc2985 |
| from pyasn1_modules import rfc5280 |
| from pyasn1_modules import rfc5652 |
| from pyasn1_modules import rfc5914 |
| |
| MAX = float('inf') |
| |
| |
| def _OID(*components): |
| output = [] |
| for x in tuple(components): |
| if isinstance(x, univ.ObjectIdentifier): |
| output.extend(list(x)) |
| else: |
| output.append(int(x)) |
| return univ.ObjectIdentifier(output) |
| |
| |
| # Imports from RFC 2985 |
| |
| SingleAttribute = rfc2985.SingleAttribute |
| |
| |
| # Imports from RFC5914 |
| |
| CertPathControls = rfc5914.CertPathControls |
| |
| TrustAnchorChoice = rfc5914.TrustAnchorChoice |
| |
| TrustAnchorTitle = rfc5914.TrustAnchorTitle |
| |
| |
| # Imports from RFC 5280 |
| |
| AlgorithmIdentifier = rfc5280.AlgorithmIdentifier |
| |
| AnotherName = rfc5280.AnotherName |
| |
| Attribute = rfc5280.Attribute |
| |
| Certificate = rfc5280.Certificate |
| |
| CertificateSerialNumber = rfc5280.CertificateSerialNumber |
| |
| Extension = rfc5280.Extension |
| |
| Extensions = rfc5280.Extensions |
| |
| KeyIdentifier = rfc5280.KeyIdentifier |
| |
| Name = rfc5280.Name |
| |
| SubjectPublicKeyInfo = rfc5280.SubjectPublicKeyInfo |
| |
| TBSCertificate = rfc5280.TBSCertificate |
| |
| Validity = rfc5280.Validity |
| |
| |
| # Object Identifier Arc for TAMP Message Content Types |
| |
| id_tamp = univ.ObjectIdentifier('2.16.840.1.101.2.1.2.77') |
| |
| |
| # TAMP Status Query Message |
| |
| id_ct_TAMP_statusQuery = _OID(id_tamp, 1) |
| |
| |
| class TAMPVersion(univ.Integer): |
| pass |
| |
| TAMPVersion.namedValues = namedval.NamedValues( |
| ('v1', 1), |
| ('v2', 2) |
| ) |
| |
| |
| class TerseOrVerbose(univ.Enumerated): |
| pass |
| |
| TerseOrVerbose.namedValues = namedval.NamedValues( |
| ('terse', 1), |
| ('verbose', 2) |
| ) |
| |
| |
| class HardwareSerialEntry(univ.Choice): |
| pass |
| |
| HardwareSerialEntry.componentType = namedtype.NamedTypes( |
| namedtype.NamedType('all', univ.Null()), |
| namedtype.NamedType('single', univ.OctetString()), |
| namedtype.NamedType('block', univ.Sequence(componentType=namedtype.NamedTypes( |
| namedtype.NamedType('low', univ.OctetString()), |
| namedtype.NamedType('high', univ.OctetString()) |
| )) |
| ) |
| ) |
| |
| |
| class HardwareModules(univ.Sequence): |
| pass |
| |
| HardwareModules.componentType = namedtype.NamedTypes( |
| namedtype.NamedType('hwType', univ.ObjectIdentifier()), |
| namedtype.NamedType('hwSerialEntries', univ.SequenceOf( |
| componentType=HardwareSerialEntry()).subtype( |
| subtypeSpec=constraint.ValueSizeConstraint(1, MAX))) |
| ) |
| |
| |
| class HardwareModuleIdentifierList(univ.SequenceOf): |
| pass |
| |
| HardwareModuleIdentifierList.componentType = HardwareModules() |
| HardwareModuleIdentifierList.subtypeSpec=constraint.ValueSizeConstraint(1, MAX) |
| |
| |
| class Community(univ.ObjectIdentifier): |
| pass |
| |
| |
| class CommunityIdentifierList(univ.SequenceOf): |
| pass |
| |
| CommunityIdentifierList.componentType = Community() |
| CommunityIdentifierList.subtypeSpec=constraint.ValueSizeConstraint(0, MAX) |
| |
| |
| class TargetIdentifier(univ.Choice): |
| pass |
| |
| TargetIdentifier.componentType = namedtype.NamedTypes( |
| namedtype.NamedType('hwModules', HardwareModuleIdentifierList().subtype( |
| implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))), |
| namedtype.NamedType('communities', CommunityIdentifierList().subtype( |
| implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))), |
| namedtype.NamedType('allModules', univ.Null().subtype( |
| implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3))), |
| namedtype.NamedType('uri', char.IA5String().subtype( |
| implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 4))), |
| namedtype.NamedType('otherName', AnotherName().subtype( |
| implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 5))) |
| ) |
| |
| |
| class SeqNumber(univ.Integer): |
| pass |
| |
| SeqNumber.subtypeSpec = constraint.ValueRangeConstraint(0, 9223372036854775807) |
| |
| |
| class TAMPMsgRef(univ.Sequence): |
| pass |
| |
| TAMPMsgRef.componentType = namedtype.NamedTypes( |
| namedtype.NamedType('target', TargetIdentifier()), |
| namedtype.NamedType('seqNum', SeqNumber()) |
| ) |
| |
| |
| class TAMPStatusQuery(univ.Sequence): |
| pass |
| |
| TAMPStatusQuery.componentType = namedtype.NamedTypes( |
| namedtype.DefaultedNamedType('version', TAMPVersion().subtype( |
| implicitTag=tag.Tag(tag.tagClassContext, |
| tag.tagFormatSimple, 0)).subtype(value='v2')), |
| namedtype.DefaultedNamedType('terse', TerseOrVerbose().subtype( |
| implicitTag=tag.Tag(tag.tagClassContext, |
| tag.tagFormatSimple, 1)).subtype(value='verbose')), |
| namedtype.NamedType('query', TAMPMsgRef()) |
| ) |
| |
| |
| tamp_status_query = rfc5652.ContentInfo() |
| tamp_status_query['contentType'] = id_ct_TAMP_statusQuery |
| tamp_status_query['content'] = TAMPStatusQuery() |
| |
| |
| # TAMP Status Response Message |
| |
| id_ct_TAMP_statusResponse = _OID(id_tamp, 2) |
| |
| |
| class KeyIdentifiers(univ.SequenceOf): |
| pass |
| |
| KeyIdentifiers.componentType = KeyIdentifier() |
| KeyIdentifiers.subtypeSpec=constraint.ValueSizeConstraint(1, MAX) |
| |
| |
| class TrustAnchorChoiceList(univ.SequenceOf): |
| pass |
| |
| TrustAnchorChoiceList.componentType = TrustAnchorChoice() |
| TrustAnchorChoiceList.subtypeSpec=constraint.ValueSizeConstraint(1, MAX) |
| |
| |
| class TAMPSequenceNumber(univ.Sequence): |
| pass |
| |
| TAMPSequenceNumber.componentType = namedtype.NamedTypes( |
| namedtype.NamedType('keyId', KeyIdentifier()), |
| namedtype.NamedType('seqNumber', SeqNumber()) |
| ) |
| |
| |
| class TAMPSequenceNumbers(univ.SequenceOf): |
| pass |
| |
| TAMPSequenceNumbers.componentType = TAMPSequenceNumber() |
| TAMPSequenceNumbers.subtypeSpec=constraint.ValueSizeConstraint(1, MAX) |
| |
| |
| class TerseStatusResponse(univ.Sequence): |
| pass |
| |
| TerseStatusResponse.componentType = namedtype.NamedTypes( |
| namedtype.NamedType('taKeyIds', KeyIdentifiers()), |
| namedtype.OptionalNamedType('communities', CommunityIdentifierList()) |
| ) |
| |
| |
| class VerboseStatusResponse(univ.Sequence): |
| pass |
| |
| VerboseStatusResponse.componentType = namedtype.NamedTypes( |
| namedtype.NamedType('taInfo', TrustAnchorChoiceList()), |
| namedtype.OptionalNamedType('continPubKeyDecryptAlg', |
| AlgorithmIdentifier().subtype(implicitTag=tag.Tag( |
| tag.tagClassContext, tag.tagFormatSimple, 0))), |
| namedtype.OptionalNamedType('communities', |
| CommunityIdentifierList().subtype(implicitTag=tag.Tag( |
| tag.tagClassContext, tag.tagFormatSimple, 1))), |
| namedtype.OptionalNamedType('tampSeqNumbers', |
| TAMPSequenceNumbers().subtype(implicitTag=tag.Tag( |
| tag.tagClassContext, tag.tagFormatSimple, 2))) |
| ) |
| |
| |
| class StatusResponse(univ.Choice): |
| pass |
| |
| StatusResponse.componentType = namedtype.NamedTypes( |
| namedtype.NamedType('terseResponse', TerseStatusResponse().subtype( |
| implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))), |
| namedtype.NamedType('verboseResponse', VerboseStatusResponse().subtype( |
| implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1))) |
| ) |
| |
| |
| class TAMPStatusResponse(univ.Sequence): |
| pass |
| |
| TAMPStatusResponse.componentType = namedtype.NamedTypes( |
| namedtype.DefaultedNamedType('version', TAMPVersion().subtype( |
| implicitTag=tag.Tag(tag.tagClassContext, |
| tag.tagFormatSimple, 0)).subtype(value='v2')), |
| namedtype.NamedType('query', TAMPMsgRef()), |
| namedtype.NamedType('response', StatusResponse()), |
| namedtype.DefaultedNamedType('usesApex', univ.Boolean().subtype(value=1)) |
| ) |
| |
| |
| tamp_status_response = rfc5652.ContentInfo() |
| tamp_status_response['contentType'] = id_ct_TAMP_statusResponse |
| tamp_status_response['content'] = TAMPStatusResponse() |
| |
| |
| # Trust Anchor Update Message |
| |
| id_ct_TAMP_update = _OID(id_tamp, 3) |
| |
| |
| class TBSCertificateChangeInfo(univ.Sequence): |
| pass |
| |
| TBSCertificateChangeInfo.componentType = namedtype.NamedTypes( |
| namedtype.OptionalNamedType('serialNumber', CertificateSerialNumber()), |
| namedtype.OptionalNamedType('signature', AlgorithmIdentifier().subtype( |
| implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))), |
| namedtype.OptionalNamedType('issuer', Name().subtype(implicitTag=tag.Tag( |
| tag.tagClassContext, tag.tagFormatSimple, 1))), |
| namedtype.OptionalNamedType('validity', Validity().subtype( |
| implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))), |
| namedtype.OptionalNamedType('subject', Name().subtype(implicitTag=tag.Tag( |
| tag.tagClassContext, tag.tagFormatSimple, 3))), |
| namedtype.NamedType('subjectPublicKeyInfo', SubjectPublicKeyInfo().subtype( |
| implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 4))), |
| namedtype.OptionalNamedType('exts', Extensions().subtype(explicitTag=tag.Tag( |
| tag.tagClassContext, tag.tagFormatSimple, 5))) |
| ) |
| |
| |
| class TrustAnchorChangeInfo(univ.Sequence): |
| pass |
| |
| TrustAnchorChangeInfo.componentType = namedtype.NamedTypes( |
| namedtype.NamedType('pubKey', SubjectPublicKeyInfo()), |
| namedtype.OptionalNamedType('keyId', KeyIdentifier()), |
| namedtype.OptionalNamedType('taTitle', TrustAnchorTitle()), |
| namedtype.OptionalNamedType('certPath', CertPathControls()), |
| namedtype.OptionalNamedType('exts', Extensions().subtype( |
| implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))) |
| ) |
| |
| |
| class TrustAnchorChangeInfoChoice(univ.Choice): |
| pass |
| |
| TrustAnchorChangeInfoChoice.componentType = namedtype.NamedTypes( |
| namedtype.NamedType('tbsCertChange', TBSCertificateChangeInfo().subtype( |
| implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))), |
| namedtype.NamedType('taChange', TrustAnchorChangeInfo().subtype( |
| implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1))) |
| ) |
| |
| |
| class TrustAnchorUpdate(univ.Choice): |
| pass |
| |
| TrustAnchorUpdate.componentType = namedtype.NamedTypes( |
| namedtype.NamedType('add', TrustAnchorChoice().subtype( |
| implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))), |
| namedtype.NamedType('remove', SubjectPublicKeyInfo().subtype( |
| implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))), |
| namedtype.NamedType('change', TrustAnchorChangeInfoChoice().subtype( |
| explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3))) |
| ) |
| |
| |
| class TAMPUpdate(univ.Sequence): |
| pass |
| |
| TAMPUpdate.componentType = namedtype.NamedTypes( |
| namedtype.DefaultedNamedType('version', |
| TAMPVersion().subtype(implicitTag=tag.Tag(tag.tagClassContext, |
| tag.tagFormatSimple, 0)).subtype(value='v2')), |
| namedtype.DefaultedNamedType('terse', |
| TerseOrVerbose().subtype(implicitTag=tag.Tag(tag.tagClassContext, |
| tag.tagFormatSimple, 1)).subtype(value='verbose')), |
| namedtype.NamedType('msgRef', TAMPMsgRef()), |
| namedtype.NamedType('updates', |
| univ.SequenceOf(componentType=TrustAnchorUpdate()).subtype( |
| subtypeSpec=constraint.ValueSizeConstraint(1, MAX))), |
| namedtype.OptionalNamedType('tampSeqNumbers', |
| TAMPSequenceNumbers().subtype(implicitTag=tag.Tag( |
| tag.tagClassContext, tag.tagFormatSimple, 2))) |
| ) |
| |
| |
| tamp_update = rfc5652.ContentInfo() |
| tamp_update['contentType'] = id_ct_TAMP_update |
| tamp_update['content'] = TAMPUpdate() |
| |
| |
| # Trust Anchor Update Confirm Message |
| |
| id_ct_TAMP_updateConfirm = _OID(id_tamp, 4) |
| |
| |
| class StatusCode(univ.Enumerated): |
| pass |
| |
| StatusCode.namedValues = namedval.NamedValues( |
| ('success', 0), |
| ('decodeFailure', 1), |
| ('badContentInfo', 2), |
| ('badSignedData', 3), |
| ('badEncapContent', 4), |
| ('badCertificate', 5), |
| ('badSignerInfo', 6), |
| ('badSignedAttrs', 7), |
| ('badUnsignedAttrs', 8), |
| ('missingContent', 9), |
| ('noTrustAnchor', 10), |
| ('notAuthorized', 11), |
| ('badDigestAlgorithm', 12), |
| ('badSignatureAlgorithm', 13), |
| ('unsupportedKeySize', 14), |
| ('unsupportedParameters', 15), |
| ('signatureFailure', 16), |
| ('insufficientMemory', 17), |
| ('unsupportedTAMPMsgType', 18), |
| ('apexTAMPAnchor', 19), |
| ('improperTAAddition', 20), |
| ('seqNumFailure', 21), |
| ('contingencyPublicKeyDecrypt', 22), |
| ('incorrectTarget', 23), |
| ('communityUpdateFailed', 24), |
| ('trustAnchorNotFound', 25), |
| ('unsupportedTAAlgorithm', 26), |
| ('unsupportedTAKeySize', 27), |
| ('unsupportedContinPubKeyDecryptAlg', 28), |
| ('missingSignature', 29), |
| ('resourcesBusy', 30), |
| ('versionNumberMismatch', 31), |
| ('missingPolicySet', 32), |
| ('revokedCertificate', 33), |
| ('unsupportedTrustAnchorFormat', 34), |
| ('improperTAChange', 35), |
| ('malformed', 36), |
| ('cmsError', 37), |
| ('unsupportedTargetIdentifier', 38), |
| ('other', 127) |
| ) |
| |
| |
| class StatusCodeList(univ.SequenceOf): |
| pass |
| |
| StatusCodeList.componentType = StatusCode() |
| StatusCodeList.subtypeSpec=constraint.ValueSizeConstraint(1, MAX) |
| |
| |
| class TerseUpdateConfirm(StatusCodeList): |
| pass |
| |
| |
| class VerboseUpdateConfirm(univ.Sequence): |
| pass |
| |
| VerboseUpdateConfirm.componentType = namedtype.NamedTypes( |
| namedtype.NamedType('status', StatusCodeList()), |
| namedtype.NamedType('taInfo', TrustAnchorChoiceList()), |
| namedtype.OptionalNamedType('tampSeqNumbers', TAMPSequenceNumbers()), |
| namedtype.DefaultedNamedType('usesApex', univ.Boolean().subtype(value=1)) |
| ) |
| |
| |
| class UpdateConfirm(univ.Choice): |
| pass |
| |
| UpdateConfirm.componentType = namedtype.NamedTypes( |
| namedtype.NamedType('terseConfirm', TerseUpdateConfirm().subtype( |
| implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))), |
| namedtype.NamedType('verboseConfirm', VerboseUpdateConfirm().subtype( |
| implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1))) |
| ) |
| |
| |
| class TAMPUpdateConfirm(univ.Sequence): |
| pass |
| |
| TAMPUpdateConfirm.componentType = namedtype.NamedTypes( |
| namedtype.DefaultedNamedType('version', TAMPVersion().subtype( |
| implicitTag=tag.Tag(tag.tagClassContext, |
| tag.tagFormatSimple, 0)).subtype(value='v2')), |
| namedtype.NamedType('update', TAMPMsgRef()), |
| namedtype.NamedType('confirm', UpdateConfirm()) |
| ) |
| |
| |
| tamp_update_confirm = rfc5652.ContentInfo() |
| tamp_update_confirm['contentType'] = id_ct_TAMP_updateConfirm |
| tamp_update_confirm['content'] = TAMPUpdateConfirm() |
| |
| |
| # Apex Trust Anchor Update Message |
| |
| id_ct_TAMP_apexUpdate = _OID(id_tamp, 5) |
| |
| |
| class TAMPApexUpdate(univ.Sequence): |
| pass |
| |
| TAMPApexUpdate.componentType = namedtype.NamedTypes( |
| namedtype.DefaultedNamedType('version', |
| TAMPVersion().subtype(implicitTag=tag.Tag(tag.tagClassContext, |
| tag.tagFormatSimple, 0)).subtype(value='v2')), |
| namedtype.DefaultedNamedType('terse', |
| TerseOrVerbose().subtype(implicitTag=tag.Tag(tag.tagClassContext, |
| tag.tagFormatSimple, 1)).subtype(value='verbose')), |
| namedtype.NamedType('msgRef', TAMPMsgRef()), |
| namedtype.NamedType('clearTrustAnchors', univ.Boolean()), |
| namedtype.NamedType('clearCommunities', univ.Boolean()), |
| namedtype.OptionalNamedType('seqNumber', SeqNumber()), |
| namedtype.NamedType('apexTA', TrustAnchorChoice()) |
| ) |
| |
| |
| tamp_apex_update = rfc5652.ContentInfo() |
| tamp_apex_update['contentType'] = id_ct_TAMP_apexUpdate |
| tamp_apex_update['content'] = TAMPApexUpdate() |
| |
| |
| # Apex Trust Anchor Update Confirm Message |
| |
| id_ct_TAMP_apexUpdateConfirm = _OID(id_tamp, 6) |
| |
| |
| class TerseApexUpdateConfirm(StatusCode): |
| pass |
| |
| |
| class VerboseApexUpdateConfirm(univ.Sequence): |
| pass |
| |
| VerboseApexUpdateConfirm.componentType = namedtype.NamedTypes( |
| namedtype.NamedType('status', StatusCode()), |
| namedtype.NamedType('taInfo', TrustAnchorChoiceList()), |
| namedtype.OptionalNamedType('communities', |
| CommunityIdentifierList().subtype(implicitTag=tag.Tag(tag.tagClassContext, |
| tag.tagFormatSimple, 0))), |
| namedtype.OptionalNamedType('tampSeqNumbers', |
| TAMPSequenceNumbers().subtype(implicitTag=tag.Tag(tag.tagClassContext, |
| tag.tagFormatSimple, 1))) |
| ) |
| |
| |
| class ApexUpdateConfirm(univ.Choice): |
| pass |
| |
| ApexUpdateConfirm.componentType = namedtype.NamedTypes( |
| namedtype.NamedType('terseApexConfirm', |
| TerseApexUpdateConfirm().subtype(implicitTag=tag.Tag(tag.tagClassContext, |
| tag.tagFormatSimple, 0))), |
| namedtype.NamedType('verboseApexConfirm', |
| VerboseApexUpdateConfirm().subtype(implicitTag=tag.Tag(tag.tagClassContext, |
| tag.tagFormatConstructed, 1))) |
| ) |
| |
| |
| class TAMPApexUpdateConfirm(univ.Sequence): |
| pass |
| |
| TAMPApexUpdateConfirm.componentType = namedtype.NamedTypes( |
| namedtype.DefaultedNamedType('version', |
| TAMPVersion().subtype(implicitTag=tag.Tag(tag.tagClassContext, |
| tag.tagFormatSimple, 0)).subtype(value='v2')), |
| namedtype.NamedType('apexReplace', TAMPMsgRef()), |
| namedtype.NamedType('apexConfirm', ApexUpdateConfirm()) |
| ) |
| |
| |
| tamp_apex_update_confirm = rfc5652.ContentInfo() |
| tamp_apex_update_confirm['contentType'] = id_ct_TAMP_apexUpdateConfirm |
| tamp_apex_update_confirm['content'] = TAMPApexUpdateConfirm() |
| |
| |
| # Community Update Message |
| |
| id_ct_TAMP_communityUpdate = _OID(id_tamp, 7) |
| |
| |
| class CommunityUpdates(univ.Sequence): |
| pass |
| |
| CommunityUpdates.componentType = namedtype.NamedTypes( |
| namedtype.OptionalNamedType('remove', |
| CommunityIdentifierList().subtype(implicitTag=tag.Tag(tag.tagClassContext, |
| tag.tagFormatSimple, 1))), |
| namedtype.OptionalNamedType('add', |
| CommunityIdentifierList().subtype(implicitTag=tag.Tag(tag.tagClassContext, |
| tag.tagFormatSimple, 2))) |
| ) |
| |
| |
| class TAMPCommunityUpdate(univ.Sequence): |
| pass |
| |
| TAMPCommunityUpdate.componentType = namedtype.NamedTypes( |
| namedtype.DefaultedNamedType('version', |
| TAMPVersion().subtype(implicitTag=tag.Tag(tag.tagClassContext, |
| tag.tagFormatSimple, 0)).subtype(value='v2')), |
| namedtype.DefaultedNamedType('terse', |
| TerseOrVerbose().subtype(implicitTag=tag.Tag(tag.tagClassContext, |
| tag.tagFormatSimple, 1)).subtype(value='verbose')), |
| namedtype.NamedType('msgRef', TAMPMsgRef()), |
| namedtype.NamedType('updates', CommunityUpdates()) |
| ) |
| |
| |
| tamp_community_update = rfc5652.ContentInfo() |
| tamp_community_update['contentType'] = id_ct_TAMP_communityUpdate |
| tamp_community_update['content'] = TAMPCommunityUpdate() |
| |
| |
| # Community Update Confirm Message |
| |
| id_ct_TAMP_communityUpdateConfirm = _OID(id_tamp, 8) |
| |
| |
| class TerseCommunityConfirm(StatusCode): |
| pass |
| |
| |
| class VerboseCommunityConfirm(univ.Sequence): |
| pass |
| |
| VerboseCommunityConfirm.componentType = namedtype.NamedTypes( |
| namedtype.NamedType('status', StatusCode()), |
| namedtype.OptionalNamedType('communities', CommunityIdentifierList()) |
| ) |
| |
| |
| class CommunityConfirm(univ.Choice): |
| pass |
| |
| CommunityConfirm.componentType = namedtype.NamedTypes( |
| namedtype.NamedType('terseCommConfirm', |
| TerseCommunityConfirm().subtype(implicitTag=tag.Tag(tag.tagClassContext, |
| tag.tagFormatSimple, 0))), |
| namedtype.NamedType('verboseCommConfirm', |
| VerboseCommunityConfirm().subtype(implicitTag=tag.Tag(tag.tagClassContext, |
| tag.tagFormatConstructed, 1))) |
| ) |
| |
| |
| class TAMPCommunityUpdateConfirm(univ.Sequence): |
| pass |
| |
| TAMPCommunityUpdateConfirm.componentType = namedtype.NamedTypes( |
| namedtype.DefaultedNamedType('version', |
| TAMPVersion().subtype(implicitTag=tag.Tag(tag.tagClassContext, |
| tag.tagFormatSimple, 0)).subtype(value='v2')), |
| namedtype.NamedType('update', TAMPMsgRef()), |
| namedtype.NamedType('commConfirm', CommunityConfirm()) |
| ) |
| |
| |
| tamp_community_update_confirm = rfc5652.ContentInfo() |
| tamp_community_update_confirm['contentType'] = id_ct_TAMP_communityUpdateConfirm |
| tamp_community_update_confirm['content'] = TAMPCommunityUpdateConfirm() |
| |
| |
| # Sequence Number Adjust Message |
| |
| id_ct_TAMP_seqNumAdjust = _OID(id_tamp, 10) |
| |
| |
| |
| class SequenceNumberAdjust(univ.Sequence): |
| pass |
| |
| SequenceNumberAdjust.componentType = namedtype.NamedTypes( |
| namedtype.DefaultedNamedType('version', |
| TAMPVersion().subtype(implicitTag=tag.Tag(tag.tagClassContext, |
| tag.tagFormatSimple, 0)).subtype(value='v2')), |
| namedtype.NamedType('msgRef', TAMPMsgRef()) |
| ) |
| |
| |
| tamp_sequence_number_adjust = rfc5652.ContentInfo() |
| tamp_sequence_number_adjust['contentType'] = id_ct_TAMP_seqNumAdjust |
| tamp_sequence_number_adjust['content'] = SequenceNumberAdjust() |
| |
| |
| # Sequence Number Adjust Confirm Message |
| |
| id_ct_TAMP_seqNumAdjustConfirm = _OID(id_tamp, 11) |
| |
| |
| class SequenceNumberAdjustConfirm(univ.Sequence): |
| pass |
| |
| SequenceNumberAdjustConfirm.componentType = namedtype.NamedTypes( |
| namedtype.DefaultedNamedType('version', |
| TAMPVersion().subtype(implicitTag=tag.Tag(tag.tagClassContext, |
| tag.tagFormatSimple, 0)).subtype(value='v2')), |
| namedtype.NamedType('adjust', TAMPMsgRef()), |
| namedtype.NamedType('status', StatusCode()) |
| ) |
| |
| |
| tamp_sequence_number_adjust_confirm = rfc5652.ContentInfo() |
| tamp_sequence_number_adjust_confirm['contentType'] = id_ct_TAMP_seqNumAdjustConfirm |
| tamp_sequence_number_adjust_confirm['content'] = SequenceNumberAdjustConfirm() |
| |
| |
| # TAMP Error Message |
| |
| id_ct_TAMP_error = _OID(id_tamp, 9) |
| |
| |
| class TAMPError(univ.Sequence): |
| pass |
| |
| TAMPError.componentType = namedtype.NamedTypes( |
| namedtype.DefaultedNamedType('version', |
| TAMPVersion().subtype(implicitTag=tag.Tag(tag.tagClassContext, |
| tag.tagFormatSimple, 0)).subtype(value='v2')), |
| namedtype.NamedType('msgType', univ.ObjectIdentifier()), |
| namedtype.NamedType('status', StatusCode()), |
| namedtype.OptionalNamedType('msgRef', TAMPMsgRef()) |
| ) |
| |
| |
| tamp_error = rfc5652.ContentInfo() |
| tamp_error['contentType'] = id_ct_TAMP_error |
| tamp_error['content'] = TAMPError() |
| |
| |
| # Object Identifier Arc for Attributes |
| |
| id_attributes = univ.ObjectIdentifier('2.16.840.1.101.2.1.5') |
| |
| |
| # contingency-public-key-decrypt-key unsigned attribute |
| |
| id_aa_TAMP_contingencyPublicKeyDecryptKey = _OID(id_attributes, 63) |
| |
| |
| class PlaintextSymmetricKey(univ.OctetString): |
| pass |
| |
| |
| contingency_public_key_decrypt_key = Attribute() |
| contingency_public_key_decrypt_key['type'] = id_aa_TAMP_contingencyPublicKeyDecryptKey |
| contingency_public_key_decrypt_key['values'][0] = PlaintextSymmetricKey() |
| |
| |
| # id-pe-wrappedApexContinKey extension |
| |
| id_pe_wrappedApexContinKey =univ.ObjectIdentifier('1.3.6.1.5.5.7.1.20') |
| |
| |
| class ApexContingencyKey(univ.Sequence): |
| pass |
| |
| ApexContingencyKey.componentType = namedtype.NamedTypes( |
| namedtype.NamedType('wrapAlgorithm', AlgorithmIdentifier()), |
| namedtype.NamedType('wrappedContinPubKey', univ.OctetString()) |
| ) |
| |
| |
| wrappedApexContinKey = Extension() |
| wrappedApexContinKey['extnID'] = id_pe_wrappedApexContinKey |
| wrappedApexContinKey['critical'] = 0 |
| wrappedApexContinKey['extnValue'] = univ.OctetString() |
| |
| |
| # Add to the map of CMS Content Type OIDs to Content Types in |
| # rfc5652.py |
| |
| _cmsContentTypesMapUpdate = { |
| id_ct_TAMP_statusQuery: TAMPStatusQuery(), |
| id_ct_TAMP_statusResponse: TAMPStatusResponse(), |
| id_ct_TAMP_update: TAMPUpdate(), |
| id_ct_TAMP_updateConfirm: TAMPUpdateConfirm(), |
| id_ct_TAMP_apexUpdate: TAMPApexUpdate(), |
| id_ct_TAMP_apexUpdateConfirm: TAMPApexUpdateConfirm(), |
| id_ct_TAMP_communityUpdate: TAMPCommunityUpdate(), |
| id_ct_TAMP_communityUpdateConfirm: TAMPCommunityUpdateConfirm(), |
| id_ct_TAMP_seqNumAdjust: SequenceNumberAdjust(), |
| id_ct_TAMP_seqNumAdjustConfirm: SequenceNumberAdjustConfirm(), |
| id_ct_TAMP_error: TAMPError(), |
| } |
| |
| rfc5652.cmsContentTypesMap.update(_cmsContentTypesMapUpdate) |
| |
| |
| # Add to the map of CMS Attribute OIDs to Attribute Values in |
| # rfc5652.py |
| |
| _cmsAttributesMapUpdate = { |
| id_aa_TAMP_contingencyPublicKeyDecryptKey: PlaintextSymmetricKey(), |
| } |
| |
| rfc5652.cmsAttributesMap.update(_cmsAttributesMapUpdate) |
| |
| |
| # Add to the map of Certificate Extension OIDs to Extensions in |
| # rfc5280.py |
| |
| _certificateExtensionsMap = { |
| id_pe_wrappedApexContinKey: ApexContingencyKey(), |
| } |
| |
| rfc5280.certificateExtensionsMap.update(_certificateExtensionsMap) |