Как расшифровать данные, защищенные DPAPI в Магазине Windows, из настольного приложения

Мы пишем инструмент для переноса данных из приложения Магазина Windows в приложение Windows Desktop. Приложение магазина защищает некоторые данные с помощью DPAPI, которые мы должны иметь возможность расшифровать из настольного приложения.

При вызове метода ProtectedData.Unprotect мы получаем CryptographicException, в котором говорится, что "параметр недействителен". Глядя на код приложения магазина, я вижу, что API-интерфейс DPAPI отличается от настольной платформы.NET. API приложения магазина используется следующим образом:

provider = new DataProtectionProvider("LOCAL=user");
...
IBuffer origBuffer = await this.provider.UnprotectAsync(encryptedBuffer);

API рабочего стола выглядит следующим образом

byte[] ProtectedData.Unprotect(byte[] encryptedBytes, 
                               byte[] entropy, 
                               DataProtectionScope scope);

Мы пытались использовать DataProtectionScope.CurrentUser и энтропия null но это приводит к приведенному выше CryptographicException. По-видимому, внутренне API хранилища использует особую энтропию, без которой мы не можем расшифровать данные.

Кто-нибудь знает, что API магазина DPAPI делает за кулисами, что позволило бы нам расшифровать данные магазина?

1 ответ

Решение

Извините, что не имею прямого ответа, но не можете ли вы сослаться на WinRT API из настольного приложения, чтобы расшифровать эти защищенные байты?

Вот руководство по ссылке на API WinRT в приложении WPF: http://www.hanselman.com/blog/HowToCallWinRTAPIsInWindows8FromCDesktopApplicationsWinRTDiagram.aspx

С уважением

Другие вопросы по тегам