from cryptography import x509
from cryptography.hazmat .backends import default_backend
import datetime
def _get_cert_days_to_expiry( certs) :
if certs is None or len ( certs) == 0 :
return None
if isinstance ( certs, str ) :
certs = [ certs]
max_days_left = float ( "-inf" )
try :
for cert_str in certs:
cert_str = cert_str.replace ( "\\ n" , "\n " )
cert_bytes = cert_str.encode ( 'utf-8' )
cert = x509.load_pem_x509_certificate ( cert_bytes, default_backend( ) )
now = datetime .datetime .utcnow ( )
expiry_date = cert.not_valid_after or now
days_left = ( expiry_date - now) .days
print ( "Cert days to expire:" , days_left)
max_days_left = max ( max_days_left, days_left)
print ( "_get_cert_days_to_expiry max_days_left : " , max_days_left)
return max ( max_days_left, 0 )
except Exception as e:
print ( "Failed to process certs expiry" , e)
print ( "Hello World !!" )
certs = [ '-----BEGIN CERTIFICATE-----\\ nMIICrjCCAZagAwIBAQIQSmL0k6T+QxW6tRTW+T/dFTANBgkqhkiG9w0BAQsFADATMREwDwYDVQQDEwhhY21lLmNvbTAeFw0yMTA4MDkxNDQzMzFaFw0zMTA4MDkxNDQzMzFaMBMxETAPBgNVBAMTCGFjbWUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAosK5KorXh8jl4CVL4O/4Wd0qeH5ZUX+4e3Pbo+VuuQtUAr26qXvzNLEL5x0cSFlO5rzji1ODpgFjlahD3d9J8lo9MPZgt2JJaeYEazYk/e6nSuO36hITfHhR04Wcb+d0M1ygZSRgB7SEf/bijaX10V7uu3V0sm1WCqCXUPkRb0MqcFFvjobRKOA4qblBXVMu/Sx4jpinTlPwu5iE2KXljqAZRckuU0bNgwINFu8sd0+mBlR8GPB93wZ2zLTmu/1oozPaxzJIZkqxqdojIfVhwCD0AOI6ut6lHpEc3tqJJRSk2cZ8h1n5qUjMZ757WaOmfFD21H786DXNO4/1BC6+XQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQATPSIXhtgPo9Cxg1GOtIOfz3ebG0MVD1U1UMd0dgAD9lnTRN43lEFiaaDnMcbHowRLEENdq99VqTajZZ0EZhjgV3bK8UX/tgCJbtcD0fry9PMY+bBV5Y5Hswn0v1VI/qLYGKkRCn2jap/pLEQZvF4Xk7KuCpFg2TYGwmnkBVHNt1TgxbWe6M9b8g8wvmlHmCwZC1WJhRFkIt4m51bHxeeLC1wxbO4oTMqFp+aLSGAAYC0qoHCeR88leoDIGdqhuZaffVijvX2/F8j7VVO3343rcPnJ7gFVmXMJZ5Q3VKio7YpMjfSSJdtWnPskkoN0vTZ9cfjDLMhSggeCEXrqrKdV\\ n-----END CERTIFICATE-----\\ n' , '-----BEGIN CERTIFICATE-----\\ nMIICrzCCAZegAwIBAQIRAKBfxsNg/kZkjST9PNss8ncwDQYJKoZIhvcNAQELBQAwEzERMA8GA1UEAxMIYWNtZS5jb20wHhcNMjEwNzEyMTU1MzQzWhcNMzEwNzEyMTU1MzQzWjATMREwDwYDVQQDEwhhY21lLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAIXqnOOPpxaDCbvUWmq4XAxufs6wplBQ5WuDOt6Q6nAFM4SE6YGBw91tzO9Mi8U+n2dtE4fFQ/lLPIvPErS3YYX9qmTVzMBNv49yDYWIQYc9xPZ9D3pGzZYdAFrdrxYquvZlmfCjRsTrY7iyWOfznyF5PrRYW/oRqTsG8INaqkJKPr/ZSEMVskeIGykgcvFU/a4q+LYBNWfkoZtP2UsLCR01a8j1dx6fwikFhjGMGJAjCjqWfh4x3BXuAodmcuRo2wVWyeSAGfV9GHk1L4MBi42/MEl8Cd40HNfgbUnVoKzwbKUyzpiB/Rr4AULW5k5Z0R0hHz9Ml+EqrRc6NepTSEkCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAZhDy+KN4/RIdivHO4C6utIJaacne5sreR/J55r7dzr75fP3gFCgD5Jb1Jq71OaWiQmtlhbb/N9Vu7DtcAhVG02QtBu/xN/zYm1bgXNydY979WhmqJaglE1/+jIWgx0NgVSGUXLid+Bi6Fm76Z8o5P50EJYjUZtt/7xr83Sg29wEjofL8POs5UeLPET0jWY0F3RrDxshWcN7ierJQMfRaxlTabPVnsLDRQOHWM+JN1btwMAuRrINcefrmoLshwtyIQskCAjyrDsHxYnXVSWLRIpITy4LGHhxbqrAeN1O/O/2j9wmanY5eiWOfClKwRggoK/QEPTZ4H2f29Oq2nAz/GQ==\\ n-----END CERTIFICATE-----\\ n' , '-----BEGIN CERTIFICATE-----\\ nMIICrjCCAZagAwIBAQIQTeMlbfSLQwSkHjKDQIk9ZTANBgkqhkiG9w0BAQsFADATMREwDwYDVQQDEwhhY21lLmNvbTAeFw0yMTA3MTIxNTM3NDRaFw0zMTA3MTIxNTM3NDRaMBMxETAPBgNVBAMTCGFjbWUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAn1BeZ/EH0lINknB+lzpU6dATRcWacfvqdMZWPUvDFPLRlSsFXex+UcLmeflvsbIRZO/WY9OUdClLFjoJMz9TR3BGCRVda/il00JQULD/3p5yrLqIZZaw7LWNUBig2thDE8HVwr1EXriS83g2fP6UFlFaTyt09vk9/sQi48yukBBL/+NFtc9IDmt5WXYZS+9OIj4MhtQ5QEj0ql04RGOv3VnentQ9P47dCic+sjvHA4EIv1Kr84EaUafNXyKKXWrqFxN2ngI5sgJQHWQEWKGewiim9X1leIcnaKtyLF3SXN+JyRnYXHZK9dmr6TlsyjOrlciGNHbX7H90jj8YXxX2+wIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBYLq1TPVGx0xzdngsdAeuGewBojtnOXJjMzLa4xsaMS/+8pPlyD9HXFqIDDE13S98kN7yIAIZvD6GnLyagmAZZ7ghYz6WiD8hoj0dhICmQnchrcqsMEdc+hScLHx0MDot7mVPCUYNsZqttT+3WiNgZ1fCD7t4tQ9FphnEuy+FALVplV1932yoqDaZuDaCBUMiN2B8S5vFjryoJXIrFkvqGcQIxxAy0wbkF29yje0Xbcj9liKrO4aBkN3xlGyZ856hunpsjiPR3yZ+gAXzX6eeVibr6ojtPNDMAjByfc1E6Jl/vrPNv57ikLoNo9C7ZJe4UFLeDIK98W6+KnYtR2Mxf\\ n-----END CERTIFICATE-----\\ n' ]
print ( _get_cert_days_to_expiry( certs) )
print ( "Done!!" )
ZnJvbSBjcnlwdG9ncmFwaHkgaW1wb3J0IHg1MDkKZnJvbSBjcnlwdG9ncmFwaHkuaGF6bWF0LmJhY2tlbmRzIGltcG9ydCBkZWZhdWx0X2JhY2tlbmQKaW1wb3J0IGRhdGV0aW1lCgpkZWYgX2dldF9jZXJ0X2RheXNfdG9fZXhwaXJ5KGNlcnRzKToKICAgIGlmIGNlcnRzIGlzIE5vbmUgb3IgbGVuKGNlcnRzKSA9PSAwOgogICAgICAgIHJldHVybiBOb25lCgogICAgaWYgaXNpbnN0YW5jZShjZXJ0cywgc3RyKToKICAgICAgICBjZXJ0cyA9IFtjZXJ0c10KCiAgICBtYXhfZGF5c19sZWZ0ID0gZmxvYXQoIi1pbmYiKQogICAgdHJ5OgogICAgICAgIGZvciBjZXJ0X3N0ciBpbiBjZXJ0czoKICAgICAgICAgICAgY2VydF9zdHIgPSBjZXJ0X3N0ci5yZXBsYWNlKCJcXG4iLCAiXG4iKQogICAgICAgICAgICBjZXJ0X2J5dGVzID0gY2VydF9zdHIuZW5jb2RlKCd1dGYtOCcpCiAgICAgICAgICAgIGNlcnQgPSB4NTA5LmxvYWRfcGVtX3g1MDlfY2VydGlmaWNhdGUoY2VydF9ieXRlcywgZGVmYXVsdF9iYWNrZW5kKCkpCiAgICAgICAgICAgIG5vdyA9IGRhdGV0aW1lLmRhdGV0aW1lLnV0Y25vdygpCiAgICAgICAgICAgIGV4cGlyeV9kYXRlID0gY2VydC5ub3RfdmFsaWRfYWZ0ZXIgb3Igbm93CiAgICAgICAgICAgIGRheXNfbGVmdCA9IChleHBpcnlfZGF0ZSAtIG5vdykuZGF5cwogICAgICAgICAgICBwcmludCgiQ2VydCBkYXlzIHRvIGV4cGlyZToiLCBkYXlzX2xlZnQpCiAgICAgICAgICAgIG1heF9kYXlzX2xlZnQgPSBtYXgobWF4X2RheXNfbGVmdCwgZGF5c19sZWZ0KQogICAgICAgIHByaW50KCJfZ2V0X2NlcnRfZGF5c190b19leHBpcnkgbWF4X2RheXNfbGVmdCA6ICIsIG1heF9kYXlzX2xlZnQpCiAgICAgICAgcmV0dXJuIG1heChtYXhfZGF5c19sZWZ0LCAwKQogICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgIHByaW50KCJGYWlsZWQgdG8gcHJvY2VzcyBjZXJ0cyBleHBpcnkiLCBlKQogICAgICAgIAoKcHJpbnQoIkhlbGxvIFdvcmxkICEhIikKY2VydHMgPSBbJy0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLVxcbk1JSUNyakNDQVphZ0F3SUJBUUlRU21MMGs2VCtReFc2dFJUVytUL2RGVEFOQmdrcWhraUc5dzBCQVFzRkFEQVRNUkV3RHdZRFZRUURFd2hoWTIxbExtTnZiVEFlRncweU1UQTRNRGt4TkRRek16RmFGdzB6TVRBNE1Ea3hORFF6TXpGYU1CTXhFVEFQQmdOVkJBTVRDR0ZqYldVdVkyOXRNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQW9zSzVLb3JYaDhqbDRDVkw0Ty80V2QwcWVINVpVWCs0ZTNQYm8rVnV1UXRVQXIyNnFYdnpOTEVMNXgwY1NGbE81cnpqaTFPRHBnRmpsYWhEM2Q5SjhsbzlNUFpndDJKSmFlWUVhellrL2U2blN1TzM2aElUZkhoUjA0V2NiK2QwTTF5Z1pTUmdCN1NFZi9iaWphWDEwVjd1dTNWMHNtMVdDcUNYVVBrUmIwTXFjRkZ2am9iUktPQTRxYmxCWFZNdS9TeDRqcGluVGxQd3U1aUUyS1hsanFBWlJja3VVMGJOZ3dJTkZ1OHNkMCttQmxSOEdQQjkzd1oyekxUbXUvMW9velBheHpKSVprcXhxZG9qSWZWaHdDRDBBT0k2dXQ2bEhwRWMzdHFKSlJTazJjWjhoMW41cVVqTVo3NTdXYU9tZkZEMjFINzg2RFhOTzQvMUJDNitYUUlEQVFBQk1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVRQU0lYaHRnUG85Q3hnMUdPdElPZnozZWJHME1WRDFVMVVNZDBkZ0FEOWxuVFJONDNsRUZpYWFEbk1jYkhvd1JMRUVOZHE5OVZxVGFqWlowRVpoamdWM2JLOFVYL3RnQ0pidGNEMGZyeTlQTVkrYkJWNVk1SHN3bjB2MVZJL3FMWUdLa1JDbjJqYXAvcExFUVp2RjRYazdLdUNwRmcyVFlHd21ua0JWSE50MVRneGJXZTZNOWI4Zzh3dm1sSG1Dd1pDMVdKaFJGa0l0NG01MWJIeGVlTEMxd3hiTzRvVE1xRnArYUxTR0FBWUMwcW9IQ2VSODhsZW9ESUdkcWh1WmFmZlZpanZYMi9GOGo3VlZPMzM0M3JjUG5KN2dGVm1YTUpaNVEzVktpbzdZcE1qZlNTSmR0V25Qc2trb04wdlRaOWNmakRMTWhTZ2dlQ0VYcnFyS2RWXFxuLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLVxcbicsICctLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS1cXG5NSUlDcnpDQ0FaZWdBd0lCQVFJUkFLQmZ4c05nL2taa2pTVDlQTnNzOG5jd0RRWUpLb1pJaHZjTkFRRUxCUUF3RXpFUk1BOEdBMVVFQXhNSVlXTnRaUzVqYjIwd0hoY05NakV3TnpFeU1UVTFNelF6V2hjTk16RXdOekV5TVRVMU16UXpXakFUTVJFd0R3WURWUVFERXdoaFkyMWxMbU52YlRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBSVhxbk9PUHB4YURDYnZVV21xNFhBeHVmczZ3cGxCUTVXdURPdDZRNm5BRk00U0U2WUdCdzkxdHpPOU1pOFUrbjJkdEU0ZkZRL2xMUEl2UEVyUzNZWVg5cW1UVnpNQk52NDl5RFlXSVFZYzl4UFo5RDNwR3paWWRBRnJkcnhZcXV2WmxtZkNqUnNUclk3aXlXT2Z6bnlGNVByUllXL29ScVRzRzhJTmFxa0pLUHIvWlNFTVZza2VJR3lrZ2N2RlUvYTRxK0xZQk5XZmtvWnRQMlVzTENSMDFhOGoxZHg2Zndpa0ZoakdNR0pBakNqcVdmaDR4M0JYdUFvZG1jdVJvMndWV3llU0FHZlY5R0hrMUw0TUJpNDIvTUVsOENkNDBITmZnYlVuVm9LendiS1V5enBpQi9ScjRBVUxXNWs1WjBSMGhIejlNbCtFcXJSYzZOZXBUU0VrQ0F3RUFBVEFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWmhEeStLTjQvUklkaXZITzRDNnV0SUphYWNuZTVzcmVSL0o1NXI3ZHpyNzVmUDNnRkNnRDVKYjFKcTcxT2FXaVFtdGxoYmIvTjlWdTdEdGNBaFZHMDJRdEJ1L3hOL3pZbTFiZ1hOeWRZOTc5V2htcUphZ2xFMS8raklXZ3gwTmdWU0dVWExpZCtCaTZGbTc2WjhvNVA1MEVKWWpVWnR0Lzd4cjgzU2cyOXdFam9mTDhQT3M1VWVMUEVUMGpXWTBGM1JyRHhzaFdjTjdpZXJKUU1mUmF4bFRhYlBWbnNMRFJRT0hXTStKTjFidHdNQXVScklOY2Vmcm1vTHNod3R5SVFza0NBanlyRHNIeFluWFZTV0xSSXBJVHk0TEdIaHhicXJBZU4xTy9PLzJqOXdtYW5ZNWVpV09mQ2xLd1JnZ29LL1FFUFRaNEgyZjI5T3EybkF6L0dRPT1cXG4tLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tXFxuJywgJy0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLVxcbk1JSUNyakNDQVphZ0F3SUJBUUlRVGVNbGJmU0xRd1NrSGpLRFFJazlaVEFOQmdrcWhraUc5dzBCQVFzRkFEQVRNUkV3RHdZRFZRUURFd2hoWTIxbExtTnZiVEFlRncweU1UQTNNVEl4TlRNM05EUmFGdzB6TVRBM01USXhOVE0zTkRSYU1CTXhFVEFQQmdOVkJBTVRDR0ZqYldVdVkyOXRNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQW4xQmVaL0VIMGxJTmtuQitsenBVNmRBVFJjV2FjZnZxZE1aV1BVdkRGUExSbFNzRlhleCtVY0xtZWZsdnNiSVJaTy9XWTlPVWRDbExGam9KTXo5VFIzQkdDUlZkYS9pbDAwSlFVTEQvM3A1eXJMcUlaWmF3N0xXTlVCaWcydGhERThIVndyMUVYcmlTODNnMmZQNlVGbEZhVHl0MDl2azkvc1FpNDh5dWtCQkwvK05GdGM5SURtdDVXWFlaUys5T0lqNE1odFE1UUVqMHFsMDRSR092M1ZuZW50UTlQNDdkQ2ljK3NqdkhBNEVJdjFLcjg0RWFVYWZOWHlLS1hXcnFGeE4ybmdJNXNnSlFIV1FFV0tHZXdpaW05WDFsZUljbmFLdHlMRjNTWE4rSnlSbllYSFpLOWRtcjZUbHN5ak9ybGNpR05IYlg3SDkwamo4WVh4WDIrd0lEQVFBQk1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQllMcTFUUFZHeDB4emRuZ3NkQWV1R2V3Qm9qdG5PWEpqTXpMYTR4c2FNUy8rOHBQbHlEOUhYRnFJRERFMTNTOThrTjd5SUFJWnZENkduTHlhZ21BWlo3Z2hZejZXaUQ4aG9qMGRoSUNtUW5jaHJjcXNNRWRjK2hTY0xIeDBNRG90N21WUENVWU5zWnF0dFQrM1dpTmdaMWZDRDd0NHRROUZwaG5FdXkrRkFMVnBsVjE5MzJ5b3FEYVp1RGFDQlVNaU4yQjhTNXZGanJ5b0pYSXJGa3ZxR2NRSXh4QXkwd2JrRjI5eWplMFhiY2o5bGlLck80YUJrTjN4bEd5Wjg1Nmh1bnBzamlQUjN5WitnQVh6WDZlZVZpYnI2b2p0UE5ETUFqQnlmYzFFNkpsL3ZyUE52NTdpa0xvTm85QzdaSmU0VUZMZURJSzk4VzYrS25ZdFIyTXhmXFxuLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLVxcbiddCnByaW50KF9nZXRfY2VydF9kYXlzX3RvX2V4cGlyeShjZXJ0cykpCnByaW50KCJEb25lISEiKQ==