Пример #1
0
        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));
        }
Пример #2
0
        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);
        }
Пример #3
0
        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}");
        }
Пример #4
0
        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();
        }