a R®a]'ã@sæddlZddlZddlZddlZddlmZmZmZgd¢Zgd¢Z gd¢Z ej dej de  e¡Zdd „Zd d „Zd d „Zd'dd„Zd(dd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„ZdS))éN)ÚPopenÚPIPEÚCalledProcessError) Ú prime192v1Ú secp224r1Ú prime256v1Ú secp384r1Ú secp521r1ÚbrainpoolP256r1ÚbrainpoolP384r1ÚbrainpoolP512r1Ú secp192k1Ú secp224k1Ú secp256k1)Zrsa2048Zrsa3072Zrsa4096)ÚNoneZ PlatformSCPZUserIDZECKeyZAESKeyz %(message)s)ÚformatÚlevelcCs|tvr dS|tvrdSdS©NTF)Ú ecc_typesÚ rsa_types©ZkeyType©rúWZ:\workspace\iot-reference-nxp-rt1060\Middleware\NXP\sss\plugin\mbedtls\scripts\util.pyÚisValidKeyType+s rcCs|tvr dSdSr)rrrrrÚisValidECKeyType2srcCs|tvr dSdSr)rrrrrÚisValidRSAKeyType7srcCsrtd|ƒt|tdddd(}|jD]}t|ddq&Wdƒn1sL0Y|jdkrnt|j|jƒ‚dS)NzRunning command: %séT)ÚstdoutÚbufsizeÚuniversal_newlinesÚshellÚ)Úendr)ÚprintrrrÚ returncoderÚargs)Úcmd_strÚ ignore_resultÚ exp_retcodeÚpÚlinerrrÚrun<s   , r+rc CsFddlm}ddlm}ddlm}t d¡t d¡t d|¡t d|¡t d|¡t d|¡t d¡t d¡|j|j ||j |||j |d|d |  ¡}z |  ¡Wn~ty@} zdtj tj t¡¡tjd } tj | ¡s t| d ƒ} n t| d ƒ} t d| ¡|  ¡WYd} ~ dSd} ~ 00|S) z4 Open session based on IOT Secure Element selected. rNz?###############################################################ú#z# SUBSYSTEM : %sz# CONNECTION_TYPE : %sz# CONNECTION_PARAMETER : %sz# AUTH_TYPE : %s)Ú auth_typeZscpkeyz error_log.txtzw+za+)Z sss.constÚconstÚ sss.connectÚconnectZ sss.sessionÚsessionÚlogÚinfoZdo_open_sessionZSUBSYSTEM_TYPEZCONNECTION_TYPEZ AUTH_TYPE_MAPZSessionÚ session_openÚ ExceptionÚosÚpathÚabspathÚdirnameÚ__file__ÚsepÚisfileÚopenÚ tracebackÚ print_excÚclose) Ú subsystemZconnection_dataÚconnection_typer-Úauth_keyr.r0r1Z session_objÚexcZerror_log_fileZ err_writerrrr4Ds8          ý    r4cCs@ddlm}ddlm}|r$| ¡tj | ¡¡r<|  ¡dS)z Close opened session. rN) r/r0Zsss.utilÚutilÚ session_closer6r7r<Zget_session_pkl_pathZdo_close_session)r1r0rErrrrFfs   rFcCsbddlm}ddlm}ddlm}|j|jkrB||ƒ}| ¡n|j|j kr^||ƒ}| ¡dS)z/ Reset the Secure Module to the initial state. r)ÚSe05x)ÚA71CHN) Z sss.se05xrGZ sss.a71chrHÚ sss.sss_apiÚsss_apirAZkType_SSS_SE_SE05xZ debug_resetZkType_SSS_SE_A71CH)r1rGrHÚapisZ se05x_objZ a71ch_objrrrÚresetrs      rLcCsZddlm}ddlm}||ƒ}| ||¡}||jkrLt d¡t|ƒ|St  d¡|S)ae Creates reference PEM file for ECC Pair. keyid = 32bit Key ID. Should be in hex format. Example: 20E8A001 filename = File name to store reference key. Can be in PEM or DER or PKCS12 format based on file extension. By default filename with extension .pem in PEM format, .pfx or .p12 in PKCS12 format and others in DER format. r©ÚRefPemNúRefpem creation failed!ú#Successfully Created reference key.) Ú sss.refkeyrNrIrJZdo_ecc_refpem_pairÚkStatus_SSS_Successr2ÚerrorrFr3©r1ÚkeyidÚ file_namerNrKZ refpem_objÚstatusrrrÚrefpem_ecc_pairs      rXcCsZddlm}ddlm}||ƒ}| ||¡}||jkrLt d¡t|ƒ|St  d¡|S)ak Creates reference PEM file for ECC Public key. keyid = 32bit Key ID. Should be in hex format. Example: 20E8A001 filename = File name to store reference key. Can be in PEM or DER or PKCS12 format based on file extension. By default filename with extension .pem in PEM format, .pfx or .p12 in PKCS12 format and others in DER format. rrMNrOrP) rQrNrIrJZdo_ecc_refpem_pubrRr2rSrFr3rTrrrÚrefpem_ecc_pub‘s      rYcCs~ddlm}ddlm}t d|f¡t d|f¡| |¡}| ||d¡}||jkrpt  d¡t |ƒ|St d¡|S)a  Set ECC Key pair to the Secure Module keyid = 32bit Key ID. Should be in hex format. Example: 20E8A001 key = Can be raw key (DER format) or in file. For file, by default filename with extension .pem considered as PEM format and others as DER format. rNúclient_key file: %sz&Injecting ECC key pair at key ID: 0x%xzInjecting key pair failed!z#Successfully Injected ECC key pair.) Ú sss.setkeyÚsetkeyrIrJr2r3ÚSetZdo_set_ecc_key_pairrRrSrF©r1rUZ client_keyr\rKÚset_objrWrrrÚ set_ecc_pair£s      r`cCs~ddlm}ddlm}t d|f¡t d|f¡| |¡}| ||d¡}||jkrpt  d¡t |ƒ|St d¡|S)a' Set ECC Key public part to the Secure Module keyid = 32bit Key ID. Should be in hex format. Example: 20E8A001 key = Can be raw key (DER format) or in file. For file, by default filename with extension .pem considered as PEM format and others as DER format. rNrZz(Injecting ECC public key at key ID: 0x%xz Injecting ECC public key failed!z%Successfully Injected ECC public key.) r[r\rIrJr2r3r]Zdo_set_ecc_pub_keyrRrSrFr^rrrÚ set_ecc_pub·s      racCs~ddlm}ddlm}t d|f¡t d|f¡| |¡}| ||d¡}||jkrpt  d¡t |ƒ|St d¡|S)a  Set RSA Key pair to the Secure Module keyid = 32bit Key ID. Should be in hex format. Example: 20E8A001 key = Can be raw key (DER format) or in file. For file, by default filename with extension .pem considered as PEM format and others as DER format. rNrZz&Injecting RSA key pair at key ID: 0x%xzInjecting key pair failed..!z#Successfully Injected RSA key pair.) r[r\rIrJr2r3r]Zdo_set_rsa_key_pairrRrSrFr^rrrÚ set_rsa_pairËs      rbcCs~ddlm}ddlm}t d|f¡t d|f¡| |¡}| ||d¡}||jkrpt  d¡t |ƒ|St d¡|S)a" Set RSA public key to the Secure Module keyid = 32bit Key ID. Should be in hex format. Example: 20E8A001 key = Can be raw key (DER format) or in file. For file, by default filename with extension .pem considered as PEM format and others as DER format. rNrZz(Injecting RSA public key at key ID: 0x%xzInjecting public key failed..!z%Successfully Injected RSA public key.) r[r\rIrJr2r3r]Zdo_set_rsa_pub_keyrRrSrFr^rrrÚ set_rsa_pubÞs      rccCsZddlm}ddlm}||ƒ}| ||¡}||jkrLt d¡t|ƒ|St  d¡|S)ae Creates reference PEM file for RSA Pair. keyid = 32bit Key ID. Should be in hex format. Example: 20E8A001 filename = File name to store reference key. Can be in PEM or DER or PKCS12 format based on file extension. By default filename with extension .pem in PEM format, .pfx or .p12 in PKCS12 format and others in DER format. rrMNzRefpem creation failed..!rP) rQrNrIrJZdo_rsa_refpem_pairrRr2rSrFr3rTrrrÚ refpem_rsaòs      rdcCs~ddlm}ddlm}t d|f¡t d|f¡| |¡}| ||d¡}||jkrpt  d¡t |ƒ|St d¡|S)a- Inject Certificate to the Secure Module keyid = 32bit Key ID. Should be in hex format. Example: 20E8A001 key = Can be raw certificate (DER format) or in file. For file, by default filename with extension .pem and .cer considered as PEM format and others as DER format. rNzcertificate file: %sz%Injecting Certificate at key ID: 0x%xzInjecting certificate failed..!z"Successfully Injected Certificate.) r[r\rIrJr2r3r]Z do_set_certrRrSrF)r1rUZcertr\rKr_rWrrrÚset_certs      re)rr)rr)Úloggingr6Úsysr>Ú subprocessrrrrrÚ auth_typesÚ basicConfigÚDEBUGÚ getLoggerÚ__name__r2rrrr+r4rFrLrXrYr`rarbrcrdrerrrrÚs0   "