summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorelie <elie>2015-06-05 16:35:59 +0000
committerelie <elie>2015-06-05 16:35:59 +0000
commitc7cf80b63175faf8101ba546c9a302e83f63663d (patch)
tree788a922cabf86c8e1285e66dec981394c4aebe0b
parent8e729a36b30c3becfbfe424748650802b225cd8f (diff)
downloadpyasn1-c7cf80b63175faf8101ba546c9a302e83f63663d.tar.gz
fixes to GeneralizedTime and UTCTime format constraints
-rw-r--r--pyasn1/codec/cer/encoder.py21
1 files changed, 10 insertions, 11 deletions
diff --git a/pyasn1/codec/cer/encoder.py b/pyasn1/codec/cer/encoder.py
index dad5955..2dd928a 100644
--- a/pyasn1/codec/cer/encoder.py
+++ b/pyasn1/codec/cer/encoder.py
@@ -38,16 +38,17 @@ class GeneralizedTimeEncoder(OctetStringEncoder):
def encodeValue(self, encodeFun, client, defMode, maxChunkSize):
octets = client.asOctets()
if '+' in octets:
- raise error.PyAsn1Error('Must be UTC time')
- if '.' not in octets:
- raise error.PyAsn1Error('Format must include fraction of second')
+ raise error.PyAsn1Error('Must be UTC time: %r' % octets)
+# This breaks too many existing data items
+# if '.' not in octets:
+# raise error.PyAsn1Error('Format must include fraction of second: %r' % octets)
if octets and octets[-1] != self.zchar:
- raise error.PyAsn1Error('Missing timezone specifier')
- if len(octets) < 16:
- raise error.PyAsn1Error('Bad UTC time length')
+ raise error.PyAsn1Error('Missing timezone specifier: %r' % octets)
+ if len(octets) < 15:
+ raise error.PyAsn1Error('Bad UTC time length: %r' % octets)
if octets[-2] == self.zero or \
octets[-3] != self.zero and octets[-2] == self.zero:
- raise error.PyAsn1Error('Meningless zero in fraction of second')
+ raise error.PyAsn1Error('Meningless zero in fraction of second: %r' % octets)
return encoder.OctetStringEncoder.encodeValue(
self, encodeFun, client, defMode, 1000
)
@@ -57,13 +58,11 @@ class UTCTimeEncoder(encoder.OctetStringEncoder):
def encodeValue(self, encodeFun, client, defMode, maxChunkSize):
octets = client.asOctets()
if '+' in octets:
- raise error.PyAsn1Error('Must be UTC time')
- if '.' in octets:
- raise error.PyAsn1Error('Must be no fraction of second')
+ raise error.PyAsn1Error('Must be UTC time: %r' % octets)
if octets and octets[-1] != self.zchar:
client = client.clone(octets + self.zchar)
if len(client) != 13:
- raise error.PyAsn1Error('Bad UTC time length')
+ raise error.PyAsn1Error('Bad UTC time length: %r' % client)
return encoder.OctetStringEncoder.encodeValue(
self, encodeFun, client, defMode, 1000
)