Ecco il processo che ho progettato con gli strumenti Linux disponibili. Presta attenzione a tutti i nomi di file (maiuscole e minuscole) e sostituisci MyOrgGIIN
con l'identificativo GIIN della tua organizzazione.
-
Esiste il rischio elevato che nel file XML FATCA siano presenti virgolette e virgole. Elimina questi caratteri dal file XML a evita errori durante l'invio (e alcuni altri come hash e doppio trattino, leggi questo PDF per i dettagli).
-
Includi la tua struttura XML ftc:FATCA_OECD
in un modello di firma che avviluppa specificando i metodi di cifratura e hash previsti ( Payload.xml
):
<?xml version="1.0" encoding="utf-8"?>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
<Reference URI="#FATCA">
<Transforms>
<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<DigestValue></DigestValue>
</Reference>
</SignedInfo>
<SignatureValue></SignatureValue>
<KeyInfo>
<X509Data>
<X509SubjectName></X509SubjectName>
<X509Certificate></X509Certificate>
</X509Data>
</KeyInfo>
<Object Id="FATCA">
<ftc:FATCA_OECD xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="urn:oecd:ties:fatca:v1" xmlns:ftc="urn:oecd:ties:fatca:v1"
xmlns:iso="urn:oecd:ties:isofatcatypes:v1"
xmlns:sfa="urn:oecd:ties:stffatcatypes:v1" version="1.1">
[... your data ...]
</ftc:FATCA_OECD>
</Object>
</Signature>
- Genera la firma XML nel modello preparato con
xmlsec1
, riempirà i nodi vuoti:
xmlsec1 --sign --output MyOrgGIIN_Payload.xml --pkcs12 myorg_ssl_certificate.p12 --pwd pkcs12password Playload.xml
- Comprimi il payload XML firmato come archivio zip
zip MyOrgGIIN_Payload.zip MyOrgGIIN_Payload.xml
- Genera una singola chiave da 32 byte di utilizzo
dd if=/dev/random of=mySingleUsageAesKey bs=8 count=4
- Visualizza i 32 byte come sequenza esadecimale (64 caratteri)
xxd -c 32 -p mySingleUsageAesKey
- Cripta il tuo file
Payload.zip
con AES-256 passando la tua chiave esadecimale come opzione -K
openssl aes-256-ecb -nosalt -K HexaSequenceForMySingleUsageAesKey -in MyOrgGIIN_Payload.zip -out MyOrgGIIN_Payload
- Cifra la chiave AES con la chiave pubblica IRS RSA
openssl rsautl -encrypt -certin -inkey IRSpublickey.cer -in mySingleUsageAesKey -out 000000.00000.TA.840_Key
-
Genera un timestamp con date "+%Y%m%d%H%M%S%2NZ"
-
Crea file di metadati utilizzando questo timestamp dal sito IDES come MyOrgGIIN_Metadata.xml
-
Comprimi i metadati, il carico utile crittografato e la chiave crittografata AES nell'archivio dei dati di trasmissione
zip TIMESTAMP_MyOrgGIIN.zip MyOrgGIIN_Metadata.xml MyOrgGIIN_Payload 000000.00000.TA.840_Key
Adesso invia e rispondi alla notifica degli errori.