public override void GetTargetData(IFreeformEntity_MsgTgt tgt, ref List <byte> buffer) { if (tgt is FFTgt_B2B_Security_KeyExchange_Request) { FFTgt_B2B_Security_KeyExchange_Request tgt2 = (FFTgt_B2B_Security_KeyExchange_Request)tgt; } else if (tgt is FFTgt_B2B_Security_KeyExchange_End) { FFTgt_B2B_Security_KeyExchange_End tgt2 = (FFTgt_B2B_Security_KeyExchange_End)tgt; buffer.AddRange(tgt2.PartialKey.CopyToBuffer(0, 9)); } }
internal override IFreeformEntity ParseBufferInternal(ref IFreeformEntity entity, IFreeformEntity rootEntity, int id, byte[] buffer) { if (buffer.Length == 9) { FFTgt_B2B_Security_KeyExchange_End tgt = new FFTgt_B2B_Security_KeyExchange_End { PartialKey = buffer }; return(tgt); } else { FFTgt_B2B_Security_KeyExchange_Request tgt = new FFTgt_B2B_Security_KeyExchange_Request(); return(tgt); } }
internal override IFreeformEntity ParseBufferInternal(ref IFreeformEntity entity, IFreeformEntity rootEntity, int id, byte[] buffer) { if (buffer.Length == 9) { FFTgt_B2B_Security_KeyExchange_End tgt = new FFTgt_B2B_Security_KeyExchange_End { PartialKey = buffer }; return tgt; } else { FFTgt_B2B_Security_KeyExchange_Request tgt = new FFTgt_B2B_Security_KeyExchange_Request(); return tgt; } }
internal static IFreeformEntity_Msg InitKeyExchangeStatusH2G_GMU(this FreeformSecurityTableCollection secTables, IFreeformEntity_Msg request) { // store the partial key of the gmu FFTgt_B2B_Security_KeyExchange_End tgt = request.EntityPrimaryTarget as FFTgt_B2B_Security_KeyExchange_End; SECURITY_KEY_INDEX keyIndex = FreeformEncryptionHelper.GetSecurityKeyIndex(request); secTables.StoreOtherPartialKeyHost(keyIndex, tgt.PartialKey); secTables.CreateCommonKey(keyIndex); IFreeformEntity_Msg message = request.CopyTo(FF_FlowDirection.H2G, new FFCreateEntityRequest_H2G_ResponseRequired() { PollCode = FF_AppId_H2G_PollCodes.FreeformNoResponse, }); InitSecurityData(message, new FFTgt_B2B_Security_KeyExchange_Status() { Status = (request.EntityPrimaryTarget is FFTgt_B2B_Security_PartialKey ? FF_AppId_ResponseStatus_Types.Success : FF_AppId_ResponseStatus_Types.Fail), }); return(message); }