1 /*---------------------------------------------------------------------------*
2 Project: TwlSDK - AES - include
3 File: aes_inline.h
4
5 Copyright 2007-2008 Nintendo. All rights reserved.
6
7 These coded instructions, statements, and computer programs contain
8 proprietary information of Nintendo of America Inc. and/or Nintendo
9 Company Ltd., and are protected by Federal copyright law. They may
10 not be disclosed to third parties or copied or duplicated in any form,
11 in whole or in part, without the prior written consent of Nintendo.
12
13 $Date:: 2008-09-18#$
14 $Rev: 8573 $
15 $Author: okubata_ryoma $
16 *---------------------------------------------------------------------------*/
17
18 #ifndef TWL_AES_ARM9_AES_INLINE_H_
19 #define TWL_AES_ARM9_AES_INLINE_H_
20
21 #include <nitro/os/common/emulator.h>
22 #include <twl/aes/common/types.h>
23 #include <twl/aes/ARM9/aes_internal.h>
24
25 #ifdef __cplusplus
26 extern "C" {
27 #endif
28
29 /*===========================================================================*/
30
31 /*---------------------------------------------------------------------------*
32 Function Definitions
33 *---------------------------------------------------------------------------*/
34
AES_Init(void)35 SDK_INLINE void AES_Init(void)
36 {
37 if( OS_IsRunOnTwl() )
38 {
39 AESi_Init();
40 }
41 }
42
AES_SetKey(const AESKey * pKey)43 SDK_INLINE AESResult AES_SetKey(const AESKey* pKey)
44 {
45 if( OS_IsRunOnTwl() )
46 {
47 return AESi_SetKey(pKey);
48 }
49 else
50 {
51 return AES_RESULT_ON_DS;
52 }
53 }
54
AES_AddToCounter(AESCounter * pCounter,u32 value)55 SDK_INLINE void AES_AddToCounter(AESCounter* pCounter, u32 value)
56 {
57 if( OS_IsRunOnTwl() )
58 {
59 AESi_AddToCounter(pCounter, value);
60 }
61 }
62
AES_ReverseBytes(const void * src,void * dst,u32 size)63 SDK_INLINE void AES_ReverseBytes(const void* src, void* dst, u32 size)
64 {
65 if( OS_IsRunOnTwl() )
66 {
67 AESi_ReverseBytes(src, dst, size);
68 }
69 }
70
AES_SwapEndianEach128(const void * src,void * dst,u32 size)71 SDK_INLINE void AES_SwapEndianEach128(const void* src, void* dst, u32 size)
72 {
73 if( OS_IsRunOnTwl() )
74 {
75 AESi_SwapEndianEach128(src, dst, size);
76 }
77 }
78
AES_Ctr(const AESCounter * pCounter,const void * src,u32 srcSize,void * dst,AESCallback callback,void * arg)79 SDK_INLINE AESResult AES_Ctr(
80 const AESCounter* pCounter,
81 const void* src,
82 u32 srcSize,
83 void* dst,
84 AESCallback callback,
85 void* arg )
86 {
87 if( OS_IsRunOnTwl() )
88 {
89 return AESi_Ctr(pCounter, src, srcSize, dst, callback, arg);
90 }
91 else
92 {
93 return AES_RESULT_ON_DS;
94 }
95 }
96
AES_CtrEncrypt(const AESCounter * pCounter,const void * src,u32 srcSize,void * dst,AESCallback callback,void * arg)97 SDK_INLINE AESResult AES_CtrEncrypt(const AESCounter* pCounter, const void* src, u32 srcSize, void* dst, AESCallback callback, void* arg)
98 { return AES_Ctr(pCounter, src, srcSize, dst, callback, arg); }
AES_CtrDecrypt(const AESCounter * pCounter,const void * src,u32 srcSize,void * dst,AESCallback callback,void * arg)99 SDK_INLINE AESResult AES_CtrDecrypt(const AESCounter* pCounter, const void* src, u32 srcSize, void* dst, AESCallback callback, void* arg)
100 { return AES_Ctr(pCounter, src, srcSize, dst, callback, arg); }
101
102
AES_CcmEncryptAndSign(const AESNonce * pNonce,const void * src,u32 srcASize,u32 srcPSize,AESMacLength macLength,void * dst,AESCallback callback,void * arg)103 SDK_INLINE AESResult AES_CcmEncryptAndSign(
104 const AESNonce* pNonce,
105 const void* src,
106 u32 srcASize,
107 u32 srcPSize,
108 AESMacLength macLength,
109 void* dst, // Require size = srcBSize + macSize
110 AESCallback callback,
111 void* arg )
112 {
113 if( OS_IsRunOnTwl() )
114 {
115 return AESi_CcmEncryptAndSign(pNonce, src, srcASize, srcPSize, macLength, dst, callback, arg);
116 }
117 else
118 {
119 return AES_RESULT_ON_DS;
120 }
121 }
122
AES_CcmDecryptAndVerify(const AESNonce * pNonce,const void * src,u32 srcASize,u32 srcCSize,AESMacLength macLength,void * dst,AESCallback callback,void * arg)123 SDK_INLINE AESResult AES_CcmDecryptAndVerify(
124 const AESNonce* pNonce,
125 const void* src,
126 u32 srcASize,
127 u32 srcCSize,
128 AESMacLength macLength,
129 void* dst, // Require size = srcCSize - macSize
130 AESCallback callback,
131 void* arg )
132 {
133 if( OS_IsRunOnTwl() )
134 {
135 return AESi_CcmDecryptAndVerify(pNonce, src, srcASize, srcCSize, macLength, dst, callback, arg);
136 }
137 else
138 {
139 return AES_RESULT_ON_DS;
140 }
141 }
142
143
144
145 /*===========================================================================*/
146
147 #ifdef __cplusplus
148 } /* extern "C" */
149 #endif
150
151 #endif /* TWL_AES_ARM9_AES_INLINE_H_ */
152
153 /*---------------------------------------------------------------------------*
154 End of file
155 *---------------------------------------------------------------------------*/
156