public bool richiediOTP(string aliasCertificato, string dominioCertificato, FirmaRemota.FirmaRemotaPortTypeClient client) { if (string.IsNullOrEmpty(dominioCertificato)) { dominioCertificato = ConfigurationManager.AppSettings["HSMCERTDOMAIN"]; } System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls | System.Net.SecurityProtocolType.Ssl3; try { string retval = client.RichiestaOTP(aliasCertificato, dominioCertificato); if (retval.ToUpperInvariant().Equals("OK")) { return(true); } else { return(false); } } catch (FaultException <FirmaRemota.WSFault> f) { string errMsg = componiErroreWSFault(f.Detail); logger.Error(errMsg); throw new Exception(errMsg); } catch (Exception e) { string errMsg = componiErrore(e, "VisualizzaCertificatoHSM"); logger.Error(errMsg); throw new Exception(errMsg); } }
private void OpenWcfChannel() { string serviceUrl = ConfigurationManager.AppSettings["HSMSERVICE_URL"]; if (client == null) { logger.Debug("Il canale è null, apro un nuovo canale di comunicazione"); client = HSMConnector.createClient(serviceUrl); } if (client.State != System.ServiceModel.CommunicationState.Opened) { logger.Debug("Il canale è chiuso, lo apro nuovamente"); client = HSMConnector.createClient(serviceUrl); } }
public static bool Session_RemoteSign(string SessionToken, string aliasCertificato, string dominioCertificato, string pinCertificato, string otpFirma, FirmaRemota.FirmaRemotaPortTypeClient client) { List <byte[]> filesRead = new List <byte[]>(); SessionToken = SessionToken.ToUpper(); //string cacheDir = Path.Combine ( AppDomain.CurrentDomain.BaseDirectory , "MultiSignWorkDir"); string cacheDir = ConfigurationManager.AppSettings["CACHEDIR"] + "MultiSignWorkDir"; string sessionDir = Path.Combine(cacheDir, SessionToken); if (Directory.Exists(sessionDir)) { string manifestFile = Path.Combine(sessionDir, "Manifest.xml"); if (File.Exists(manifestFile)) { String manifestXML = File.ReadAllText(manifestFile); Manifest.ManifestFile mft = Manifest.ManifestFile.Deserialize(manifestXML); foreach (Manifest.MainfestFileInformation FileInformation in mft.FileInformation) { byte[] content = File.ReadAllBytes(Path.Combine(sessionDir, FileInformation.OriginalFullName)); filesRead.Add(content); } sbyte marca = 0; sbyte firmaParallela = 0; if (mft.timestamp) { marca = 1; } if (mft.cosign) { firmaParallela = 1; } ClrVerificationService.FirmaRemota.FileFirmatiType retval = null; try { if (client != null) { System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls | System.Net.SecurityProtocolType.Ssl3; if (mft.SignatureType == Manifest.SignType.CADES) { retval = client.FirmaRemotaMultiplaP7M(filesRead.ToArray(), aliasCertificato, dominioCertificato, pinCertificato, otpFirma, marca, firmaParallela); } else { retval = client.FirmaRemotaMultiplaPDF(filesRead.ToArray(), aliasCertificato, dominioCertificato, pinCertificato, otpFirma, marca); } } else { retval = new ClrVerificationService.FirmaRemota.FileFirmatiType(); //dummy retval.documentoFirmato = filesRead.ToArray(); } } catch (FaultException <FirmaRemota.WSFault> f) { string errMsg = componiErroreWSFault(f.Detail); logger.Error(errMsg); throw new Exception(errMsg); } catch (Exception e) { logger.ErrorFormat("Errore chimando la firma multipla {0} {1}", e.Message, e.StackTrace); return(false); } int index = 0; foreach (byte[] filebyteArray in retval.documentoFirmato) { filesRead[index++] = filebyteArray; } index = 0; foreach (Manifest.MainfestFileInformation FileInformation in mft.FileInformation) { byte[] content = filesRead[index++]; string newName = "signed_" + FileInformation.OriginalFullName; File.WriteAllBytes(Path.Combine(sessionDir, newName), content); FileInformation.SignedFullName = newName; } File.WriteAllText(manifestFile, mft.Serialize()); return(true); } } return(false); }
public byte[] FirmaFileCADES(byte[] fileDafirmare, string aliasCertificato, string dominioCertificato, string pinCertificato, string otpFirma, bool marcaTemporale, bool cofirma, FirmaRemota.FirmaRemotaPortTypeClient client) { DateTime dataVerifica = DateTime.Now; if (string.IsNullOrEmpty(dominioCertificato)) { dominioCertificato = ConfigurationManager.AppSettings["HSMCERTDOMAIN"]; } sbyte marca = 0; sbyte firmaParallela = 0; if (marcaTemporale) { marca = 1; } if (cofirma) { firmaParallela = 1; } System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls | System.Net.SecurityProtocolType.Ssl3; try { ClrVerificationService.FirmaRemota.fileFirmato retval = client.FirmaRemotaP7M(fileDafirmare, aliasCertificato, dominioCertificato, pinCertificato, otpFirma, marca, firmaParallela); return(retval.Value); } catch (FaultException <FirmaRemota.WSFault> f) { string errMsg = componiErroreWSFault(f.Detail); logger.Error(errMsg); throw new Exception(errMsg); } catch (Exception e) { string errMsg = componiErrore(e, "FirmaFileCADES"); logger.Error(errMsg); throw new Exception(errMsg); } }
public byte[] ControFirmaFileCADES(byte[] fileDafirmare, string aliasCertificatoDaControfirmare, string aliasCertificato, string dominioCertificato, string pinCertificato, string otpFirma, bool marcaTemporale, FirmaRemota.FirmaRemotaPortTypeClient client) { DateTime dataVerifica = DateTime.Now; if (string.IsNullOrEmpty(dominioCertificato)) { dominioCertificato = ConfigurationManager.AppSettings["HSMCERTDOMAIN"]; } sbyte marca = 0; sbyte firmaParallela = 0; if (marcaTemporale) { marca = 1; } System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls | System.Net.SecurityProtocolType.Ssl3; List <byte[]> fileArr = new List <byte[]>(); fileArr.Add(fileDafirmare); try { ClrVerificationService.FirmaRemota.DocumentiControFirmatiType retval = client.ControFirma(fileArr.ToArray(), aliasCertificatoDaControfirmare, aliasCertificato, dominioCertificato, pinCertificato, otpFirma, marca); return(retval.docControFirmato[0]); } catch (FaultException <FirmaRemota.WSFault> f) { string errMsg = componiErroreWSFault(f.Detail); logger.Error(errMsg); throw new Exception(errMsg); } catch (Exception e) { string errMsg = componiErrore(e, "ControFirmaFileCADES"); logger.Error(errMsg); throw new Exception(errMsg); } }
public static FirmaRemota.FirmaRemotaPortTypeClient createClient(string endPoindAddress) { logger.Debug("INIZIO"); FirmaRemota.FirmaRemotaPortTypeClient channel = null; try { var binding = new CustomBinding(); binding.Name = "FirmaRemotaPortTypeEndpoint2BindingMIO"; XmlDictionaryReaderQuotas readquota = new XmlDictionaryReaderQuotas { MaxStringContentLength = 100000000, MaxArrayLength = 100000000, MaxBytesPerRead = 52428800 }; MtomMessageEncodingBindingElement mtomEconding = new MtomMessageEncodingBindingElement { MaxReadPoolSize = 640, MaxWritePoolSize = 160, MessageVersion = MessageVersion.Soap12, MaxBufferSize = 2147483647, }; mtomEconding.ReaderQuotas.MaxArrayLength = 100000000; mtomEconding.ReaderQuotas.MaxBytesPerRead = 52428800; mtomEconding.ReaderQuotas.MaxStringContentLength = 52428800; HttpsTransportBindingElement httpsTransposport = new HttpsTransportBindingElement { ManualAddressing = false, MaxBufferPoolSize = 52428800, MaxBufferSize = 2147483647, MaxReceivedMessageSize = 2147483647, AllowCookies = false, AuthenticationScheme = System.Net.AuthenticationSchemes.Anonymous, BypassProxyOnLocal = false, HostNameComparisonMode = System.ServiceModel.HostNameComparisonMode.StrongWildcard, KeepAliveEnabled = true, ProxyAuthenticationScheme = System.Net.AuthenticationSchemes.Anonymous, Realm = "", TransferMode = System.ServiceModel.TransferMode.Buffered, UnsafeConnectionNtlmAuthentication = false, UseDefaultWebProxy = false, RequireClientCertificate = true }; binding.Elements.Add(mtomEconding); binding.Elements.Add(httpsTransposport); EndpointAddress epAddre = new EndpointAddress(endPoindAddress); ContractDescription cd = new ContractDescription("FirmaRemota.FirmaRemotaPortType"); channel = new FirmaRemota.FirmaRemotaPortTypeClient(binding, epAddre); string certFindData = ConfigurationManager.AppSettings["HSM_CERTNAME"]; channel.ClientCredentials.ClientCertificate.SetCertificate(System.Security.Cryptography.X509Certificates.StoreLocation.LocalMachine, System.Security.Cryptography.X509Certificates.StoreName.My, System.Security.Cryptography.X509Certificates.X509FindType.FindBySubjectName, certFindData); channel.Endpoint.Behaviors.Add(new MaxFaultSizeBehavior(2147483647)); } catch (Exception e) { logger.Error("createClient error :" + e.Message + e.StackTrace); throw e; } return(channel); }
public string VisualizzaCertificatoHSM(string aliasCertificato, string dominioCertificato, FirmaRemota.FirmaRemotaPortTypeClient client) { if (string.IsNullOrEmpty(dominioCertificato)) { dominioCertificato = ConfigurationManager.AppSettings["HSMCERTDOMAIN"]; } DateTime dataVerifica = DateTime.Now; System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls | System.Net.SecurityProtocolType.Ssl3; try { ClrVerificationService.FirmaRemota.CertificatoType ct = client.VisualizzaCertificato(aliasCertificato, dominioCertificato, out dataVerifica); return(GetCertificateListAsJsonFormat(ct)); } catch (FaultException <FirmaRemota.WSFault> f) { string errMsg = componiErroreWSFault(f.Detail); logger.Error(errMsg); throw new Exception(errMsg); } catch (Exception e) { string errMsg = componiErrore(e, "VisualizzaCertificatoHSM"); logger.Error(errMsg); throw new Exception(errMsg); } }