Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 2420 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Não sei se ajuda alguem porém aqui vai o código em C# que eu utilizo para gerar a assinatura.

private void ReloadCerts()
		{
			var store = new System.Security.Cryptography.X509Certificates.X509Store(StoreName.My, StoreLocation.CurrentUser);
			store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
			this.certs = new List<X509Certificate2>();
			this.cmbCertificado.Properties.Items.Clear();
			var _certs = store.Certificates
				.Find(X509FindType.FindByTimeValid, DateTime.Now, true)
				.Find(X509FindType.FindByKeyUsage, X509KeyUsageFlags.DigitalSignature, true);
			foreach (var cert in _certs)
			{
				if (cert.HasPrivateKey)
				{
					this.certs.Add(cert);
					this.cmbCertificado.Properties.Items.Add(cert.GetNameInfo(X509NameType.SimpleName, false));
				}
			}
		}
private void btnGerar_Click(object sender, EventArgs e)
		{
			if (this.cmbCertificado.SelectedIndex >= 0)
			{
				var cert = this.certs[this.cmbCertificado.SelectedIndex];
				//if (cert.Verify())
				{
					var data = Encoding.UTF8.GetBytes(this.txtCNPJSoftwareHouse.Text + this.txtCNPJContribuinte.Text);
					RSACryptoServiceProvider csp = (RSACryptoServiceProvider)cert.PrivateKey; // cert = certificado X509
					var sha = new SHA256Managed();
					var hash = sha.ComputeHash(data);
					var encrypted = csp.SignHash(hash, CryptoConfig.MapNameToOID("SHA256")); 

					this.txtAssinatura.Text = Convert.ToBase64String(encrypted);

				}
			}
		}
  • Curtir 1
Postado


			var store = new System.Security.Cryptography.X509Certificates.X509Store(StoreName.My, StoreLocation.CurrentUser);
			

O que vc atribui nesse StoreName.my?

 

Postado

Usando o código do Guilhermesmc, consegui selecionar o certificado A3 e gerar a chave.
porém ela também ficou com 172 bytes, quando fiz com openssl, deu o mesmo resultado 172 bytes!

Bem, acho que é isso...

Postado

Usando o código do Guilhermesmc, consegui selecionar o certificado A3 e gerar a chave.

porém ela também ficou com 172 bytes, quando fiz com openssl, deu o mesmo resultado 172 bytes!

Bem, acho que é isso...

Utilizando o meu código aqui eu consigo chegar nos 344 bytes que a sefaz pede:

Exemplo gerado pelo código postado acima:

"YOXBBoAVZ/RnlTautWW0DzTgao15SQR8cyZ1cGJrvx6v+Ap6pH5oiOzIoPk3BBfp6KmTHOEyVTE6E80x/VZvMAyeCyvEm57wmFrUMmL7JcDTqbAvQFpEm71licVRsGaa0WVppko6SYHC58TTqqgpDZWU4q1gjkAJOn7VERyIJDlTXJe3uWrlyvH3z2iyd1ooa7gA4N/IVLzEOTk5ByosiNg+T3MUftNioo8McdhGNNSNk/kxZG2d0cCFw71YaiiyR2g1JGFH4bgH7bAC6vD8r4nECkZKVsyN7cHoSwcoAo3dbT6+TvWVToXgze2EU4w3Plq3BMxYmOJN0i31KWXMQw=="

A variavel data fica com 28 bytes.

A variavel hash fica com 32 bytes.

A variavel encrypted fica com 256 bytes.

E o resultado fica com 344 bytes.

Postado

Utilizando o meu código aqui eu consigo chegar nos 344 bytes que a sefaz pede:

Exemplo gerado pelo código postado acima:

"YOXBBoAVZ/RnlTautWW0DzTgao15SQR8cyZ1cGJrvx6v+Ap6pH5oiOzIoPk3BBfp6KmTHOEyVTE6E80x/VZvMAyeCyvEm57wmFrUMmL7JcDTqbAvQFpEm71licVRsGaa0WVppko6SYHC58TTqqgpDZWU4q1gjkAJOn7VERyIJDlTXJe3uWrlyvH3z2iyd1ooa7gA4N/IVLzEOTk5ByosiNg+T3MUftNioo8McdhGNNSNk/kxZG2d0cCFw71YaiiyR2g1JGFH4bgH7bAC6vD8r4nECkZKVsyN7cHoSwcoAo3dbT6+TvWVToXgze2EU4w3Plq3BMxYmOJN0i31KWXMQw=="

A variavel data fica com 28 bytes.

A variavel hash fica com 32 bytes.

A variavel encrypted fica com 256 bytes.

E o resultado fica com 344 bytes.

 

 

Então realmente vou ter que verificar como se faz isso com o Certificado A3

Acredito que seja o certificado o problema.

 

Postado

Utilizando o meu código aqui eu consigo chegar nos 344 bytes que a sefaz pede:

Exemplo gerado pelo código postado acima:

"YOXBBoAVZ/RnlTautWW0DzTgao15SQR8cyZ1cGJrvx6v+Ap6pH5oiOzIoPk3BBfp6KmTHOEyVTE6E80x/VZvMAyeCyvEm57wmFrUMmL7JcDTqbAvQFpEm71licVRsGaa0WVppko6SYHC58TTqqgpDZWU4q1gjkAJOn7VERyIJDlTXJe3uWrlyvH3z2iyd1ooa7gA4N/IVLzEOTk5ByosiNg+T3MUftNioo8McdhGNNSNk/kxZG2d0cCFw71YaiiyR2g1JGFH4bgH7bAC6vD8r4nECkZKVsyN7cHoSwcoAo3dbT6+TvWVToXgze2EU4w3Plq3BMxYmOJN0i31KWXMQw=="

A variavel data fica com 28 bytes.

A variavel hash fica com 32 bytes.

A variavel encrypted fica com 256 bytes.

E o resultado fica com 344 bytes.

Guilherme o meu encrypted deu 128, tem alguma ideia do que pode ser??

Apenas essa variável.

Obrigado.

 

Postado

Você esta utilizando explicitamente SHA256 para gerar a variavel encrypted? Se não me engano SHA não tem nenhuma variação que gera somente 128 bytes. MD5 gera 128 bytes.

Estou usando exatamente o seu código , 

Sim eu sei do MD5, mas me diz uma coisa qual o valor que o seu HashSizeValue da variável CSP, retorna?

o meu está retornando 0

Mas estranho que a variavel HASH está recebendo 32 (bytes) * 8 (bit) = 256bits

Só que quando assino ao invés de assinar com os 256bits ele assina com 128bits

 

Postado

Estou usando exatamente o seu código , 

Sim eu sei do MD5, mas me diz uma coisa qual o valor que o seu HashSizeValue da variável CSP, retorna?

o meu está retornando 0

Mas estranho que a variavel HASH está recebendo 32 (bytes) * 8 (bit) = 256bits

Só que quando assino ao invés de assinar com os 256bits ele assina com 128bits

 

 

csp.KeySize = 2048;

hash.HashSize = 256;

Postado

csp.KeySize = 2048;

hash.HashSize = 256;

Obrigado, agora está explicado!

NÃO É POSSÍVEL usar o A3 para fazer esse processo!

 

Obrigado!

  • 2 meses depois ...
  • Fundadores
Postado

3.1 - Não faça flooding - Inundar o fórum com posts repetidos, com a mesma dúvida ou as mesmas palavras é chamado de flooding. Isso é proibido. Apenas um post feito no lugar certo é suficiente. Pesquise antes de postar, talvez sua dúvida já está respondida em outro post.


 

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

  • Fundadores
Postado

A chave é uma segurança da Sw.House... 

 

Imagine, se algum começa usar o SAT, informando o meu CNPJ como Sw.House...  Eu seria corresponsável pela emissão desses documentos...

 

O Certificado digital da Sw.House não precisa acompanhar o SAT... Veja esse post:

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Postado

Daniel, entendi, já estou tentando gerar a criptografia.

 

Bom, então com essa criptografia gerada,  para cada novo cliente meu que for utilizar o SAT, tenho que gerar essa criptografia e usar no campo da Assinatura da Software house... é isso??

  • Fundadores
Postado

Isso mesmo..

- Você computa a assinatura, usando o CNPJ do cliente e o seu...

- De alguma maneira, roda o método "AssociarAsinatura", no SAT do seu cliente, e informa a String gerada... (Isso poderia ser feito pelo próprio cliente, se bem instruído)

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

  • 2 semanas depois ...
Postado

OK... Agora o ACBrEAD é capaz de realizar a mesma operação para o calculo de Assinatura, descrita no inicio desse Post...

 

Por favor veja esse post:

 

Exemplo de uso:

attachicon.gifDemoEAD.png

 

Boa tarde

 

Estou utilizando o demo ACBrEAD (atualizado), com um certificado A1, conforme o exemplo citado.

Porém ao gerar a assinatura fica com 172 caracteres.

Preciso alterar algo?

  • Este tópico foi criado há 2420 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...
The popup will be closed in 10 segundos...