Skip to content
Snippets Groups Projects
Commit 7aeecc3f authored by Phil's avatar Phil
Browse files

Added some ASN1 types (ENUMERATED, GAUGE, GENERALIZED TIME) and their BER/ASN1F couterparts

parent 82cdf6bc
No related branches found
No related tags found
No related merge requests found
...@@ -161,7 +161,9 @@ class ASN1_Class_UNIVERSAL(ASN1_Class): ...@@ -161,7 +161,9 @@ class ASN1_Class_UNIVERSAL(ASN1_Class):
BMP_STRING = 30 BMP_STRING = 30
IPADDRESS = 0x40 IPADDRESS = 0x40
COUNTER32 = 0x41 COUNTER32 = 0x41
GAUGE32 = 0x42
TIME_TICKS = 0x43 TIME_TICKS = 0x43
SEP = 0x80
class ASN1_Object_metaclass(type): class ASN1_Object_metaclass(type):
def __new__(cls, name, bases, dct): def __new__(cls, name, bases, dct):
...@@ -246,15 +248,27 @@ class ASN1_IPADDRESS(ASN1_STRING): ...@@ -246,15 +248,27 @@ class ASN1_IPADDRESS(ASN1_STRING):
class ASN1_UTC_TIME(ASN1_STRING): class ASN1_UTC_TIME(ASN1_STRING):
tag = ASN1_Class_UNIVERSAL.UTC_TIME tag = ASN1_Class_UNIVERSAL.UTC_TIME
class ASN1_GENERALIZED_TIME(ASN1_STRING):
tag = ASN1_Class_UNIVERSAL.GENERALIZED_TIME
class ASN1_TIME_TICKS(ASN1_INTEGER): class ASN1_TIME_TICKS(ASN1_INTEGER):
tag = ASN1_Class_UNIVERSAL.TIME_TICKS tag = ASN1_Class_UNIVERSAL.TIME_TICKS
class ASN1_BOOLEAN(ASN1_INTEGER): class ASN1_BOOLEAN(ASN1_INTEGER):
tag = ASN1_Class_UNIVERSAL.BOOLEAN tag = ASN1_Class_UNIVERSAL.BOOLEAN
class ASN1_ENUMERATED(ASN1_INTEGER):
tag = ASN1_Class_UNIVERSAL.ENUMERATED
class ASN1_NULL(ASN1_INTEGER): class ASN1_NULL(ASN1_INTEGER):
tag = ASN1_Class_UNIVERSAL.NULL tag = ASN1_Class_UNIVERSAL.NULL
class ASN1_SEP(ASN1_NULL):
tag = ASN1_Class_UNIVERSAL.SEP
class ASN1_GAUGE32(ASN1_INTEGER):
tag = ASN1_Class_UNIVERSAL.GAUGE32
class ASN1_COUNTER32(ASN1_INTEGER): class ASN1_COUNTER32(ASN1_INTEGER):
tag = ASN1_Class_UNIVERSAL.COUNTER32 tag = ASN1_Class_UNIVERSAL.COUNTER32
...@@ -276,6 +290,8 @@ class ASN1_OID(ASN1_Object): ...@@ -276,6 +290,8 @@ class ASN1_OID(ASN1_Object):
ASN1_Object.__init__(self, val) ASN1_Object.__init__(self, val)
def __repr__(self): def __repr__(self):
return "<%s[%r]>" % (self.__dict__.get("name", self.__class__.__name__), conf.mib._oidname(self.val)) return "<%s[%r]>" % (self.__dict__.get("name", self.__class__.__name__), conf.mib._oidname(self.val))
def __oidname__(self):
return '%s'%conf.mib._oidname(self.val)
......
...@@ -223,6 +223,9 @@ class BERcodec_INTEGER(BERcodec_Object): ...@@ -223,6 +223,9 @@ class BERcodec_INTEGER(BERcodec_Object):
class BERcodec_BOOLEAN(BERcodec_INTEGER): class BERcodec_BOOLEAN(BERcodec_INTEGER):
tag = ASN1_Class_UNIVERSAL.BOOLEAN tag = ASN1_Class_UNIVERSAL.BOOLEAN
class BERcodec_ENUMERATED(BERcodec_INTEGER):
tag = ASN1_Class_UNIVERSAL.ENUMERATED
class BERcodec_NULL(BERcodec_INTEGER): class BERcodec_NULL(BERcodec_INTEGER):
tag = ASN1_Class_UNIVERSAL.NULL tag = ASN1_Class_UNIVERSAL.NULL
@classmethod @classmethod
...@@ -232,6 +235,9 @@ class BERcodec_NULL(BERcodec_INTEGER): ...@@ -232,6 +235,9 @@ class BERcodec_NULL(BERcodec_INTEGER):
else: else:
return super(cls,cls).enc(i) return super(cls,cls).enc(i)
class BERcodec_SEP(BERcodec_NULL):
tag = ASN1_Class_UNIVERSAL.SEP
class BERcodec_STRING(BERcodec_Object): class BERcodec_STRING(BERcodec_Object):
tag = ASN1_Class_UNIVERSAL.STRING tag = ASN1_Class_UNIVERSAL.STRING
@classmethod @classmethod
...@@ -277,9 +283,15 @@ class BERcodec_IPADDRESS(BERcodec_STRING): ...@@ -277,9 +283,15 @@ class BERcodec_IPADDRESS(BERcodec_STRING):
class BERcodec_UTC_TIME(BERcodec_STRING): class BERcodec_UTC_TIME(BERcodec_STRING):
tag = ASN1_Class_UNIVERSAL.UTC_TIME tag = ASN1_Class_UNIVERSAL.UTC_TIME
class BERcodec_GENERALIZED_TIME(BERcodec_STRING):
tag = ASN1_Class_UNIVERSAL.GENERALIZED_TIME
class BERcodec_TIME_TICKS(BERcodec_INTEGER): class BERcodec_TIME_TICKS(BERcodec_INTEGER):
tag = ASN1_Class_UNIVERSAL.TIME_TICKS tag = ASN1_Class_UNIVERSAL.TIME_TICKS
class BERcodec_GAUGE32(BERcodec_INTEGER):
tag = ASN1_Class_UNIVERSAL.GAUGE32
class BERcodec_COUNTER32(BERcodec_INTEGER): class BERcodec_COUNTER32(BERcodec_INTEGER):
tag = ASN1_Class_UNIVERSAL.COUNTER32 tag = ASN1_Class_UNIVERSAL.COUNTER32
......
...@@ -123,6 +123,9 @@ class ASN1F_BOOLEAN(ASN1F_field): ...@@ -123,6 +123,9 @@ class ASN1F_BOOLEAN(ASN1F_field):
class ASN1F_NULL(ASN1F_INTEGER): class ASN1F_NULL(ASN1F_INTEGER):
ASN1_tag= ASN1_Class_UNIVERSAL.NULL ASN1_tag= ASN1_Class_UNIVERSAL.NULL
class ASN1F_SEP(ASN1F_NULL):
ASN1_tag= ASN1_Class_UNIVERSAL.SEP
class ASN1F_enum_INTEGER(ASN1F_INTEGER): class ASN1F_enum_INTEGER(ASN1F_INTEGER):
def __init__(self, name, default, enum): def __init__(self, name, default, enum):
ASN1F_INTEGER.__init__(self, name, default) ASN1F_INTEGER.__init__(self, name, default)
...@@ -155,6 +158,9 @@ class ASN1F_enum_INTEGER(ASN1F_INTEGER): ...@@ -155,6 +158,9 @@ class ASN1F_enum_INTEGER(ASN1F_INTEGER):
else: else:
return self.i2repr_one(pkt,x) return self.i2repr_one(pkt,x)
class ASN1F_ENUMERATED(ASN1F_enum_INTEGER):
ASN1_tag = ASN1_Class_UNIVERSAL.ENUMERATED
class ASN1F_STRING(ASN1F_field): class ASN1F_STRING(ASN1F_field):
ASN1_tag = ASN1_Class_UNIVERSAL.STRING ASN1_tag = ASN1_Class_UNIVERSAL.STRING
def randval(self): def randval(self):
...@@ -175,6 +181,9 @@ class ASN1F_TIME_TICKS(ASN1F_INTEGER): ...@@ -175,6 +181,9 @@ class ASN1F_TIME_TICKS(ASN1F_INTEGER):
class ASN1F_UTC_TIME(ASN1F_STRING): class ASN1F_UTC_TIME(ASN1F_STRING):
ASN1_tag = ASN1_Class_UNIVERSAL.UTC_TIME ASN1_tag = ASN1_Class_UNIVERSAL.UTC_TIME
class ASN1F_GENERALIZED_TIME(ASN1F_STRING):
ASN1_tag = ASN1_Class_UNIVERSAL.GENERALIZED_TIME
class ASN1F_OID(ASN1F_field): class ASN1F_OID(ASN1F_field):
ASN1_tag = ASN1_Class_UNIVERSAL.OID ASN1_tag = ASN1_Class_UNIVERSAL.OID
def randval(self): def randval(self):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment