| Index: client/third_party/pyasn1-modules/pyasn1_modules/pem.py
|
| diff --git a/client/third_party/pyasn1-modules/pyasn1_modules/pem.py b/client/third_party/pyasn1-modules/pyasn1_modules/pem.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..d8d815873e9b123fe41afdc8eb058855769f22a2
|
| --- /dev/null
|
| +++ b/client/third_party/pyasn1-modules/pyasn1_modules/pem.py
|
| @@ -0,0 +1,51 @@
|
| +import base64, sys
|
| +
|
| +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 x: x[0], markers))))
|
| + stopMarkers = dict(map(lambda x: (x[1],x[0]),
|
| + enumerate(map(lambda x: x[1], markers))))
|
| + idx = -1; substrate = ''
|
| + state = stSpam
|
| + while 1:
|
| + 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:
|
| + if sys.version_info[0] <= 2:
|
| + substrate = ''.join([ base64.b64decode(x) for x in certLines ])
|
| + else:
|
| + 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 readBase64FromFile(fileObj):
|
| + if sys.version_info[0] <= 2:
|
| + return ''.join([ base64.b64decode(x) for x in fileObj.readlines() ])
|
| + else:
|
| + return ''.encode().join(
|
| + [ base64.b64decode(x.encode()) for x in fileObj.readlines() ]
|
| + )
|
|
|