2015-04-28 2 views
0

Я хотел бы получить доступ к хранилищу сертификатов своего приложения из другого приложения. Я уже включил "sharedusercertificates" в файле package.appmanifest.Как получить доступ к хранилищу сертификатов приложений в Windows Phone 8.1 Приложение Runtime

Windows.Storage.StorageFile selectedCertFile = await folder.GetFileAsync(fileName); 
IBuffer buffer = await FileIO.ReadBufferAsync(selectedCertFile); 

string certificateData = CryptographicBuffer.EncodeToBase64String(buffer); 
string password = "password"; 

await CertificateEnrollmentManager.ImportPfxDataAsync(
certificateData, 
password, 
ExportOption.NotExportable, 
KeyProtectionLevel.ConsentWithPassword, 
InstallOptions.None, 
selectedCertFile.DisplayName); 

В моем приложении, я могу перечислить установленные сертификаты без проблем:

protected override void OnNavigatedTo(NavigationEventArgs e) 
{ 
    var task = CertificateStores.FindAllAsync(); 
    task.AsTask().Wait(); 
    var certlist = task.GetResults(); 
    Debug.WriteLine("Cert count: {0}", certlist.Count); 
    LoadCertList(certlist); 
} 

private void LoadCertList(IReadOnlyList<Certificate> certificateList) 
{ 
    listbox1.Items.Clear(); 

    foreach (Certificate cert in certificateList) 
    { 
     listbox1.Items.Add(cert.Subject); 
    } 
} 

Если я пытаюсь получить доступ к тем из другого приложения, оно не будет в списке. В настройках почтового клиента Windows Phones 8.1 установлен установленный сертификат. В списке указаны сертификаты, которые были установлены регулярно, а не программно.

Есть ли способ установить мои сертификаты в хранилище сертификатов системы? Поэтому его можно использовать в других приложениях.

Я искал в Интернете уже несколько дней, но не нашел решения.

В связи с этим это должно быть возможно.

«Возможность sharedUserCertificates предоставляет приложение контейнер доступа к сертификатам и ключам, содержащийся во всех магазинах пользователей и смарт-карте Trusted Roots магазине читать.» https://msdn.microsoft.com/en-us/library/windows/apps/hh465025.aspx

ли я что-то пропустил? Помощь будет высоко оценена.

Dino

ответ

0

Если вы хотите сертификат, чтобы быть доступным для других приложений, вам нужно зарегистрировать его с помощью CertificateEnrollmentManager.UserCertificateEnrollmentManager.ImportPfxDataAsync, а затем CertificateEnrollmentManager.ImportPfxDataAsync.

Обратите внимание, что не существует способа удалить общий сертификат, если он не истек (с использованием InstallOptions.DeleteExpired в качестве параметра в ImportPfxDataAsync).

Кроме того, чем больше сертификатов вы разделяете таким образом, тем медленнее выполняются запросы к хранилищам сертификатов.

Смежные вопросы