X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=pyderasn.py;h=78080294ec422a7a636503c4cd96e20892764f54;hb=8cc4587b4ebd0a488db45dfdf51ce8ebbf562e0b;hp=5597563c07964e7c90a6252138f990c23bef1591;hpb=333d098f0af80eae5481c99b86419d25ea927d22;p=pyderasn.git diff --git a/pyderasn.py b/pyderasn.py index 5597563..7808029 100755 --- a/pyderasn.py +++ b/pyderasn.py @@ -4136,7 +4136,14 @@ LEN_YYYYMMDDHHMMSSDMZ = len("YYYYMMDDHHMMSSDMZ") LEN_YYYYMMDDHHMMSSZ = len("YYYYMMDDHHMMSSZ") -class UTCTime(CommonString): +class VisibleString(CommonString): + __slots__ = () + tag_default = tag_encode(26) + encoding = "ascii" + asn1_type_name = "VisibleString" + + +class UTCTime(VisibleString): """``UTCTime`` datetime type >>> t = UTCTime(datetime(2017, 9, 30, 22, 7, 50, 123)) @@ -4201,11 +4208,11 @@ class UTCTime(CommonString): raise ValueError("non UTC timezone") return datetime( 2000 + int(value[:2]), # %y - int(value[2:4]), # %m - int(value[4:6]), # %d - int(value[6:8]), # %H - int(value[8:10]), # %M - int(value[10:12]), # %S + pureint(value[2:4]), # %m + pureint(value[4:6]), # %d + pureint(value[6:8]), # %H + pureint(value[8:10]), # %M + pureint(value[10:12]), # %S ) def _value_sanitize(self, value): @@ -4325,12 +4332,12 @@ class GeneralizedTime(UTCTime): if value[-1] != "Z": raise ValueError("non UTC timezone") return datetime( - int(value[:4]), # %Y - int(value[4:6]), # %m - int(value[6:8]), # %d - int(value[8:10]), # %H - int(value[10:12]), # %M - int(value[12:14]), # %S + pureint(value[:4]), # %Y + pureint(value[4:6]), # %m + pureint(value[6:8]), # %d + pureint(value[8:10]), # %H + pureint(value[10:12]), # %M + pureint(value[12:14]), # %S ) if l >= LEN_YYYYMMDDHHMMSSDMZ: # datetime.strptime's format: %Y%m%d%H%M%S.%fZ @@ -4344,14 +4351,14 @@ class GeneralizedTime(UTCTime): us_len = len(us) if us_len > 6: raise ValueError("only microsecond fractions are supported") - us = int(us + ("0" * (6 - us_len))) + us = pureint(us + ("0" * (6 - us_len))) decoded = datetime( - int(value[:4]), # %Y - int(value[4:6]), # %m - int(value[6:8]), # %d - int(value[8:10]), # %H - int(value[10:12]), # %M - int(value[12:14]), # %S + pureint(value[:4]), # %Y + pureint(value[4:6]), # %m + pureint(value[6:8]), # %d + pureint(value[8:10]), # %H + pureint(value[10:12]), # %M + pureint(value[12:14]), # %S us, # %f ) return decoded @@ -4391,13 +4398,6 @@ class GraphicString(CommonString): asn1_type_name = "GraphicString" -class VisibleString(CommonString): - __slots__ = () - tag_default = tag_encode(26) - encoding = "ascii" - asn1_type_name = "VisibleString" - - class ISO646String(VisibleString): __slots__ = () asn1_type_name = "ISO646String"