0

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
4

1 に答える 1