about summary refs log tree commit diff
path: root/.venv/lib/python3.12/site-packages/pyasn1_modules/pem.py
diff options
context:
space:
mode:
authorS. Solomon Darnell2025-03-28 21:52:21 -0500
committerS. Solomon Darnell2025-03-28 21:52:21 -0500
commit4a52a71956a8d46fcb7294ac71734504bb09bcc2 (patch)
treeee3dc5af3b6313e921cd920906356f5d4febc4ed /.venv/lib/python3.12/site-packages/pyasn1_modules/pem.py
parentcc961e04ba734dd72309fb548a2f97d67d578813 (diff)
downloadgn-ai-master.tar.gz
two version of R2R are here HEAD master
Diffstat (limited to '.venv/lib/python3.12/site-packages/pyasn1_modules/pem.py')
-rw-r--r--.venv/lib/python3.12/site-packages/pyasn1_modules/pem.py58
1 files changed, 58 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/pyasn1_modules/pem.py b/.venv/lib/python3.12/site-packages/pyasn1_modules/pem.py
new file mode 100644
index 00000000..29235ab5
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/pyasn1_modules/pem.py
@@ -0,0 +1,58 @@
+#
+# This file is part of pyasn1-modules software.
+#
+# Copyright (c) 2005-2020, Ilya Etingof <etingof@gmail.com>
+# License: http://snmplabs.com/pyasn1/license.html
+#
+import base64
+
+stSpam, stHam, stDump = 0, 1, 2
+
+
+# The markers parameters is in form ('start1', 'stop1'), ('start2', 'stop2')...
+# Return is (marker-index, substrate)
+def readPemBlocksFromFile(fileObj, *markers):
+    startMarkers = dict(map(lambda x: (x[1], x[0]),
+                            enumerate(map(lambda y: y[0], markers))))
+    stopMarkers = dict(map(lambda x: (x[1], x[0]),
+                           enumerate(map(lambda y: y[1], markers))))
+    idx = -1
+    substrate = ''
+    certLines = []
+    state = stSpam
+    while True:
+        certLine = fileObj.readline()
+        if not certLine:
+            break
+        certLine = certLine.strip()
+        if state == stSpam:
+            if certLine in startMarkers:
+                certLines = []
+                idx = startMarkers[certLine]
+                state = stHam
+                continue
+        if state == stHam:
+            if certLine in stopMarkers and stopMarkers[certLine] == idx:
+                state = stDump
+            else:
+                certLines.append(certLine)
+        if state == stDump:
+            substrate = ''.encode().join([base64.b64decode(x.encode()) for x in certLines])
+            break
+    return idx, substrate
+
+
+# Backward compatibility routine
+def readPemFromFile(fileObj,
+                    startMarker='-----BEGIN CERTIFICATE-----',
+                    endMarker='-----END CERTIFICATE-----'):
+    idx, substrate = readPemBlocksFromFile(fileObj, (startMarker, endMarker))
+    return substrate
+
+
+def readBase64fromText(text):
+    return base64.b64decode(text.encode())
+
+
+def readBase64FromFile(fileObj):
+    return readBase64fromText(fileObj.read())