13
13
14
14
typedef std::vector<unsigned char > valtype;
15
15
16
+ enum class IsMineSigVersion
17
+ {
18
+ BASE = 0 ,
19
+ WITNESS_V0 = 1
20
+ };
21
+
16
22
static bool HaveKeys (const std::vector<valtype>& pubkeys, const CKeyStore& keystore)
17
23
{
18
24
for (const valtype& pubkey : pubkeys) {
@@ -22,7 +28,7 @@ static bool HaveKeys(const std::vector<valtype>& pubkeys, const CKeyStore& keyst
22
28
return true ;
23
29
}
24
30
25
- static isminetype IsMineInner (const CKeyStore& keystore, const CScript& scriptPubKey, bool & isInvalid, SigVersion sigversion)
31
+ static isminetype IsMineInner (const CKeyStore& keystore, const CScript& scriptPubKey, bool & isInvalid, IsMineSigVersion sigversion)
26
32
{
27
33
isInvalid = false ;
28
34
@@ -43,7 +49,7 @@ static isminetype IsMineInner(const CKeyStore& keystore, const CScript& scriptPu
43
49
break ;
44
50
case TX_PUBKEY:
45
51
keyID = CPubKey (vSolutions[0 ]).GetID ();
46
- if (sigversion != SigVersion ::BASE && vSolutions[0 ].size () != 33 ) {
52
+ if (sigversion != IsMineSigVersion ::BASE && vSolutions[0 ].size () != 33 ) {
47
53
isInvalid = true ;
48
54
return ISMINE_NO;
49
55
}
@@ -58,14 +64,14 @@ static isminetype IsMineInner(const CKeyStore& keystore, const CScript& scriptPu
58
64
// This also applies to the P2WSH case.
59
65
break ;
60
66
}
61
- isminetype ret = IsMineInner (keystore, GetScriptForDestination (CKeyID (uint160 (vSolutions[0 ]))), isInvalid, SigVersion ::WITNESS_V0);
67
+ isminetype ret = IsMineInner (keystore, GetScriptForDestination (CKeyID (uint160 (vSolutions[0 ]))), isInvalid, IsMineSigVersion ::WITNESS_V0);
62
68
if (ret == ISMINE_SPENDABLE || ret == ISMINE_WATCH_SOLVABLE || (ret == ISMINE_NO && isInvalid))
63
69
return ret;
64
70
break ;
65
71
}
66
72
case TX_PUBKEYHASH:
67
73
keyID = CKeyID (uint160 (vSolutions[0 ]));
68
- if (sigversion != SigVersion ::BASE) {
74
+ if (sigversion != IsMineSigVersion ::BASE) {
69
75
CPubKey pubkey;
70
76
if (keystore.GetPubKey (keyID, pubkey) && !pubkey.IsCompressed ()) {
71
77
isInvalid = true ;
@@ -80,7 +86,7 @@ static isminetype IsMineInner(const CKeyStore& keystore, const CScript& scriptPu
80
86
CScriptID scriptID = CScriptID (uint160 (vSolutions[0 ]));
81
87
CScript subscript;
82
88
if (keystore.GetCScript (scriptID, subscript)) {
83
- isminetype ret = IsMineInner (keystore, subscript, isInvalid, SigVersion ::BASE);
89
+ isminetype ret = IsMineInner (keystore, subscript, isInvalid, IsMineSigVersion ::BASE);
84
90
if (ret == ISMINE_SPENDABLE || ret == ISMINE_WATCH_SOLVABLE || (ret == ISMINE_NO && isInvalid))
85
91
return ret;
86
92
}
@@ -96,7 +102,7 @@ static isminetype IsMineInner(const CKeyStore& keystore, const CScript& scriptPu
96
102
CScriptID scriptID = CScriptID (hash);
97
103
CScript subscript;
98
104
if (keystore.GetCScript (scriptID, subscript)) {
99
- isminetype ret = IsMineInner (keystore, subscript, isInvalid, SigVersion ::WITNESS_V0);
105
+ isminetype ret = IsMineInner (keystore, subscript, isInvalid, IsMineSigVersion ::WITNESS_V0);
100
106
if (ret == ISMINE_SPENDABLE || ret == ISMINE_WATCH_SOLVABLE || (ret == ISMINE_NO && isInvalid))
101
107
return ret;
102
108
}
@@ -111,7 +117,7 @@ static isminetype IsMineInner(const CKeyStore& keystore, const CScript& scriptPu
111
117
// them) enable spend-out-from-under-you attacks, especially
112
118
// in shared-wallet situations.
113
119
std::vector<valtype> keys (vSolutions.begin ()+1 , vSolutions.begin ()+vSolutions.size ()-1 );
114
- if (sigversion != SigVersion ::BASE) {
120
+ if (sigversion != IsMineSigVersion ::BASE) {
115
121
for (size_t i = 0 ; i < keys.size (); i++) {
116
122
if (keys[i].size () != 33 ) {
117
123
isInvalid = true ;
@@ -135,7 +141,7 @@ static isminetype IsMineInner(const CKeyStore& keystore, const CScript& scriptPu
135
141
136
142
isminetype IsMine (const CKeyStore& keystore, const CScript& scriptPubKey, bool & isInvalid)
137
143
{
138
- return IsMineInner (keystore, scriptPubKey, isInvalid, SigVersion ::BASE);
144
+ return IsMineInner (keystore, scriptPubKey, isInvalid, IsMineSigVersion ::BASE);
139
145
}
140
146
141
147
isminetype IsMine (const CKeyStore& keystore, const CScript& scriptPubKey)
0 commit comments