Wpis z mikrobloga

Hej. Czy jak liczycie HashValue z sekcji Document dla pliku JPK-VAT-TEST-0000.xml udostępnionego przez ministerstwo to dostajecie taką samą wartość jak w pliku InitUpload.xml przygotowanym przez MF, tj. (ZZEMD0SHu8b3AeRIOU30OcT9+nrxFTWHaXNdqnif9FQ=)?
@rollon Tak, poniżej przykład:

private void button4Click1(object sender, EventArgs e)
{
SHA256 mySHA256 = SHA256Managed.Create();
byte[] hashValue;
FileStream fileStream = File.Open(@"C:\TEMP\JPK-VAT-TEST-0000.xml",FileMode.Open);
fileStream.Position = 0;
hashValue = mySHA256.ComputeHash(fileStream);
MessageBox.Show("HashValue: " + Convert.ToBase64String(hashValue));
fileStream.Close();
}
@Przemek78 Dzięki za odpowiedź, bardzo mi pomogłeś. Ja użyłem SHA1CryptoServiceProvider a to przecież jest SHA1. Zaćmienie. My Fault.
@angelson Jak tylko przez to przebrnę to się podzielę kodem. Wszyscy jedziemy na tym samym wózku :)
@angelson:
public class JpkSigner
{
//public InitializerJpk InitializerJpk;

public X509Certificate2Collection CertificateCollection;
public X509Certificate2 Certificate;

public JpkSigner()
{
CertificateCollection = GetCertificatesFromMyStore();
}

public void SetCertificate(int CertificateIndex)
{
Certificate = CertificateCollection[CertificateIndex];
}

public void DoSign(ref InitializerJpk initializerJpk)
{
if (Certificate != null)
{
initializerJpk.InitUploadDocumentSigned = XadesHelper.Sign(initializerJpk.InitUploadDocument).Using(Certificate).IncludingCertificateInSignature().SignAndGetXml();
initializerJpk.IsSigned = true;
}
}

private X509Certificate2Collection GetCertificatesFromMyStore() //CertificateStore certificateStoreType)
{
//if (CertificateStore.My.Equals(certificateStoreType))
//{
var store = new X509Store(StoreName.My);
store.Open(OpenFlags.ReadOnly);

X509Certificate2Collection fcollection = (X509Certificate2Collection)store.Certificates.Find(X509FindType.FindByTimeValid, DateTime.Now, true);
return
Czy też czekacie tak długo na weryfikacje dokumentu? Wykonałem PutBlob, FInishUpload i przy metodzie Status dostaje "Trwa weryfikacja dokumentu"... co już trwa 1,5 godziny...
Na serwerze produkcyjnym
mcx082: dzięki

zaszyfrowałem plik zgodnie z powyższym kodem, ale nadal mam "Niepodpisany dokument" - podpis jest w pliku, podpisuje plik z przykładu InitUpload.xml
czy może to być wina certyfikatu ? (wygenerowany testowo) ew. czy ma ktoś sprawdzony sposób na testowy działający certyfikat ?
?@mcx082: czy na pewno to Ci działa? tzn. po podpisie za pomocą w/w kodu plik poprawnie przechodzi ? podpis jest inny niż wygenerowany za pomocą proCertum (przez proCertum działa - ten sam certyfikat, ten sam plik wejściowy)
Testowa transakcja na serwerze prod. od wczoraj godz. 13:17 cały czas "wisi" na statusie 120 (Sesja została poprawnie zakończona. Dane zostały poprawnie zapisane. Trwa weryfikacja dokumentu)... Wygląda, jakby zatrzymali dalsze procesowanie..?
hej.
Poniżej przedstawiam kod z c# z poszczególnymi krokami pozwalającymi na przygotowanie zaszyfrowanych plików.
Kod jest wyjątkowo prymitywny, ale chodzi mi tylko o to aby ktoś, kto przebrnął już przez ten proces,spojrzał na poszczególne kroki i zwrócił uwagę, w których momentach moje podejście jest złe.
Bardzo proszę o rewizję kodu.

static public bool CreateJPK()
{
try
{
// generate one-time encryption key
AesCryptoServiceProvider aesEncryption = new AesCryptoServiceProvider();
aesEncryption.KeySize = 256;
aesEncryption.BlockSize =
Witam
Mam problem z wysłaniem przez HttpWebRequest podpisanego xml. Dostaje błąd 400 - Serwer zdalny zwrócił błąd: (400) Złe żądanie. Jak wysyłam ten sam plik przez SoapUi dostaję prawidłową odpowiedź. Ma ktoś pomysł co może być nie tak ?

public void PostXMLData(string destinationUrl, string requestXmlFile)
{
XmlDocument requestXml = new XmlDocument();
requestXml.Load(requestXmlFile);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(destinationUrl);
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(requestXml.OuterXml);
request.ContentType = "application/xml; encoding='utf-8'";
request.ContentLength = bytes.Length;
request.Method = "POST";

using (Stream
@krzyhu7: wypróbuj klasę WebRequest z tej strony źródło

ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;
/*var serializer = new XmlSerializer(typeof(InitUploadType));
serializer.Serialize(data);*/
XmlDocument doc = new XmlDocument();
doc.Load("initupload-sign.xml");

WebRequestHandler handler = new WebRequestHandler();
X509Certificate2 certificate = new X509Certificate2("cert.crt");
handler.ClientCertificates.Add(certificate);

HttpClient client = new HttpClient(handler);
client.BaseAddress = new Uri("[https://test-e-dokumenty.mf.gov.pl](https://test-e-dokumenty.mf.gov.pl)");
client.Headers.Set("Content-Type", "application/xml");
var response = client.UploadString(path, doc.OuterXml);

return response.ToString();
witam,
proszę o pomoc

jak wywołać metodę InitUploadSigned na serwerze produkcyjnym e-dokumenty.mf.gov.pl ?
Wysyłając kodem z poprzedniego postu poprawnie przechodzi na test-e-dokumenty.mf.gov.pl a niepoprawnie (kod 400 bad request) na serwer produkcyjnym.
Zgodnie z info ze strony mf do uwierzytelnienia http używam certyfikatu testowego crt