vitasdk
Documentation of the vitasdk
dmac5.h
Go to the documentation of this file.
1
6#ifndef _PSP2_DMAC5_H_
7#define _PSP2_DMAC5_H_
8
10#include <psp2/types.h>
11#include <psp2common/sblssmgr.h>
12
13#ifdef __cplusplus
14extern "C" {
15#endif
16
17
18typedef struct SceSblDmac5EncDecParam { // size is 0x18-bytes
19 const void *src;
20 void *dst;
22 const void *key;
24 void *iv;
27
28typedef struct SceSblDmac5HashTransformParam { // size is 0x18-bytes
29 const void *src;
30 void *dst;
32 const void *key;
34 void *ctx;
37
48
66
67
82
101
102
103static inline int sceSblDmac5AesCbcEnc(const void *src, void *dst, SceSize length, const void *key, SceSize keysize, void *iv)
104{
105 SceSblDmac5EncDecParam param = {.src = src, .dst = dst, .length = length, .key = key, .keysize = keysize, .iv = iv};
106
107 return sceSblDmac5EncDec(
108 &param,
109 1 | 8 | (((keysize << 2) - 0x100) & 0x300)
110 );
111}
112
113static inline int sceSblDmac5AesCbcDec(const void *src, void *dst, SceSize length, const void *key, SceSize keysize, void *iv)
114{
115 SceSblDmac5EncDecParam param = {.src = src, .dst = dst, .length = length, .key = key, .keysize = keysize, .iv = iv};
116
117 return sceSblDmac5EncDec(
118 &param,
119 2 | 8 | (((keysize << 2) - 0x100) & 0x300)
120 );
121}
122
123static inline int sceSblDmac5AesCtrEnc(const void *src, void *dst, SceSize length, const void *key, SceSize keysize, void *iv)
124{
125 SceSblDmac5EncDecParam param = {.src = src, .dst = dst, .length = length, .key = key, .keysize = keysize, .iv = iv};
126
127 return sceSblDmac5EncDec(
128 &param,
129 1 | 0x20 | (((keysize << 2) - 0x100) & 0x300)
130 );
131}
132
133static inline int sceSblDmac5AesCtrDec(const void *src, void *dst, SceSize length, const void *key, SceSize keysize, void *iv)
134{
135 SceSblDmac5EncDecParam param = {.src = src, .dst = dst, .length = length, .key = key, .keysize = keysize, .iv = iv};
136
137 return sceSblDmac5EncDec(
138 &param,
139 2 | 0x20 | (((keysize << 2) - 0x100) & 0x300)
140 );
141}
142
143static inline int sceSblDmac5Sha256Digest(const void *src, void *dst, SceSize length)
144{
146 SceSblDmac5HashTransformParam param = {.src = src, .dst = dst, .length = length, .key = NULL, .keysize = 0, .ctx = &ctx};
147
148 ctx.state[0] = __builtin_bswap32(0x6a09e667);
149 ctx.state[1] = __builtin_bswap32(0xbb67ae85);
150 ctx.state[2] = __builtin_bswap32(0x3c6ef372);
151 ctx.state[3] = __builtin_bswap32(0xa54ff53a);
152 ctx.state[4] = __builtin_bswap32(0x510e527f);
153 ctx.state[5] = __builtin_bswap32(0x9b05688c);
154 ctx.state[6] = __builtin_bswap32(0x1f83d9ab);
155 ctx.state[7] = __builtin_bswap32(0x5be0cd19);
156 ctx.length = 0LL;
157
159 &param,
160 3 | 0x10, 0x800
161 );
162}
163
164
165#ifdef __cplusplus
166}
167#endif
168
169#endif /* _PSP2_DMAC5_H_ */
#define VITASDK_BUILD_ASSERT_EQ(__size__, __name__)
Definition build_utils.h:13
uint32_t length
Definition bt.h:7
int flags
Event flags.
Definition debug.h:3
SceUInt32 key
FNV-1a hash of the AppInfo key.
Definition lsdb.h:0
int sceSblDmac5EncDec(SceSblDmac5EncDecParam *param, SceUInt32 command)
Execute DMAC5 encdec command.
void * iv
Initialization vector.
Definition dmac5.h:24
int sceSblDmac5HashTransform(SceSblDmac5HashTransformParam *param, SceUInt32 command, SceUInt32 flags)
Execute DMAC5 hash transform command.
void * dst
Output buffer.
Definition dmac5.h:20
SceSize length
Length of the input data.
Definition dmac5.h:21
void * ctx
Pointer to a SceSblDmac5HashTransformContext, or a SceSblDmac5AesCmacContext for AES-CMAC.
Definition dmac5.h:34
SceSize keysize
Key size in bits.
Definition dmac5.h:33
const void * src
Input buffer.
Definition dmac5.h:29
SceSize length
Length of the input data.
Definition dmac5.h:31
void * dst
Output buffer.
Definition dmac5.h:30
const void * key
Key data.
Definition dmac5.h:32
SceSize keysize
Key size in bits.
Definition dmac5.h:23
const void * key
Key data.
Definition dmac5.h:22
const void * src
Input buffer.
Definition dmac5.h:19
int sceSblDmac5EncDecKeyGen(const SceSblDmac5EncDecParam *param, SceUInt32 key_id, SceUInt32 command)
Execute a user-mode DMAC5 cipher operation using an AuthMgr-derived key.
int sceSblDmac5HmacKeyGen(const SceSblDmac5HashTransformParam *param, SceUInt32 key_id, SceUInt32 command, SceUInt32 flags)
Execute a user-mode keyed DMAC5 hash operation using an AuthMgr-derived key.
Definition dmac5.h:18
Definition dmac5.h:28
SceUInt64 length
Length of input processed so far, maintained by DMAC5.
Definition sblssmgr.h:104
SceUInt32 state[8]
Intermediate hash state.
Definition sblssmgr.h:103
Chaining context used by SHA-1, SHA-224, and SHA-256 DMAC5 commands.
Definition sblssmgr.h:102
unsigned int SceSize
Definition types.h:56
uint32_t SceUInt32
Definition types.h:45