Este es el proceso que he diseñado con las herramientas de Linux disponibles. Cuide todos los nombres de archivos (distingue entre mayúsculas y minúsculas) y reemplace MyOrgGIIN
con el identificador GIIN de su organización.
-
Existe un alto riesgo de que aparezcan comillas y comas en su archivo FATCA XML. Borre estos caracteres del archivo XML a evite fallas en el envío (y algunos otros como hash y doble guión, lea este PDF para obtener más información).
-
Incluya su estructura ftc:FATCA_OECD
XML en una plantilla de firma envolvente que especifique los métodos de cifrado y hash esperados ( 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>
- Generar firma XML en la plantilla preparada con
xmlsec1
, llenará los nodos vacíos:
xmlsec1 --sign --output MyOrgGIIN_Payload.xml --pkcs12 myorg_ssl_certificate.p12 --pwd pkcs12password Playload.xml
- Comprimir carga útil XML firmada como archivo zip
zip MyOrgGIIN_Payload.zip MyOrgGIIN_Payload.xml
- Generar una clave de uso de 32 bytes
dd if=/dev/random of=mySingleUsageAesKey bs=8 count=4
- Muestra los 32 bytes como secuencia hexadecimal (64 caracteres)
xxd -c 32 -p mySingleUsageAesKey
- Cifre su archivo
Payload.zip
con AES-256 pasando su clave hexadecimal como opción -K
openssl aes-256-ecb -nosalt -K HexaSequenceForMySingleUsageAesKey -in MyOrgGIIN_Payload.zip -out MyOrgGIIN_Payload
- Cifre la clave AES con la clave pública RSA del IRS
openssl rsautl -encrypt -certin -inkey IRSpublickey.cer -in mySingleUsageAesKey -out 000000.00000.TA.840_Key
-
Genera una marca de tiempo con date "+%Y%m%d%H%M%S%2NZ"
-
Cree un archivo de metadatos usando esta marca de tiempo del sitio IDES como MyOrgGIIN_Metadata.xml
-
Empaque sus metadatos, carga útil cifrada y clave AES cifrada en el archivo de datos de transmisión
zip TIMESTAMP_MyOrgGIIN.zip MyOrgGIIN_Metadata.xml MyOrgGIIN_Payload 000000.00000.TA.840_Key
Ahora envíe y reaccione a la notificación de errores.