Tpm2Lib (. NET) Ошибка при использовании функции EncryptDecrypt - PullRequest
0 голосов
/ 13 апреля 2020

Я пытаюсь зашифровать дайджест сертификата с помощью TPM 2.0 (в данном случае симулятор IBM). Когда я пробую его с дайджестом размером 898 байт, функция работает правильно, но когда я пробую его с дайджестом размером 2597 байт, я получаю сообщение об ошибке ниже от TPM. Я думаю, что эта ошибка связана со вторым описанием на этом изображении ( TPM2_EncryptDecrypt2 отвечает код ), но я не знаю, как ее решить.

    Encrpyt/Decrypt Error - Tpm2Lib.TpmException: Error {Size} was returned for command EncryptDecrypt2.
Details: 
[Code=TpmRc.Size],[RawCode=0x1D5,469]
[ErrorEntity=Parameter], [ParmNum=1]
[ParmName=inData]
   at Tpm2Lib.Tpm2.ProcessError(TpmSt responseTag, UInt32 responseParamSize, TpmRc resultCode, TpmStructureBase inParms)
   at Tpm2Lib.Tpm2.DispatchMethod(TpmCc ordinal, TpmStructureBase inParms, Type expectedResponseType, TpmStructureBase& outParms, Int32 numInHandlesNotUsed, Int32 numOutHandlesNotUsed)
   at Tpm2Lib.Tpm2.EncryptDecrypt2(TpmHandle keyHandle, Byte[] inData, Byte decrypt, TpmAlgId mode, Byte[] ivIn, Byte[]& ivOut)

Определение моего ключа: SymDefObject(TpmAlgId.Aes, 256, TpmAlgId.Cfb)

Вот так я получаю дайджест сертификата: byte[] data = certificate.Export(X509ContentType.Pfx, "password");

Вот мой код:

public static byte[] EncryptDecrypt(AuthSession authSession, TpmHandle keyHandle, byte[] data, bool decryptMode = false)
        {
            try
            {
                byte[] iv = new byte[16];
                byte[] ivOut;

                if (decryptMode)
                {
                    return tpm[authSession].EncryptDecrypt2(keyHandle, data, (byte)1, TpmAlgId.Cfb, iv, out ivOut);
                }

                return tpm[authSession].EncryptDecrypt2(keyHandle, data, (byte)0, TpmAlgId.Cfb, iv, out ivOut);
            }
            catch (TpmException ex)
            {
                Console.WriteLine("Encrpyt/Decrypt Error - {0}\n", ex);
                return null;
            }
        }
...