public SignedMessage( Message innerMessage, X509Certificate2 certificate, ProtocolSettings discoveryInfo) { Utility.IfNullThrowNullArgumentException(innerMessage, "innerMessage"); this.innerMessage = innerMessage; this.envelopeUri = (innerMessage.Version.Envelope == EnvelopeVersion.Soap11) ? ProtocolStrings.SoapNamespace11Uri : ProtocolStrings.SoapNamespace12Uri; this.envelopePrefix = ProtocolStrings.SoapPrefix; this.discoveryInfo = discoveryInfo; this.securityIdGenerator = new SecurityIdGenerator(); this.securityHeader = new SendCompactSignatureHeader(this, certificate, discoveryInfo); this.state = BodyState.Created; }