1 // Copyright (c) 2012- PPSSPP Project.
2 
3 // This program is free software: you can redistribute it and/or modify
4 // it under the terms of the GNU General Public License as published by
5 // the Free Software Foundation, version 2.0 or later versions.
6 
7 // This program is distributed in the hope that it will be useful,
8 // but WITHOUT ANY WARRANTY; without even the implied warranty of
9 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10 // GNU General Public License 2.0 for more details.
11 
12 // A copy of the GPL 2.0 should have been included with the program.
13 // If not, see http://www.gnu.org/licenses/
14 
15 // Official git repository and contact information can be found at
16 // https://github.com/hrydgard/ppsspp and http://www.ppsspp.org/.
17 
18 #pragma once
19 
20 typedef struct _pspChnnlsvContext1 {
21 	/** Cipher mode */
22 	s32_le mode;
23 
24 	/** Context data */
25 	u8 result[0x10];
26 	u8 key[0x10];
27 	s32_le keyLength;
28 } pspChnnlsvContext1;
29 
30 typedef struct _pspChnnlsvContext2 {
31 	/** Context data */
32 	s32_le mode;
33 	s32_le unkn;
34 	u8 cryptedData[0x92];
35 } pspChnnlsvContext2;
36 
37 int sceSdSetIndex_(pspChnnlsvContext1& ctx, int value);
38 int sceSdRemoveValue_(pspChnnlsvContext1& ctx, u8* data, int length);
39 int sceSdCreateList_(pspChnnlsvContext2& ctx2, int mode, int uknw, u8* data, u8* cryptkey);
40 int sceSdSetMember_(pspChnnlsvContext2& ctx, u8* data, int alignedLen);
41 int sceChnnlsv_21BE78B4_(pspChnnlsvContext2& ctx);
42 int sceSdGetLastIndex_(pspChnnlsvContext1& ctx, u8* in_hash, u8* in_key);
43 
44 void Register_sceChnnlsv();
45