Get list of certificates from the certificate store in C#

后端 未结 4 1499
情歌与酒
情歌与酒 2020-11-29 03:57

For a secure application I need to select a certificate in a dialog. How can I access certificate store or a part of it (e.g. storeLocation=\"Local Machine\" an

相关标签:
4条回答
  • 2020-11-29 04:25

    Yes -- the X509Store.Certificates property returns a snapshot of the X.509 certificate store.

    0 讨论(0)
  • 2020-11-29 04:28

    Try this:

    //using System.Security.Cryptography.X509Certificates;
    public static X509Certificate2 selectCert(StoreName store, StoreLocation location, string windowTitle, string windowMsg)
    {
    
        X509Certificate2 certSelected = null;
        X509Store x509Store = new X509Store(store, location);
        x509Store.Open(OpenFlags.ReadOnly);
    
        X509Certificate2Collection col = x509Store.Certificates;
        X509Certificate2Collection sel = X509Certificate2UI.SelectFromCollection(col, windowTitle, windowMsg, X509SelectionFlag.SingleSelection);
    
        if (sel.Count > 0)
        {
            X509Certificate2Enumerator en = sel.GetEnumerator();
            en.MoveNext();
            certSelected = en.Current;
        }
    
        x509Store.Close();
    
        return certSelected;
    }
    
    0 讨论(0)
  • 2020-11-29 04:38
    X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
    
    store.Open(OpenFlags.ReadOnly);
    
    foreach (X509Certificate2 certificate in store.Certificates){
        //TODO's
    }
    
    0 讨论(0)
  • 2020-11-29 04:41

    The simplest way to do that is by opening the certificate store you want and then using X509Certificate2UI.

    var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
    store.Open(OpenFlags.ReadOnly);
    var selectedCertificate = X509Certificate2UI.SelectFromCollection(
        store.Certificates, 
        "Title", 
        "MSG", 
        X509SelectionFlag.SingleSelection);
    

    More information in X509Certificate2UI on MSDN.

    0 讨论(0)
提交回复
热议问题