/// <summary> /// Private Key Convert Pkcs8->xml /// </summary> /// <param name="privateKey"></param> /// <returns></returns> public static string PrivateKeyPkcs8ToXml(string privateKey) { privateKey = RsaPemFormatHelper.Pkcs8PrivateKeyFormatRemove(privateKey); RsaPrivateCrtKeyParameters privateKeyParam = (RsaPrivateCrtKeyParameters)PrivateKeyFactory.CreateKey(Convert.FromBase64String(privateKey)); XElement privatElement = new XElement("RSAKeyValue"); //Modulus XElement primodulus = new XElement("Modulus", Convert.ToBase64String(privateKeyParam.Modulus.ToByteArrayUnsigned())); //Exponent XElement priexponent = new XElement("Exponent", Convert.ToBase64String(privateKeyParam.PublicExponent.ToByteArrayUnsigned())); //P XElement prip = new XElement("P", Convert.ToBase64String(privateKeyParam.P.ToByteArrayUnsigned())); //Q XElement priq = new XElement("Q", Convert.ToBase64String(privateKeyParam.Q.ToByteArrayUnsigned())); //DP XElement pridp = new XElement("DP", Convert.ToBase64String(privateKeyParam.DP.ToByteArrayUnsigned())); //DQ XElement pridq = new XElement("DQ", Convert.ToBase64String(privateKeyParam.DQ.ToByteArrayUnsigned())); //InverseQ XElement priinverseQ = new XElement("InverseQ", Convert.ToBase64String(privateKeyParam.QInv.ToByteArrayUnsigned())); //D XElement prid = new XElement("D", Convert.ToBase64String(privateKeyParam.Exponent.ToByteArrayUnsigned())); privatElement.Add(primodulus); privatElement.Add(priexponent); privatElement.Add(prip); privatElement.Add(priq); privatElement.Add(pridp); privatElement.Add(pridq); privatElement.Add(priinverseQ); privatElement.Add(prid); return(privatElement.ToString()); }
/// <summary> /// Create an RSA parameter based on the xml format private key /// </summary> /// <param name="privateKey"></param> /// <returns></returns> protected sealed override RSAParameters CreateRsapFromPrivateKey(string privateKey) { privateKey = RsaPemFormatHelper.Pkcs8PrivateKeyFormatRemove(privateKey); RsaPrivateCrtKeyParameters privateKeyParam = (RsaPrivateCrtKeyParameters)PrivateKeyFactory.CreateKey(Convert.FromBase64String(privateKey)); var rsap = new RSAParameters(); rsap.Modulus = privateKeyParam.Modulus.ToByteArrayUnsigned(); rsap.Exponent = privateKeyParam.PublicExponent.ToByteArrayUnsigned(); rsap.P = privateKeyParam.P.ToByteArrayUnsigned(); rsap.Q = privateKeyParam.Q.ToByteArrayUnsigned(); rsap.DP = privateKeyParam.DP.ToByteArrayUnsigned(); rsap.DQ = privateKeyParam.DQ.ToByteArrayUnsigned(); rsap.InverseQ = privateKeyParam.QInv.ToByteArrayUnsigned(); rsap.D = privateKeyParam.Exponent.ToByteArrayUnsigned(); return(rsap); }