iddlZddlZddlZddlZddlmZmZddlmZm Z m Z m Z m Z m Z ddlTddlTddlmZd dejdejd efd ZGd d ZdS)N)b2hHexstr)StructArraythisInt32ubInt16ubInt8ub)*)Optionalfooin_fileout_zippc6gd}|}t|rqtjd|dd\}}||dz||dz zdz|dd|z|d|zd}t|odSdS) zConvert an ICJ (Interoperable Java Card) file [back] to a CAP file. example usage: with io.open(sys.argv[1],"rb") as f, zipfile.ZipFile(sys.argv[2], "wb") as z: ijc_to_cap(f, z) ) Header DirectoryAppletImport ConstantPoolClassMethod StaticField RefLocationExport DescriptorDebugz!BHrz /javacard/.capN)readlenstructunpackwritestr)rrrTAGSbtagsizes D/home/jenkins/jenkins/workspace/simtester-sanitize/pySim/javacard.py ijc_to_capr+s  - - -D A a&&M%1Q300 T<SU 3F:Aa$hKHHH afggJ a&&cDeZdZedez dez dez dez dez dez dedez dez dez z d eez Z edez dez d ez d e e j edez d ez z Z d efdZdefdZdefdZddedefdZdS)CapFiler(r)magic minor_version major_versionflagspackageAID package_namecountappletsinstall_method_offsetfilenamec i|_tj|}|}t |D]\}}|dr6|dstd|drK|dd d}| ||j|<dddd d d d d dd }|D]5}||j vrtd||z6dS)Nz.capxz;incompatible .cap file, extended .cap format not supported!r /COMPONENT_HeaderCOMPONENT_DirectoryCOMPONENT_ImportCOMPONENT_ConstantPoolCOMPONENT_ClassCOMPONENT_MethodCOMPONENT_StaticFieldCOMPONENT_ReferenceLocationCOMPONENT_Descriptor) rrrrrrrrrzinvalid cap file, %s missing!) _CapFile__componentzipfileZipFilenamelist enumeratelowerendswith ValueErrorsplit removesuffixr!keys)selfr9cap cap_namelistikeyrequired_components components r*__init__zCapFile.__init__Asyoh''||~~ $\22 ; ;KAx~~((11 `(..:J:J:S:ST[:\:\ ` !^___~~((00 ;nnS))"-::6BB(+(:(: %+=-B*<0H):*(7(>(/(1&&9O9H9O9>r3C3C)C)7yy}}(D "F "F"(f (.w(/(1%% FF5QS8KbcjKjElEl3m3m)m")") c c c c cDe((&(((( / /3 /v / / / / / /r,r.)r )rGr#sysio osmocom.utilsrr constructrrrrr r osmocom.construct osmocom.tlvr rkIOBaserHrlr+r.ror,r*rws & %%%%%%%%CCCCCCCCCCCCCCCC++++++   GO     b/b/b/b/b/b/b/b/b/b/r,