示例#1
0
 public override int GetHashCode()
 {
     unchecked {
         return(((FIO != null ? FIO.GetHashCode() : 0) * 397) ^
                (Pseudonym != null ? Pseudonym.GetHashCode() : 0));
     }
 }
        /**
         * Get an encrypted pseudonym for a user from the database.
         * @param user the User ID to get a encrypted pseudonym for.
         * @param sp the SP ID to get a encrypted pseudonym for.
         * @return The encrypted pseudonym for the specified user and SP, or null if no encrypted pseudonym was found in the database.
         */
        public Pseudonym GetEncrypted(string user, string sp)
        {
            var pseudonyms = from ep in db.EncryptedPseudonyms
                             where ep.user == user && ep.sp == sp
                             select Pseudonym.Decode(ep.pseudonym);

            return(pseudonyms.FirstOrDefault());
        }
        /**
         * Get a polymorphic pseudonym for a user from the database.
         * @param user the User ID to get a polymorphic pseudonym for.
         * @return The polymorphic pseudonym for the specified user, or null if no polymorphic pseudonym was found in the database.
         */
        public Pseudonym GetPolymorphic(string user)
        {
            var pseudonyms = from p in db.PolymorphicPseudonyms
                             where p.user == user
                             select Pseudonym.Decode(p.pseudonym);

            return(pseudonyms.FirstOrDefault());
        }
示例#4
0
        /**
         * Get an encrypted pseudonym asynchronously.
         * @param pp The polymorphic pseudonym to get an encrypted pseudonym for.
         * @param sp The SP ID to get an encrypted pseudonym for.
         * @return A task that will result in the Encrypted Pseudonym.
         */
        public async Task <Pseudonym> GetEPAsync(Pseudonym pp, string sp)
        {
            HttpClient          client  = new HttpClient();
            HttpResponseMessage message = await client.GetAsync(string.Format(url,
                                                                              WebUtility.UrlEncode(pp.Encode()), WebUtility.UrlEncode(sp)));

            string epString = await message.Content.ReadAsStringAsync();

            return(Pseudonym.Decode(epString));
        }
        /**
         * Store a polymorphic pseudonym in the database.
         * @param user The User ID to store the polymorphic pseudonym for.
         * @param pp The polymorphic pseudonym to store.
         */
        public void AddPolymorphic(string user, Pseudonym pp)
        {
            PolymorphicPseudonym pseudonym = new PolymorphicPseudonym();

            pseudonym.user      = user;
            pseudonym.pseudonym = pp.Encode();
            pseudonym.id        = System.Guid.NewGuid();
            db.PolymorphicPseudonyms.InsertOnSubmit(pseudonym);
            db.SubmitChanges();
        }
示例#6
0
        /**
         * Execute the <code>randomize</code> query
         * @return 2D array <code>result</code> with <code>result[0][0]</code> being the encoded randomized pseudonym.
         */
        public string[][] Randomize()
        {
            string[] oneResult = new string[1];

            Pseudonym pseudonym = Pseudonym.Decode(parameters[0]);

            pseudonym    = pseudonym.Randomize();
            oneResult[0] = pseudonym.Encode();

            return(new string[][] { oneResult });
        }
        /**
         * Store a encrypted pseudonym in the database.
         * @param user The User ID to store the encrypted pseudonym for.
         * @param sp the SP ID to store the encrypted pseudonym for.
         * @param ep The encrypted pseudonym to store.
         */
        public void AddEncrypted(string user, string sp, Pseudonym ep)
        {
            EncryptedPseudonym pseudonym = new EncryptedPseudonym();

            pseudonym.user      = user;
            pseudonym.sp        = sp;
            pseudonym.pseudonym = ep.Encode();
            pseudonym.id        = System.Guid.NewGuid();
            db.EncryptedPseudonyms.InsertOnSubmit(pseudonym);
            db.SubmitChanges();
        }
示例#8
0
        /**
         * Execute the <code>getEP</code> query
         * @return 2D array <code>result</code> with <code>result[0][0]</code> being the encoded encrypted pseudonym.
         */
        public string[][] GetEP()
        {
            Pseudonym ep = db.GetEncrypted(parameters[INDEX_UID], parameters[INDEX_SP]);

            if (ep == null)
            {
                Pseudonym pp = GetPolymorphicPseudonym();
                ep = pseudonymProvider.GetEPAsync(pp, parameters[INDEX_SP]).Result;
                db.AddEncrypted(parameters[INDEX_UID], parameters[INDEX_SP], ep);
            }
            return(new string[][] { new string[] { ep.Encode() } });
        }
示例#9
0
        /**
         * Get a polymorphic pseudonym from the database, or create one if it does not yet exist.
         * @param return The polymorphic pseudonym for the User ID in parameters[0]
         */
        private Pseudonym GetPolymorphicPseudonym()
        {
            Pseudonym pp = db.GetPolymorphic(parameters[INDEX_UID]);

            if (pp == null)
            {
                IdP idp = new IdP(SystemParams.Curve.DecodePoint(Convert.FromBase64String(y_k)));
                pp = idp.GeneratePolymorphicPseudonym(parameters[INDEX_UID]);
                db.AddPolymorphic(parameters[INDEX_UID], pp);
            }

            return(pp);
        }