From e4c12c4dc0baa30ca9cd3dc2fb1b06e01637f098 Mon Sep 17 00:00:00 2001 From: nishikawa_takeshi Date: Fri, 17 Apr 2009 12:32:34 +0000 Subject: [PATCH] =?UTF-8?q?=E3=83=95=E3=82=A3=E3=83=B3=E3=82=AC=E3=83=BC?= =?UTF-8?q?=E3=83=97=E3=83=AA=E3=83=B3=E3=82=BF:=E3=82=B3=E3=83=9E?= =?UTF-8?q?=E3=83=B3=E3=83=89=E3=83=A9=E3=82=A4=E3=83=B3=E3=81=A0=E3=81=A8?= =?UTF-8?q?DLL=E3=81=8C=E3=81=86=E3=81=BE=E3=81=8F=E5=91=BC=E3=81=B3?= =?UTF-8?q?=E5=87=BA=E3=81=95=E3=82=8C=E3=81=AA=E3=81=84=E3=81=AE=E3=81=A7?= =?UTF-8?q?=E3=80=81=E7=92=B0=E5=A2=83=E5=A4=89=E6=95=B0PATH=E3=82=92?= =?UTF-8?q?=E5=AE=9F=E8=A1=8C=E5=89=8D=E3=81=AB=E4=B8=80=E6=99=82=E7=9A=84?= =?UTF-8?q?=E3=81=AB=E6=9B=B8=E3=81=8D=E6=8F=9B=E3=81=88=E3=82=8B=E3=81=93?= =?UTF-8?q?=E3=81=A8=E3=81=AB=E3=81=97=E3=81=9F=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlToolsRED@264 7061adef-622a-194b-ae81-725974e89856 --- .../FingerPrinterTWL/FingerPrinterTWL.ncb | Bin 10759168 -> 10759168 bytes .../FingerPrinterTWL/FingerPrinterTWL.suo | Bin 33280 -> 34816 bytes .../FingerPrinterTWL/FingerPrinterTWL.cpp | 12 ++ .../FingerPrinterTWL/Form1.cpp | 11 +- .../FingerPrinterTWL/fingerprint_console.cpp | 1 + .../FingerPrinterTWL/fingerprint_util.h | 3 + .../FingerPrinterTWL/fingerprinter_util.cpp | 69 ++++++---- .../FingerprintTWLSetup.vdproj | 62 ++++++--- .../cygcrypto-0.9.8.dll | Bin .../cygwin1.dll | Bin .../maketad.exe | Bin .../MasterEditor/FingerPrinterTWL/LICENSE.txt | 125 ++++++++++++++++++ .../MasterEditor/FingerPrinterTWL/README.txt | 10 +- 13 files changed, 243 insertions(+), 50 deletions(-) rename build/tools/MasterEditor/FingerPrinterTWL/{FingerPrinterTWL_ExternalComponents2 => FingerprinterTWL_ExternalComponents}/cygcrypto-0.9.8.dll (100%) rename build/tools/MasterEditor/FingerPrinterTWL/{FingerPrinterTWL_ExternalComponents2 => FingerprinterTWL_ExternalComponents}/cygwin1.dll (100%) rename build/tools/MasterEditor/FingerPrinterTWL/{FingerPrinterTWL_ExternalComponents2 => FingerprinterTWL_ExternalComponents}/maketad.exe (100%) create mode 100644 build/tools/MasterEditor/FingerPrinterTWL/LICENSE.txt diff --git a/build/tools/MasterEditor/FingerPrinterTWL/FingerPrinterTWL.ncb b/build/tools/MasterEditor/FingerPrinterTWL/FingerPrinterTWL.ncb index 93b9f7c84c3130813212a21a4be480b6a8042e94..053b234482f0bf9bf54444bfc579fc0b264058ea 100644 GIT binary patch delta 21613 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 delta 2147 zcma)-YfzL`7{||fdEW(OTVYx52(IF_Rk?a;5qE{iz?4Pt$`~jjmMG?1$y$OlOl9>! zeLj?prcNK4#%3aq&NN*e?L#(Gm{!_{rs+dD({xb-l@#dztY>%7=|d0mpYz|}dERqB zhwgnwcaPEAYdkPKGBU!NC4?B>AIdM73o{RT2=YVa(0r%@S^!Olj)mj_bBn7tF!+xD zvvV>INGwocvqoBO*ko!hNu?!IGO0Voq+8ZLc}?wgB*}3XP`L?egEm7?K-~E;lsoDD z_zd3;I2(EzdIowH;*3s|VQ3fhoMx&&{_8})DWn8IjDvW@UmY)X|26#QNR&?o;~|db z{M$oADZ7k`i4=D4mMv<~9WQyZ_vAI8ZKokb>L?y<`!UolhjMhCD)%HfEDUzU6I%c~ zyUyai(qp7Qdnr|>7QJQXSdKZU3AwVjsV8mx;qDIguy+ zre-Hcu~V9Ts~J!HJI#L4jJNz(&8}<4KmXS3hGunQiV!z7yc2^$3~6RyB#}j>pA&Pa zcE{$qo$gU^Fj(Kn&g%*WyGZpCJ?1*^;Fy7r~;05z3(+)HDX8^sP( zZ5Ap}5|HvH?J51pcOJETusJTmb1yu*@1aZ3W#|WpXG(2lK8vS0Ob5#*7V&2+o-j|e z9~yvovdnLx9EARXZZq2-NUk1qPtT|U>*a-S=*kMmNTQdEGjN3Et^e!{_MGm~0rW289<6 z%f-}LS>uox;z)M%q+88Meq9Y#z8J@cn8RgIa@t~*wd%N3-H%Emy$lahG5#u{V8rnd zxbyqRd2OrLx%SGZuW~ayN%ecJ#|S#%qK#+i8WbWM;?d?poXxkNPZawr5DyfEa8htd zkj@nKc6sqD71b8XER>wd=Ql?)??HJSm5TKKUjmukir zu1?|-akOaI0N)DF(W4pP))zE8tl1*4BbuGmjK4VrKOW`BnsIxdz;j&CjQvIU@hC4z z9BHoafG)E^^rO^P48Wv;-O+3v{E)6p!?dG$>F|7s@>EydIVq<_&w{e+FBqX#)a3Ib zA(oH&ssWyNY^7$^@T;_Mx{vX<&0vuor0wm~=yXF8%`g)vseA^d_#3HuWggY%9-^yr zCs;hLF(mWP(h-kWtuB9CQbKEvA$HLA%$x&jKDYQ;HKU`X{xv;vH+8Pv<-E!q;!xhk zpXB}~Z-9SPQo zQPRS#1#~9!GzFT%Nj92jj6Cxm3i@u-ncNDRy3?fsRi>o#ZKhgozbmOCD_wOz*(%lb z_5!H_)d^BMY5s&EwQo<2MeDO>^Hgb3=LePt-FZ~dXGv=JyXfd9hlQmQi4?Nmqr%K8 iPLxs&EgLJ1u|ic;IsRWa9S-Wqnod`99aOmD!+!y`(7j0j diff --git a/build/tools/MasterEditor/FingerPrinterTWL/FingerPrinterTWL/FingerPrinterTWL.cpp b/build/tools/MasterEditor/FingerPrinterTWL/FingerPrinterTWL/FingerPrinterTWL.cpp index b51a62e..e745e74 100644 --- a/build/tools/MasterEditor/FingerPrinterTWL/FingerPrinterTWL/FingerPrinterTWL.cpp +++ b/build/tools/MasterEditor/FingerPrinterTWL/FingerPrinterTWL/FingerPrinterTWL.cpp @@ -4,6 +4,7 @@ #include "Form1.h" extern void fingerprintConsole( cli::array ^args ); +void setpath(); using namespace FingerPrinterTWL; @@ -17,6 +18,8 @@ int main(array ^args) if( arg->StartsWith("-") && (arg->IndexOf('g') >= 0) ) { guimode = true; + setpath(); + break; } } @@ -31,6 +34,7 @@ int main(array ^args) } else { + setpath(); // コマンドライン起動のときにはPATHを設定する try { fingerprintConsole( args ); @@ -43,3 +47,11 @@ int main(array ^args) } return 0; } + +// 環境変数PATHの設定 +void setpath() +{ + System::String ^bindir = System::IO::Path::GetDirectoryName( System::Reflection::Assembly::GetEntryAssembly()->Location ); + System::Environment::SetEnvironmentVariable( "PATH", bindir ); +} + diff --git a/build/tools/MasterEditor/FingerPrinterTWL/FingerPrinterTWL/Form1.cpp b/build/tools/MasterEditor/FingerPrinterTWL/FingerPrinterTWL/Form1.cpp index 1bb10ce..053babf 100644 --- a/build/tools/MasterEditor/FingerPrinterTWL/FingerPrinterTWL/Form1.cpp +++ b/build/tools/MasterEditor/FingerPrinterTWL/FingerPrinterTWL/Form1.cpp @@ -26,8 +26,8 @@ void Form1::construct() System::String ^example = "Input Example\r\n\r\n" + "(1)String of ASCII Charactors\r\n" - + " *ABCD\r\n" - + " => register \"41424344\" (\'A\' \'B\' \'C\' \'D\')\r\n\r\n" + + " *AB CD\r\n" + + " => register \"4142204344\" (\'A\' \'B\' \' \' \'C\' \'D\')\r\n\r\n" + "(2)Hexadecimal Numbers\r\n" + " *5A6B78014A235A\r\n" + " *5a6b78014a235a\r\n" @@ -105,6 +105,7 @@ void Form1::commonOpenRom( System::String ^srcpath ) } memset( this->rh, 0, sizeof(ROM_Header) ); ExtractRomHeader( this->srlbin, this->rh ); + AuthenticateRomHeader( this->rh ); // すでにフィンガープリントされている場合には注意書きを表示 if( this->isFingerprint() ) @@ -183,6 +184,10 @@ void Form1::procSaveRomButton() { try { + if( System::String::IsNullOrEmpty(this->tboxFile->Text) ) + { + throw gcnew Exception("The input ROM file has not read yet."); + } System::String ^format = nullptr; System::String ^ext = nullptr; if( this->rTad->Checked ) @@ -248,7 +253,7 @@ void Form1::procAboutButton() void Form1::sucMsg( System::String ^fmt, ... cli::array ^args ) { System::String ^msg = System::String::Format( fmt, args ); // 書式をStringに展開 - MessageBox::Show( msg, "SUCCESS", MessageBoxButtons::OK, MessageBoxIcon::Information ); + MessageBox::Show( msg, "SUCCESS", MessageBoxButtons::OK, MessageBoxIcon::None ); } void Form1::errMsg( System::String ^fmt, ... cli::array ^args ) diff --git a/build/tools/MasterEditor/FingerPrinterTWL/FingerPrinterTWL/fingerprint_console.cpp b/build/tools/MasterEditor/FingerPrinterTWL/FingerPrinterTWL/fingerprint_console.cpp index 70d4d24..943ada7 100644 --- a/build/tools/MasterEditor/FingerPrinterTWL/FingerPrinterTWL/fingerprint_console.cpp +++ b/build/tools/MasterEditor/FingerPrinterTWL/FingerPrinterTWL/fingerprint_console.cpp @@ -122,6 +122,7 @@ void fingerprintConsole( cli::array ^args ) } ROM_Header rh; ExtractRomHeader( srlbin, &rh ); + AuthenticateRomHeader( &rh ); // fingerprint が埋め込まれていたら表示して上書き確認をする bool isFingerprint = false; diff --git a/build/tools/MasterEditor/FingerPrinterTWL/FingerPrinterTWL/fingerprint_util.h b/build/tools/MasterEditor/FingerPrinterTWL/FingerPrinterTWL/fingerprint_util.h index e8dfbf5..1b24f89 100644 --- a/build/tools/MasterEditor/FingerPrinterTWL/FingerPrinterTWL/fingerprint_util.h +++ b/build/tools/MasterEditor/FingerPrinterTWL/FingerPrinterTWL/fingerprint_util.h @@ -35,6 +35,9 @@ void CopyFile( System::String ^srcpath, System::String ^dstpath ); // ROMヘッダに署名をつける void SignRomHeader( ROM_Header *rh ); +// ROMヘッダの署名チェック +void AuthenticateRomHeader( ROM_Header *rh ); + // ---------------------------------------------------------------------- // 変換 // ---------------------------------------------------------------------- diff --git a/build/tools/MasterEditor/FingerPrinterTWL/FingerPrinterTWL/fingerprinter_util.cpp b/build/tools/MasterEditor/FingerPrinterTWL/FingerPrinterTWL/fingerprinter_util.cpp index 79ca9f7..de50146 100644 --- a/build/tools/MasterEditor/FingerPrinterTWL/FingerPrinterTWL/fingerprinter_util.cpp +++ b/build/tools/MasterEditor/FingerPrinterTWL/FingerPrinterTWL/fingerprinter_util.cpp @@ -269,34 +269,10 @@ void SignRomHeader( ROM_Header *rh ) ACSign_DigestUnit( signSrc.digest, rh, - (u32)&(rh->certificate) - (u32)rh // this->pRomHeader はマネージヒープ上にあるので実アドレスを取得できない + (u32)&(rh->certificate) - (u32)rh ); // 鍵を選ぶ -#ifdef METWL_VER_APPTYPE_LAUNCHER - if( this->IsAppLauncher ) - { - privateKey = (u8*)g_devPrivKey_DER_launcher; - publicKey = (u8*)g_devPubKey_DER_launcher; - } - else -#endif //METWL_VER_APPTYPE_LAUNCHER -#ifdef METWL_VER_APPTYPE_SECURE - if( this->IsAppSecure ) - { - privateKey = (u8*)g_devPrivKey_DER_secure; - publicKey = (u8*)g_devPubKey_DER_secure; - } - else -#endif //METWL_VER_APPTYPE_SECURE -#ifdef METWL_VER_APPTYPE_SYSTEM - if( this->IsAppSystem ) - { - privateKey = (u8*)g_devPrivKey_DER_system; - publicKey = (u8*)g_devPubKey_DER_system; - } - else -#endif //METWL_VER_APPTYPE_SYSTEM #ifdef METWL_VER_APPTYPE_USER { privateKey = (u8*)g_devPrivKey_DER; @@ -328,6 +304,49 @@ void SignRomHeader( ROM_Header *rh ) } // ECSrlResult RCSrl::signRomHeader(void) +// ROMヘッダの署名チェック +void AuthenticateRomHeader( ROM_Header *rh ) +{ + u8 original[ RSA_KEY_LENGTH ]; // 署名外した後のデータ格納先 + s32 pos = 0; // ブロックの先頭アドレス + u8 digest[ DIGEST_SIZE_SHA1 ]; // ROMヘッダのダイジェスト + u8 *publicKey = (u8*)g_devPubKey_DER; + + // <データの流れ> + // (1) 公開鍵で復号した結果(ブロック)をローカル変数(original)に格納 + // (2) ブロックから余分な部分を取り除いて引数(pDst)にコピー + +#ifdef METWL_VER_APPTYPE_USER + { + publicKey = (u8*)g_devPubKey_DER; + } +#endif //METWL_VER_APPTYPE_USER + + // 署名の解除 = 公開鍵で復号 + if( !ACSign_Decrypto( original, publicKey, rh->signature, RSA_KEY_LENGTH ) ) + { + throw gcnew System::Exception("Failed to decrypt the ROM signature."); + } + // 署名前データを復号後ブロックからゲット + for( pos=0; pos < (RSA_KEY_LENGTH-2); pos++ ) // 本来ブロックの先頭は0x00だが復号化の内部処理によって消える仕様 + { + // 暗号ブロック形式 = 0x00, BlockType, Padding, 0x00, 実データ + if( original[pos] == 0x00 ) // 実データの直前の0x00をサーチ + { + break; + } + } + // ベリファイ + // ROMヘッダのダイジェストを算出(先頭から証明書領域の直前までが対象) + ACSign_DigestUnit( digest, rh, (u32)&(rh->certificate) - (u32)rh ); + if( memcmp( &(original[pos+1]), digest, DIGEST_SIZE_SHA1 ) != 0 ) + { + System::String ^msg = + "Failed to verify the ROM digest data.\r\n" + +"Either this is not TWL-compatible or TWL-exclusive ROM data, or the ROM data may have been modified."; + throw gcnew System::Exception(msg); + } +} // ---------------------------------------------------------------------- // 変換 diff --git a/build/tools/MasterEditor/FingerPrinterTWL/FingerprintTWLSetup/FingerprintTWLSetup.vdproj b/build/tools/MasterEditor/FingerPrinterTWL/FingerprintTWLSetup/FingerprintTWLSetup.vdproj index dbd6f6c..afa70e8 100644 --- a/build/tools/MasterEditor/FingerPrinterTWL/FingerprintTWLSetup/FingerprintTWLSetup.vdproj +++ b/build/tools/MasterEditor/FingerPrinterTWL/FingerprintTWLSetup/FingerprintTWLSetup.vdproj @@ -3,7 +3,7 @@ "VSVersion" = "3:800" "ProjectType" = "8:{978C614F-708E-4E1A-B201-565925725DBA}" "IsWebType" = "8:FALSE" -"ProjectName" = "8:FingerprintTWLSetup" +"ProjectName" = "8:FingerprinterTWLSetup" "LanguageId" = "3:0" "CodePage" = "3:1252" "UILanguageId" = "3:0" @@ -15,13 +15,7 @@ { "Entry" { - "MsmKey" = "8:_3B49ADDB433A430DBABEA66B4C6F4E5F" - "OwnerKey" = "8:_3DFFDFF35E454135AD3FBE6F59C6BCA0" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_3DFFDFF35E454135AD3FBE6F59C6BCA0" + "MsmKey" = "8:_AEAD81F7D6FC43AFB5C54B548CEE51B2" "OwnerKey" = "8:_B144741D3BBE43B9B8E91A95FE18B531" "MsmSig" = "8:_UNDEFINED" } @@ -33,6 +27,18 @@ } "Entry" { + "MsmKey" = "8:_D4ECA7596ABB498FB1CB5014C2A62F23" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_F0BED259DF1F4E8FAC8CF1BA7C2C89DA" + "OwnerKey" = "8:_AEAD81F7D6FC43AFB5C54B548CEE51B2" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { "MsmKey" = "8:_F83AF9653A3844EA828993912994ADDB" "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" @@ -51,7 +57,7 @@ "DisplayName" = "8:Debug" "IsDebugOnly" = "11:TRUE" "IsReleaseOnly" = "11:FALSE" - "OutputFilename" = "8:Debug\\FingerprintTWLSetup.msi" + "OutputFilename" = "8:Debug\\FingerprinterTWLSetup.msi" "PackageFilesAs" = "3:2" "PackageFileSize" = "3:-2147483648" "CabType" = "3:1" @@ -88,7 +94,7 @@ "DisplayName" = "8:Release" "IsDebugOnly" = "11:FALSE" "IsReleaseOnly" = "11:TRUE" - "OutputFilename" = "8:Release\\FingerprintTWLSetup.msi" + "OutputFilename" = "8:Release\\FingerprinterTWLSetup.msi" "PackageFilesAs" = "3:2" "PackageFileSize" = "3:-2147483648" "CabType" = "3:1" @@ -148,6 +154,26 @@ } "File" { + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_D4ECA7596ABB498FB1CB5014C2A62F23" + { + "SourcePath" = "8:..\\LICENSE.txt" + "TargetName" = "8:LICENSE.txt" + "Tag" = "8:" + "Folder" = "8:_9AD562D239AE45538903EC973D3A7011" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_F83AF9653A3844EA828993912994ADDB" { "SourcePath" = "8:..\\README.txt" @@ -223,9 +249,9 @@ "Product" { "Name" = "8:Microsoft Visual Studio" - "ProductName" = "8:FingerprintTWL" + "ProductName" = "8:FingerprinterTWL" "ProductCode" = "8:{2DB70A66-66FE-4745-AA22-8E4B8CEAA172}" - "PackageCode" = "8:{C7186ADF-21B0-4BD0-AB86-46BEC5003DCB}" + "PackageCode" = "8:{CEA2AF13-CCD2-4A56-8F78-B6127BC766BA}" "UpgradeCode" = "8:{7E1BDE16-5571-4BC2-8270-A59334D41679}" "RestartWWWService" = "11:FALSE" "RemovePreviousVersions" = "11:FALSE" @@ -235,7 +261,7 @@ "Manufacturer" = "8:Nintendo" "ARPHELPTELEPHONE" = "8:" "ARPHELPLINK" = "8:" - "Title" = "8:FingerprintTWLSetup" + "Title" = "8:FingerprinterTWLSetup" "Subject" = "8:" "ARPCONTACT" = "8:Nintendo" "Keywords" = "8:" @@ -754,11 +780,11 @@ } "MergeModule" { - "{CEE29DC0-9FBA-4B99-8D47-5BC643D9B626}:_3B49ADDB433A430DBABEA66B4C6F4E5F" + "{CEE29DC0-9FBA-4B99-8D47-5BC643D9B626}:_AEAD81F7D6FC43AFB5C54B548CEE51B2" { "UseDynamicProperties" = "11:TRUE" "IsDependency" = "11:TRUE" - "SourcePath" = "8:microsoft_vc90_debugcrt_x86.msm" + "SourcePath" = "8:policy_9_0_Microsoft_VC90_CRT_x86.msm" "Properties" { } @@ -768,11 +794,11 @@ "Feature" = "8:" "IsolateTo" = "8:" } - "{CEE29DC0-9FBA-4B99-8D47-5BC643D9B626}:_3DFFDFF35E454135AD3FBE6F59C6BCA0" + "{CEE29DC0-9FBA-4B99-8D47-5BC643D9B626}:_F0BED259DF1F4E8FAC8CF1BA7C2C89DA" { "UseDynamicProperties" = "11:TRUE" "IsDependency" = "11:TRUE" - "SourcePath" = "8:policy_9_0_Microsoft_VC90_DebugCRT_x86.msm" + "SourcePath" = "8:microsoft_vc90_crt_x86.msm" "Properties" { } @@ -787,7 +813,7 @@ { "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_B144741D3BBE43B9B8E91A95FE18B531" { - "SourcePath" = "8:..\\Debug\\FingerPrinterTWL.exe" + "SourcePath" = "8:..\\Release\\FingerPrinterTWL.exe" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_9AD562D239AE45538903EC973D3A7011" diff --git a/build/tools/MasterEditor/FingerPrinterTWL/FingerPrinterTWL_ExternalComponents2/cygcrypto-0.9.8.dll b/build/tools/MasterEditor/FingerPrinterTWL/FingerprinterTWL_ExternalComponents/cygcrypto-0.9.8.dll similarity index 100% rename from build/tools/MasterEditor/FingerPrinterTWL/FingerPrinterTWL_ExternalComponents2/cygcrypto-0.9.8.dll rename to build/tools/MasterEditor/FingerPrinterTWL/FingerprinterTWL_ExternalComponents/cygcrypto-0.9.8.dll diff --git a/build/tools/MasterEditor/FingerPrinterTWL/FingerPrinterTWL_ExternalComponents2/cygwin1.dll b/build/tools/MasterEditor/FingerPrinterTWL/FingerprinterTWL_ExternalComponents/cygwin1.dll similarity index 100% rename from build/tools/MasterEditor/FingerPrinterTWL/FingerPrinterTWL_ExternalComponents2/cygwin1.dll rename to build/tools/MasterEditor/FingerPrinterTWL/FingerprinterTWL_ExternalComponents/cygwin1.dll diff --git a/build/tools/MasterEditor/FingerPrinterTWL/FingerPrinterTWL_ExternalComponents2/maketad.exe b/build/tools/MasterEditor/FingerPrinterTWL/FingerprinterTWL_ExternalComponents/maketad.exe similarity index 100% rename from build/tools/MasterEditor/FingerPrinterTWL/FingerPrinterTWL_ExternalComponents2/maketad.exe rename to build/tools/MasterEditor/FingerPrinterTWL/FingerprinterTWL_ExternalComponents/maketad.exe diff --git a/build/tools/MasterEditor/FingerPrinterTWL/LICENSE.txt b/build/tools/MasterEditor/FingerPrinterTWL/LICENSE.txt new file mode 100644 index 0000000..1105f0b --- /dev/null +++ b/build/tools/MasterEditor/FingerPrinterTWL/LICENSE.txt @@ -0,0 +1,125 @@ + LICENSE ISSUES + ============== + + The OpenSSL toolkit stays under a dual license, i.e. both the conditions of + the OpenSSL License and the original SSLeay license apply to the toolkit. + See below for the actual license texts. Actually both licenses are BSD-style + Open Source licenses. In case of any license issues related to OpenSSL + please contact openssl-core@openssl.org. + + OpenSSL License + --------------- + +/* ==================================================================== + * Copyright (c) 1998-2008 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * openssl-core@openssl.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.openssl.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). + * + */ + + Original SSLeay License + ----------------------- + +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ diff --git a/build/tools/MasterEditor/FingerPrinterTWL/README.txt b/build/tools/MasterEditor/FingerPrinterTWL/README.txt index 346af8a..94f91ff 100644 --- a/build/tools/MasterEditor/FingerPrinterTWL/README.txt +++ b/build/tools/MasterEditor/FingerPrinterTWL/README.txt @@ -29,10 +29,12 @@ Required Environment Microsoft Windows XP SP2 Microsoft .NET Framework 2.0 -maketad.exe : included in TwlSDK -And following DLLs, which are not included in this package. - - cygwin1.dll - - cygcrypto-0.9.8.dll + +Store following program and DLLs, which are not included in this package, +into the install folder. + - maketad.exe (included in TwlSDK) + - cygwin1.dll (included in Cygwin) + - cygcrypto-0.9.8.dll (included in OpenSSL) ======================================================================= Using the Tool