Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(57)

Unified Diff: third_party/google-endpoints/pyasn1/codec/der/encoder.py

Issue 2666783008: Add google-endpoints to third_party/. (Closed)
Patch Set: Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/google-endpoints/pyasn1/codec/der/encoder.py
diff --git a/third_party/google-endpoints/pyasn1/codec/der/encoder.py b/third_party/google-endpoints/pyasn1/codec/der/encoder.py
new file mode 100644
index 0000000000000000000000000000000000000000..7f55eeb9d36df1a2b43d7dff13a9a4bf42318c69
--- /dev/null
+++ b/third_party/google-endpoints/pyasn1/codec/der/encoder.py
@@ -0,0 +1,32 @@
+# DER encoder
+from pyasn1.type import univ
+from pyasn1.codec.cer import encoder
+from pyasn1 import error
+
+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 encoders 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):
+ supportIndefLength = False
+ def __call__(self, client, defMode=True, maxChunkSize=0):
+ if not defMode:
+ raise error.PyAsn1Error('DER forbids indefinite length mode')
+ return encoder.Encoder.__call__(self, client, defMode, maxChunkSize)
+
+encode = Encoder(tagMap, typeMap)
« no previous file with comments | « third_party/google-endpoints/pyasn1/codec/der/decoder.py ('k') | third_party/google-endpoints/pyasn1/compat/__init__.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698