public static string getCanonicalizationMethodAlorithm(CanonicalizerWrapper canonicalizerWrapper, Error error) { switch (canonicalizerWrapper) { case CanonicalizerWrapper.ALGO_ID_C14N_WITH_COMMENTS: return(Constants.ALGO_ID_C14N_WITH_COMMENTS); case CanonicalizerWrapper.ALGO_ID_C14N_OMIT_COMMENTS: return(Constants.ALGO_ID_C14N_OMIT_COMMENTS); case CanonicalizerWrapper.ALGO_ID_C14N_EXCL_OMIT_COMMENTS: return(Constants.ALGO_ID_C14N_EXCL_OMIT_COMMENTS); case CanonicalizerWrapper.ALGO_ID_C14N_EXCL_WITH_COMMENTS: return(Constants.ALGO_ID_C14N_EXCL_WITH_COMMENTS); default: error.setError("CM004", "Unrecognized CanonicalizationMethod"); return(null); } }
public static string valueOfInternal(CanonicalizerWrapper canonicalizerWrapper, Error error) { switch (canonicalizerWrapper) { case CanonicalizerWrapper.ALGO_ID_C14N_WITH_COMMENTS: return("ALGO_ID_C14N_WITH_COMMENTS"); case CanonicalizerWrapper.ALGO_ID_C14N_OMIT_COMMENTS: return("ALGO_ID_C14N_OMIT_COMMENTS"); case CanonicalizerWrapper.ALGO_ID_C14N_EXCL_OMIT_COMMENTS: return("ALGO_ID_C14N_EXCL_OMIT_COMMENTS"); case CanonicalizerWrapper.ALGO_ID_C14N_EXCL_WITH_COMMENTS: return("ALGO_ID_C14N_EXCL_WITH_COMMENTS"); default: error.setError("CM003", "Unrecognized CanonicalizationMethod"); return(""); } }
private void addCanonTransform(Reference reference, CanonicalizerWrapper canonW) { switch (canonW) { case CanonicalizerWrapper.ALGO_ID_C14N_OMIT_COMMENTS: reference.AddTransform(new XmlDsigC14NTransform()); break; case CanonicalizerWrapper.ALGO_ID_C14N_WITH_COMMENTS: reference.AddTransform(new XmlDsigC14NWithCommentsTransform()); break; case CanonicalizerWrapper.ALGO_ID_C14N_EXCL_OMIT_COMMENTS: reference.AddTransform(new XmlDsigExcC14NTransform()); break; case CanonicalizerWrapper.ALGO_ID_C14N_EXCL_WITH_COMMENTS: reference.AddTransform(new XmlDsigExcC14NWithCommentsTransform()); break; } }
private string Sign(XmlDocument xmlInput, PrivateKeyManager key, CertificateX509 certificate, string dSigType, string canonicalizationType, string keyInfoType, string xpath, string id) { bool flag = inicializeInstanceVariables(key, certificate); if (!flag) { return(""); } SignatureElementType signatureElementType; if (!SecurityUtils.compareStrings(xpath, "")) { if (xpath[0] == '#') { signatureElementType = SignatureElementType.id; if (id == null || SecurityUtils.compareStrings(id, "")) { this.error.setError("DS021", "identifier attribute name missing"); return(""); } } else { signatureElementType = SignatureElementType.path; } } else { signatureElementType = SignatureElementType.document; } /***WHITESPACES***/ xmlInput.PreserveWhitespace = true; CanonicalizerWrapper canon = CanonicalizerWrapperUtils.getCanonicalizerWrapper(canonicalizationType, this.error); CanonicalizerWrapper canonW = CanonicalizerWrapperUtils.getCanonicalizerWrapper(canonicalizationType, this.error); if (this.HasError()) { return(""); } Reference reference = new Reference(); XmlNode parentNode; SignedXml signedXml; switch (signatureElementType) { case SignatureElementType.path: XmlNode pathNode = SignatureUtils.getNodeFromPath(xmlInput, xpath, this.error); XmlElement pathElement = pathNode as XmlElement; if (this.HasError() || pathElement == null) { return(""); } parentNode = pathNode.ParentNode; signedXml = new SignedXml(pathElement); XmlDsigXPathTransform XPathTransform = CreateXPathTransform(xpath); reference.Uri = pathNode.NamespaceURI; reference.AddTransform(XPathTransform); break; case SignatureElementType.id: XmlNode idNode = SignatureUtils.getNodeFromID(xmlInput, id, xpath, this.error); XmlElement idElement = idNode as XmlElement; if (this.HasError() || idElement == null) { return(""); } reference.Uri = xpath; signedXml = new SignedXml(idElement); parentNode = idNode.ParentNode; break; default: signedXml = new SignedXml(xmlInput); parentNode = xmlInput.DocumentElement; reference.Uri = ""; break; } signedXml.SigningKey = this.privateKey; signedXml.SignedInfo.CanonicalizationMethod = CanonicalizerWrapperUtils.getCanonicalizationMethodAlorithm(canonW, this.error); if (this.HasError()) { return(""); } XmlDsigEnvelopedSignatureTransform env = new XmlDsigEnvelopedSignatureTransform(); reference.AddTransform(env); addCanonTransform(reference, canonW); signedXml.AddReference(reference); KeyInfo keyInfo = createKeyInfo(certificate, keyInfoType); if (keyInfo != null) { signedXml.KeyInfo = keyInfo; } try { signedXml.ComputeSignature(); } catch (Exception) { this.error.setError("DS023", "Error on signing"); return(""); } XmlElement xmlDigitalSignature = null; try { xmlDigitalSignature = signedXml.GetXml(); } catch (Exception) { this.error.setError("DS028", "Error at signing"); return(""); } parentNode.AppendChild(xmlDigitalSignature); // xmlInput.DocumentElement.AppendChild(xmlInput.ImportNode(xmlDigitalSignature, true)); return(SignatureUtils.XMLDocumentToString(xmlInput, this.error)); }
public static string getCanonicalizationTransformation(CanonicalizerWrapper canonicalizerWrapper, Error error) { return(CanonicalizerWrapperUtils.getCanonicalizationMethodAlorithm(canonicalizerWrapper, error)); }