Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        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("");
            }
        }
Exemplo n.º 3
0
        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;
            }
        }
Exemplo n.º 4
0
        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));
        }
Exemplo n.º 5
0
 public static string getCanonicalizationTransformation(CanonicalizerWrapper canonicalizerWrapper, Error error)
 {
     return(CanonicalizerWrapperUtils.getCanonicalizationMethodAlorithm(canonicalizerWrapper, error));
 }