// Malformed message type. // Copyright (C) 2010 Lex Li. // // Permission is hereby granted, free of charge, to any person obtaining a copy of this // software and associated documentation files (the "Software"), to deal in the Software // without restriction, including without limitation the rights to use, copy, modify, merge, // publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons // to whom the Software is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in all copies or // substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, // INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE // FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. using System; using System.Globalization; using GSF.Net.Snmp.Security; namespace GSF.Net.Snmp.Messaging { /// /// Malformed message for v3 due to decryption failures or wrong user names. /// public sealed class MalformedMessage : ISnmpMessage { private static readonly Scope DefaultScope = new Scope(new MalformedPdu()); /// /// Initializes a new instance of the class. /// /// The message id. /// The user. [Obsolete("Please use the new overloading constructor.")] public MalformedMessage(int messageId, OctetString user) : this(messageId, user, null) { } /// /// Initializes a new instance of the class. /// /// The message id. /// The user. /// The data encrypted. public MalformedMessage(int messageId, OctetString user, ISnmpData data) { if (user == null) { throw new ArgumentNullException(nameof(user)); } Header = new Header(messageId); Parameters = SecurityParameters.Create(user); Scope = DefaultScope; EncryptedScope = data; } /// /// Encrypted scope data. /// /// The original scope data from packet, which remains encrypted. public ISnmpData EncryptedScope { get; set; } /// /// Gets the parameters. /// /// The parameters. public SecurityParameters Parameters { get; private set; } /// /// Gets the scope. /// /// The fake scope, which is used to avoid exceptions in message handling. public Scope Scope { get; private set; } /// /// Gets the header. /// public Header Header { get; private set; } /// /// Converts to the bytes. /// /// public byte[] ToBytes() { return new byte[0]; } /// /// Gets the version. /// /// The version. public VersionCode Version { get { return VersionCode.V3; } } /// /// Gets the privacy provider. /// /// The privacy provider. public IPrivacyProvider Privacy { get { return null; } } /// /// Returns a that represents this instance. /// /// /// A that represents this instance. /// public override string ToString() { return string.Format(CultureInfo.InvariantCulture, "Malformed message: message id: {0}; user: {1}", this.MessageId(), Parameters.UserName); } } }