Beispiel #1
0
        private static GSObject GenerateIdentity(GSObject identity)
        {
            identity.Put("providerUID", GenerateString(20));
            identity.Put("nickname", GenerateString(20));
            identity.Put("firstName", GenerateString(8));
            identity.Put("lastName", GenerateString(10));
            identity.Put("email", "user_"+GenerateString(16)+ "@" + GenerateString(6) + ".com");
            identity.Put("address", GenerateString(30));
            GSObject phone = new GSObject();
            GSArray phones = new GSArray();
            phone.Put("type", "mobile");
            phone.Put("number", GenerateString(9));
            phones.Add(phone);
            phone = new GSObject();
            phone.Put("type", "home");
            phone.Put("number", GenerateString(9));
            phones.Add(phone);
            phone = new GSObject();
            phone.Put("type", "work");
            phone.Put("number", GenerateString(9));
            phones.Add(phone);

            identity.Put("phones", phones);

            return identity;
        }
Beispiel #2
0
        private void verifyResponseSignature(GSResponse res, string format)
        {
            if (!format.Equals("xml", StringComparison.InvariantCultureIgnoreCase))
            {
                GSObject data = res.GetData();
                if (null != data)
                {
                    if (cbMethods.Text.IndexOf("getUserInfo", StringComparison.InvariantCultureIgnoreCase) > -1)
                    {
                        string uid          = data.GetString("UID", "");
                        string uidSig       = data.GetString("UIDSignature", "");
                        string sigTimestamp = data.GetString("signatureTimestamp", "");
                        if (SigUtils.ValidateUserSignature(uid, sigTimestamp, txtSecKey.Text, uidSig))
                        {
                            lblVerifiedSig.Text      = "Signature is verified";
                            lblVerifiedSig.ForeColor = Color.Green;
                        }
                        else
                        {
                            lblVerifiedSig.Text      = "Invalid signature !!!";
                            lblVerifiedSig.ForeColor = Color.Red;
                        }
                    }


                    if (cbMethods.Text.IndexOf("getFriendsInfo", StringComparison.InvariantCultureIgnoreCase) > -1)
                    {
                        GSArray friends = data.GetArray("friends");
                        if (null != friends && friends.Length > 0)
                        {
                            GSObject firstFriend = friends.GetObject(0);
                            string   friendSig   = firstFriend.GetString("friendshipSignature");
                            string   tsSig       = firstFriend.GetString("signatureTimestamp");
                            string   friendUID   = firstFriend.GetString("UID");
                            if (SigUtils.ValidateFriendSignature(txtUID.Text, tsSig, friendUID, txtSecKey.Text, friendSig))
                            {
                                lblVerifiedSig.Text      = "1ST friend's signature is verified";
                                lblVerifiedSig.ForeColor = Color.Green;
                            }
                            else
                            {
                                lblVerifiedSig.Text      = "Invalid signature (1ST friend's) !!!";
                                lblVerifiedSig.ForeColor = Color.Red;
                            }
                        }
                    }
                }
            }
        }
Beispiel #3
0
        private static GSArray modifyIdentities(GSArray identitiesCollection)
        {
            GSArray array = new GSArray();
            foreach (GSArray identitiesArray in identitiesCollection)
            {
                GSArray tempArray = new GSArray();
                foreach (GSObject identity in identitiesArray)
                {
                    GSObject tempObject = GenerateIdentity(identity);
                    tempArray.Add(tempObject);
                }
                array.Add(tempArray);
            }

            return array;
        }
Beispiel #4
0
        private static GSArray ReadFromFileRetrieveIdentities(string filename)
        {
            string line;
            GSArray array = new GSArray();
            StreamReader file = new StreamReader(filename);
            while ((line = file.ReadLine()) != null)
            {
                try
                {
                    GSObject temp = new GSObject(line);
                    GSArray tempArray = temp.GetArray("identities", new GSArray());
                    if (tempArray != null)
                        array.Add(tempArray);

                }
                catch { throw new GSException("incorrect input string"); }

            }
            file.Close();
            return array;
        }
Beispiel #5
0
        /// <summary>
        /// Fetch available public key representation validated by the "kid".
        /// </summary>
        /// <param name="kid">The keyId</param>
        /// <param name="apiDomain">The api domain jwt was obtained, for example us1.gigya.com</param>
        internal static string FetchPublicKey(string kid, string apiDomain)
        {
            var resourceUri = $"https://accounts.{apiDomain}/accounts.getJWTPublicKey?V2=true";
            var request     = (HttpWebRequest)WebRequest.Create(resourceUri);

            request.Timeout = 30_000;
            request.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;
            request.Method    = "GET";
            request.KeepAlive = false;
            request.ServicePoint.Expect100Continue = false;

            GSResponse response;

            using (var webResponse = (HttpWebResponse)request.GetResponse())
                using (var sr = new StreamReader(webResponse.GetResponseStream(), Encoding.UTF8))
                    response = new GSResponse(method: request.Method, responseText: sr.ReadToEnd(), logSoFar: null);

            if (response.GetErrorCode() == 0)
            {
                GSArray keys = response.GetArray("keys", null);

                if (keys == null || keys.Length == 0)
                {
                    return(null); // Failed to obtain JWK from response data OR data is empty
                }
                foreach (object key in keys)
                {
                    if (key is GSObject)
                    {
                        string jwtKid = ((GSObject)key).GetString("kid", null);
                        if (jwtKid != null && jwtKid == kid)
                        {
                            return(((GSObject)key).ToJsonString());
                        }
                    }
                }
            }

            return(null);
        }
Beispiel #6
0
        static void TestGSObjectAndGSArray()
        {
            // Test object
            string   st1   = "{'key1': 1.1, 'item1':'ITEM1', 'key2': {'item4':'ITEM4'}, 'array1':[1.3,'hello',{'item2':'ITEM2'},[11,12],[{'item3':'ITEM3'}]]}";
            GSObject gsObj = new GSObject(st1);

            st1 = gsObj.ToString();


            // Test array
            string  st2   = "[1, 1.2, 'hello', true, null, {}, {'key1':'val1'}, [11, 22, 33, 33.3, false, null, {}, {'key2':'val2', 'key3':[111,222,333]}]]";
            GSArray gsArr = new GSArray(st2);

            st2 = gsArr.ToString();

            // Test extracting values from object
            object y = gsObj.GetArray("array1").GetArray(4).GetObject(0);

            foreach (var item in gsObj.GetArray("array1"))
            {
                object x = item.ToString();
            }
        }
Beispiel #7
0
 private static void insertIdentities(string userKey, string userSecretKey, string apiKey, int quantity, GSArray identitiesCollection)
 {
 }