ó |~úVc@sGdZddlZddlmZmZd„Zd„Zd„ZdS(s0Functions that load and write PEM-encoded files.i˙˙˙˙N(tbtis_bytescCs<t|ƒr|jdƒ}ntd|ƒtd|ƒfS(s/ Returns the start and end PEM markers sutf-8s-----BEGIN %s-----s-----END %s-----(RtdecodeR(t pem_marker((s2/opt/awscli/lib/python2.7/site-packages/rsa/pem.pyt_markerss  cCs=t|ƒs|jdƒ}nt|ƒ\}}g}t}xŞ|jƒD]œ}|jƒ}|sgqIn||kr˜|rŒtd|ƒ‚nt}qIn|s¤qIn|rÀ||krÀt}Pntdƒ|krĜqIn|j |ƒqIW|std|ƒ‚n|rtd|ƒ‚ntdƒj |ƒ}t j |ƒS(sÑLoads a PEM file. :param contents: the contents of the file to interpret :param pem_marker: the marker of the PEM content, such as 'RSA PRIVATE KEY' when your file has '-----BEGIN RSA PRIVATE KEY-----' and '-----END RSA PRIVATE KEY-----' markers. :return: the base64-decoded content between the start and end markers. @raise ValueError: when the content is invalid, for example when the start marker cannot be found. tasciisSeen start marker "%s" twicet:sNo PEM start marker "%s" foundsNo PEM end marker "%s" foundt( RtencodeRtFalset splitlineststript ValueErrortTrueRtappendtjointbase64tstandard_b64decode(tcontentsRt pem_starttpem_endt pem_linest in_pem_parttlinetpem((s2/opt/awscli/lib/python2.7/site-packages/rsa/pem.pytload_pem#s8   cCsĥt|ƒ\}}tj|ƒjtdƒtdƒƒ}|g}x>tdt|ƒdƒD]$}|||d!}|j|ƒq[W|j|ƒ|jtdƒƒtdƒj|ƒS(s`Saves a PEM file. :param contents: the contents to encode in PEM format :param pem_marker: the marker of the PEM content, such as 'RSA PRIVATE KEY' when your file has '-----BEGIN RSA PRIVATE KEY-----' and '-----END RSA PRIVATE KEY-----' markers. :return: the base64-encoded content between the start and end markers. s Rii@( RRtstandard_b64encodetreplaceRtrangetlenRR(RRRRtb64Rt block_starttblock((s2/opt/awscli/lib/python2.7/site-packages/rsa/pem.pytsave_pemes '  (t__doc__Rt rsa._compatRRRRR!(((s2/opt/awscli/lib/python2.7/site-packages/rsa/pem.pyts   B