問題タブ [mscapi]
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.
windows - MS CryptoAPI を使用して証明書を保存/復元すると、添付された秘密鍵が無効になる
Windows Crypto API を使用してユーザー証明書を保存および復元するプログラムを作成しました。私はそれが正常に機能しているという印象を受けましたが、証明書が復元された後、証明書に添付された秘密鍵が無効であるとユーザーから苦情が寄せられました。
以下を使用して証明書を保存していました。
そして後で:
CERT_STORE_SAVE_AS_STORE フラグは、秘密鍵を含めて証明書全体をシリアル化する必要があることを意味する必要があることを理解しています。MSDNが次のように述べていることに注意してください。
「CERT_KEY_CONTEXT_PROP_ID プロパティと、関連する CERT_KEY_PROV_HANDLE_PROP_ID および CERT_KEY_SPEC_PROP_ID の値は、シリアル化されたストアに保存されません。」
..告白しますが、よくわかりません。
証明書を復元するときは、CertFindCertificateInStore() を使用して、証明書が既に存在するかどうかを確認し、存在しない場合にのみ確認します。
証明書を元に戻すには...私の質問は、秘密鍵が保存されないのはなぜですか? 何か不足していますか?
windows-ce - Win CE でのファイル システム フィルタと CryptoAPI の問題
私は過去 2 週間、ファイル システム フィルターに取り組んでおり、興味深い問題に遭遇しました。基本的に、Platform Builder で OS の起動時に実行されるアプリでエンコード/デコードの実装を構築し、それが機能することを確認してデバッグを行いました。このアプリは正常に動作し、コンテキストの取得、キーの生成、暗号化/復号化を問題なく実行できます。
filesys dll の読み込みで同じことを実行しようとすると (これは、私の理解ではファイル システム フィルターが読み込まれる時点です)、ファイル システム フィルターで使用できる CSP サービスがないように見えます。CryptAcquireContext が NTE_BAD_KEYSET で失敗するか、既定のプロバイダーを使用しようとすると、NTE_PROV_TYPE_NOT_DEF で失敗します。
欲求不満で、その時点で利用可能なすべてのプロバイダーを列挙するコードをいくつか書きましたが、filesysがロードされたときに何もないことが判明し、誰かが役立つ経験やアイデアを持っているかどうか疑問に思いました. 私は正式にアイデアを使い果たしました。
乾杯バーナード
lisp - Lispworks capi:push-button-panel の個々のボタンを無効にする
Common Lisp とLispWorks CAPIを使用して Connect Four ゲームに取り組んでいます。私は 1 つのことを除いてインターフェイスを終了しました: プッシュボタン (プッシュボタンパネル内) を使用して列にピースをドロップし、対応する列がいっぱいになったらボタンを無効にしたいと思います。私は Lisp には比較的慣れておらず、特にオブジェクト指向のことを理解していないため、その方法がわかりません。
単一のプッシュボタンは次のように作成できます。
したがって、無効にされます:
push-button-panel も同様に作成されますが、パネルに:items
配置するボタン (または CAPI がボタンを作成するデータ) のリストである引数を取る点が異なります。
プッシュボタンパネルの個々のボタンを無効にする方法を知る必要があるだけです。また、最後のコードで何が起こっているのかを説明していただければ幸いです。私はそれをまったく理解していないからです。
ありがとう!
c# - C# 経由で CryptoAPI を操作するには?
暗号サービス プロバイダー (CSP) で動作する CryptoApi 関数のグループがあります。
はい、System.Cryptography 名前空間があることは知っています。しかし、私はそれらの実装を必要としません。
これらの関数に .NET ラッパーを提供する準備ができているライブラリはありますか?
openssl - Indyを介してopenSSL1.0.0Win32にCryptoApi(capi.dll)を動的にロードする方法は?
Indy 10を使用しており、httpクライアントでWindowsストア証明書を使用したいと考えています。私はopensslライブラリ1.0.0dを使用しています。これにより、capi.dllをロードできますが、ロードは常に失敗します。
何か案は?
ありがとう
c++ - OpenSSLからのPEMエンコード公開鍵でCAPIのCryptImportKeyを使用するにはどうすればよいですか?
MicrosoftのCryptoAPI関数でPEMエンコードされたキーCryptImportKey
をインポートするにはどうすればよいですか?実際には機能しますが、エラーを返します。CryptDecrypt
openssl - OpenSSL と MS CryptoAPI: 異なるデジタル署名
makecert ユーティリティを使用して秘密鍵で X509 証明書を生成しました
次に、OpenSSL を使用して RootCATest.pvk を RootCATest.pem に変換しました。そして、公開鍵を抽出しました: pubRootCATest.pem
「msg」という小さなファイルがあります。そして、SHA1 を使用してこのファイルに署名します。
次に、MS CryptoAPI を使用して同じデジタル署名を取得したいと考えています。
これが私のコードです(注:これは概念を理解するためのコードなので、割り当てられたメモリを解放しません)
出力として、OpenSSL によって作成された署名とはまったく異なる署名を取得します。どうすれば同じ署名を取得できますか?
私が考えるように、注意を払うべきいくつかの瞬間があります:
- 私のmsg_sizeはファイルサイズと同じです。したがって、署名するバイト数です。一部のサイトでは、null バイトをバイト配列に追加するよう推奨されていました。このような場合、本当に必要ですか?
- フラグ CRYPT_NOHASHOID。それがなければ、OpenSSL によって作成された署名が 128 バイトの場合、サイズが 130 バイトの署名を取得します。だから私は CRYPT_NOHASHOID がそこにあるべきだと思います。
- SwapBytes(...) ありとなしで試してみました。どちらの場合も、OpenSSL 署名とはまったく異なる署名があります。
c++ - MS CryptoAPI を使用する 64 ビット アプリケーションの開発
私は C++ 開発者ですが、Windows 開発のバックグラウンドはあまりありません。
私の主な質問は、Crypto APIの使用に関するものです。CryptAcquireContextなどの関数を使用します。この API についてさらに調べている間、「Win32 Crypto API」とのみ説明されています。「Win64 Crypto API」ってあるのかな?
そうでない場合は、Visual Studio で「Win32 Crypto API」を使用するアプリケーションを開発し、64 ビット モードとしてコンパイルします。32ビットでコンパイルしたほうがいいでしょうか?
Crypto API を利用する 64 ビット アプリケーションを開発するには、どうすればよいですか?
可能であれば、crypto API を使用しているときに 64 ビット用のアプリケーションを開発したり、証明書を取得したり、署名を運んだりするときに発生した問題を報告してください。
記事は大歓迎です。
c++ - CryptAcquireContext() を使用する Windows XP で MS CryptoAPI が機能しない
Microsoft CryptoAPI を使用して SHA-1 を計算するコードを書き、コンパイルされた exe が Windows 7、Win Server 2008、Win Server 2003 で動作するようにしました。ただし、Windows XP SP3 で実行すると動作しません。
CryptAcquireContext()
通話の失敗を絞り込みました。
以前の投稿で、XP の " … (Prototype) "という誤った名前について言及していたことに気付きました。これは、WinXP 固有のマクロ MS_ENH_RSA_AES_PROV_XP を使用して説明する必要があります。
XP 固有のコードを変更しましたが、まだ機能しません。( bResult
Win XP では 0 false が返され、他のすべてのプラットフォームでbResult
は 1 true が返されます。)
MS_ENH_RSA_AES_PROV_XP を regedit.exe に表示される実際のキー + 文字列の値でチェックしたので、すべてが機能するように設定されているように見えますが、成功していません。
Windows XP で動作させるために何か見落としていませんか?
問題を説明するために、可能な限り短い例を貼り付けました。VS2010 C++ を使用しました。
Windows 7 の成功:
Windows XP の障害:
java - Javaを使用したMSCryptoAPIへのアクセス
私はMSCAPIをうまく利用しようとしていて、大きないたずらに困惑しました... SunMSCapiプロバイダーのみ、うーん、より良い言葉がない場合、少なくとも署名のために、次のアルゴリズムを提供します。
- MD2withRSA
- MD5withRSA
- SHA1withRSA
そして、私はBouncyCastleが使用するようなGOST3411withECGOST3410
、またはのようなアルゴリズムを使用することに熱心ではありませんRIPEMD128withRSA
が、少なくともSHA256withRSA
アルゴリズムにサインインできることは素晴らしいことであり、この特定のケースでは、必須ではないにしても非常に重要です。 ..(512などとECDSA暗号化は大きなプラスになりますが、それほど期待していません)。
別の方法を見つけようとしていますが、このラッパーしか見つかりませんでした。見た目は問題ありませんが、もう少し掘り下げる必要があります。
mscapi(cryptoapi)にアクセスするための別の方法、ラッパーまたはプロバイダーを知っている人はいますか?
関連している:
SunMSCapiドキュメント:
http ://docs.oracle.com/javase/6/docs/technotes/guides/security/SunProviders.html#SunMSCAPIリクエスト
SHA256withRSA
: http:
//bugs.sun.com/view_bug.do?bug_id = 6753664