Hello

I have the following code:
variables
X509 * cert;
and
X509_PUBKEY * working_public_key;
are previously instantiated.
                        ASN1_BIT_STRING_free(working_public_key->public_key);
working_public_key->public_key =
  ASN1_STRING_dup(cert->cert_info->key->public_key);
if (cert->cert_info->key->algor->parameter)
{
  if (working_public_key->algor->parameter)
    ASN1_TYPE_free(working_public_key->algor->parameter);
  working_public_key->algor->parameter = ASN1_TYPE_new();
  ASN1_TYPE_set(working_public_key->algor->parameter,
    cert->cert_info->key->algor->parameter->type,
    (void*)(&(cert->cert_info->key->algor->parameter->value)));
}
else
{
  if (OBJ_cmp(working_public_key->algor->algorithm,
              cert->cert_info->key->algor->algorithm))
  {
    ASN1_TYPE_free(working_public_key->algor->parameter);
    working_public_key->algor->parameter = NULL;
  }
}
ASN1_OBJECT_free(working_public_key->algor->algorithm);
working_public_key->algor->algorithm =
  OBJ_dup(cert->cert_info->key->algor->algorithm);
EVP_PKEY_free(working_public_key->pkey);
working_public_key->pkey = NULL;
X509_PUBKEY_get(working_public_key);

I do it according to RFC 3280 chapter 6.1.4 (d), (e) and (f).

If an algorithm in certificates' chain is RSA, the above code works correctly. But if the algorithm is DSA, application crashes (segmentation fault) in X509_PUBKEY_get(working_public_key).

What do I wrong i this code?

Thanks,
Daniel

--
Promocja! Format 15x20 tylko 99gr!
Zamów odbitki cyfrowe online - odbierz za darmo w EMPiK-u lub wy¶lemy Ci je 
poczt±
http://gazeta.empikfoto.pl
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to