pem.py (1755B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\carbon\common\lib\pyasn1_modules\pem.py 2 import base64, sys 3 stSpam, stHam, stDump = (0, 1, 2) 4 5 def readPemBlocksFromFile(fileObj, *markers): 6 startMarkers = dict(map(lambda x: (x[1], x[0]), enumerate(map(lambda x: x[0], markers)))) 7 stopMarkers = dict(map(lambda x: (x[1], x[0]), enumerate(map(lambda x: x[1], markers)))) 8 idx = -1 9 substrate = '' 10 state = stSpam 11 while 1: 12 certLine = fileObj.readline() 13 if not certLine: 14 break 15 certLine = certLine.strip() 16 if state == stSpam: 17 if certLine in startMarkers: 18 certLines = [] 19 idx = startMarkers[certLine] 20 state = stHam 21 continue 22 if state == stHam: 23 if certLine in stopMarkers and stopMarkers[certLine] == idx: 24 state = stDump 25 else: 26 certLines.append(certLine) 27 if state == stDump: 28 if sys.version_info[0] <= 2: 29 substrate = ''.join([ base64.b64decode(x) for x in certLines ]) 30 else: 31 substrate = ''.encode().join([ base64.b64decode(x.encode()) for x in certLines ]) 32 break 33 34 return (idx, substrate) 35 36 37 def readPemFromFile(fileObj, startMarker = '-----BEGIN CERTIFICATE-----', endMarker = '-----END CERTIFICATE-----'): 38 idx, substrate = readPemBlocksFromFile(fileObj, (startMarker, endMarker)) 39 return substrate 40 41 42 def readBase64FromFile(fileObj): 43 if sys.version_info[0] <= 2: 44 return ''.join([ base64.b64decode(x) for x in fileObj.readlines() ]) 45 else: 46 return ''.encode().join([ base64.b64decode(x.encode()) for x in fileObj.readlines() ])