Skip to content

Commit

Permalink
sw auth should personal sign itself for wrap
Browse files Browse the repository at this point in the history
  • Loading branch information
0xFirekeeper committed Jun 13, 2024
1 parent d047915 commit 2480579
Showing 1 changed file with 24 additions and 1 deletion.
25 changes: 24 additions & 1 deletion Thirdweb/Thirdweb.Wallets/SmartWallet/SmartWallet.cs
Original file line number Diff line number Diff line change
Expand Up @@ -582,7 +582,30 @@ public async Task<string> Authenticate(
IThirdwebHttpClient httpClientOverride = null
)
{
return await _personalAccount.Authenticate(domain, chainId, authPayloadPath, authLoginPath, httpClientOverride);
var payloadURL = domain + authPayloadPath;
var loginURL = domain + authLoginPath;

var payloadBodyRaw = new { address = await GetAddress(), chainId = chainId.ToString() };
var payloadBody = JsonConvert.SerializeObject(payloadBodyRaw);

using var httpClient = httpClientOverride ?? _client.HttpClient;

var payloadContent = new StringContent(payloadBody, Encoding.UTF8, "application/json");
var payloadResponse = await httpClient.PostAsync(payloadURL, payloadContent);
_ = payloadResponse.EnsureSuccessStatusCode();
var payloadString = await payloadResponse.Content.ReadAsStringAsync();

var loginBodyRaw = JsonConvert.DeserializeObject<LoginPayload>(payloadString);
var payloadToSign = Utils.GenerateSIWE(loginBodyRaw.payload);

loginBodyRaw.signature = await PersonalSign(payloadToSign);
var loginBody = JsonConvert.SerializeObject(new { payload = loginBodyRaw });

var loginContent = new StringContent(loginBody, Encoding.UTF8, "application/json");
var loginResponse = await httpClient.PostAsync(loginURL, loginContent);
_ = loginResponse.EnsureSuccessStatusCode();
var responseString = await loginResponse.Content.ReadAsStringAsync();
return responseString;
}
}
}

0 comments on commit 2480579

Please sign in to comment.