public static SERVER_CLIENT_RSA_KEYS SERVER_CLIENT_RSA_PAIR()
        {
            SERVER_CLIENT_RSA_KEYS obj = new SERVER_CLIENT_RSA_KEYS();

            obj.CLIENT_PRIVATE_KEY = RSA_MODULE.client_side_private_key_generator();
            obj.CLIENT_PUBLIC_KEY  = RSA_MODULE.client_side_public_key_generator();
            obj.SESSION_KEY        = EDITIONAL_METHODS.unique_code_generator(16);
            return(obj);
        }
Пример #2
0
        //Token generation Method
        public static dynamic generate_token()
        {
            try
            {
                //Initializing Response Dictionary for returning token in json format with required parameters
                Dictionary <string, string> Response_Dictionary = new Dictionary <string, string>();
                //creating dynamic object
                dynamic objdata = new ExpandoObject();
                //adding issuing time
                objdata.issued_time = DateTime.UtcNow;
                //adding expiry time
                objdata.expiry_time = TOKEN_MODULE.generate_expiry_time();
                //adding unique number for distinct token generation
                objdata.unique_number = EDITIONAL_METHODS.unique_code_generator(16);
                //adding issuer who issuing this token
                objdata.issuer = get_issuer();
                //adding audience who can use this token
                objdata.audience = get_audience();
                //adding roles who can access using this token
                List <string> value = get_user_roles();
                objdata.roles = value;
                //serializing dynamic object into json string
                string token_data = JsonConvert.SerializeObject(objdata);
                //encrypt token json string using AES encryption
                string encrypted_value = AES_MODULE.AES_ENCRYPTION_DATA(token_data, CORE_MODULE.TOKEN_AES_KEY, CORE_MODULE.TOKEN_AES_IV);
                //adding generated token as access_token key pair value
                CORE_MODULE.Response_Dictionary.Add("access_token", encrypted_value);
                foreach (KeyValuePair <string, string> key_pair in CORE_MODULE.Response_Dictionary)
                {
                    Response_Dictionary.Add(key_pair.Key, key_pair.Value);
                }

                //clearing parameters
                CORE_MODULE.Response_Dictionary.Clear();
                CORE_MODULE.roles.Clear();

                return(Response_Dictionary);
            }
            catch (Exception ex)
            {
                throw new HttpResponseException(HttpStatusCode.BadRequest);
            }
        }
Пример #3
0
        //INITIALIZATION OF ALL METHODS
        public static void Initialize(int KEY_LENGTH, string Audience = "", string Issuer = "")
        {
            //INITIALIZING KEY LENGTH
            CORE_MODULE.KEY_LENGTH = KEY_LENGTH;

            //GETTING PRIVATE KEY GENERATION FOR CLIENT SIDE PUBLIC KEY AND SERVER SIDE PRIVATE KEY
            string RSA_SERVER_parameters = RSA_MODULE.server_side_random_private_key_generator();

            //CREATION OF XML INSTANCE
            XmlDocument server_xml_doc = new XmlDocument();

            //LOADING STRING INTO XML
            server_xml_doc.LoadXml(RSA_SERVER_parameters);
            //SERILIZING XML DATA INTO JSON FORMAT
            string server_jsosn_text = JsonConvert.SerializeXmlNode(server_xml_doc);
            //deserialization of data using model
            RSA_Conversion_Model server_obj = JsonConvert.DeserializeObject <RSA_Conversion_Model>(server_jsosn_text);

            //setting parameters into server rsa parameter variables
            SERVER_EXPONENT  = server_obj.RSAParameters.Exponent;
            SERVER_MODULES   = server_obj.RSAParameters.Modulus;
            SERVER_P         = server_obj.RSAParameters.P;
            SERVER_Q         = server_obj.RSAParameters.Q;
            SERVER_D         = server_obj.RSAParameters.D;
            SERVER_DP        = server_obj.RSAParameters.DP;
            SERVER_DQ        = server_obj.RSAParameters.DQ;
            SERVER_INVERSE_Q = server_obj.RSAParameters.InverseQ;


            //GETTING PRIVATE KEY GENERATION FOR SERVER SIDE PUBLIC KEY AND CLIENT SIDE PRIVATE KEY
            string RSA_CLIENT_parameters = RSA_MODULE.server_side_random_private_key_generator();
            //CREATION OF XML INSTANCE
            XmlDocument client_xml_doc = new XmlDocument();

            //LOADING STRING INTO XML
            client_xml_doc.LoadXml(RSA_CLIENT_parameters);
            //SERILIZING XML DATA INTO JSON FORMAT
            string client_jsosn_text        = JsonConvert.SerializeXmlNode(client_xml_doc);
            RSA_Conversion_Model client_obj = JsonConvert.DeserializeObject <RSA_Conversion_Model>(client_jsosn_text);

            //setting parameters into client rsa parameter variables
            CLIENT_EXPONENT  = client_obj.RSAParameters.Exponent;
            CLIENT_MODULES   = client_obj.RSAParameters.Modulus;
            CLIENT_P         = client_obj.RSAParameters.P;
            CLIENT_Q         = client_obj.RSAParameters.Q;
            CLIENT_D         = client_obj.RSAParameters.D;
            CLIENT_DP        = client_obj.RSAParameters.DP;
            CLIENT_DQ        = client_obj.RSAParameters.DQ;
            CLIENT_INVERSE_Q = client_obj.RSAParameters.InverseQ;

            //Unique number assigning as a key for AES_KEY and IV values of both SERVER SIDE AES and TOKEN Generation
            SERVER_SIDE_AES_KEY = EDITIONAL_METHODS.unique_code_generator(16);
            SERVER_SIDE_AES_IV  = EDITIONAL_METHODS.unique_code_generator(16);

            TOKEN_AES_KEY = EDITIONAL_METHODS.unique_code_generator(16);
            TOKEN_AES_IV  = EDITIONAL_METHODS.unique_code_generator(16);

            try
            {
                //Adding add responses to final response and assigning values
                Response_Dictionary = new Dictionary <string, string>();
                roles          = new List <string>();
                token_issuer   = Issuer;
                token_audience = Audience;
            }
            catch (Exception ex)
            {
                throw new HttpResponseException(HttpStatusCode.BadRequest);
            }
        }