1111using Newtonsoft . Json . Linq ;
1212using Nethereum . Hex . HexTypes ;
1313using Newtonsoft . Json ;
14+ using System . Linq ;
1415
1516namespace Thirdweb
1617{
@@ -91,8 +92,8 @@ public async Task<LoginPayload> Authenticate(string domain)
9192 var siwe = ThirdwebManager . Instance . SDK . session . SiweSession ;
9293 var siweMsg = new SiweMessage ( )
9394 {
94- Resources = new List < string > ( ) ,
95- Uri = $ "https:// { domain } " ,
95+ Resources = null ,
96+ Uri = null ,
9697 Statement = "Please ensure that the domain above matches the URL of the current website." ,
9798 Address = await GetAddress ( ) ,
9899 Domain = domain ,
@@ -109,25 +110,38 @@ public async Task<LoginPayload> Authenticate(string domain)
109110 siweMsg . SetNotBefore ( DateTime . UtcNow ) ;
110111 siweMsg = siwe . AssignNewNonce ( siweMsg ) ;
111112
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 ;
113127 var signature = await Sign ( finalMsg ) ;
114128
115129 return new LoginPayload ( )
116130 {
117131 signature = signature ,
118132 payload = new LoginPayloadData ( )
119133 {
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 ,
131145 }
132146 } ;
133147 }
@@ -149,22 +163,35 @@ public async Task<string> Verify(LoginPayload payload)
149163 var siwe = ThirdwebManager . Instance . SDK . session . SiweSession ;
150164 var siweMessage = new SiweMessage ( )
151165 {
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 ,
163177 RequestId = null
164178 } ;
165179 var signature = payload . signature ;
166180 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 ;
168195 if ( validUser )
169196 {
170197 string recoveredAddress = await RecoverAddress ( msg , signature ) ;
0 commit comments