xref: /aosp_15_r20/external/lzma/CPP/7zip/IPassword.h (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
1*f6dc9357SAndroid Build Coastguard Worker // IPassword.h
2*f6dc9357SAndroid Build Coastguard Worker 
3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_IPASSWORD_H
4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_IPASSWORD_H
5*f6dc9357SAndroid Build Coastguard Worker 
6*f6dc9357SAndroid Build Coastguard Worker #include "../Common/MyTypes.h"
7*f6dc9357SAndroid Build Coastguard Worker 
8*f6dc9357SAndroid Build Coastguard Worker #include "IDecl.h"
9*f6dc9357SAndroid Build Coastguard Worker 
10*f6dc9357SAndroid Build Coastguard Worker Z7_PURE_INTERFACES_BEGIN
11*f6dc9357SAndroid Build Coastguard Worker 
12*f6dc9357SAndroid Build Coastguard Worker #define Z7_IFACE_CONSTR_PASSWORD(i, n) \
13*f6dc9357SAndroid Build Coastguard Worker   Z7_DECL_IFACE_7ZIP(i, 5, n) \
14*f6dc9357SAndroid Build Coastguard Worker   { Z7_IFACE_COM7_PURE(i) };
15*f6dc9357SAndroid Build Coastguard Worker 
16*f6dc9357SAndroid Build Coastguard Worker /*
17*f6dc9357SAndroid Build Coastguard Worker How to use output parameter (BSTR *password):
18*f6dc9357SAndroid Build Coastguard Worker 
19*f6dc9357SAndroid Build Coastguard Worker in:  The caller is required to set BSTR value as NULL (no string).
20*f6dc9357SAndroid Build Coastguard Worker      The callee (in 7-Zip code) ignores the input value stored in BSTR variable,
21*f6dc9357SAndroid Build Coastguard Worker 
22*f6dc9357SAndroid Build Coastguard Worker out: The callee rewrites BSTR variable (*password) with new allocated string pointer.
23*f6dc9357SAndroid Build Coastguard Worker      The caller must free BSTR string with function SysFreeString();
24*f6dc9357SAndroid Build Coastguard Worker */
25*f6dc9357SAndroid Build Coastguard Worker 
26*f6dc9357SAndroid Build Coastguard Worker #define Z7_IFACEM_ICryptoGetTextPassword(x) \
27*f6dc9357SAndroid Build Coastguard Worker   x(CryptoGetTextPassword(BSTR *password))
28*f6dc9357SAndroid Build Coastguard Worker Z7_IFACE_CONSTR_PASSWORD(ICryptoGetTextPassword, 0x10)
29*f6dc9357SAndroid Build Coastguard Worker 
30*f6dc9357SAndroid Build Coastguard Worker 
31*f6dc9357SAndroid Build Coastguard Worker /*
32*f6dc9357SAndroid Build Coastguard Worker CryptoGetTextPassword2()
33*f6dc9357SAndroid Build Coastguard Worker in:
34*f6dc9357SAndroid Build Coastguard Worker   The caller is required to set BSTR value as NULL (no string).
35*f6dc9357SAndroid Build Coastguard Worker   The caller is not required to set (*passwordIsDefined) value.
36*f6dc9357SAndroid Build Coastguard Worker 
37*f6dc9357SAndroid Build Coastguard Worker out:
38*f6dc9357SAndroid Build Coastguard Worker   Return code: != S_OK : error code
39*f6dc9357SAndroid Build Coastguard Worker   Return code:    S_OK : success
40*f6dc9357SAndroid Build Coastguard Worker 
41*f6dc9357SAndroid Build Coastguard Worker   if (*passwordIsDefined == 1), the variable (*password) contains password string
42*f6dc9357SAndroid Build Coastguard Worker 
43*f6dc9357SAndroid Build Coastguard Worker   if (*passwordIsDefined == 0), the password is not defined,
44*f6dc9357SAndroid Build Coastguard Worker      but the callee still could set (*password) to some allocated string, for example, as empty string.
45*f6dc9357SAndroid Build Coastguard Worker 
46*f6dc9357SAndroid Build Coastguard Worker   The caller must free BSTR string with function SysFreeString()
47*f6dc9357SAndroid Build Coastguard Worker */
48*f6dc9357SAndroid Build Coastguard Worker 
49*f6dc9357SAndroid Build Coastguard Worker #define Z7_IFACEM_ICryptoGetTextPassword2(x) \
50*f6dc9357SAndroid Build Coastguard Worker   x(CryptoGetTextPassword2(Int32 *passwordIsDefined, BSTR *password))
51*f6dc9357SAndroid Build Coastguard Worker Z7_IFACE_CONSTR_PASSWORD(ICryptoGetTextPassword2, 0x11)
52*f6dc9357SAndroid Build Coastguard Worker 
53*f6dc9357SAndroid Build Coastguard Worker Z7_PURE_INTERFACES_END
54*f6dc9357SAndroid Build Coastguard Worker #endif
55