У меня есть файл .p7b с несколькими сертификатами, и я хочу установить их в магазине "Enterprise Trust". Программа, которую я хочу использовать, ожидает ее там.
У меня есть код для записи в c #, который извлекает все сертификаты из файла и устанавливает их в X509Store ("Storename.My"), который работает.
Если я пытаюсь использовать тот же код для записи в другое хранилище, оно (которое уже существует) создает новое пустое хранилище и записывает туда.
StoreName.My взято из system.Security.Cryptography.X509Certificates public enum StoreName, но для хранилища «Доверие предприятия» опция отсутствует.
Поэтому я попытался использовать конструктор, в котором я могу указать StoreName в виде строки.
Я использую certmgr из windows, чтобы проверить, какие сертификаты хранятся в каких магазинах.
// open file
var certificateStore = new CmsSignedData(new
FileStream(_tempFileName.ToString(), FileMode.Open));
// get all certificats
IX509Store x509Certs = certificateStore.GetCertificates("Collection");
var a = new ArrayList(x509Certs.GetMatches(null));
// this works
var store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
// this doesnt work
// var store = new X509Store("Enterprise Trust", StoreLocation.CurrentUser);
// open store
store.Open(OpenFlags.ReadWrite);
// write in store
foreach (object o in a) {
var cert = (Org.BouncyCastle.X509.X509Certificate)o;
var cert509 = new X509Certificate2();
cert509.Import(cert.GetEncoded());
store.Add(cert509);
}
store.Close();
Как правильно написать в хранилище, которое не является перечислением StoreName?