public override TPMCommandResponse Process() { if(_params.IsDefined<ITPMHandle>("handle") == false || _params.IsDefined<byte[]>("context_blob") == false) return new TPMCommandResponse(false, TPMCommandNames.TPM_CMD_LoadContext, new Parameters()); ITPMHandle handle = _params.GetValueOf<ITPMHandle>("handle"); TPMBlob blob = new TPMBlob(); blob.WriteCmdHeader(TPMCmdTags.TPM_TAG_RQU_COMMAND, TPMOrdinals.TPM_ORD_LoadContext); blob.WriteUInt32(handle.Handle); blob.WriteBool(handle.ForceHandle); blob.WriteUInt32((uint)handle.ContextBlob.Length); blob.Write(handle.ContextBlob, 0, handle.ContextBlob.Length); TPMBlob responseBlob = TransmitMe(blob); responseBlob.SkipHeader(); handle.Handle = responseBlob.ReadUInt32(); Parameters responseParameters = new Parameters(); responseParameters.AddValue("handle", handle); return new TPMCommandResponse(true, TPMCommandNames.TPM_CMD_LoadContext, responseParameters); }
public void WriteAuthorizationInfo(TPMBlob target, AuthorizationInfo authInfo) { target.WriteUInt32 (authInfo.Handle.Handle); target.Write (authInfo.Handle.NonceOdd, 0, authInfo.Handle.NonceOdd.Length); target.WriteBool (authInfo.ContinueAuthSession); target.Write (authInfo.AuthData, 0, authInfo.AuthData.Length); }