| # | |
| # This file is part of pyasn1-modules software. | |
| # | |
| # Copyright (c) 2005-2019, Ilya Etingof <[email protected]> | |
| # License: http://snmplabs.com/pyasn1/license.html | |
| # | |
| # SNMPv3 message syntax | |
| # | |
| # ASN.1 source from: | |
| # http://www.ietf.org/rfc/rfc3412.txt | |
| # | |
| from pyasn1.type import constraint | |
| from pyasn1.type import namedtype | |
| from pyasn1.type import univ | |
| from pyasn1_modules import rfc1905 | |
| class ScopedPDU(univ.Sequence): | |
| componentType = namedtype.NamedTypes( | |
| namedtype.NamedType('contextEngineId', univ.OctetString()), | |
| namedtype.NamedType('contextName', univ.OctetString()), | |
| namedtype.NamedType('data', rfc1905.PDUs()) | |
| ) | |
| class ScopedPduData(univ.Choice): | |
| componentType = namedtype.NamedTypes( | |
| namedtype.NamedType('plaintext', ScopedPDU()), | |
| namedtype.NamedType('encryptedPDU', univ.OctetString()), | |
| ) | |
| class HeaderData(univ.Sequence): | |
| componentType = namedtype.NamedTypes( | |
| namedtype.NamedType('msgID', | |
| univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(0, 2147483647))), | |
| namedtype.NamedType('msgMaxSize', | |
| univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(484, 2147483647))), | |
| namedtype.NamedType('msgFlags', univ.OctetString().subtype(subtypeSpec=constraint.ValueSizeConstraint(1, 1))), | |
| namedtype.NamedType('msgSecurityModel', | |
| univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(1, 2147483647))) | |
| ) | |
| class SNMPv3Message(univ.Sequence): | |
| componentType = namedtype.NamedTypes( | |
| namedtype.NamedType('msgVersion', | |
| univ.Integer().subtype(subtypeSpec=constraint.ValueRangeConstraint(0, 2147483647))), | |
| namedtype.NamedType('msgGlobalData', HeaderData()), | |
| namedtype.NamedType('msgSecurityParameters', univ.OctetString()), | |
| namedtype.NamedType('msgData', ScopedPduData()) | |
| ) |