Foros del Web » Programación para mayores de 30 ;) » .NET »

Factura electroncia sat mexico

Estas en el tema de Factura electroncia sat mexico en el foro de .NET en Foros del Web. que tal VeroB, yo tambien estoy programando mi FE en vb.net, pero me sale un pequeño error al momento de generar mi sello digital: {"Object ...

  #211 (permalink)  
Antiguo 27/09/2010, 19:00
 
Fecha de Ingreso: octubre-2005
Mensajes: 47
Antigüedad: 19 años, 2 meses
Puntos: 0
Respuesta: Factura electroncia sat mexico

que tal VeroB, yo tambien estoy programando mi FE en vb.net, pero me sale un pequeño error al momento de generar mi sello digital:
{"Object reference not set to an instance of an object."}

te paso mi código:

Dim pLlavePrivadaenBytes As Byte() = System.IO.File.ReadAllBytes(key)
Dim lrsa As RSACryptoServiceProvider = clsSeguridad.DecodeEncryptedPrivateKeyInfo(pLlaveP rivadaenBytes, IsecStr)

Dim hasher As MD5CryptoServiceProvider = New MD5CryptoServiceProvider()
Dim bytesFirmados As Byte() = lrsa.SignData(System.Text.Encoding.UTF8.GetBytes(S trcadenaoriginal), hasher)
Dim sellodigital As String = Convert.ToBase64String(bytesFirmados)
Dim certificado As X509Certificate2 = New X509Certificate2(ArchivoCertificado)
Dim NoCertificado = HexToString(certificado.SerialNumber)

La línea que me marca el error, es la siguiente:
Dim bytesFirmados As Byte() = lrsa.SignData(System.Text.Encoding.UTF8.GetBytes(S trcadenaoriginal), hasher)

Espero que me puedan hechar la mano para saber que estoy haciendo mal.
Gracias
  #212 (permalink)  
Antiguo 28/09/2010, 13:06
 
Fecha de Ingreso: septiembre-2010
Mensajes: 4
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Factura electroncia sat mexico

Cita:
Iniciado por AntonioMatias Ver Mensaje
que tal VeroB, yo tambien estoy programando mi FE en vb.net, pero me sale un pequeño error al momento de generar mi sello digital:
{"Object reference not set to an instance of an object."}

te paso mi código:

Dim pLlavePrivadaenBytes As Byte() = System.IO.File.ReadAllBytes(key)
Dim lrsa As RSACryptoServiceProvider = clsSeguridad.DecodeEncryptedPrivateKeyInfo(pLlaveP rivadaenBytes, IsecStr)

Dim hasher As MD5CryptoServiceProvider = New MD5CryptoServiceProvider()
Dim bytesFirmados As Byte() = lrsa.SignData(System.Text.Encoding.UTF8.GetBytes(S trcadenaoriginal), hasher)
Dim sellodigital As String = Convert.ToBase64String(bytesFirmados)
Dim certificado As X509Certificate2 = New X509Certificate2(ArchivoCertificado)
Dim NoCertificado = HexToString(certificado.SerialNumber)

La línea que me marca el error, es la siguiente:
Dim bytesFirmados As Byte() = lrsa.SignData(System.Text.Encoding.UTF8.GetBytes(S trcadenaoriginal), hasher)

Espero que me puedan hechar la mano para saber que estoy haciendo mal.
Gracias
Con el debugger verifica si se están generando los valores para las variables de lsra, StrCadenaoriginal y el hasher. Si tienen valor de nothing es que no se te están creando correctamente y por eso te manda ese error.
  #213 (permalink)  
Antiguo 28/09/2010, 16:10
 
Fecha de Ingreso: septiembre-2010
Mensajes: 15
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Factura electroncia sat mexico

Despues de implementar la emision de CFD me surgio una duda qu espero me puedan auxiliar.

como se obtiene de un archivo .key un arhivo .pem sin hacer uso del openssl desde .NET
  #214 (permalink)  
Antiguo 29/09/2010, 08:49
 
Fecha de Ingreso: septiembre-2010
Mensajes: 4
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Factura electroncia sat mexico

Cita:
Iniciado por aksuesipn Ver Mensaje
Despues de implementar la emision de CFD me surgio una duda qu espero me puedan auxiliar.

como se obtiene de un archivo .key un arhivo .pem sin hacer uso del openssl desde .NET
No lo necesitas. EN la llamada a:

Dim lrsa As RSACryptoServiceProvider = clsSeguridad.DecodeEncryptedPrivateKeyInfo(pLlaveP rivadaenBytes, IsecStr)

estas mandando el archivo .key, no el .pem y tu password.
  #215 (permalink)  
Antiguo 29/09/2010, 11:08
 
Fecha de Ingreso: agosto-2010
Mensajes: 2
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Factura electroncia sat mexico

Valla estos del SAT no dejan de inventar cosas, ya cambiaron otra vez el anexo 20
les recomiendo que lo revisen para que no se den de topes despues
[URL="http://www.sat.gob.mx/sitio_internet/informacion_fiscal/legislacion/52_18801.html"]http://www.sat.gob.mx/sitio_internet/informacion_fiscal/legislacion/52_18801.html[/URL]
  #216 (permalink)  
Antiguo 29/09/2010, 11:54
 
Fecha de Ingreso: septiembre-2010
Mensajes: 18
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Factura electroncia sat mexico

Cita:
Iniciado por hegaes Ver Mensaje
Te comento escorpionsdd que si el validador del SAT te marca que el sello no pudo ser verificado se debe a que no es correcta la firma
hola hegaes, solo para agradecer tu ayuda y a los demas compañeros por sus aportaciones, ya genere mi xml y ya paso el validador del sat, aunque ahora voy a hacer pruebas con un sello de la empresa para confirmar que esta correcto el proceso, mas adelante posteo que resulto de estas pruebas.

saludos.
  #217 (permalink)  
Antiguo 29/09/2010, 12:41
 
Fecha de Ingreso: septiembre-2010
Mensajes: 3
Antigüedad: 14 años, 2 meses
Puntos: 0
Pregunta Respuesta: Factura electroncia sat mexico

Que tal señores,

Alguien de ustedes sabe el tiempo aproximado que toma por parte del SAT la aprobación para ser proveedor autorizado? Alguién ya pasó por esto? Sería bueno compartir este tipo de experiencias también.

Saludos!!
  #218 (permalink)  
Antiguo 29/09/2010, 18:21
 
Fecha de Ingreso: septiembre-2010
Mensajes: 7
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Factura electroncia sat mexico

Cita:
Iniciado por scorpionsdd Ver Mensaje
hola hegaes, solo para agradecer tu ayuda y a los demas compañeros por sus aportaciones, ya genere mi xml y ya paso el validador del sat, aunque ahora voy a hacer pruebas con un sello de la empresa para confirmar que esta correcto el proceso, mas adelante posteo que resulto de estas pruebas.

saludos.
Si la empresa para la que trabajas, solicita sus folios y su certificado para emisión de CFDs hasta el 31 de Dic de éste año, podrá emitir sus facturas electrónicas así como está el esquema actual, pero si se esperan a solicitarlos en enero del 2011, aparte de generar el CFD como es actualmente, tendrán que pasar por un PAC o proveedor para que 'timbre' (viene de TFD - Timbre Fiscal Digital) tu CFD y diga si es válido o no. Entonces te recomiendo, que aceleren éste trámite y pidan una cantidad grande de folios, según el SAT (..y eso si no cambian de opinión) una vez que se terminen sus Folios y/o caduque su certificado, cuando quieran solicitar nuevos quizás ya les toque incorporarse al nuevo esquema que ahora llaman CFDI.


Cita:
Iniciado por minothecat Ver Mensaje
Que tal señores,

Alguien de ustedes sabe el tiempo aproximado que toma por parte del SAT la aprobación para ser proveedor autorizado? Alguién ya pasó por esto? Sería bueno compartir este tipo de experiencias también.

Saludos!!
A nosotros nos tomó casi un año, desde que se hizo la solicitud, hasta que liberamos el último requisito que pedía el SAT para ser PACFD. Sin embargo, los PACFDs desaparecemos a partir de enero del 2011, y ahora se llamarán simplemente PAC, pero déjame decirte que los requisitos que el SAT pide, son demasiados, debes de contar con una infraestructura lo suficientemente SEGURA para brindar el servicio, amen de que cumplas con los estándares para la generación correcta del CFD. Lo han complicado bastante a partir del 2011, no será tan sencillo, y la noticia peor, el que el SAT hizo la invitación a los bancos a convertirse en PAC's, por la infraestructura que ellos manejan y los recursos que tienen, no dudes que sean los primeros PACs autorizados a funcionar empezando el prox año!
  #219 (permalink)  
Antiguo 29/09/2010, 19:26
 
Fecha de Ingreso: septiembre-2010
Mensajes: 3
Antigüedad: 14 años, 2 meses
Puntos: 0
De acuerdo Respuesta: Factura electroncia sat mexico

Cita:
Iniciado por C3ZZ4R Ver Mensaje
Si la empresa para la que trabajas, solicita sus folios y su certificado para emisión de CFDs hasta el 31 de Dic de éste año, podrá emitir sus facturas electrónicas así como está el esquema actual, pero si se esperan a solicitarlos en enero del 2011, aparte de generar el CFD como es actualmente, tendrán que pasar por un PAC o proveedor para que 'timbre' (viene de TFD - Timbre Fiscal Digital) tu CFD y diga si es válido o no. Entonces te recomiendo, que aceleren éste trámite y pidan una cantidad grande de folios, según el SAT (..y eso si no cambian de opinión) una vez que se terminen sus Folios y/o caduque su certificado, cuando quieran solicitar nuevos quizás ya les toque incorporarse al nuevo esquema que ahora llaman CFDI.




A nosotros nos tomó casi un año, desde que se hizo la solicitud, hasta que liberamos el último requisito que pedía el SAT para ser PACFD. Sin embargo, los PACFDs desaparecemos a partir de enero del 2011, y ahora se llamarán simplemente PAC, pero déjame decirte que los requisitos que el SAT pide, son demasiados, debes de contar con una infraestructura lo suficientemente SEGURA para brindar el servicio, amen de que cumplas con los estándares para la generación correcta del CFD. Lo han complicado bastante a partir del 2011, no será tan sencillo, y la noticia peor, el que el SAT hizo la invitación a los bancos a convertirse en PAC's, por la infraestructura que ellos manejan y los recursos que tienen, no dudes que sean los primeros PACs autorizados a funcionar empezando el prox año!
Wow. Vaya que es demasiado tiempo. Definitivamente es un buen punto a tomar en cuanta cuando se toma la decisión de llevar a cabo un proyecto como el de facturación electrónica.

Muchas gracias por compartir tu experiencia C3ZZ4R!!
  #220 (permalink)  
Antiguo 29/09/2010, 23:51
 
Fecha de Ingreso: noviembre-2002
Ubicación: DF
Mensajes: 1.056
Antigüedad: 22 años
Puntos: 37
Respuesta: Factura electroncia sat mexico

Vaya, lo que comenta C3ZZ4R pues si da que pensar... yo preguntaria, por alli leia hace un buen rato ya, que podias tener tu servidor en un datacenter en USA, seguira vigente eso???

Por otra parte, acabo de probar el codigo de MarkX de openssl.cs con una cadena de una factura valida y el sello me salio exactamente igual que la que aprecio en la factura impresa (generada por un PACFD), por ello, veo que es el codigo de firmar accesando la llave privada del .key con opensslkey.cs es una excelente opcion, se las recomiendo (yo la copie con C#, pero creo que lo intentare por el lado de VB).
  #221 (permalink)  
Antiguo 30/09/2010, 16:23
 
Fecha de Ingreso: septiembre-2010
Mensajes: 7
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Factura electroncia sat mexico

Cita:
Iniciado por wwwmaster Ver Mensaje
Vaya, lo que comenta C3ZZ4R pues si da que pensar... yo preguntaria, por alli leia hace un buen rato ya, que podias tener tu servidor en un datacenter en USA, seguira vigente eso???
AHora, dentro de los nuevos requerimientos para ser PAC, el SAT pide colocar un reloj GPS, nosotros estamos en un DataCenter en USA, pero no cumple con todos los requisitos de seguridad que pide, y otro inconveniente es que en muchos, o al menos los que hemos visto hasta ahora, no tienen el mentado reloj GPS, te dejan ponerlo, pero tú tienes que ir a instalarlo, y en caso de fallas, tú tienes que ir a solucionarlo, por lo que optar por un datacenter fuera de Mex, puede traerte más problemas, sin embargo hay un par de opciones en Mex, Alestra y hay otro en Qro, que no recuerdo el nombre de mom. Aparte, el SAT tiene que ir a inspeccionar físicamente el datacenter y corroborar que cumple con todo lo que ellos piden, aunque claro, ese ya es gasto que ellos tienen que hacer!
  #222 (permalink)  
Antiguo 01/10/2010, 12:05
 
Fecha de Ingreso: septiembre-2010
Mensajes: 3
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Factura electroncia sat mexico

Cita:
Iniciado por C3ZZ4R Ver Mensaje
AHora, dentro de los nuevos requerimientos para ser PAC, el SAT pide colocar un reloj GPS, nosotros estamos en un DataCenter en USA, pero no cumple con todos los requisitos de seguridad que pide, y otro inconveniente es que en muchos, o al menos los que hemos visto hasta ahora, no tienen el mentado reloj GPS, te dejan ponerlo, pero tú tienes que ir a instalarlo, y en caso de fallas, tú tienes que ir a solucionarlo, por lo que optar por un datacenter fuera de Mex, puede traerte más problemas, sin embargo hay un par de opciones en Mex, Alestra y hay otro en Qro, que no recuerdo el nombre de mom. Aparte, el SAT tiene que ir a inspeccionar físicamente el datacenter y corroborar que cumple con todo lo que ellos piden, aunque claro, ese ya es gasto que ellos tienen que hacer!
A cabron!!! Y para que sirve el reloj GPS? Cuál es la idea de tenerlo en el datacenter?
  #223 (permalink)  
Antiguo 02/10/2010, 15:08
 
Fecha de Ingreso: octubre-2010
Mensajes: 1
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Factura electroncia sat mexico

Cita:
Iniciado por AntonioMatias Ver Mensaje
que tal VeroB, yo tambien estoy programando mi FE en vb.net, pero me sale un pequeño error al momento de generar mi sello digital:
{"Object reference not set to an instance of an object."}

te paso mi código:

Dim pLlavePrivadaenBytes As Byte() = System.IO.File.ReadAllBytes(key)
Dim lrsa As RSACryptoServiceProvider = clsSeguridad.DecodeEncryptedPrivateKeyInfo(pLlaveP rivadaenBytes, IsecStr)

Dim hasher As MD5CryptoServiceProvider = New MD5CryptoServiceProvider()
Dim bytesFirmados As Byte() = lrsa.SignData(System.Text.Encoding.UTF8.GetBytes(S trcadenaoriginal), hasher)
Dim sellodigital As String = Convert.ToBase64String(bytesFirmados)
Dim certificado As X509Certificate2 = New X509Certificate2(ArchivoCertificado)
Dim NoCertificado = HexToString(certificado.SerialNumber)

La línea que me marca el error, es la siguiente:
Dim bytesFirmados As Byte() = lrsa.SignData(System.Text.Encoding.UTF8.GetBytes(S trcadenaoriginal), hasher)

Espero que me puedan hechar la mano para saber que estoy haciendo mal.
Gracias
Hola cres que pudieras compartir con nosotros el codigo: clsSeguridad.DecodeEncryptedPrivateKeyInfo
  #224 (permalink)  
Antiguo 04/10/2010, 16:15
 
Fecha de Ingreso: octubre-2010
Mensajes: 1
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Factura electroncia sat mexico

Que tal.. es la primera vez que post.

Es para agradecer todas las aportaciones que hicieron... actualmente ya resolvi la facturacion electronica en .NET por medio de una libreria

Crypto Sys

Me ayudo con la parte de incluir el certificado en el xml y generacion del sello digital en base a la cadena original basada en el xml.

Solo me falta la parte de agregar al XML el sello digital... alguien sabe como puedo hacerlo???... gracias
  #225 (permalink)  
Antiguo 05/10/2010, 10:35
 
Fecha de Ingreso: octubre-2005
Mensajes: 47
Antigüedad: 19 años, 2 meses
Puntos: 0
Información Respuesta: Factura electroncia sat mexico

Cita:
Iniciado por jcgalle Ver Mensaje
Hola cres que pudieras compartir con nosotros el codigo: clsSeguridad.DecodeEncryptedPrivateKeyInfo
Imports System
Imports System.IO
Imports System.Text
Imports System.Security.Cryptography
Imports System.Security.Cryptography.X509Certificates
Imports System.Runtime.InteropServices
Imports System.Security
Imports System.Diagnostics
Imports System.ComponentModel


Public Class clsSeguridad_2
Shared verbose As Boolean = False

Private Sub SAT()
Dim aa As String = ""
End Sub

Public Shared Function CodificarMD5(ByVal input As String) As String
Dim CadenaUTF8 As Byte()
Dim tmpHash As Byte()
'convierte en UTF8
CadenaUTF8 = Encoding.UTF8.GetBytes(input)
'crea el hash
tmpHash = New MD5CryptoServiceProvider().ComputeHash(CadenaUTF8)
Dim i As Integer
Dim sOutput As StringBuilder = New StringBuilder(tmpHash.Length)

For i = 0 To tmpHash.Length - 1 Step 1
sOutput.Append(tmpHash(i).ToString("x2"))
Next

Return sOutput.ToString()

End Function

Public Shared Function DecodeEncryptedPrivateKeyInfo(ByVal encpkcs8 As Byte(), ByVal lSecStr As SecureString) As RSACryptoServiceProvider

Dim OIDpkcs5PBES2 As Byte() = {&H6, &H9, &H2A, &H86, &H48, &H86, &HF7, &HD, &H1, &H5, &HD}
Dim OIDpkcs5PBKDF2 As Byte() = {&H6, &H9, &H2A, &H86, &H48, &H86, &HF7, &HD, &H1, &H5, &HC}
Dim OIDdesEDE3CBC As Byte() = {&H6, &H8, &H2A, &H86, &H48, &H86, &HF7, &HD, &H3, &H7}

Dim seqdes As Byte() = New Byte(10) {}
Dim seq As Byte() = New Byte(10) {}
Dim salt As Byte()
Dim IV As Byte()
Dim encryptedpkcs8 As Byte()
Dim pkcs8 As Byte()
Dim saltsize, ivsize, encblobsize As Integer
Dim iterations As Integer

' '' --------- Set up stream to read the asn.1 encoded SubjectPublicKeyInfo blob ------
Dim mem As MemoryStream = New MemoryStream(encpkcs8)
Dim lenstream As Integer = Int(mem.Length)
Dim binr As BinaryReader = New BinaryReader(mem) 'wrap Memory Stream with BinaryReader for easy reading
Dim bt As Byte = 0
Dim twobytes As UShort = 0

Try
twobytes = binr.ReadUInt16()

If (twobytes = &H8130) Then 'data read as little endian order (actual data order for Sequence is 30 81)
binr.ReadByte() 'advance 1 byte
ElseIf (twobytes = &H8230) Then
binr.ReadInt16() 'advance 2 bytes
Else
Return Nothing
End If

twobytes = binr.ReadUInt16() 'inner sequence
If (twobytes = &H8130) Then
binr.ReadByte()
ElseIf (twobytes = &H8230) Then
binr.ReadInt16()
End If

seq = binr.ReadBytes(11) 'read the Sequence OID
If (Not CompareBytearrays(seq, OIDpkcs5PBES2)) Then 'is it a OIDpkcs5PBES2 ?
Return Nothing
End If


twobytes = binr.ReadUInt16() 'inner sequence for pswd salt
If (twobytes = &H8130) Then
binr.ReadByte()
ElseIf (twobytes = &H8230) Then
binr.ReadInt16()
End If

twobytes = binr.ReadUInt16() 'inner sequence for pswd salt
If (twobytes = &H8130) Then
binr.ReadByte()
ElseIf (twobytes = &H8230) Then
binr.ReadInt16()
End If

seq = binr.ReadBytes(11) 'read the Sequence OID
If (Not CompareBytearrays(seq, OIDpkcs5PBES2)) Then 'is it a OIDpkcs5PBES2 ?
Return Nothing
End If

twobytes = binr.ReadUInt16() 'inner sequence for pswd salt
If (twobytes = &H8130) Then
binr.ReadByte()
ElseIf (twobytes = &H8230) Then
binr.ReadInt16()
End If

bt = binr.ReadByte()
If (bt <> &H4) Then
Return Nothing
End If
saltsize = binr.ReadByte()
salt = binr.ReadBytes(saltsize)

If (verbose) Then
'showBytes("Salt for pbkd", salt)
End If
bt = binr.ReadByte()

If (bt <> &H2) Then 'expect an integer for PBKF2 interation count
Return Nothing
End If

Dim itbytes As Integer = binr.ReadByte() 'PBKD2 iterations should fit in 2 bytes.
If (itbytes = 1) Then
iterations = 256 * binr.ReadByte() + binr.ReadByte()
Else
Return Nothing
End If

If (verbose) Then
Console.WriteLine("PBKD2 iterations {0}", iterations)
End If

twobytes = binr.ReadUInt16()
If (twobytes = &H8130) Then
binr.ReadByte()
ElseIf (twobytes = &H8230) Then
binr.ReadInt16()
End If

seqdes = binr.ReadBytes(10) 'read the Sequence OID
If (Not CompareBytearrays(seqdes, OIDdesEDE3CBC)) Then 'is it a OIDdes-EDE3-CBC ?
Return Nothing
End If

bt = binr.ReadByte()
If (bt <> &H4) Then 'expect octet string for IV
Return Nothing
End If
ivsize = binr.ReadByte() 'IV byte size should fit in one byte (24 expected for 3DES)
IV = binr.ReadBytes(ivsize)
If (verbose) Then
'showBytes("IV for des-EDE3-CBC", IV)
End If

bt = binr.ReadByte()
If (bt <> &H4) Then 'expect octet string for encrypted PKCS8 data
Return Nothing
End If

bt = binr.ReadByte()
'bt = binr.ReadByte();


If (bt = &H81) Then
encblobsize = binr.ReadByte() ' data size in next byte
ElseIf (bt = &H82) Then
encblobsize = 256 * binr.ReadByte() + binr.ReadByte()
Else
encblobsize = bt ' we already have the data size
End If

encryptedpkcs8 = binr.ReadBytes(encblobsize)

Dim secpswd As SecureString = lSecStr 'GetSecPswd(lSecStr.ToString());
pkcs8 = DecryptPBDK2(encryptedpkcs8, salt, IV, secpswd, iterations)
If (pkcs8 Is Nothing) Then ' probably a bad pswd entered.
Return Nothing
End If

' ----- With a decrypted pkcs #8 PrivateKeyInfo blob, decode it to an RSA ---
Dim rsa As RSACryptoServiceProvider = DecodePrivateKeyInfo(pkcs8)
Return rsa

Catch ex As Exception
Return Nothing
Finally
binr.Close()
End Try

End Function

Private Shared Function CompareBytearrays(ByVal a As Byte(), ByVal b As Byte()) As Boolean
If (a.Length <> b.Length) Then
Return False
End If

Dim i As Integer = 0
For Each c As Byte In a
If (c <> b(i)) Then
Return False
i += 1
End If
Next
Return True
End Function
  #226 (permalink)  
Antiguo 05/10/2010, 10:36
 
Fecha de Ingreso: octubre-2005
Mensajes: 47
Antigüedad: 19 años, 2 meses
Puntos: 0
Información Respuesta: Factura electroncia sat mexico

Public Shared Function DecryptPBDK2(ByVal edata As Byte(), ByVal salt As Byte(), ByVal IV As Byte(), ByVal secpswd As SecureString, ByVal iterations As Integer) As Byte()
Dim decrypt As CryptoStream = Nothing
'CryptoStream decrypt = null;

Dim unmanagedPswd As IntPtr = IntPtr.Zero
Dim psbytes As Byte() = New Byte(secpswd.Length) {}
unmanagedPswd = Marshal.SecureStringToGlobalAllocAnsi(secpswd)
Marshal.Copy(unmanagedPswd, psbytes, 0, psbytes.Length)
Marshal.ZeroFreeGlobalAllocAnsi(unmanagedPswd)

Try
Dim kd As Rfc2898DeriveBytes = New Rfc2898DeriveBytes(psbytes, salt, iterations)
Dim decAlg As TripleDES = TripleDES.Create()
decAlg.Key = kd.GetBytes(24)
decAlg.IV = IV
Dim memstr As MemoryStream = New MemoryStream()
decrypt = New CryptoStream(memstr, decAlg.CreateDecryptor(), CryptoStreamMode.Write)
decrypt.Write(edata, 0, edata.Length)
decrypt.Flush()
decrypt.Close() ' this is REQUIRED.
Dim cleartext As Byte() = memstr.ToArray()
Return cleartext

Catch ex As Exception
Console.WriteLine("Problem decrypting: {0}", ex.Message)
Return Nothing
End Try

End Function

Public Shared Function DecodePrivateKeyInfo(ByVal pkcs8 As Byte()) As RSACryptoServiceProvider
'encoded OID sequence for PKCS #1 rsaEncryption szOID_RSA_RSA = "1.2.840.113549.1.1.1"
'this byte[] includes the sequence byte and terminal encoded null
Dim SeqOID As Byte() = {&H30, &HD, &H6, &H9, &H2A, &H86, &H48, &H86, &HF7, &HD, &H1, &H1, &H1, &H5, &H0}
Dim seq As Byte() = New Byte(15) {}

'--------- Set up stream to read the asn.1 encoded SubjectPublicKeyInfo blob ------
Dim mem As MemoryStream = New MemoryStream(pkcs8)
Dim lenstream As Integer = CInt(mem.Length)
Dim binr As BinaryReader = New BinaryReader(mem) 'wrap Memory Stream with BinaryReader for easy reading
Dim bt As Byte = 0
Dim twobytes As UShort = 0

Try
twobytes = binr.ReadUInt16()
If (twobytes = &H8130) Then 'data read as little endian order (actual data order for Sequence is 30 81)
binr.ReadByte() 'advance 1 byte
ElseIf (twobytes = &H8230) Then
binr.ReadInt16() 'advance 2 bytes
Else
Return Nothing
End If

bt = binr.ReadByte()
If (bt <> &H2) Then
Return Nothing
End If

twobytes = binr.ReadUInt16()
If (bt <> &H1) Then
Return Nothing
End If

seq = binr.ReadBytes(15) 'read the Sequence OID
If (Not CompareBytearrays(seq, SeqOID)) Then 'make sure Sequence for OID is correct
Return Nothing
End If

bt = binr.ReadByte()
If (bt <> &H4) Then
Return Nothing
End If

bt = binr.ReadByte() 'read next byte, or next 2 bytes is 0x81 or 0x82; otherwise bt is the byte count
If (bt = &H81) Then
binr.ReadByte()
ElseIf (bt = &H82) Then
binr.ReadUInt16()
End If

'------ at this stage, the remaining sequence should be the RSA private key
Dim rsaprivkey As Byte() = binr.ReadBytes(CInt(lenstream - mem.Position))
Dim rsacsp As RSACryptoServiceProvider = DecodeRSAPrivateKey(rsaprivkey)
Return rsacsp

Catch ex As Exception
Return Nothing
' ''return null;
Finally
binr.Close()
End Try
End Function

Public Shared Function DecodeRSAPrivateKey(ByVal privkey As Byte()) As RSACryptoServiceProvider
Dim MODULUS, E, D, P, Q, DP, DQ, IQ As Byte()

'--------- Set up stream to decode the asn.1 encoded RSA private key ------
Dim mem As MemoryStream = New MemoryStream(privkey)
Dim binr As BinaryReader = New BinaryReader(mem) 'wrap Memory Stream with BinaryReader for easy reading
Dim bt As Byte = 0
Dim twobytes As UShort = 0
Dim elems As Integer = 0

Try
twobytes = binr.ReadUInt16()
If (twobytes = &H8130) Then 'data read as little endian order (actual data order for Sequence is 30 81)
binr.ReadByte() 'advance 1 byte
ElseIf (twobytes = &H8230) Then
binr.ReadInt16() 'advance 2 bytes
Else
Return Nothing
End If

twobytes = binr.ReadUInt16()
If (twobytes <> &H102) Then 'version number
Return Nothing
End If
bt = binr.ReadByte()
If (bt <> &H0) Then
Return Nothing
End If

'------ all private key components are Integer sequences ----
elems = GetIntegerSize(binr)
MODULUS = binr.ReadBytes(elems)
elems = GetIntegerSize(binr)
E = binr.ReadBytes(elems)
elems = GetIntegerSize(binr)
D = binr.ReadBytes(elems)
elems = GetIntegerSize(binr)
P = binr.ReadBytes(elems)
elems = GetIntegerSize(binr)
Q = binr.ReadBytes(elems)
elems = GetIntegerSize(binr)
DP = binr.ReadBytes(elems)
elems = GetIntegerSize(binr)
DQ = binr.ReadBytes(elems)
elems = GetIntegerSize(binr)
IQ = binr.ReadBytes(elems)

Console.WriteLine("showing components ..")

If (verbose) Then
showBytes("\nModulus", MODULUS)
showBytes("\nExponent", E)
showBytes("\nD", D)
showBytes("\nP", P)
showBytes("\nQ", Q)
showBytes("\nDP", DP)
showBytes("\nDQ", DQ)
showBytes("\nIQ", IQ)
End If

'------- create RSACryptoServiceProvider instance and initialize with public key -----
Dim RSA As RSACryptoServiceProvider = New RSACryptoServiceProvider()
Dim RSAparams As RSAParameters = New RSAParameters()
RSAparams.Modulus = MODULUS
RSAparams.Exponent = E
RSAparams.D = D
RSAparams.P = P
RSAparams.Q = Q
RSAparams.DP = DP
RSAparams.DQ = DQ
RSAparams.InverseQ = IQ
RSA.ImportParameters(RSAparams)
Return RSA

Catch ex As Exception
Return Nothing
End Try
binr.Close()
End Function

Public Shared Function GetIntegerSize(ByVal binr As BinaryReader) As Integer

Dim bt As Byte = 0
Dim lowbyte As Byte = &H0
Dim highbyte As Byte = &H0
Dim count As Integer = 0
bt = binr.ReadByte()
If (bt <> &H2) Then 'expect integer
Return 0
End If
bt = binr.ReadByte()

If (bt = &H81) Then
count = binr.ReadByte() 'data size in next byte
ElseIf (bt = &H82) Then
highbyte = binr.ReadByte() 'data size in next 2 bytes
lowbyte = binr.ReadByte()
Dim modint As Byte() = {lowbyte, highbyte, &H0, &H0}
count = BitConverter.ToInt32(modint, 0)
Else
count = bt 'we already have the data size
End If

While (binr.ReadByte() = &H0) 'remove high order zeros in data
count -= 1
End While
binr.BaseStream.Seek(-1, SeekOrigin.Current) 'last ReadByte wasn't a removed zero, so back up a byte
Return count

End Function
  #227 (permalink)  
Antiguo 05/10/2010, 10:36
 
Fecha de Ingreso: octubre-2005
Mensajes: 47
Antigüedad: 19 años, 2 meses
Puntos: 0
Información Respuesta: Factura electroncia sat mexico

Private Shared Sub showBytes(ByVal info As String, ByVal data As Byte())

Console.WriteLine("{0} [{1} bytes]", info, data.Length)

For i As Integer = 1 To data.Length Step 1
Console.Write("{0:X2} ", data(i - 1))
If (i Mod 16 = 0) Then
Console.WriteLine()
End If
Next
Console.WriteLine("\n\n")

End Sub

Private Shared Function GetSecPswd(ByVal prompt As String) As SecureString

Dim password As SecureString = New SecureString
Console.ForegroundColor = ConsoleColor.Gray
Console.Write(prompt)
Console.ForegroundColor = ConsoleColor.Magenta

While (True)
Dim cki As ConsoleKeyInfo = Console.ReadKey(True)
If (cki.Key = ConsoleKey.Enter) Then
Console.ForegroundColor = ConsoleColor.Gray
Console.WriteLine()
Return password
ElseIf (cki.Key = ConsoleKey.Backspace) Then
'remove the last asterisk from the screen...
If (password.Length > 0) Then
Console.SetCursorPosition(Console.CursorLeft - 1, Console.CursorTop)
Console.Write(" ")
Console.SetCursorPosition(Console.CursorLeft - 1, Console.CursorTop)
password.RemoveAt(password.Length - 1)
End If
ElseIf (cki.Key = ConsoleKey.Escape) Then
Console.ForegroundColor = ConsoleColor.Gray
Console.WriteLine()
Return password
ElseIf (Char.IsLetterOrDigit(cki.KeyChar) Or Char.IsSymbol(cki.KeyChar)) Then
If (password.Length < 20) Then
password.AppendChar(cki.KeyChar)
Console.Write("*")
Else
Console.Beep()
End If
Else
Console.Beep()
End If
End While

Return password

End Function


End Class

'--------------------------------------------------------------------------------------
Espero que te sirva y puedas encontrar el error.
La solución fue que compile la clase en c# y agrege el DLL a mi proyecto.
'--------------------------------------------------------------------------------------
Saludos...
  #228 (permalink)  
Antiguo 06/10/2010, 08:41
 
Fecha de Ingreso: septiembre-2010
Mensajes: 7
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Factura electroncia sat mexico

Cita:
Iniciado por minothecat Ver Mensaje
A cabron!!! Y para que sirve el reloj GPS? Cuál es la idea de tenerlo en el datacenter?
Segun los del SAT, el reloj GPS, es para que todos los PACs estén sincronizados en cuanto a la hora, y el reloj GPS es de los más exactos que puede haber. De tal manera que al momento de emitir una factura, no importa en que parte de la republica esté el PAC ni el uso horario, todos tendremos que sincronizarnos con el horario de la cd. de Mex
  #229 (permalink)  
Antiguo 06/10/2010, 12:40
 
Fecha de Ingreso: octubre-2010
Mensajes: 1
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Factura electroncia sat mexico

Cita:
Iniciado por VeroB Ver Mensaje
Con el debugger verifica si se están generando los valores para las variables de lsra, StrCadenaoriginal y el hasher. Si tienen valor de nothing es que no se te están creando correctamente y por eso te manda ese error.
Hola VeroB, a ti ya te funciono el codigo asi como lo comparte AntonioMatias, para generar el sello???...lo podrias compartir
  #230 (permalink)  
Antiguo 06/10/2010, 12:49
 
Fecha de Ingreso: octubre-2010
Ubicación: navojoa, sonora
Mensajes: 1
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Factura electroncia sat mexico

vi el cometario que pusistes sobre los nuevos lineamientos del sat, entre la pagina del sat, segun entendi la diferencia sera que ahora que tu mandaras el xml a tu provedor y este te lo sellara con un timbre digital, espero que sea esto, por que yoe soy desarrollando tambien la factura digital, y seria bastante problema para nuestro clientes ya que el sistema es muy especifico apra ellos.

les dejo este link es de una videoconferencia
esta interesante

http://blog.tufactura.me/2010/09/transmision-en-twitcam-dudas-acerca-de-facturacion-electronica/

espero que les sea de ayuda.. para entender los lineamientos...
que si ya es dificil entederle a la cryptografia,
es mas a entnderle a los comunicados del sat
  #231 (permalink)  
Antiguo 06/10/2010, 13:00
Avatar de admado  
Fecha de Ingreso: junio-2006
Ubicación: Morelos, México
Mensajes: 115
Antigüedad: 18 años, 5 meses
Puntos: 0
Pregunta Respuesta: Factura electroncia sat mexico

Estoy sacando la cadena original según lo que establece el SAT; validar el XML con el archivo cadenaoriginal_2_0.xslt. Pero a este archivo le quite los “-”, para poder compilarlo, ya que me generaba un error , quedando cadenaoriginal_2_0.xsl

Código:
 
Warning: DOMDocument::load() [domdocument.load]: Start tag expected, ‘<' not found in file:///d:/cadenaoriginal_2_0.xslt, line: 2 in D:\xampp\htdocs\md5.php on line 120
 
 
Warning: XSLTProcessor::importStylesheet() [xsltprocessor.importstylesheet]: compilation error in D:\xampp\htdocs\md5.php on line 123
Warning: XSLTProcessor::importStylesheet() [xsltprocessor.importstylesheet]: xsltParseStylesheetProcess : empty stylesheet in D:\xampp\htdocs\md5.php on line 123
Warning: XSLTProcessor::transformToXml() [xsltprocessor.transformtoxml]: No stylesheet associated to this object in D:\xampp\htdocs\md5.php on line 124
 
 Warning: DOMDocument::load() [domdocument.load]: Start tag expected, ‘<' not found in file:///d:/cadenaoriginal_2_0.xslt, line: 2 in D:\xampp\htdocs\md5.php on line 120
 
Warning: XSLTProcessor::importStylesheet() [xsltprocessor.importstylesheet]: compilation error in D:\xampp\htdocs\md5.php on line 123
 
Warning: XSLTProcessor::importStylesheet() [xsltprocessor.importstylesheet]: xsltParseStylesheetProcess : empty stylesheet in D:\xampp\htdocs\md5.php on line 123
 
Warning: XSLTProcessor::transformToXml() [xsltprocessor.transformtoxml]: No stylesheet associated to this object in D:\xampp\htdocs\md5.php on line 124
 

Cita:
cadenaoriginal_2_0.xslt
<?xml version="1.0" encoding="UTF-8"?>
- <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:cfd="http://www.sat.gob.mx/cfd/2" xmlns:ecc="http://www.sat.gob.mx/ecc" xmlns:psgecfd="http://www.sat.gob.mx/psgecfd" xmlns:divisas="http://www.sat.gob.mx/divisas" xmlns:detallista="http://www.sat.gob.mx/detallista" xmlns:ecb="http://www.sat.gob.mx/ecb" xmlns:implocal="http://www.sat.gob.mx/implocal" xmlns:terceros="http://www.sat.gob.mx/terceros">…………………….

cadenaoriginal_2_0.xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:cfd="http://www.sat.gob.mx/cfd/2" xmlns:ecc="http://www.sat.gob.mx/ecc" xmlns:psgecfd="http://www.sat.gob.mx/psgecfd" xmlns:divisas="http://www.sat.gob.mx/divisas" xmlns:detallista="http://www.sat.gob.mx/detallista" xmlns:ecb="http://www.sat.gob.mx/ecb" xmlns:implocal="http://www.sat.gob.mx/implocal" xmlns:terceros="http://www.sat.gob.mx/terceros">
Usando cadenaoriginal_2_0.xsl, si saca la cadena original en UTF8 pero marca error de compilacion en los archivos del SAT. Alguien sabe porque pasa esto si se supone que el SAT debe proporcionar archivos correctos.

Cita:
Warning: XSLTProcessor::importStylesheet() [xsltprocessor.importstylesheet]: compilation error: file file:///c:/cadenaoriginal_2_0.xsl line 2 element stylesheet in C:\xampp\htdocs\md5.php on line 143

||2.0|A|1|2010-09-02T16:30:00|122956|2010|ingreso|Pago en una sola exhibicion|350|0|406|SAT970701NN3|Servicio de Administración Tributaria|AV. HIDALGO|77|CUAUHTÉMOC|DISTRITO FEDERAL|MÉXICO|06300|CAUR390312S87|Rosa María Calderón Uriegas|PRIV. CEIBA|114|BOSQUE|JOJUTLA|JOJUTLA|MORELOS|México|6 2900|10|Caja|Vasos decorados|20|200|1|pieza|Charola metálica|150|150|IVA|16.00|56.00||
__________________
>>> El hombre se hace viejo muy pronto y sabio demasiado tarde <<<
  #232 (permalink)  
Antiguo 06/10/2010, 13:42
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1
Antigüedad: 14 años, 2 meses
Puntos: 0
Programa para probar (100%funcional)

Permítanme presentarme:
Soy Contador Público con mucha experiencia (65 años), he dictaminado estados financieros de múltiples empresas, y propietario de “Servicios de Computación Doring, S.A. de C.V.” desde 1983.

Programando como aficionado, tengo varios programas de Contabilidad, Facturación, y Puntos de Venta para Restaurantes, registrados con mis derechos de autor.

Para cumplir con los requisitos de la Factura Digital, para mi propio uso, he desarrollado un programa que las genera con el 100% de validez, al mismo tiempo que las registra en contabilidad y crea estados de resultados, libros para el SAT etc.

Si alguno de ustedes desea ver como trabaja (e incluso si lo quieren utilizar), lo pueden instalar desde:

www.doring.com

Si me envían alguna mejora o falla que detecten, mucho se los agradeceré.
Atentamente
C.P. Luis Adolfo Döring Aburto
[email protected]

Última edición por Doring; 06/10/2010 a las 20:04
  #233 (permalink)  
Antiguo 07/10/2010, 03:00
 
Fecha de Ingreso: octubre-2010
Mensajes: 3
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Factura electroncia sat mexico

Cita:
Iniciado por admado Ver Mensaje

Warning: XSLTProcessor::importStylesheet() [xsltprocessor.importstylesheet]: compilation error: file file:///c:/cadenaoriginal_2_0.xsl line 2 element stylesheet in C:\xampp\htdocs\md5.php on line 143
Hola, admado.

Te comento, estoy desarrollando una aplicación en Ruby on Rails para generar la factura. Uso una gema (biblioteca) que se llama Nokogiri para hacer la transformación por medio de XSLT con el archivo del SAT (cadena_original_2_0), y me marca ese mismo error en el renglón dos de la hoja de estilo. Aún no sé que sea, pero si uso ese mismo archivo para hacer la transformación de mi XML por medio del NetBeans (IDE), me genera bien la cadena. Está raro, así que tal vez se deba a la biblioteca que usan en el fondo nuestras aplicaciones (libxml2 me parece).

Saludos,
  #234 (permalink)  
Antiguo 07/10/2010, 14:05
 
Fecha de Ingreso: octubre-2010
Mensajes: 1
Antigüedad: 14 años, 2 meses
Puntos: 0
Pregunta Respuesta: Factura electroncia sat mexico

Cita:
Iniciado por Musashi76 Ver Mensaje
Ya lo resolvi, viene en Hexadecimal.
Hola espero me uedas yudar con mi duda, yo ya obtengo ese numero en hexadecimal pero como le puedo hacer para convertirlo al numero de 20 posiciones que pide el SAT ya intente cambiarlo con PHP pero me da un numero que nada que ver ojala que me puedas ayudar.
  #235 (permalink)  
Antiguo 07/10/2010, 18:47
 
Fecha de Ingreso: octubre-2010
Ubicación: DF
Mensajes: 1
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Factura electroncia sat mexico

Cita:
Iniciado por AntonioMatias Ver Mensaje

'--------------------------------------------------------------------------------------
Espero que te sirva y puedas encontrar el error.
La solución fue que compile la clase en c# y agrege el DLL a mi proyecto.
'--------------------------------------------------------------------------------------
Saludos...
Antonio,

Tu código es muy bueno, pero tienes pequeños errores, el primero es que la comparación del salt debe ser contra la secuencia de bytes que llamas OIDpkcs5PBKDF2 y lo estás haciendo contra OIDpkcs5PBES2.

El segundo es que los dos bytes que van después de OIDdesEDE3CBC deben ser 2 y 2, tú estás validando 2 y 1, hay que cambiarlo.

Otro error que tienes, seguramente de concentración fue que en la función que usas para comparar bytes, el incremento de i lo pones adentro del IF, debe ir después del END IF, si no, cada vez comparas contra el primer byte.

Por último debes revisar en la función DecodePrivateKeyInfo, donde lees el 2 y 1 del pkcs8, asignas bt al 2 y twobytes al 1, y luego haces dos veces la comparación contra bt, cuando la segunda comparación debería ir contra el 1, o sea contra twobytes.

Haciendo estas pequeñas modificaciones, probé tu código y desencripta perfectamente cualquier key en PKCS8

Saludos,

Kad
  #236 (permalink)  
Antiguo 12/10/2010, 07:27
 
Fecha de Ingreso: agosto-2010
Mensajes: 10
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Factura electroncia sat mexico

Quick quiz...

Si en este momento empezamos a emitir CFD's por primera vez, ¿Qué método de digestión tenemos que utilizar?

a) MD5
b) sha1
  #237 (permalink)  
Antiguo 12/10/2010, 08:47
 
Fecha de Ingreso: abril-2007
Mensajes: 48
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: Factura electroncia sat mexico

buenos dias, haber si alguien ya desifro lo del nodo <Addenda>, en mi caso agrege o debo agregarle mas bien 2 atributos, los cuales por un lado no he definido un namesspace y al pasar por el validador del sat, me dice que esta bien el archivo xml solo que en el nodo addenda no esta definido los atributos que le agrege.

en este link, muchos de ustedes han aportado sugerencias para desarrollar la factura electronica, y casi no se ha escrito sobre la famosa addenda, pues un capricho del sat, que tan solo es optar por no tomar en cuenta esta parte, al fin y acabo por decirlo de cierta manera es informativo, y buscando entre algunos foros, solo puedo aportar que hay un bug del sat pero que al final de esto es correcto nuestros xml, siempre y cuando se cumpla con la estructura del anexo 20.

solo debo decir que estoy realizando pruebas con los archivos (.key y .cer) y que paso con este nodo, es necesario realizar archivos extras, tener de un hosting, o que pasa, ante todo esto quiero salir de la duda.

si alguien tiene una opinios se los agradesco.
  #238 (permalink)  
Antiguo 12/10/2010, 13:13
 
Fecha de Ingreso: octubre-2006
Mensajes: 88
Antigüedad: 18 años, 2 meses
Puntos: 1
Respuesta: Factura electroncia sat mexico

HOLA A TODOS, TENGO UNA DUDA YA TENGO TODO FUNCIONANDO BIEN, HASTA EL XML YA LO VALIDE Y ESTA CORRECTO PERO POR EJEMPLO EN ESTA CADENA


||A|1|2005-09-02T16:30:00|1|ISP900909Q88|Industrias del Sur Poniente, S.A. de C.V.|Alvaro Obregón|37|3|Col. Roma Norte|México|Cuauhtémoc|Distrito Federal|México|06700|Pino Suarez|23|Centro|Monterrey|Monterrey|Nuevo Léon|México|95460|CAUR390312S87|Rosa María Calderón Uriegas|Topochico|52|Jardines del Valle|Monterrey|Monterrey|Nuevo León|México|95465|10|Caja|Vasos decorados|20|200|1|pieza|Charola metálica|150|150|IVA|52.5||

QUE SE LE PONE CUANDO LA FACTURA ES EN DOLARES COMO LO IDENTIFICO SI EN MI PROGRAMA SE PUEDE FACTURAR EN DOLARES O PESOS
  #239 (permalink)  
Antiguo 12/10/2010, 16:38
 
Fecha de Ingreso: octubre-2010
Mensajes: 2
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Factura electroncia sat mexico

BUENAS TARDES A TODOS HE LEIDO TODO ESTO DE LA FACTURA ELECTRONICA Y SOLO POR AFICION HE ESTADO MODIFICANDO ALGUNOS CODIGOS PERO TENGO DUDAS EN ALGUNOS RESULTADOS LE DEJO ESTE CODIGO QUE MODIFIQUE PARA QUE SI GUSTAN LO PUEDAN PROBAR NO SE SI SIRVA MUCHO PERO LO DEJO...


Dim objCert As New X509Certificate2("C:\Users\LapTop\Documents\Visual Studio 2010\Projects\Factu_H\Factu_H\bin\Debug\db\G.I\CER TIFICADO\NUEVO\00001000000101856477.cer")
Dim objSB As Text.StringBuilder = New Text.StringBuilder("Detalle del certificado:")
Dim RESULT() As String
Dim CADENAENTIDAD As String = objCert.Issuer.ToString
Dim CADENAASUNTO As String = objCert.Subject.ToString
Dim charSeparators() As Char = {","}

Console.WriteLine(objSB.ToString())
Console.WriteLine(" ", "\n")

RESULT = CADENAENTIDAD.Split(charSeparators, StringSplitOptions.RemoveEmptyEntries)
Show(RESULT)

RESULT = CADENAASUNTO.Split(charSeparators, StringSplitOptions.RemoveEmptyEntries)
Show(RESULT)

Console.WriteLine("Válido desde = " + objCert.NotBefore.ToString(), "\n")
Console.WriteLine("Válido hasta = " + objCert.NotAfter.ToString(), "\n")
Console.WriteLine(" ", "\n")
Console.WriteLine("Tamaño de la clave = " + objCert.PublicKey.Key.KeySize.ToString(), "\n")
Console.WriteLine(" ", "\n")
Console.WriteLine("Número de serie = " + objCert.SerialNumber, "\n")
Console.WriteLine("Hash = " + objCert.Thumbprint, "\n")
Console.WriteLine(" ", "\n")

Dim DatoHex As String = objCert.SerialNumber
Dim Data1 As String = ""
Dim Resultado As String = ""

While DatoHex.Length > 0

Data1 = System.Convert.ToChar(System.Convert.ToUInt32(Dato Hex.Substring(0, 2), 16)).ToString()
Resultado = Resultado & Data1
DatoHex = DatoHex.Substring(2, DatoHex.Length - 2)
End While

Console.WriteLine("Certificado = " + Resultado)
Console.WriteLine(" ", "\n")

Console.WriteLine("Extensiones:", "\n")
For Each objExt In objCert.Extensions
Console.WriteLine(objExt.Oid.FriendlyName & " (" & objExt.Oid.Value & ")")
If (objExt.Oid.FriendlyName = "Key Usage") Then
'Dim ext As X509KeyUsageExtension = objExt
'Console.WriteLine(" " + ext.KeyUsages)
End If
If (objExt.Oid.FriendlyName = "Basic Constraints") Then
'Dim ext2 As X509BasicConstraintsExtension = objExt
'Console.WriteLine(" " + ext2.CertificateAuthority)
'Console.WriteLine(" " + ext2.HasPathLengthConstraint)
'Console.WriteLine(" " + ext2.PathLengthConstraint)
End If
If (objExt.Oid.FriendlyName = "Subject Key Identifier") Then
'Dim ext3 As X509SubjectKeyIdentifierExtension = objExt
'Console.WriteLine(" " + ext3.SubjectKeyIdentifier)
End If
If (objExt.Oid.FriendlyName = "Enhanced Key Usage") Then '//2.5.29.37
'Dim ext4 As X509EnhancedKeyUsageExtension = objExt
'Dim objOids As OidCollection = ext4.EnhancedKeyUsages
'For Each Oid In objOids
' Console.WriteLine(" " & Oid.FriendlyName & " (" + Oid.Value & ")")
'Next
End If
Next
Console.ReadKey()
End Sub

Public Sub Show(ByVal entries() As String)
Dim entry As String
For Each entry In entries
Console.Write("<{0}>", Trim(entry))
Console.Write(vbCrLf)
Next entry
Console.Write(vbCrLf & vbCrLf)
End Sub

OID.1.2.840.113549.1.9.2=
L=
S=
C=
PostalCode=
STREET=
E=
O=
CN=
OU=
SERIALNUMBER=
OID.2.5.4.45=
O=
OID.2.5.4.41=
CN=

ALGUIEN DE USTEDES SABE EXACTAMENTE QUE ES CADA UNA DE ESTAS ETIQUETAS GRACIAS

JAJAJAJAJA POR CIERTO SOLO LO HAGO POR AFICION Y YA ME INTRIGO EL TEMA MUCHAS GRACIAS A TODOS...
  #240 (permalink)  
Antiguo 12/10/2010, 16:41
 
Fecha de Ingreso: octubre-2010
Mensajes: 2
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Factura electroncia sat mexico

POR CIERTO EN EL CODIGO QUE PUSE ANTERIORMENTE COMENTE ALGUNAS LINEAS ALGUIEN ME PUEDE DECIR PARA QUE EXACTEMENTE SE OCUPAN ESAS LINEAS?

GRACIAS


Etiquetas: factura, mexico, sat
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado

SíEste tema le ha gustado a 39 personas




La zona horaria es GMT -6. Ahora son las 10:28.