From 395c3f4d5e0f5b28a167033e1235110734740497 Mon Sep 17 00:00:00 2001 From: nakasima Date: Mon, 22 Oct 2007 11:26:01 +0000 Subject: [PATCH] update SVC. git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/twl_wrapsdk/trunk@303 4ee2a332-4b2b-5046-8439-1ba90f034370 --- build/tests/os/svc-rsa/ARM7/src/main.c | 14 +++---- build/tests/os/svc-rsa/ARM9/src/main.c | 14 +++---- build/tests/os/svc-sha1/ARM7/src/main.c | 23 ++++------ build/tests/os/svc-sha1/ARM9/src/main.c | 23 ++++------ include/twl/os/common/systemCall.h | 53 ++++++++++++++++++------ lib/ARM7-TS/etc/libsyscall_sp.twl.a | Bin 1820 -> 1820 bytes lib/ARM9-TS/etc/libsyscall.twl.a | Bin 1820 -> 1820 bytes 7 files changed, 66 insertions(+), 61 deletions(-) diff --git a/build/tests/os/svc-rsa/ARM7/src/main.c b/build/tests/os/svc-rsa/ARM7/src/main.c index 0977555..13a7851 100644 --- a/build/tests/os/svc-rsa/ARM7/src/main.c +++ b/build/tests/os/svc-rsa/ARM7/src/main.c @@ -75,8 +75,6 @@ static void dump(const char *str, const void *ptr, u32 length) OS_TPrintf("\n"); } -typedef int RSA_CTX[3]; - /*---------------------------------------------------------------------------* Name: TwlMain @@ -88,7 +86,7 @@ typedef int RSA_CTX[3]; *---------------------------------------------------------------------------*/ void TwlMain() { - RSA_CTX ctx; // heap管理情報 + SVCSignHeapContext ctx; // heap管理情報 u8 md[20]; // calculated by gs_data u8 data[128]; // decrypted by gs_sign u8 hash[20]; // decrypted and extructed by gs_sign @@ -108,7 +106,7 @@ void TwlMain() { OSTick begin = OS_GetTick(); - SVC_InitSignHeap(ctx, gs_heap, sizeof(gs_heap)); + SVC_InitSignHeap(&ctx, gs_heap, sizeof(gs_heap)); OS_TPrintf("SVC_InitSignHeap was consumed %d usec\n", (int)OS_TicksToMicroSeconds(OS_GetTick()-begin)); } @@ -118,8 +116,8 @@ void TwlMain() { OSTick begin = OS_GetTick(); - SVC_DecryptoSign(ctx, data, gs_sign, gs_key); - OS_TPrintf("SVC_DecryptoSign was consumed %d usec\n", (int)OS_TicksToMicroSeconds(OS_GetTick()-begin)); + SVC_DecryptSign(&ctx, data, gs_sign, gs_key); + OS_TPrintf("SVC_DecryptSign was consumed %d usec\n", (int)OS_TicksToMicroSeconds(OS_GetTick()-begin)); dump("RSA Result:", data, sizeof(data)); } @@ -129,8 +127,8 @@ void TwlMain() { OSTick begin = OS_GetTick(); - SVC_DecryptoSignDER(ctx, hash, gs_sign, gs_key); - OS_TPrintf("SVC_DecryptoSignDER was consumed %d usec\n", (int)OS_TicksToMicroSeconds(OS_GetTick()-begin)); + SVC_DecryptSignDER(&ctx, hash, gs_sign, gs_key); + OS_TPrintf("SVC_DecryptSignDER was consumed %d usec\n", (int)OS_TicksToMicroSeconds(OS_GetTick()-begin)); dump("Extracted hash:", hash, sizeof(hash)); } diff --git a/build/tests/os/svc-rsa/ARM9/src/main.c b/build/tests/os/svc-rsa/ARM9/src/main.c index 8d43ea3..697f42f 100644 --- a/build/tests/os/svc-rsa/ARM9/src/main.c +++ b/build/tests/os/svc-rsa/ARM9/src/main.c @@ -75,8 +75,6 @@ static void dump(const char *str, const void *ptr, u32 length) OS_TPrintf("\n"); } -typedef int RSA_CTX[3]; - /*---------------------------------------------------------------------------* Name: TwlMain @@ -88,7 +86,7 @@ typedef int RSA_CTX[3]; *---------------------------------------------------------------------------*/ void TwlMain() { - RSA_CTX ctx; // heap管理情報 + SVCSignHeapContext ctx; // heap管理情報 u8 md[20]; // calculated by gs_data u8 data[128]; // decrypted by gs_sign u8 hash[20]; // decrypted and extructed by gs_sign @@ -108,7 +106,7 @@ void TwlMain() { OSTick begin = OS_GetTick(); - SVC_InitSignHeap(ctx, gs_heap, sizeof(gs_heap)); + SVC_InitSignHeap(&ctx, gs_heap, sizeof(gs_heap)); OS_TPrintf("SVC_InitSignHeap was consumed %d usec\n", (int)OS_TicksToMicroSeconds(OS_GetTick()-begin)); } @@ -118,8 +116,8 @@ void TwlMain() { OSTick begin = OS_GetTick(); - SVC_DecryptoSign(ctx, data, gs_sign, gs_key); - OS_TPrintf("SVC_DecryptoSign was consumed %d usec\n", (int)OS_TicksToMicroSeconds(OS_GetTick()-begin)); + SVC_DecryptSign(&ctx, data, gs_sign, gs_key); + OS_TPrintf("SVC_DecryptSign was consumed %d usec\n", (int)OS_TicksToMicroSeconds(OS_GetTick()-begin)); dump("RSA Result:", data, sizeof(data)); } @@ -129,8 +127,8 @@ void TwlMain() { OSTick begin = OS_GetTick(); - SVC_DecryptoSignDER(ctx, hash, gs_sign, gs_key); - OS_TPrintf("SVC_DecryptoSignDER was consumed %d usec\n", (int)OS_TicksToMicroSeconds(OS_GetTick()-begin)); + SVC_DecryptSignDER(&ctx, hash, gs_sign, gs_key); + OS_TPrintf("SVC_DecryptSignDER was consumed %d usec\n", (int)OS_TicksToMicroSeconds(OS_GetTick()-begin)); dump("Extracted hash:", hash, sizeof(hash)); } diff --git a/build/tests/os/svc-sha1/ARM7/src/main.c b/build/tests/os/svc-sha1/ARM7/src/main.c index e266f67..7850491 100644 --- a/build/tests/os/svc-sha1/ARM7/src/main.c +++ b/build/tests/os/svc-sha1/ARM7/src/main.c @@ -53,26 +53,17 @@ static void dump(const char *str, const void *ptr, u32 length) /* SHA1 API */ -typedef struct SHA1_CTX // 実際には、サイズが同じなら中身は何でも良い -{ - u32 h0,h1,h2,h3,h4; - u32 Nl,Nh; - u32 data[16]; - int num; - void (*sha_block)(struct SHA1_CTX *c, const u8 *W, int num); -} -SHA1_CTX; - -static inline void SHA1_Init(SHA1_CTX *ctx) +static inline void SHA1_Init(SVCSHA1Context *ctx) { if (ctx == NULL) return; - MI_CpuClear8(ctx, sizeof(SHA1_CTX)); +// ctx->sha_block = NULL; +// MI_CpuClear8(ctx, sizeof(SVCSHA1Context)); SVC_SHA1Init(ctx); } -static inline void SHA1_Update(SHA1_CTX *ctx, const void* data, u32 len) +static inline void SHA1_Update(SVCSHA1Context *ctx, const void* data, u32 len) { if (ctx == NULL) return; @@ -81,13 +72,13 @@ static inline void SHA1_Update(SHA1_CTX *ctx, const void* data, u32 len) SVC_SHA1Update(ctx, data, len); } -static inline void SHA1_GetHash(SHA1_CTX *ctx, u8* md) +static inline void SHA1_GetHash(SVCSHA1Context *ctx, u8* md) { if (ctx == NULL) return; if (md == NULL) return; - SVC_SHA1GetHash(md, ctx); + SVC_SHA1GetHash(ctx, md); } static inline void SHA1_Calc(u8* md, const void* data, u32 len) @@ -133,7 +124,7 @@ void TwlMain() { u8 md[20]; - SHA1_CTX ctx; + SVCSHA1Context ctx; OSTick begin = OS_GetTick(); SHA1_Init(&ctx); OS_TPrintf("\nSHA1_Init was consumed %d usec\n", (int)OS_TicksToMicroSeconds(OS_GetTick()-begin)); diff --git a/build/tests/os/svc-sha1/ARM9/src/main.c b/build/tests/os/svc-sha1/ARM9/src/main.c index c1df644..eba158f 100644 --- a/build/tests/os/svc-sha1/ARM9/src/main.c +++ b/build/tests/os/svc-sha1/ARM9/src/main.c @@ -53,26 +53,17 @@ static void dump(const char *str, const void *ptr, u32 length) /* SHA1 API */ -typedef struct SHA1_CTX // 実際には、サイズが同じなら中身は何でも良い -{ - u32 h0,h1,h2,h3,h4; - u32 Nl,Nh; - u32 data[16]; - int num; - void (*sha_block)(struct SHA1_CTX *c, const u8 *W, int num); -} -SHA1_CTX; - -static inline void SHA1_Init(SHA1_CTX *ctx) +static inline void SHA1_Init(SVCSHA1Context *ctx) { if (ctx == NULL) return; - MI_CpuClear8(ctx, sizeof(SHA1_CTX)); +// ctx->sha_block = NULL; +// MI_CpuClear8(ctx, sizeof(SVCSHA1Context)); SVC_SHA1Init(ctx); } -static inline void SHA1_Update(SHA1_CTX *ctx, const void* data, u32 len) +static inline void SHA1_Update(SVCSHA1Context *ctx, const void* data, u32 len) { if (ctx == NULL) return; @@ -81,13 +72,13 @@ static inline void SHA1_Update(SHA1_CTX *ctx, const void* data, u32 len) SVC_SHA1Update(ctx, data, len); } -static inline void SHA1_GetHash(SHA1_CTX *ctx, u8* md) +static inline void SHA1_GetHash(SVCSHA1Context *ctx, u8* md) { if (ctx == NULL) return; if (md == NULL) return; - SVC_SHA1GetHash(md, ctx); + SVC_SHA1GetHash(ctx, md); } static inline void SHA1_Calc(u8* md, const void* data, u32 len) @@ -133,7 +124,7 @@ void TwlMain() DC_FlushAll(); // 条件をそろえる { u8 md[20]; - SHA1_CTX ctx; + SVCSHA1Context ctx; OSTick begin = OS_GetTick(); SHA1_Init(&ctx); OS_TPrintf("\nSHA1_Init was consumed %d usec\n", (int)OS_TicksToMicroSeconds(OS_GetTick()-begin)); diff --git a/include/twl/os/common/systemCall.h b/include/twl/os/common/systemCall.h index ed83d48..608264c 100644 --- a/include/twl/os/common/systemCall.h +++ b/include/twl/os/common/systemCall.h @@ -22,37 +22,64 @@ extern "C" { #endif -int SVC_InitSignHeap( - int acmemory_pool[3], +typedef struct +{ + u32* head; + u32* tail; + u32 size; +} +SVCSignHeapContext; + +typedef struct SVCSHA1Context +{ + u32 h0,h1,h2,h3,h4; + u32 Nl,Nh; + u32 data[16]; + int num; + void (*sha_block)(struct SVCSHA1Context *c, const u8 *W, int num); +} +SVCSHA1Context; + +typedef struct +{ + void* output; + const void* input; + const void* key; +} +SVCSignBuffers; + + +void SVC_InitSignHeap( + SVCSignHeapContext* acmemory_pool, void* heap, unsigned int length ); -int SVC_DecryptoRSA( - const void* acmemory_pool, - const void* pData, +int SVC_DecryptRSA( + const SVCSignHeapContext* acmemory_pool, + const SVCSignBuffers* pData, unsigned int* len // 出力サイズ ); -int SVC_DecryptoSign( - const void* acmemory_pool, +int SVC_DecryptSign( + const SVCSignHeapContext* acmemory_pool, void* buffer, // 出力領域 const void* sgn_ptr, // データへのポインタ const void* key_ptr // キーへのポインタ ); -int SVC_DecryptoSignDER( - const void* acmemory_pool, +int SVC_DecryptSignDER( + const SVCSignHeapContext* acmemory_pool, void* buffer, // 出力領域 const void* sgn_ptr, // データへのポインタ const void* key_ptr // キーへのポインタ ); -void SVC_SHA1Init( void *c ); -void SVC_SHA1Update( void *c, const unsigned char *data, unsigned long len ); -void SVC_SHA1GetHash( unsigned char *md, void *c ); +void SVC_SHA1Init( SVCSHA1Context *ctx ); +void SVC_SHA1Update( SVCSHA1Context *ctx, const unsigned char *data, unsigned long len ); +void SVC_SHA1GetHash( SVCSHA1Context *ctx, unsigned char *md ); -int SVC_CalcSHA1( +void SVC_CalcSHA1( void* buffer, // 出力領域 const void* buf, // データへのポインタ unsigned int len // データの長さ diff --git a/lib/ARM7-TS/etc/libsyscall_sp.twl.a b/lib/ARM7-TS/etc/libsyscall_sp.twl.a index 1df274f6c0e051c94aa291e203cd1bfc7f851094..5ae53a5290a7da0e5489b5b7a8c94abdb506045e 100644 GIT binary patch delta 430 zcmbQkH-~S+l6n;e1YlxdV=zZ>8JHN@8GKRr91O82d`^aZ6h0S26AGW3VG;_ThhZrS zpI3=tJBk1w!!;B>Kf}+-u8jKi>QGS@AT0!RmK6%0gCPLQ=K;%eG9;kLb1@V_`CMRm zZiZGAc^-zTD12Uq6)1c@A%c@mSc$>e3semn`v%q|Q{QVA;e3*0BMh;a3|G0G&ksR4PD>kpeQw delta 433 zcmbQkH-~S+l6qAJ1YlxdW3WVU8JHN@83IuF91IC4d`^ZU6h0S2D+-^RVJZrrhhYT@ zpI3=t7m5HM!%Y-EKf|BNu8jKi8cqwwZ8EG&$SER#R7`U6Qv Gw%Y(1+c7x+ diff --git a/lib/ARM9-TS/etc/libsyscall.twl.a b/lib/ARM9-TS/etc/libsyscall.twl.a index 1df274f6c0e051c94aa291e203cd1bfc7f851094..5ae53a5290a7da0e5489b5b7a8c94abdb506045e 100644 GIT binary patch delta 430 zcmbQkH-~S+l6n;e1YlxdV=zZ>8JHN@8GKRr91O82d`^aZ6h0S26AGW3VG;_ThhZrS zpI3=tJBk1w!!;B>Kf}+-u8jKi>QGS@AT0!RmK6%0gCPLQ=K;%eG9;kLb1@V_`CMRm zZiZGAc^-zTD12Uq6)1c@A%c@mSc$>e3semn`v%q|Q{QVA;e3*0BMh;a3|G0G&ksR4PD>kpeQw delta 433 zcmbQkH-~S+l6qAJ1YlxdW3WVU8JHN@83IuF91IC4d`^ZU6h0S2D+-^RVJZrrhhYT@ zpI3=t7m5HM!%Y-EKf|BNu8jKi8cqwwZ8EG&$SER#R7`U6Qv Gw%Y(1+c7x+