2011-06-30 13 views
0

私はgtop11dotnet.dllを持っています。 GemaltoのWebサイトから.NET PKCS#11 Library for Windows v2.2.0.9です。 DLLには、スマートカードのシリアル番号またはGUIDを取得するために使用できるC_GetCardPropertyメソッドが含まれています。 PKCS#11ユーザーズガイドおよび.NET統合ガイドによると、それは "byte [] GetCardProperty(バイトプロパティ、バイトフラグ)"です。パラメータとして2バイトを受け取り、例えば、バイト配列形式のシリアル番号またはGUID。 私の質問は、シリアル番号を取得して管理されたバイト配列に格納する方法です。任意の助けcの#gt38dtnet.dllからバイト配列を取得します。

[DllImport("gtop11dotnet.dll")] 
public static extern byte[] C_GetCardProperty(byte property, byte flags); 
public static void Main() 
{ 
    byte[] bytes = new byte[12]; 
    bytes = C_GetCardProperty(0x06, 0x00) //Error at this line -> Cannot marshal 'return value': Invalid managed/unmanaged type combination. 
} 

ありがとう:

は、ここに私の試みです。

答えて

0

".NET PKCS#11"とは何ですか? PKCS#11 v2.20およびv2.30のドラフトには「C_GetCardProperty」メソッドが含まれていません。おそらく、Gemalto/.NETの独占的なものに直面しているかもしれません.Gemaltoは、PCKS#11とはまったく関係がありません.Gemaltoは、任意の関数に "C_"を接頭し、結果をcryptoki 。 PKCS#11はCインタフェースであり、マネージド/アンマネージコードや.NETとは関係ありません。

+0

はい、これはGemalto独自の機能です。私は[Gemaltoのウェブサイト](http://www.gemalto.com/products/dotnet_card/resources/libraries.html?toggler=0)からダウンロードして、gtop11dotnet.dllをC:\ Program Files \ Gemalto \ DotNetにインストールしましたPKCS11。そのDLLの中には、C関数C_GetCardPropertyがあります。私はそれをDependency Walkerでダブルチェックしました。しかし、関数が返すシリアル番号またはGUIDを取得する方法は? – Almir

+0

申し訳ありません、あなたはそれについてGemaltoに尋ねる必要があります。さらに良いことに、関数を削除するか、Gemalto_GetCardPropertyに名前を変更するように指示してください。PKCS#11を悪用すると、何か良い結果が得られません。 –

0

これを試してください。

public static extern uint C_GetCardProperty(uint slotID、バイトプロパティ、バイトフラグ、バイト[] BLOB、参照バイト長)。

関連する問題