pkcs11interop を使用して pkcs 11 標準を実装しようとしています
私はいくつかの des2 キー (16 バイト) を持っていて、sign メソッドを使用したい
私の問題は、sign メソッドが 4 バイトしか返さないことです。しかし、8バイトの符号が必要です。
私は何をすべきか?
PS 1: 4 バイトの結果は正しいです。これは、期待される結果の最初のバイトです。
PS 2:署名方法が暗号化方法と同じであることは知っています。私の解決策の1つは、入力を暗号化し、結果の最初の8バイトを取得することです(これは私がすでに行っていることです)。しかし、それが悪いので、Sign メソッド自体を使用する方がよいと思います。
PS 3: MAC サイズの選択に使用できる「ICkMacGeneralParams」インターフェイスがあります。しかし、まったく効果がないようです!UInt32.MaxValue と 0 に設定しましたが、結果は変わりませんでした。
PS 4: 通常、公開鍵と秘密鍵で使用される Sign メソッドを知っています。しかし、私は1つのキーでそれを使用する必要があります
var data = new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, };
//macParams seems not to work at all! result remains same with any input of CreateCkMacGeneralParams method
var macParams = session.Factories.MechanismParamsFactory.CreateCkMacGeneralParams(8);
var signMechanism = session.Factories.MechanismFactory.Create(CKM.CKM_DES3_MAC, macParams);
//handle references to some 16 byte key with CKK_DES2
var signResult = session.Sign(signMechanism, handle, data);
//result is always 4 bytes