/// <summary>
/// Construct and send SNMP v3 authNoPriv Trap
/// </summary>
/// <param name="receiver">Trap receiver IP address</param>
/// <param name="receiverPort">Trap receiver UDP port number</param>
/// <param name="engineId">Sender SNMP engineId</param>
/// <param name="senderEngineBoots">Sender SNMP engine boots</param>
/// <param name="senderEngineTime">Sender SNMP engine time</param>
/// <param name="senderUserName">Security (user) name</param>
/// <param name="senderUpTime">Sender upTime</param>
/// <param name="trapObjectID">Trap object ID</param>
/// <param name="varList">Variable binding list</param>
/// <param name="authDigest">Authentication digest. <see cref="AuthenticationDigests"/> enumeration for
/// available digests</param>
/// <param name="authSecret">Authentication secret</param>
public void SendV3Trap(IpAddress receiver, int receiverPort, byte[] engineId, Int32 senderEngineBoots,
Int32 senderEngineTime, string senderUserName, UInt32 senderUpTime, Oid trapObjectID, VbCollection varList,
AuthenticationDigests authDigest, byte[] authSecret)
{
SnmpV3Packet packet = new SnmpV3Packet();
packet.Pdu.Type = PduType.V2Trap;
packet.authNoPriv(ASCIIEncoding.UTF8.GetBytes(senderUserName), authSecret, authDigest);
packet.SetEngineId(engineId);
packet.SetEngineTime(senderEngineBoots, senderEngineTime);
packet.ScopedPdu.TrapObjectID.Set(trapObjectID);
packet.ScopedPdu.TrapSysUpTime.Value = senderUpTime;
packet.ScopedPdu.VbList.Add(varList);
packet.MsgFlags.Reportable = false;
SendV3Trap(packet, receiver, receiverPort);
}