From 4db0d8c3d8de159b858722bf986a340ce7654a11 Mon Sep 17 00:00:00 2001 From: yoshida_teruhisa Date: Mon, 7 Apr 2008 08:27:53 +0000 Subject: [PATCH] =?UTF-8?q?AES=E9=A0=98=E5=9F=9F=E5=BE=A9=E5=8F=B7?= =?UTF-8?q?=E3=81=AB=E4=BD=BF=E3=81=86=E3=82=AB=E3=82=A6=E3=83=B3=E3=82=BF?= =?UTF-8?q?=E3=81=AE=E5=88=9D=E6=9C=9F=E5=80=A4=E3=82=BB=E3=83=83=E3=83=88?= =?UTF-8?q?=E5=BF=98=E3=82=8C=E3=81=A6=E3=81=84=E3=81=9F=E3=81=AE=E3=81=A7?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1073 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../libraries_sysmenu/sysmenu/common/src/decodeAES.c | 11 +++++++++-- include/sysmenu/sysmenu_lib/common/sysmenu_work.h | 1 + 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/build/libraries_sysmenu/sysmenu/common/src/decodeAES.c b/build/libraries_sysmenu/sysmenu/common/src/decodeAES.c index 9a1764a1..fcedf845 100644 --- a/build/libraries_sysmenu/sysmenu/common/src/decodeAES.c +++ b/build/libraries_sysmenu/sysmenu/common/src/decodeAES.c @@ -114,7 +114,11 @@ void SYSM_StartDecryptAESRegion( ROM_Header_Short *hs ) // Workに開発/製品情報を格納 SYSMi_GetWork()->isDeveloperAESMode = ( hs->developer_encrypt ? TRUE : FALSE ); - + + // Workにカウンタの初期値セット + MI_CpuCopy8( hs->main_static_digest, SYSMi_GetWork()->counterAES[0], AES_BLOCK_SIZE ); // 領域1初期値 + MI_CpuCopy8( hs->sub_static_digest, SYSMi_GetWork()->counterAES[1], AES_BLOCK_SIZE ); // 領域2初期値 + // Workに「鍵」or「シードとゲームコード」をセット if( hs->developer_encrypt ) { @@ -147,7 +151,6 @@ void SYSM_StartDecryptAESRegion( ROM_Header_Short *hs ) #include #include -static BOOL aesFlag; static AESCounter aesCounter; #define DMA_SEND 2 @@ -208,6 +211,10 @@ static void SYSMi_CallbackDecryptAESRegion(PXIFifoTag tag, u32 data, BOOL err) OS_TPrintf( "SYSM_StartDecryptAESRegion:Region %d skip.\n", l ); continue; } + + // カウンタの初期値セット + MI_CpuCopy8( SYSMi_GetWork()->counterAES[l], &aesCounter, AES_BLOCK_SIZE ); + // 鍵ロードして暗号化領域の復号開始 ReplaceWithAes( SYSMi_GetWork()->addr_AESregion[l], SYSMi_GetWork()->size_AESregion[l] ); // DMA転送なのでARM9のためのキャッシュフラッシュは不要のはず diff --git a/include/sysmenu/sysmenu_lib/common/sysmenu_work.h b/include/sysmenu/sysmenu_lib/common/sysmenu_work.h index cc908dcb..e35d2433 100644 --- a/include/sysmenu/sysmenu_lib/common/sysmenu_work.h +++ b/include/sysmenu/sysmenu_lib/common/sysmenu_work.h @@ -126,6 +126,7 @@ typedef struct SYSM_work { u8 keyAES[AES_KEY_SIZE]; // 開発版AES暗号化領域の復号に使用するKEY(に使うタイトルネーム) u8 idAES[GAME_CODE_MAX]; // 製品版AES暗号化領域の復号に使用するID(に使うゲームコード) u8 seedAES[AES_KEY_SIZE]; // 製品版AES暗号化領域の復号に使用するSEED + u8 counterAES[2][AES_BLOCK_SIZE]; // AES暗号化領域の復号に使用するカウンタ初期値 // NTR-IPL2のレガシー 最終的には消すと思う BOOL enableCardNormalOnly;