Index: third_party/gsutil/third_party/pyasn1/pyasn1/codec/der/encoder.py |
diff --git a/third_party/gsutil/third_party/pyasn1/pyasn1/codec/der/encoder.py b/third_party/gsutil/third_party/pyasn1/pyasn1/codec/der/encoder.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..4e5faefad4d06078e04ea93e25c8cbb6f6d13086 |
--- /dev/null |
+++ b/third_party/gsutil/third_party/pyasn1/pyasn1/codec/der/encoder.py |
@@ -0,0 +1,28 @@ |
+# DER encoder |
+from pyasn1.type import univ |
+from pyasn1.codec.cer import encoder |
+ |
+class SetOfEncoder(encoder.SetOfEncoder): |
+ def _cmpSetComponents(self, c1, c2): |
+ tagSet1 = isinstance(c1, univ.Choice) and \ |
+ c1.getEffectiveTagSet() or c1.getTagSet() |
+ tagSet2 = isinstance(c2, univ.Choice) and \ |
+ c2.getEffectiveTagSet() or c2.getTagSet() |
+ return cmp(tagSet1, tagSet2) |
+ |
+tagMap = encoder.tagMap.copy() |
+tagMap.update({ |
+ # Overload CER encodrs with BER ones (a bit hackerish XXX) |
+ univ.BitString.tagSet: encoder.encoder.BitStringEncoder(), |
+ univ.OctetString.tagSet: encoder.encoder.OctetStringEncoder(), |
+ # Set & SetOf have same tags |
+ univ.SetOf().tagSet: SetOfEncoder() |
+ }) |
+ |
+typeMap = encoder.typeMap |
+ |
+class Encoder(encoder.Encoder): |
+ def __call__(self, client, defMode=1, maxChunkSize=0): |
+ return encoder.Encoder.__call__(self, client, defMode, maxChunkSize) |
+ |
+encode = Encoder(tagMap, typeMap) |