問題タブ [cng]
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.
smartcard - CryptoAPI NG のアナログ CryptSetProvParam(PP_SIGNATURE_PIN) アナログとは何ですか?
私はスマートカードのアプリケーションを書いています。アプリケーションがメソッド CryptSetProvParam を使用して PIN を取得する方法は知っていますが、CryptoAPI NG を使用しているときに同じことを行う方法がわかりません。PIN 要求 UI ウィンドウがポップアップ表示されないようにしたい。
visual-studio - ARM プラットフォーム用にビルドするときに、NTSTATUS に含めるヘッダーは何ですか?
私はVS2013 ARM Developer Promptで作業しています。Microsoft の Cryptography Next Generation (CNG) を使用しようとしていますが、重大な問題が発生しています。
簡単なテストプログラムをコンパイルしようとしています:
私はそれをコンパイルしようとします:
含めようとすると<ntstatus.h>
(Microsoftから有用なものが見つからないように見えるため、 PJ Naughterのブログから削除されました):
LONG
Microsoft マクロはコードBCRYPT_SUCCESS
にキャストするのが好きなので、それを にすることはできません。NTSTATUS
NTSTATUS
VS2012 ARM Developer Prompt で欠落している問題を再現することもできます。
NTSTATUS
ARM での宣言を取得するには、どのヘッダー ファイルを含める必要がありますか?
これは関連している可能性があると思いますが、確かではありません:致命的なエラー LNK1104: Surface RT タブレット用にビルドするときにファイル 'bcrypt.lib' を開くことができません。私が知っているのは、これを使用しようとすると非常に多くの問題があるため、Microsoft によって十分にテストされていないように見えるということだけです。
windows-phone-8 - Windows Phone 8 と Windows Store 8 の乱数?
いくつかのセキュリティ ライブラリを Windows Phone 8 および Windows Store 8 プラットフォームに移植するのに苦労しています。乱数を提供する関数が必要です。
Win32 にはCryptGenRandom
と さえありRtlGenRandom
ます。Windows Store 10 と Universal Windows にはBCryptGenRandom
. ただし、Windows Phone 8 と Windows Store 8 には穴があります。これは、CryptoAPI が利用できず、CNG がWindows 10 とユニバーサル Windowsでしか利用できないためです。MSDN のドキュメントBCryptGenRandom
には、「Windows ストア」で利用できると書かれていますが、Windows ストア 10 と UWP については書かれていません (ありがとう CW )。
ライブラリはアンマネージ C/C++ です。それらは、標準/移植可能な C および C++ で書かれています。場合によっては、乱数を収集するためのような OS 固有の API を使用する必要があります。マネージ API に対してコンパイルせず、マネージ ライブラリにリンクしません。
Windows Phone 8 と Windows Store 8 の乱数には何を使用しますか?
c++ - 共有シークレットを BCRYPT_SECRET_HANDLE から BYTE 配列としてエクスポートしています
暗号次世代 API (CNG) を使用して ECDHE を実装しています。公開鍵と秘密鍵を正常に生成しました。事前共有キーについては、事前共有キーのシークレット ハンドル(BCRYPT_SECRET_HANDLE)を返すBCryptSecretAgreement APIを使用します。
事前共有キーを BCRYPT_SECRET_HANDLE から BYTE 配列としてエクスポートするにはどうすればよいですか?
c# - キーが存在しません - 自己署名 ECDSA 証明書を使用しています
XML メッセージのデジタル署名に問題があります。要件では、ECDSA 証明書を特定の曲線で使用することが規定されています。メソッドによって提供される RSA および DSA 機能は、 、およびSignedXml.ComputeSignature(...)
のカスタム実装を作成しないと機能しないことを意味します。SignatureDescription
AsymmetricSignatureFormatter
AsymmetricSignatureDeformatter
そうは言っても、多くのコードを投稿することなく、証明書を取得し、その公開鍵を使用してECDsaCng
クラスを使用してデータに署名する単純な関数を作成しました。これは、上記のカスタム実装を作成するために使用したものです。
何が起こるかというと、私のカスタム実装でも例外がスローされSystem.Security.Cryptography.CryptographicException: Key does not exist.
ます。ただしCngKey
、インポートする代わりに作成するだけでも機能します。私が見ることができることから、この例外は、メソッドを呼び出しているコードからスローされていますinternal static extern ErrorCode NCryptSignHash(...)
。ncrypt.dll
だから私の質問は、例外がスローされる理由System.Security.Cryptography.CryptographicException: Key does not exist.
と、それを解決する方法です。
c++ - C++ - 暗号化サイズなしで復号化する
しばらく探しましたが、この問題の解決策が見つかりませんでした。暗号化されたデータを復号化するために BCryptDecrypt を使用していますが、EncryptedData のサイズが必要です。サイズを知らずに復号化するにはどうすればよいですか?
BCryptEncrypt は、データの暗号化に成功した後に長さを提供することを知っています。私が知っている唯一の方法は、暗号化されたデータ / IV と一緒に送信することです。
例: データを暗号化し、IV を使用してソケット経由でデータを復号化する WinSock サーバーに送信するとします。そのサーバーは、サイズを知らずにどのように復号化できるのでしょうか? キーと IV を知っていても。
ありがとう
c# - ECDSA 公開鍵を CngKey から BouncyCastle にインポートする
CngKey で生成されたキーのペアから x509 証明書を生成しようとしています。私は以下を使用してキーを作成します。
次の方法で BouncyCastle 秘密鍵を取得します。
キーから適切なカーブのパラメータを確認できるので、問題はありません。
ただし、次の方法で公開鍵を取得しようとすると:
CngKey から最初の 8 桁を消去し、圧縮されていない const 値 0x04 を追加する必要があることを読みました。「PublicKeyFactory.CreateKey(ecPublicKey)」を実行すると、例外が発生します。
とにかく、次のようにキーを使用して直接これを行うと、同じ例外が発生します。
公開鍵でこのエラーが発生する理由について、誰か教えてください。
どうもありがとう。
windows-server-2012-r2 - DPAPI NG - NCryptProtectSecret が NTE_ENCRYPTION_FAILURE を返す
DPAPI-NG を使用してデータを暗号化しようとしていますが、NCryptProtectSecretの実行に失敗し、次のように返されます。
0x80090034 (NTE_ENCRYPTION_FAILURE)
ローカル ユーザー SID でNCryptCreateProtectionDescriptorを作成しました。
次に、記述子のこのインスタンスをNCryptProtectSecretの入力として使用しますが、機能しません。
次の保護記述子を使用する場合:
すべて問題ないように見えますが、ユーザーまたはグループの SID では機能しません。Windows Server 2012R2 および Windows Server 2016 でこれをテストしました。
何か案が?
コードサンプルは次のとおりです。