/// <summary> /// When overridden in a descendant class, serializes the object into XML according to Aadhaar API specification. /// </summary> /// <param name="elementName">The name of the element.</param> /// <returns>An instance of <see cref="XElement"/>.</returns> protected override XElement SerializeXml(string elementName) { ValidateNull(Uses, nameof(Uses)); ValidateNull(DeviceInfo, nameof(DeviceInfo)); ValidateNull(KeyInfo, nameof(KeyInfo)); ValidateNull(Data, nameof(Data)); ValidateEmptyString(AadhaarNumber, nameof(AadhaarNumber)); ValidateEmptyString(Hmac, nameof(Hmac)); var authRequest = base.SerializeXml(elementName); authRequest.Add(new XAttribute("uid", AadhaarNumber), new XAttribute("ver", AuthVersion), Uses.ToXml("Uses"), DeviceInfo.ToXml("Meta"), KeyInfo.ToXml("Skey"), Data.ToXml("Data"), new XElement("Hmac", Hmac)); if (Token != null) { authRequest.Add(Token.ToXml("Tkn")); } Signer?.ComputeSignature(authRequest); return(authRequest); }
/// <summary> /// When overridden in a descendant class, serializes the object into XML according to Aadhaar API specification. /// </summary> /// <param name="elementName">The name of the element.</param> /// <returns>An instance of <see cref="XElement"/>.</returns> /// <exception cref="ArgumentNullException"><see cref="DeviceInfo"/>, <see cref="KeyInfo"/> or <see cref="Data"/> is null.</exception> /// <exception cref="ArgumentException"><see cref="AadhaarNumber"/> or <see cref="Hmac"/> is empty.</exception> protected virtual XElement SerializeXml(string elementName) { ValidateNull(DeviceInfo, nameof(DeviceInfo)); ValidateNull(KeyInfo, nameof(KeyInfo)); ValidateNull(Data, nameof(Data)); ValidateEmptyString(AadhaarNumber, nameof(AadhaarNumber)); ValidateEmptyString(Hmac, nameof(Hmac)); var deviceContext = new XElement(elementName, new XAttribute("uid", AadhaarNumber), new XAttribute("tid", Terminal), new XAttribute("ts", Timestamp.ToString(AadhaarHelper.TimestampFormat, CultureInfo.InvariantCulture)), DeviceInfo.ToXml("Meta"), KeyInfo.ToXml("Skey"), Data.ToXml("Data"), new XElement("Hmac", Hmac)); return(deviceContext); }
/// <summary> /// When overridden in a descendant class, serializes the object into XML according to Aadhaar API specification. /// </summary> /// <param name="elementName">The name of the element.</param> /// <returns>An instance of <see cref="XElement"/>.</returns> /// <exception cref="System.ArgumentNullException"><see cref="DeviceInfo"/>, <see cref="KeyInfo"/> or <see cref="Data"/> is null.</exception> /// <exception cref="System.ArgumentException"><see cref="AadhaarNumber"/> or <see cref="Hmac"/> is empty.</exception> protected override XElement SerializeXml(string elementName) { ValidateNull(DeviceInfo, nameof(DeviceInfo)); ValidateNull(KeyInfo, nameof(KeyInfo)); ValidateNull(Data, nameof(Data)); ValidateEmptyString(AadhaarNumber, nameof(AadhaarNumber)); ValidateEmptyString(Hmac, nameof(Hmac)); var bfdRequest = base.SerializeXml(elementName); var meta = DeviceInfo.ToXml("Meta"); meta.Attribute("idc").Remove(); bfdRequest.Add(new XAttribute("uid", AadhaarNumber), new XAttribute("ver", BfdVersion), meta, KeyInfo.ToXml("Skey"), Data.ToXml("Data"), new XElement("Hmac", Hmac)); Signer?.ComputeSignature(bfdRequest); return(bfdRequest); }