11
11
using Newtonsoft . Json . Linq ;
12
12
using Nethereum . Hex . HexTypes ;
13
13
using Newtonsoft . Json ;
14
+ using System . Linq ;
14
15
15
16
namespace Thirdweb
16
17
{
@@ -91,8 +92,8 @@ public async Task<LoginPayload> Authenticate(string domain)
91
92
var siwe = ThirdwebManager . Instance . SDK . session . SiweSession ;
92
93
var siweMsg = new SiweMessage ( )
93
94
{
94
- Resources = new List < string > ( ) ,
95
- Uri = $ "https:// { domain } " ,
95
+ Resources = null ,
96
+ Uri = null ,
96
97
Statement = "Please ensure that the domain above matches the URL of the current website." ,
97
98
Address = await GetAddress ( ) ,
98
99
Domain = domain ,
@@ -109,25 +110,38 @@ public async Task<LoginPayload> Authenticate(string domain)
109
110
siweMsg . SetNotBefore ( DateTime . UtcNow ) ;
110
111
siweMsg = siwe . AssignNewNonce ( siweMsg ) ;
111
112
112
- var finalMsg = SiweMessageStringBuilder . BuildMessage ( siweMsg ) ;
113
+ var resourcesString = siweMsg . Resources != null ? "\n Resources:" + string . Join ( "" , siweMsg . Resources . Select ( r => $ "\n - { r } ") ) : string . Empty ;
114
+ var finalMsg =
115
+ $ "{ siweMsg . Domain } wants you to sign in with your Ethereum account:"
116
+ + $ "\n { siweMsg . Address } \n \n "
117
+ + $ "{ ( string . IsNullOrEmpty ( siweMsg . Statement ) ? "" : $ "{ siweMsg . Statement } \n ") } "
118
+ + $ "{ ( string . IsNullOrEmpty ( siweMsg . Uri ) ? "" : $ "\n URI: { siweMsg . Uri } ") } "
119
+ + $ "\n Version: { siweMsg . Version } "
120
+ + $ "\n Chain ID: { siweMsg . ChainId } "
121
+ + $ "\n Nonce: { siweMsg . Nonce } "
122
+ + $ "\n Issued At: { siweMsg . IssuedAt } "
123
+ + $ "{ ( string . IsNullOrEmpty ( siweMsg . ExpirationTime ) ? "" : $ "\n Expiration Time: { siweMsg . ExpirationTime } ") } "
124
+ + $ "{ ( string . IsNullOrEmpty ( siweMsg . NotBefore ) ? "" : $ "\n Not Before: { siweMsg . NotBefore } ") } "
125
+ + $ "{ ( string . IsNullOrEmpty ( siweMsg . RequestId ) ? "" : $ "\n Request ID: { siweMsg . RequestId } ") } "
126
+ + resourcesString ;
113
127
var signature = await Sign ( finalMsg ) ;
114
128
115
129
return new LoginPayload ( )
116
130
{
117
131
signature = signature ,
118
132
payload = new LoginPayloadData ( )
119
133
{
120
- domain = siweMsg . Domain ,
121
- address = siweMsg . Address ,
122
- statement = siweMsg . Statement ,
123
- uri = siweMsg . Uri ,
124
- version = siweMsg . Version ,
125
- chain_id = siweMsg . ChainId ,
126
- nonce = siweMsg . Nonce ,
127
- issued_at = siweMsg . IssuedAt ,
128
- expiration_time = siweMsg . ExpirationTime ,
129
- invalid_before = siweMsg . NotBefore ,
130
- resources = siweMsg . Resources ,
134
+ Domain = siweMsg . Domain ,
135
+ Address = siweMsg . Address ,
136
+ Statement = siweMsg . Statement ,
137
+ Uri = siweMsg . Uri ,
138
+ Version = siweMsg . Version ,
139
+ ChainId = siweMsg . ChainId ,
140
+ Nonce = siweMsg . Nonce ,
141
+ IssuedAt = siweMsg . IssuedAt ,
142
+ ExpirationTime = siweMsg . ExpirationTime ,
143
+ InvalidBefore = siweMsg . NotBefore ,
144
+ Resources = siweMsg . Resources ,
131
145
}
132
146
} ;
133
147
}
@@ -149,22 +163,35 @@ public async Task<string> Verify(LoginPayload payload)
149
163
var siwe = ThirdwebManager . Instance . SDK . session . SiweSession ;
150
164
var siweMessage = new SiweMessage ( )
151
165
{
152
- Domain = payload . payload . domain ,
153
- Address = payload . payload . address ,
154
- Statement = payload . payload . statement ,
155
- Uri = payload . payload . uri ,
156
- Version = payload . payload . version ,
157
- ChainId = payload . payload . chain_id ,
158
- Nonce = payload . payload . nonce ,
159
- IssuedAt = payload . payload . issued_at ,
160
- ExpirationTime = payload . payload . expiration_time ,
161
- NotBefore = payload . payload . invalid_before ,
162
- Resources = payload . payload . resources ,
166
+ Domain = payload . payload . Domain ,
167
+ Address = payload . payload . Address ,
168
+ Statement = payload . payload . Statement ,
169
+ Uri = payload . payload . Uri ,
170
+ Version = payload . payload . Version ,
171
+ ChainId = payload . payload . ChainId ,
172
+ Nonce = payload . payload . Nonce ,
173
+ IssuedAt = payload . payload . IssuedAt ,
174
+ ExpirationTime = payload . payload . ExpirationTime ,
175
+ NotBefore = payload . payload . InvalidBefore ,
176
+ Resources = payload . payload . Resources ,
163
177
RequestId = null
164
178
} ;
165
179
var signature = payload . signature ;
166
180
var validUser = await siwe . IsUserAddressRegistered ( siweMessage ) ;
167
- var msg = SiweMessageStringBuilder . BuildMessage ( siweMessage ) ;
181
+ var resourcesString = siweMessage . Resources != null ? "\n Resources:" + string . Join ( "" , siweMessage . Resources . Select ( r => $ "\n - { r } ") ) : string . Empty ;
182
+ var msg =
183
+ $ "{ siweMessage . Domain } wants you to sign in with your Ethereum account:"
184
+ + $ "\n { siweMessage . Address } \n \n "
185
+ + $ "{ ( string . IsNullOrEmpty ( siweMessage . Statement ) ? "" : $ "{ siweMessage . Statement } \n ") } "
186
+ + $ "{ ( string . IsNullOrEmpty ( siweMessage . Uri ) ? "" : $ "\n URI: { siweMessage . Uri } ") } "
187
+ + $ "\n Version: { siweMessage . Version } "
188
+ + $ "\n Chain ID: { siweMessage . ChainId } "
189
+ + $ "\n Nonce: { siweMessage . Nonce } "
190
+ + $ "\n Issued At: { siweMessage . IssuedAt } "
191
+ + $ "{ ( string . IsNullOrEmpty ( siweMessage . ExpirationTime ) ? "" : $ "\n Expiration Time: { siweMessage . ExpirationTime } ") } "
192
+ + $ "{ ( string . IsNullOrEmpty ( siweMessage . NotBefore ) ? "" : $ "\n Not Before: { siweMessage . NotBefore } ") } "
193
+ + $ "{ ( string . IsNullOrEmpty ( siweMessage . RequestId ) ? "" : $ "\n Request ID: { siweMessage . RequestId } ") } "
194
+ + resourcesString ;
168
195
if ( validUser )
169
196
{
170
197
string recoveredAddress = await RecoverAddress ( msg , signature ) ;
0 commit comments