public virtual JsonResult ValidateEncryptionThumbprint(EncryptRequestModel model) { //System.Threading.Thread.Sleep(5000); var propertyName = model.PropertyName(x => x.Thumbprint); if (ModelState.IsValidField(propertyName)) return Json(true); var errorMessage = ModelState[propertyName].Errors.First().ErrorMessage; return Json(errorMessage); }
public virtual JsonResult Encrypt(EncryptRequestModel model) { ThrowWhenModelStateIsInvalid(); var config = CreateConfigXmlDocument(model.Thumbprint, model.XmlInput); InitializeProvider(model.Thumbprint); // encrypt foreach (var node in GetEligibleCryptoNodes(config)) { // look for special nested section to encrypt var encryptableNode = FindNestedCryptoNode(node) ?? node; // strip off the configProtectionProvider attribute if it exists (do not want to encrypt it) if (encryptableNode.Attributes != null && encryptableNode.Attributes["configProtectionProvider"] != null) encryptableNode.Attributes.Remove(encryptableNode.Attributes["configProtectionProvider"]); // encrypt the node var encryptedNode = _provider.Encrypt(encryptableNode); // create a new configProtectionProvider attribute var attribute = config.CreateAttribute("configProtectionProvider"); attribute.Value = "CustomProvider"; Debug.Assert(encryptableNode.Attributes != null); // append the attribute to the node that was encrypted (not the encryption result) encryptableNode.Attributes.Append(attribute); // nest the encryption result into the node that was encrypted encryptableNode.InnerXml = encryptedNode.OuterXml; } // format and return the encrypted xml var encrypted = config.GetFormattedXml(); return Json(encrypted); }