Cómo obtener valor dentro/desde ASN1_ENUMERADO sin abrir SSL en C++
Frecuentes
Visto 654 equipos
0
No encontré documentación en la página de openssl sobre cómo trabajar con ASN1_ENUMERADO.
Usando BERViewer para visualizar la estructura:
Entonces usé:
ASN1_SEQUENCE_ANY *asn1SequenceAny = sk_ASN1_TYPE_new_null();
asn1SequenceAny = d2i_ASN1_SEQUENCE_ANY(&asn1SequenceAny, (const unsigned char**)&data,len);
ASN1_TYPE *asn1Type = NULL;
asn1Type = sk_ASN1_TYPE_pop(asn1SequenceAny);
if(asn1Type->type == V_ASN1_ENUMERATED)
{
asn1Type->value.enumerated->data; // How to get sequence inside [0] ?
}
Los datos enumerados en el disco "asn1Type->value.enumerated->data" se ven así:
Cómo obtener el ASN1_SEQUENCE_ANY de [0]:
SEQUENCE
|__SEQUENCE
|__SEQUENCE
Intenté: ASN1_ENUMERATED_get, return -1. ¿Por qué no cero?
Los artículos son muy bienvenidos.
1 Respuestas
0
OpenSSL proporciona una serie de funciones para decodificar estos mensajes. Debe saber cuál fue la función correspondiente que lo codificó, porque las rutinas de decodificación también analizan la salida para asegurarse de que el mensaje decodificado coincida con el tipo esperado implícito en el método de decodificación que llamó. Parece que quieres:
d2i_ASN1_OBJECT (3ssl) - ASN1 OBJECT IDENTIFIER functions
Pero si eso no es correcto, puede buscar en la documentación de OpenSSL para d2i
, encontrará muchas funciones para probar.
Si descarga el Código fuente de OpenSSL, después de desempacarlo, mire dentro del apps
subdirectorio, y lea a través del asn1pars.c
Archivo. O puedes seguir este enlace para verlo en línea. ¡Espero que esto ayude!
Respondido el 12 de junio de 12 a las 21:06
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas c++ cryptography openssl asn.1 or haz tu propia pregunta.
@Cobaia: agregó más información. Saludos - jxh