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); }
//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); } }
//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); } }