問題タブ [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.
c# - C# と同等の Crypto API 関数
以前、Application-A は C++ にあり、メッセージは C++ の crypto API 関数を使用して Application-B に送信する前に署名されていました。これは、 http://msdn.microsoft.com/en-us/library/で説明されている例とまったく同じです。 windows/desktop/aa382372%28v=vs.85%29.aspx .
このメッセージは、C++ の Crypto API 関数を使用して Application-B によって再度検証されました (上記の例では、署名済みのメッセージを検証する方法について再度説明しています)。
現在、古い C++ Application-A を C# に変換/移行しています。C# でP-Invoke を使用してメッセージに署名する方法を既に見つけました。署名されたメッセージが Application-B (C++ CryptVerifySignatureMessage を使用) によって検証されると、すべて正常に動作します。例はhttp://blogs.msdn.com/b/alejacma/archive/2008/02/21/how-to-sign-a-message-and-verify-a-message-signature-c.aspxにあります。 .
@CodeInChaosがコメントで述べたように、相互運用作業をフレームワークに任せたい (P-Invoke や BountyCastle のような他のサードパーティの実装を使用しない)。
それで、.netがメッセージに署名するためのAPIを提供しているかどうかを知りたいです(学習の観点からも)。
ノート:
私はすでに.Netが提供する暗号ラッパーAPI RSACryptoServiceProviderを試しました。
しかし、C++ の CryptSignMessage と C# の RSACryptoServiceProvider.SignData() メソッドの戻り値 (バイト配列) に大きな違いが見つかりました。
• CryptSignMessage: CryptSignMessage 関数は、指定されたコンテンツのハッシュを作成し、ハッシュに署名してから、元のメッセージ コンテンツと署名付きハッシュの両方をエンコードします。
• RSA.SignData: 指定されたハッシュ アルゴリズムを使用して、指定されたバイト配列のハッシュ値を計算し、結果のハッシュ値に署名します。
この違いにより、Application-B がメッセージを検証すると、「無効な署名」というエラーがスローされます。
したがって、.net が提供するこの RSACryptoServiceProvider タイプは使用できません。.NET API を使用して同じことを達成する他の方法はありますか? (.net API を使用する場合、出力バイト配列は、前述の PInvoke の例を使用する場合の出力のバイト配列と類似している必要があります) そのため、Application-B は問題なく動作します。
どんな助けでも大歓迎です。
java - JavaでUSBトークンからキーストアを取得する方法
SafeNet 5100 eToken には有効な証明書が既に含まれており、それを必要とする会社の Web アプリケーションにアクセスするために使用します (多要素認証)。
この Web サイトにアクセスするためのデスクトップ アプリケーションを作成しています。すでに Web サイトの証明書を に追加して、TrustStore
証明書を に取得することができKeyStore
ます。
私がこれまでに持っているものは次のとおりです。
このコードを実行すると、次のようになります。
そして、トークンの正しいパスワードを入力したときと間違ったパスワードを入力したときにこのエラーが発生するため、正しい方法でパスワードを渡すことは決してないと思います。
例外が発生するのはなぜですか?
- - - - - 更新しました - - - - -
PKCS11.dll ライブラリを指す次の情報を含む構成ファイルを作成しました。
そして、メイン関数に次を追加します。
そして今、私はこれをエラーとして取得しています:
また、 Keystore.getInstance を次のように変更しようとしました。
そして、私はこの別のエラーを受け取ります:
--------- 更新 2 (作業コード) ---------
私の最終的な作業コードは次のとおりです。
そして、実行構成でデバッグ引数を設定する必要があります。
または、.cfg ファイルでスロットを設定します。
c++ - Microsoft CryptoAPI を使用して CFB-128 を設定するには?
プロバイダー タイプのMS_ENH_RSA_AES_PROV
プロバイダーを使用しています。暗号モードでブロック暗号アルゴリズムをPROV_RSA_AES
選択しました。キー パラメータを 128に設定したいのですが、64 より大きい値を渡して呼び出すと、常に NTE_BAD_DATA (0x80090005L) が返されます。CALG_AES_128
CRYPT_MODE_CFB
KP_MODE_BITS
CryptSetKeyParam()
CryptoAPI を使用して CFB-128 を設定するにはどうすればよいですか? ありがとう。
java - MSCAPI と IAIK を使用した InvalidKeyException
アプリケーションで Sun の MSCAPI プロバイダを使用して署名証明書を取得しています。署名者の秘密鍵は、sun.security.mscapi.RSAPrivateKey です。IAIK はこのクラスを認識していないようです (以下のエラーを参照)。私はなぜなのか理解していない。私の問題の解決策は何ですか?
前もって感謝します !
編集 :
これは私の「汚い」 classTest です:
c++ - C++ Microsoft CryptoAPI の AES/Rijndael
Microsoft CryptoAPI (CryptDeriveKey、BCrypt[...] 関数、CryptAcquireContext など) を使用して、次の暗号化コード (VB.NET 4.0) を同等の C++ コードに変換するにはどうすればよいですか? (Microsoft CryptoAPI を使用した AES について説明している記事は、インターネット上で 1 つも見つかりませんでした...)
そして復号化するもの:
(注: 私は既に SHA-512 メソッドに関する C++ コードを持っているので、気にしないでください。)
c++ - WinCrypt/CryptoAPI を使用して OpenPGP ベースの RSA 署名を検証する
OpenPGP パケットを解析するコードがありn
、e
公開鍵パケットとs
署名パケットをバイト配列として持っています。
署名を検証するために、最初に初期化します(の代わりにCryptAcquireContext
試しました)PROV_RSA_FULL
PROV_RSA_AES
次にハッシュを作成します
を使用して入力しCryptHashData
ます。これはこれまでのところ、を使用した公開鍵の解析とインポートと同様に機能しますCryptImportKey
。
CryptVerifySignature
GetLastError()
へのデコードに失敗しますINVALID_SIGNATURE
。
https://www.rfc-editor.org/rfc/rfc4880#section-5.2.2で読んだ
それは必要ですか、それともによって自動的に行われCryptVerifySignature
ますか? そうでない場合、それを行う方法は?
security - MSCAPI : CNG およびセキュリティ記述子
Windows API は、オブジェクトにセキュリティ記述子を設定する方法を提供します (たとえば、アクセス制御リストの設定を許可します)。
キー ストレージ プロバイダー(KSP)によってホストされる暗号化キーのセキュリティ記述子NCryptSetProperty
は、 (および適切なフラグとパラメーターのセット)を使用して評価できます。
ただし、Cryptography Provider Development Kit (CPDK)では、セキュリティ記述子の必須サポートは必要ありません(また、ユーザー アカウントが作成されない専用サーバーでは、アクセス制御リストを設定しても実際には役に立たない場合があります)。
すべてにもかかわらず、KSP によるセキュリティ記述子のサポートが一部の Microsoft アプリケーションで期待されているかどうかを誰かが知っていますか? (たとえば、Active Directory 証明書サービスなど)
iis-7.5 - Windows Server 2008 R2 の Web サービスで Microsoft CryptoAPI が機能しない
暗号化に Microsoft Crypto API を使用する Web サービスがあります。Windows Server 2003 では Web サービスとして正常に動作します。移動先の Windows Server 2008 R2 では Web サービスとして動作しませんが、サーバーでは同じコードが動作します。通常の Windows アプリケーション (つまり、Web サービスではない)。
これを機能させるために変更する必要がある、ある種のセキュリティ設定またはそのようなものはありますか? Windows Server のバージョン間で何かが明らかに変更されています。これは、IIS で実行される 32 ビットの Web サービスです。
windows - MS-CAPI CSP のテスト、WinDbb カーネル デバッグでも署名が失敗する
Win 7 で新しい CSP をテストしようとしています。カーネル デバッグを許可するようにブート構成を設定し、WndDbg
file:kernel debug を実行して選択し、ローカルに設定します。新しい CSP で signtool を使用しようとすると、依然として署名エラー チェックが発生します。環境は次のとおりです。
カーネル デバッガーの存在がテスト CSP の署名チェックを妨げない理由について何か考えはありますか? そのセットアップはリモート デバッグ環境でのみ機能しますか?
java - Java セキュリティ - MSCAPI プロバイダー: USB トークンのみから証明書を取得する方法
アプレットで Sun の MSCAPI プロバイダを使用することができました。
私のアプレットは、単に Windows 証明書ストアから証明書を一覧表示し、ユーザーが好みの証明書を選択できるようにすることで、ユーザーが自分のトランザクションに署名できるようにします。
ユーザーが USB トークン/スマート カードなしで署名できないようにしたいと考えています。つまり、秘密鍵が USB トークン/スマート カードに保存されていない場合、アプレットは証明書を表示/リストするべきではありません。
私はこのような証明書を取得します (try catch ブロックを削除しました):
私はこのように署名を管理します (try catch ブロックを削除しました):
証明書が USB トークンからのものかどうかを区別する方法が見つかりませんでした。Certificate オブジェクトと PrivateKey オブジェクトの両方を確認しましたが、役に立つ属性が見つかりませんでした。
MSCAPI でこれを行う方法について何か提案はありますか? またはMSCAPIの代替案として何か提案はありますか?
(私が PKCS11 を使用しない/使用できない理由は、世界中で複数のブランドのトークンをサポートする必要があるためです。要件は、アプレットが各トークンの内部に PKCS11 dll パスのリストを保持してはならないということです。dll の取得サーバー側からのパスも受け付けませんので、PKCS11 は使えません。間違っていたら訂正してください。)