Hi ,

I have char buffer in base64 encoded format. The client should read the buffer, 
decode it and get the result in X509 structure, i am facing issues with this.
I am getting an error, error:0D0680A8:asn1 encoding 
routines:ASN1_CHECK_TLEN:wrong tag.
Could you help me in resolving this.
Any help will be great. I have attached code for reference.
Thanks in advance.
Saleem

 
// This is my base64 encoded certificate
char *gacacert = 
"MIICLzCCAiswggGUoAMCAQICBgEYgSDT3DANBgkqhkiG9w0BAQUFADA0MRAwDgYD\n\
VQQKEwdlbnRydXN0MQwwCgYDVQQLEwNlbmcxEjAQBgNVBAMTCWdhTG9jYWxDQTAe\n\
Fw0wODAzMDUyMjQ3MzVaFw0yODAyMjkyMjQ3MzVaMDQxEDAOBgNVBAoTB2VudHJ1\n\
c3QxDDAKBgNVBAsTA2VuZzESMBAGA1UEAxMJZ2FMb2NhbENBMIGfMA0GCSqGSIb3\n\
DQEBAQUAA4GNADCBiQKBgQDW4ONrqPZ/Hc9Ft/vL1eD76XpbxhdmAezpjGK0aWa2\n\
2QCkDD6IpU3VxpW93+i8em2zgCV5fujbcJuNebk+Y24q3w8FVbba7BZGcaoatB99\n\
vdZ0gp/t/DXq9KsdxdlE2W/mKBCvxkkMsEnm5kHeHZXByouqPvIXGBsJORCH2ahB\n\
vwIDAQABo0gwRjASBgNVHRMBAf8ECDAGAQH/AgEAMBEGCWCGSAGG+EIBAQQEAwIA\n\
JDAdBgNVHQ4EFgQUIZVCc+92iSwt3CD3P9TYIJB6pLQwDQYJKoZIhvcNAQEFBQAD\n\
gYEAjZq3mZ/Q6F26BBd74Q5lJcABGTM4nB1mThaCJk//dLx6WhmWoXJoZD0//nYM\n\
UDvISCc4KtMZoe5qkO/BKJs9IwsXQyZiPl5bAtcfN6OmSe+fmNPMUKD1ck8l7WLu\n\
7k6hlBwrIIi05KhiYLY5i4ZbVh0+DyjIkXbv2GJj+g0CrEE=";

int SClient::loadCert(char *v_cert)
{
   try
   {
  char errStr[512];
  int ierr = 0;
 
  SSLeay_add_ssl_algorithms();
  SSL_METHOD *pSSLMethod = SSLv3_client_method();
  SSL_load_error_strings();
  SSL_CTX *pSSL_Context = SSL_CTX_new (pSSLMethod);
 
  // Adding the header and footer
  char *charsToPrepend = "-----BEGIN CERTIFICATE-----\n";
  char *charsToAppend = "\n-----END CERTIFICATE-----";
  char memBuffer[2000];
  strcpy(memBuffer, charsToPrepend);
  strcat(memBuffer, v_cert);
  strcat(memBuffer, charsToAppend);
 
  BIO *membuf = BIO_new(BIO_s_mem());
  BIO_puts(membuf, memBuffer);
 
  // **** This is returning null.
  X509 *x509 = PEM_read_bio_X509(membuf, NULL, NULL, NULL);
  if (x509 == NULL)
  {
   ierr = ERR_get_error();
   ERR_error_string(ierr, errStr);
   // The error here is....
   // error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
  }
   }
      catch( ...)
   {
  //("Unexpected exception");
  return 0;
   }
 
 return 1;
}


Reply via email to