Ver Mensaje Individual
  #62 (permalink)  
Antiguo 08/02/2010, 22:00
huicho116
 
Fecha de Ingreso: febrero-2010
Mensajes: 4
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Facturacion electronica en México

Buena noches,

Antes que nada gracias a todos los colaboradores por aportar sus conocimientos y buena disposición a la comunidad.

Empiezo con mi pregunta, esto de la facturación electrónica es un rollo. En base a los post de este sección he construido algo pero tengo algunas dudas:

Ya obtuve mis claves a través de

C:\OpenSSL\bin\openssl.exe pkcs8 -inform DER -in C:\OpenSSL\Keys\aaa010101aaa_CSD_01.key -passin pass:a0123456789 -out C:\OpenSSL\Keys\aaa010101aaa.key.pem

C:\OpenSSL\bin\openssl.exe x509 -inform DER -outform PEM -in C:\OpenSSL\Keys\aaa010101aaa_CSD_01.cer -pubkey -out C:\OpenSSL\Keys\aaa010101aaa.cer.pem

Ya aplique el algoritmo MD5 a la cadena original que presenta el SAT .

Genere el sello digital con mis claves obtenidas en el punto uno

StreamReader readFile = new StreamReader(@"H:\Proyectos\Facturacion_electronic a\sello_digital\aaa010101aaa.key.pem");
//StreamReader readFile = new StreamReader(PublicKey);
PemReader Ocert = new PemReader(readFile);

//Dim o As AsymmetricCipherKeyPair = TryCast(Ocert.ReadObject(), AsymmetricCipherKeyPair)
AsymmetricCipherKeyPair o = Ocert.ReadObject() as AsymmetricCipherKeyPair;
ISigner sig = SignerUtilities.GetSigner("MD5WithRSAEncryption");
//sig.Init(True, o.[Private])
sig.Init(true, o.Private);
byte[] signature = sig.GenerateSignature();
string signatureHeader = Convert.ToBase64String(signature);

readFile.Close();
readFile = null;

El certificado
//*****************************certificado
//Read Public Key
TextReader trCer = new StreamReader(PublicKey);
PemReader rdCer = new PemReader(trCer);
X509Certificate Cert = (X509Certificate)rdCer.ReadObject();

Org.BouncyCastle.Crypto.AsymmetricKeyParameter pk = Cert.GetPublicKey();
//AsymmetricKeyParameter pk = Cert.GetPublicKey();
byte[] nSerie = Cert.SerialNumber.ToByteArray();
string nCertificado = Encoding.ASCII.GetString(nSerie);

Mi duda es, cómo relaciono la cadena obtenida de la aplicación del algoritmo MD5, el certificado o el sello.
En los requirimientos de hacienda dice que a la cadena obbtenida aplico el algoritmo RSA, con el sello y la clave privada, como junto estos procesos y luego convertirlo a base 64.

Por su ayuda muchas gracias!