public static string CanonicalizeKey(string someKeyXml)
        {
            SimpleRSAPubKey newKey = new SimpleRSAPubKey();

            newKey.exponent = SimpleRSAPubKey.GetExponent(someKeyXml);
            newKey.modulus  = SimpleRSAPubKey.GetModulus(someKeyXml);
            return(newKey.ToString());
        }
        private static void GetKeyIdentifiers(X509Certificate2 certificate,
                                              out string kiCAPI,
                                              out string kiThumbprintSHA1,
                                              out string kiRFC3280,
                                              out string kiIssuerSerial,
                                              out bool onlyIssuerSerialIsDefined,
                                              out SimpleRSAPubKey publicKey)
        {
            const string SubjectKeyIdentifierOID           = "2.5.29.14";
            X509SubjectKeyIdentifierExtension extensionSKI =
                certificate.Extensions[SubjectKeyIdentifierOID] as X509SubjectKeyIdentifierExtension;

            onlyIssuerSerialIsDefined = extensionSKI != null;

            if (onlyIssuerSerialIsDefined)
            {
                kiIssuerSerial = ASNDecode(extensionSKI.RawData);

                kiCAPI           = kiIssuerSerial;
                kiThumbprintSHA1 = kiIssuerSerial;
                kiRFC3280        = kiIssuerSerial;
            }
            else
            {
                kiIssuerSerial = String.Empty;

                PublicKey pk = certificate.PublicKey;

                X509SubjectKeyIdentifierExtension extensionCAPI = new
                                                                  X509SubjectKeyIdentifierExtension(pk,
                                                                                                    X509SubjectKeyIdentifierHashAlgorithm.CapiSha1, false);

                X509SubjectKeyIdentifierExtension extensionRfc3280 = new
                                                                     X509SubjectKeyIdentifierExtension(pk,
                                                                                                       X509SubjectKeyIdentifierHashAlgorithm.ShortSha1, false);

                kiCAPI           = ASNDecode(extensionCAPI.RawData);
                kiThumbprintSHA1 = Convert.ToBase64String(certificate.GetCertHash());
                kiRFC3280        = ASNDecode(extensionRfc3280.RawData);
            }

            publicKey = new SimpleRSAPubKey(certificate);
        }