問題タブ [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.

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

smartcard - CryptoAPI NG のアナログ CryptSetProvParam(PP_SIGNATURE_PIN) アナログとは何ですか?

私はスマートカードのアプリケーションを書いています。アプリケーションがメソッド CryptSetProvParam を使用して PIN を取得する方法は知っていますが、CryptoAPI NG を使用しているときに同じことを行う方法がわかりません。PIN 要求 UI ウィンドウがポップアップ表示されないようにしたい。

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

visual-studio - ARM プラットフォーム用にビルドするときに、NTSTATUS に含めるヘッダーは何ですか?

私はVS2013 ARM Developer Promptで作業しています。Microsoft の Cryptography Next Generation (CNG) を使用しようとしていますが、重大な問題が発生しています。

簡単なテストプログラムをコンパイルしようとしています:

私はそれをコンパイルしようとします:

含めようとすると<ntstatus.h>(Microsoftから有用なものが見つからないように見えるため、 PJ Naughterのブログから削除されました):

LONGMicrosoft マクロはコードBCRYPT_SUCCESSにキャストするのが好きなので、それを にすることはできません。NTSTATUS

NTSTATUSVS2012 ARM Developer Prompt で欠落している問題を再現することもできます。

NTSTATUSARM での宣言を取得するには、どのヘッダー ファイルを含める必要がありますか?


これは関連している可能性があると思いますが、確かではありません:致命的なエラー LNK1104: Surface RT タブレット用にビルドするときにファイル 'bcrypt.lib' を開くことができません。私が知っているのは、これを使用しようとすると非常に多くの問題があるため、Microsoft によって十分にテストされていないように見えるということだけです。

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

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 の乱数には何を使用しますか?

0 投票する
4 に答える
1484 参照

c++ - 共有シークレットを BCRYPT_SECRET_HANDLE から BYTE 配列としてエクスポートしています

暗号次世代 API (CNG) を使用して ECDHE を実装しています。公開鍵と秘密鍵を正常に生成しました。事前共有キーについては、事前共有キーのシークレット ハンドル(BCRYPT_SECRET_HANDLE)を返すBCryptSecretAgreement APIを使用します。

事前共有キーを BCRYPT_SECRET_HANDLE から BYTE 配列としてエクスポートするにはどうすればよいですか?

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

c# - キーが存在しません - 自己署名 ECDSA 証明書を使用しています

XML メッセージのデジタル署名に問題があります。要件では、ECDSA 証明書を特定の曲線で使用することが規定されています。メソッドによって提供される RSA および DSA 機能は、 、およびSignedXml.ComputeSignature(...)のカスタム実装を作成しないと機能しないことを意味します。SignatureDescriptionAsymmetricSignatureFormatterAsymmetricSignatureDeformatter

そうは言っても、多くのコードを投稿することなく、証明書を取得し、その公開鍵を使用して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.と、それを解決する方法です。

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

c++ - C++ - 暗号化サイズなしで復号化する

しばらく探しましたが、この問題の解決策が見つかりませんでした。暗号化されたデータを復号化するために BCryptDecrypt を使用していますが、EncryptedData のサイズが必要です。サイズを知らずに復号化するにはどうすればよいですか?

BCryptEncrypt は、データの暗号化に成功した後に長さを提供することを知っています。私が知っている唯一の方法は、暗号化されたデータ / IV と一緒に送信することです。

例: データを暗号化し、IV を使用してソケット経由でデータを復号化する WinSock サーバーに送信するとします。そのサーバーは、サイズを知らずにどのように復号化できるのでしょうか? キーと IV を知っていても。

ありがとう

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

c# - ECDSA 公開鍵を CngKey から BouncyCastle にインポートする

CngKey で生成されたキーのペアから x509 証明書を生成しようとしています。私は以下を使用してキーを作成します。

次の方法で BouncyCastle 秘密鍵を取得します。

キーから適切なカーブのパラメータを確認できるので、問題はありません。

ただし、次の方法で公開鍵を取得しようとすると:

CngKey から最初の 8 桁を消去し、圧縮されていない const 値 0x04 を追加する必要があることを読みました。「PublicKeyFactory.CreateKey(ecPublicKey)」を実行すると、例外が発生します。

とにかく、次のようにキーを使用して直接これを行うと、同じ例外が発生します。

公開鍵でこのエラーが発生する理由について、誰か教えてください。

どうもありがとう。

0 投票する
4 に答える
975 参照

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 でこれをテストしました。

何か案が?

コードサンプルは次のとおりです。