* * * *

Privacy Policy

Blog italiano

Clicca qui se vuoi andare al blog italiano su Lazarus e il pascal.

Forum ufficiale

Se non siete riusciti a reperire l'informazione che cercavate nei nostri articoli o sul nostro forum vi consiglio di visitare il
Forum ufficiale di Lazarus in lingua inglese.

Lazarus 1.0

Trascinare un file nel programma
DB concetti fondamentali e ZeosLib
Recuperare codice HTML da pagina web
Mandare mail con Lazarus
Stabilire il sistema operativo
Esempio lista in pascal
File INI
Codice di attivazione
Realizzare programmi multilingua
Lavorare con le directory
Utilizzare Unità esterne
TTreeView
TTreeview e Menu
Generare controlli RUN-TIME
LazReport, PDF ed immagini
Intercettare tasti premuti
Ampliare Lazarus
Lazarus e la crittografia
System Tray con Lazarus
UIB: Unified Interbase
Il file: questo sconosciuto
Conferma di chiusura di un applicazione
Liste e puntatori
Overload di funzioni
Funzioni a parametri variabili
Proprietà
Conversione numerica
TImage su Form e Panel
Indy gestiore server FTP lato Client
PopUpMenu sotto Pulsante (TSpeedButton)
Direttiva $macro
Toolbar
Evidenziare voci TreeView
Visualizzare un file Html esterno
StatusBar - aggirare l'errore variabile duplicata
Da DataSource a Excel
Le permutazioni
Brute force
Indy 10 - Invio email con allegati
La gestione degli errori in Lazarus
Pascal Script
Linux + Zeos + Firebird
Dataset virtuale
Overload di operatori
Lavorare con file in formato JSON con Lazarus
Zeos ... dietro le quinte (prima parte)
Disporre le finestre in un blocco unico (come Delphi)
Aspetto retrò (Cmd Line)
Lazarus 1.0
Come interfacciare periferica twain
Ubuntu - aggiornare free pascal e lazarus
fpcup: installazioni parallele di lazarus e fpc
Free Pascal e Lazarus sul Raspberry Pi
Cifratura: breve guida all'uso dell'algoritmo BlowFish con lazarus e free pascal.
Creare un server multithread
guida all'installazione di fpc trunk da subversion in linux gentoo
Indice
DB concetti fondamentali e connessioni standard
Advanced Record Syntax
DB concetti fondamentali e DBGrid
DB concetti fondamentali e TDBEdit, TDBMemo e TDBText
Advanced Record Syntax: un esempio pratico
Superclasse form base per programmi gestionali (e non)
Superclasse form base per programmi gestionali (e non) #2 - log, exception call stack, application toolbox
Superclasse form base per programmi gestionali (e non) #3 - traduzione delle form
Superclasse form base per programmi gestionali (e non) #4 - wait animation
Un dialog per la connessione al database:TfmSimpleDbConnectionDialog
Installare lazarus su mac osx sierra
immagine docker per lavorare con lazarus e free pascal
TDD o Test-Driven Development
Benvenuto! Effettua l'accesso oppure registrati.
Aprile 19, 2024, 05:30:42 pm

Inserisci il nome utente, la password e la durata della sessione.

383 Visitatori, 0 Utenti

Autore Topic: PKCS7 vuoto  (Letto 6692 volte)

giuian

  • Newbie
  • *
  • Post: 14
  • Karma: +0/-0
PKCS7 vuoto
« il: Marzo 10, 2019, 10:07:30 am »
Buongiorno,
sto cercando di estrarre il contenuto di un file p7m, non avendo trovato niente ho provato ad adattare una procedura delphi..
Ubuntu 64bit, lazarus 1.8.4 Openssl ver 1.0.1F.
Gli handler delle funzioni vengono caricati correttamente dalle librerie libcrypto.so e libssl.so

Funziona tutto, ma arrivati al punto dell'estrazione, nonostante il buffer sia riempito correttamente , il BIO  viene creato .... forse vuoto?

  // Read from stream
  if Stream.Read(Buffer[0], iDataLength) = iDataLength then begin
    // Create BIO from this memory
    fBIO := mFunctions.BIO_new_mem_buf(@Buffer), iDataLength);

    if fBIO <> nil then begin
      // Tries to read this as a .P7M file.
      fPKCS7 := mFunctions.d2i_PKCS7_bio(fBIO, nil);

Il puntatore punta ad un record PKCS7 vuoto ....

Qualcuno può aiutarmi??
Maledetta fattura elettronica....

bonmario

  • Hero Member
  • *****
  • Post: 1300
  • Karma: +10/-1
Re:PKCS7 vuoto
« Risposta #1 il: Marzo 10, 2019, 12:56:55 pm »
Ciao,
non ti so aiutare, ma ti posso dire una cosa: da tempo ho uno script Linux che mi permette di sproteggere i files p7m.
Questo script, a volte funziona, a volte no.
Non ho mai indagato a fondo, perché di solito quelli che non riesco a sproteggere con lo script li sproteggo direttamente online, ma mi sono fatto l'idea che ci siano diversi tipi di files .p7m, nonostante l'estensione sia la stessa.
Non vorrei che il file su cui stai testando il tuo programma sia uno di quelli da gestire in un altro modo.

Ciao, Mario

giuian

  • Newbie
  • *
  • Post: 14
  • Karma: +0/-0
Re:PKCS7 vuoto
« Risposta #2 il: Marzo 10, 2019, 11:35:12 pm »
Si, esistono diverse codifiche, ma la procedura dovrebbe gestirle tutte.... Non l'ho provata su Windows con  Delphi ma immagino che funzioni.
Sono veramente in un vicolo cieco anche perché il mio livello è abbastanza basso. Ci vuole l'intervento di un guru!


nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2870
  • Karma: +20/-4
Re:PKCS7 vuoto
« Risposta #3 il: Marzo 11, 2019, 01:27:12 am »
ho visto che nei sorgenti fpc c'è una implemetazione openssl

https://svn.freepascal.org/cgi-bin/viewvc.cgi/trunk/packages/openssl/

dai un'occhiata se ti può essere utile in sostituzione della libreria Delphi
Imagination is more important than knowledge (A.Einstein)

giuian

  • Newbie
  • *
  • Post: 14
  • Karma: +0/-0
Re:PKCS7 vuoto
« Risposta #4 il: Marzo 11, 2019, 06:45:40 am »
Grazie, quella libreria è la stessa di Synapse. In realtà le funzioni vengono chiamate direttamente dalle librerie

 var
 HC: HMODULE;
 .............

 HC := LoadLibrary('libcrypto.so');
 BIO_new_mem_buf := GetProcAddress(HC, 'BIO_new_mem_buf');

 le funzioni vengono caricate e inizializzate correttamente.....

 Non so ... possibile che non ci abbia mai provato nessuno??

Mimmo

  • Jr. Member
  • **
  • Post: 76
  • Karma: +3/-0
Re:PKCS7 vuoto
« Risposta #5 il: Marzo 11, 2019, 08:30:07 am »
Ciao,
premesso che non ne so niente e ti scrivo solo perchè una soluzione non è ancora apparsa all'orizzonte, a questo indirizzo c'è un esempio per Delphi:
http://www.csita.unige.it/software/free/delphiopenssl-spostato-al-DISI/example5.html
Lì utilizza in cascata 3 funzioni diverse: prima d2i_PKCS7_bio, poi se fallisce usa PEM_read_bio_PKCS7 e se fallisce anche questa usa SMIME_read_PKCS7. Forse il file è in qualche formato diverso da quello previsto?




nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2870
  • Karma: +20/-4
Re:PKCS7 vuoto
« Risposta #6 il: Marzo 11, 2019, 10:20:35 am »
Non so ... possibile che non ci abbia mai provato nessuno??

se non hai urgenza (= qualche giorno di pazienza) dovrei provare anche io, magari mettendo insieme le prove riusciamo a fare dei progressi
in alternativa puoi chiedere sul forum ufficiale, li sicuramente qualcuno dovrebbe rispondere
Imagination is more important than knowledge (A.Einstein)

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2382
  • Karma: +10/-0
Re:PKCS7 vuoto
« Risposta #7 il: Marzo 11, 2019, 10:51:17 am »
La documentazione di riferimento dovrebbe essere questa.https://www.ietf.org/rfc/rfc2633.txt:)
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

giuian

  • Newbie
  • *
  • Post: 14
  • Karma: +0/-0
Re:PKCS7 vuoto
« Risposta #8 il: Marzo 11, 2019, 05:14:13 pm »
Ciao,
premesso che non ne so niente e ti scrivo solo perchè una soluzione non è ancora apparsa all'orizzonte, a questo indirizzo c'è un esempio per Delphi:
http://www.csita.unige.it/software/free/delphiopenssl-spostato-al-DISI/example5.html
Lì utilizza in cascata 3 funzioni diverse: prima d2i_PKCS7_bio, poi se fallisce usa PEM_read_bio_PKCS7 e se fallisce anche questa usa SMIME_read_PKCS7. Forse il file è in qualche formato diverso da quello previsto?

Si l'avevo visto ... ma se il test di codifica fallisce il puntatore è nil .... invece nel mio caso il puntatore punta ad un record PKCS7 vuoto. In generale i PKCS7 delle fatture dovrebbero essere DER, quindi buona la prima (d2i_PKCS7_bio). Deve essere una sciocchezza ne sono sicuro....

giuian

  • Newbie
  • *
  • Post: 14
  • Karma: +0/-0
Re:PKCS7 vuoto
« Risposta #9 il: Marzo 11, 2019, 05:17:44 pm »
Non so ... possibile che non ci abbia mai provato nessuno??

se non hai urgenza (= qualche giorno di pazienza) dovrei provare anche io, magari mettendo insieme le prove riusciamo a fare dei progressi
in alternativa puoi chiedere sul forum ufficiale, li sicuramente qualcuno dovrebbe rispondere

Oramai ci sto sbattendo da un pò e mi sono quasi rassegnato .... quindi non ho molte alternative all'aspettare!!  ;D ;D

La documentazione di riferimento dovrebbe essere questa.https://www.ietf.org/rfc/rfc2633.txt:)
Grazie, la documentazione è sempre utile, ma in questo caso sono delle funzioni inserite in una procedura funzionante su altri sistemi (Delphi + Windows). Le funzioni Openssl dovrebbero essere uguali..... Mah


In realtà credo che più che un problema Delphi/Lazarus sia un problema Windows/Linux ....
Per Openssl su windows c'è libeay32.dll ... su Linux i compiti sono divisi fra libssl.so e libcrypto.so

A prescindere da questo, nel momento in cui le funzioni vengono caricate correttamente dalle librerie visto che openssl è uno standard le funzioni dovrebbero funzionare ugualmente.
« Ultima modifica: Marzo 11, 2019, 05:21:41 pm da giuian »

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2382
  • Karma: +10/-0
Re:PKCS7 vuoto
« Risposta #10 il: Marzo 11, 2019, 05:57:52 pm »
Hai provato... Molto stupidamente ad aprire col notepad il file p7m?
Se non devi controllare i certificati... 😜
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

giuian

  • Newbie
  • *
  • Post: 14
  • Karma: +0/-0
Re:PKCS7 vuoto
« Risposta #11 il: Marzo 11, 2019, 06:31:12 pm »
Hai provato... Molto stupidamente ad aprire col notepad il file p7m?
Se non devi controllare i certificati... 😜

Ti diro di più ... ho tagliato il file cercando gli header <xml .... ma il file risultante è sporcato da caratteri strani... credo siano ascii sotto a 10....

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2382
  • Karma: +10/-0
Re:PKCS7 vuoto
« Risposta #12 il: Marzo 11, 2019, 06:39:38 pm »
Allora il trucco ignorante lo conosci 😂😂😂
Cmq. Se puoi processare i singoli caratteri poi per bonificare il testo prima di leggerlo come xml dovresti poter avere un'approssimazione del giro corretto.

😉
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2382
  • Karma: +10/-0
Re:PKCS7 vuoto
« Risposta #13 il: Marzo 11, 2019, 08:19:08 pm »
Dubbio. Togli la coda del file o dai tutto in pasto al parser?
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

giuian

  • Newbie
  • *
  • Post: 14
  • Karma: +0/-0
Re:PKCS7 vuoto
« Risposta #14 il: Marzo 12, 2019, 07:17:31 am »
Allora il trucco ignorante lo conosci 😂😂😂


Ad ignoranza me la cavo bene ....  :D :D




Dubbio. Togli la coda del file o dai tutto in pasto al parser?


     FPos := Pos('<?xml version', S.DataString);
     LPos := Pos(':FatturaElettronica>', S.DataString)+20;
     Count := Lpos - FPos;
     xmlstringa := MidStr(s.DataString, FPos, Count);     

  ogni tanto trovo         Co‚èdiceArticolo><Descrizione>     

    no riesco a filtrarli tutti ....

 

Recenti

How To

Utenti
  • Utenti in totale: 785
  • Latest: gmax
Stats
  • Post in totale: 18772
  • Topic in totale: 2233
  • Online Today: 578
  • Online Ever: 900
  • (Gennaio 21, 2020, 08:17:49 pm)
Utenti Online
Users: 0
Guests: 383
Total: 383

Disclaimer:

Questo blog non rappresenta una testata giornalistica poiché viene aggiornato senza alcuna periodicità. Non può pertanto considerarsi un prodotto editoriale ai sensi della legge n. 62/2001.