/// <summary>
        /// Convert RSA Public Key from PEM to XML format
        /// </summary>
        /// <param name="publicKey">Public Key</param>
        /// <returns></returns>
        public static string PublicKeyPemToXml(string publicKey)
        {
            publicKey = RsaPemFormatHelper.PublicKeyFormat(publicKey);

            PemReader pr = new PemReader(new StringReader(publicKey));

            object obj = pr.ReadObject();

            if (!(obj is RsaKeyParameters rsaKey))
            {
                throw new Exception("Public key format is incorrect");
            }

            XElement publicElement = new XElement("RSAKeyValue");

            XElement pubmodulus = new XElement("Modulus", Convert.ToBase64String(rsaKey.Modulus.ToByteArrayUnsigned()));

            XElement pubexponent = new XElement("Exponent", Convert.ToBase64String(rsaKey.Exponent.ToByteArrayUnsigned()));

            publicElement.Add(pubmodulus);

            publicElement.Add(pubexponent);

            return(publicElement.ToString());
        }
Beispiel #2
0
        /// <summary>
        /// Create an RSA parameter based on XML format public key
        /// </summary>
        /// <param name="publicKey"></param>
        /// <returns>RSAParameters</returns>
        protected sealed override RSAParameters CreateRsapFromPublicKey(string publicKey)
        {
            publicKey = RsaPemFormatHelper.PublicKeyFormat(publicKey);

            PemReader pr = new PemReader(new StringReader(publicKey));

            object obj = pr.ReadObject();

            if (!(obj is RsaKeyParameters rsaKey))
            {
                throw new Exception("Public key format is incorrect");
            }

            RSAParameters rsap = new RSAParameters();

            rsap.Modulus = rsaKey.Modulus.ToByteArrayUnsigned();

            rsap.Exponent = rsaKey.Exponent.ToByteArrayUnsigned();

            return(rsap);
        }