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