問題タブ [wincrypt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
663 参照

c++ - サポートされているメモリ ストアと証明書信頼リストを備えた CertGetCertificateChain

証明書チェーンの検証中にカスタムの自己署名ルート証明書を信頼できるものとしてマークする必要があり、全体として、可能な限りシステム API に依存したいと考えています。

一時的なメモリ ストアを作成します。

次に、カスタム ルート証明書をストアに配置します。

CertGetCertificateChain MSDNのドキュメントには

hAdditionalStore サポートする証明書と証明書信頼リスト (CTL) を検索するための追加ストアへのハンドル。

私が理解している限り、ルート証明書を使用して CTL を作成し、それをストアに配置すると、CertGetCertificateChain はそれを信頼します。そのため、割り当てられたバッファーにルート証明書 CTL エントリを作成し、それをstd::vector ctlEntriesにコピーします。

次に、CTL 自体を作成します。

上記の API 呼び出しはすべて正常に終了しますが、CertGetCertificateChain を呼び出すと、TrustStatus.dwErrorStatus で CERT_TRUST_IS_UNTRUSTED_ROOT が返されます。

考えられる回避策

CERT_TRUST_IS_UNTRUSTED_ROOT エラーが発生した場合は、証明書ストアから CTL を抽出し、結果チェーン (CertGetCertificateChain によって返される) のルートが CTL にあるかどうかを確認します。それは機能しますが、まだ完全に受け入れられるわけではありません。CertGetCertificateChain に依存したいと思います。


ソリューションの何が問題になっていますか? どの特定の証明書信頼リスト OID を使用する必要がありますか? この場合、ルート証明書を信頼するための要件 (特定の拡張機能など) はありますか?

ps テスト証明書は、この命令を使用して作成されます https://gist.github.com/fntlnz/cf14feb5a46b2eda428e000157447309

更新日: 2020-01-31

CertModifyCertificatesToTrust は役に立ちませんでした。正常に終了しますが、チェーンはまだ信頼されていないルートを持つと報告されます。おそらく、問題は別の領域にあります。

}

0 投票する
0 に答える
256 参照

c - CryptEncrypt と CryptDecrypt の使用方法

私のCアプリケーションでは、CreateHash、DeriveKeyなどの助けを借りてファイルから読み取った文字列から取得したキーでCryptEncryptを使用しています.

同じ関数で復号化しようとしています:

CryptDecrypt は、getLastError() で 2,148,073,477 の不正なデータを返します。これらすべてを修正するにはどうすればよいですか?

0 投票する
0 に答える
854 参照

c# - ProtectedData.Unprotect() 関数を使用した C# エラー

私はC#でProtectData.Protect()and関数を試しています。ProtectData.Unprotect()暗号化されたデータを SQLite データベースに書き込み、データベースを読み取ってデータを復号化するプログラムを作成しました。コードを実行するたびに、次のエラーが表示されます。

完全なコードは非常に長いですが、decrypt()関数は次のとおりです。バイト配列を渡しています。を使用して型がバイト配列であることを確認しました。myByteData.GetType()これは を返しますSystem.Byte[]