public void TestAuth() { var(privateRSAParameters, publicRSAParameters) = GenerateRSAKey(); TestAddUser("adam", publicRSAParameters); var signedData = new SignedData { Content = Encoding.UTF8.GetBytes(DateTimeOffset.UtcNow.ToUnixTimeSeconds().ToString()), PublicKey = publicRSAParameters }; signedData.GenerateSignedData(privateRSAParameters); Assert.AreEqual(HttpStatusCode.OK, TestAuthSendRequest(signedData)); signedData.Content = Encoding.UTF8.GetBytes((DateTimeOffset.UtcNow.ToUnixTimeSeconds() + 40).ToString()); signedData.GenerateSignedData(privateRSAParameters); Assert.AreEqual(HttpStatusCode.OK, TestAuthSendRequest(signedData)); var badSignedData = (SignedData)signedData.Clone(); badSignedData.SHA256Hash[0] = 0; Assert.AreEqual(HttpStatusCode.Unauthorized, TestAuthSendRequest(badSignedData)); badSignedData = (SignedData)signedData.Clone(); badSignedData.Signature[0] = 0; Assert.AreEqual(HttpStatusCode.Unauthorized, TestAuthSendRequest(badSignedData)); badSignedData = (SignedData)signedData.Clone(); badSignedData.PublicKey.Modulus[0] = 0; Assert.AreEqual(HttpStatusCode.Unauthorized, TestAuthSendRequest(badSignedData)); }
public void TestAddUserToGroup() { var(privateRSAParameters, publicRSAParameters) = GenerateRSAKey(); TestAddUser("adam", publicRSAParameters); var signedData = new SignedData { Content = Encoding.UTF8.GetBytes(DateTimeOffset.UtcNow.ToUnixTimeSeconds().ToString()), PublicKey = publicRSAParameters }; signedData.GenerateSignedData(privateRSAParameters); var authData = Convert.ToBase64String(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(signedData))); var request = new HttpRequestMessage(HttpMethod.Post, EndPoint + "api/group"); request.Headers.Add("Authorization", $"Bearer {authData}"); request.Content = new StringContent(JsonConvert.SerializeObject(new Group { GroupName = "test" }), Encoding.UTF8, "application/json"); var response = HttpClient.SendAsync(request).Result; response.EnsureSuccessStatusCode(); var group = JsonConvert.DeserializeObject <Group>(response.Content.ReadAsStringAsync().Result); request = new HttpRequestMessage(HttpMethod.Get, EndPoint + "api/invite/create/" + group.GroupId); request.Headers.Add("Authorization", $"Bearer {authData}"); response = HttpClient.SendAsync(request).Result; response.EnsureSuccessStatusCode(); var inviteLink = JsonConvert.DeserializeObject <GroupInviteLink>(response.Content.ReadAsStringAsync().Result); var(privateRSAParameters2, publicRSAParameters2) = GenerateRSAKey(); TestAddUser("charles", publicRSAParameters2); signedData = new SignedData { Content = Encoding.UTF8.GetBytes(DateTimeOffset.UtcNow.ToUnixTimeSeconds().ToString()), PublicKey = publicRSAParameters2 }; signedData.GenerateSignedData(privateRSAParameters2); authData = Convert.ToBase64String(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(signedData))); request = new HttpRequestMessage(HttpMethod.Get, EndPoint + $"api/invite/enter/{inviteLink.GroupInviteLinkId}/{inviteLink.InviteCode}"); request.Headers.Add("Authorization", $"Bearer {authData}"); response = HttpClient.SendAsync(request).Result; response.EnsureSuccessStatusCode(); var inviteLink2 = JsonConvert.DeserializeObject <GroupInviteLink>(response.Content.ReadAsStringAsync().Result); Assert.AreEqual(group.GroupId, inviteLink2.GroupId); request = new HttpRequestMessage(HttpMethod.Get, EndPoint + $"api/group/1"); request.Headers.Add("Authorization", $"Bearer {authData}"); response = HttpClient.SendAsync(request).Result; Console.WriteLine(response.Content.ReadAsStringAsync().Result); }
protected virtual void GenerateAuth(HttpRequestMessage httpRequest) { var signedData = new SignedData { Content = Encoding.UTF8.GetBytes(DateTimeOffset.UtcNow.ToUnixTimeSeconds().ToString()), PublicKey = PrivateKey.ToPublicKey() }; signedData.GenerateSignedData(PrivateKey); var authData = Convert.ToBase64String(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(signedData))); httpRequest.Headers.Add("Authorization", $"Bearer {authData}"); }
public void TestAddGroup() { var(privateRSAParameters, publicRSAParameters) = GenerateRSAKey(); TestAddUser("adam", publicRSAParameters); var signedData = new SignedData { Content = Encoding.UTF8.GetBytes(DateTimeOffset.UtcNow.ToUnixTimeSeconds().ToString()), PublicKey = publicRSAParameters }; signedData.GenerateSignedData(privateRSAParameters); var authData = Convert.ToBase64String(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(signedData))); var request = new HttpRequestMessage(HttpMethod.Post, EndPoint + "api/group"); request.Headers.Add("Authorization", $"Bearer {authData}"); request.Content = new StringContent(JsonConvert.SerializeObject(new Group { GroupName = "test" }), Encoding.UTF8, "application/json"); var response = HttpClient.SendAsync(request).Result; response.EnsureSuccessStatusCode(); }