+* Mon Feb 21 2005 Andrew McNab <Andrew.McNab@man.ac.uk>
+- Add bugfix for Bug #6357 from Fabrizio Pacini
+ <fabrizio.pacini@cern.ch> to fix delegation proxy
+ cache names in OpenSSL 0.9.7.
* Sun Feb 20 2005 Andrew McNab <Andrew.McNab@man.ac.uk>
- Add basic VOMS support (signature checking not yet
in) for X.509 Attribute Certificates.
* Hashes are the most significant 8 bytes, in lowercase hexadecimal.
*/
-char *GRSTx509MakeProxyFileName(char *delegation_id,
+char *GRSTx509MakeProxyFileName(char *delegation_id,
STACK_OF(X509) *certstack)
{
int i, depth, prevIsCA = 1, IsCA, hash_name_len, delegation_id_len,
der_name_len;
- unsigned char *der_name, hash_name[EVP_MAX_MD_SIZE],
+ unsigned char *der_name, *buf, hash_name[EVP_MAX_MD_SIZE],
hash_delegation_id[EVP_MAX_MD_SIZE],
filename[34];
X509_NAME *subject_name;
der_name_len = i2d_X509_NAME(X509_get_subject_name(cert), NULL);
if (der_name_len == 0) return NULL;
- der_name = malloc(der_name_len);
+ buf = OPENSSL_malloc(der_name_len);
+ der_name = buf;
+
+
if (!i2d_X509_NAME(X509_get_subject_name(cert), &der_name))
{
- free(der_name);
+ OPENSSL_free(der_name);
return NULL;
}
-
+
OpenSSL_add_all_digests();
-
+
m = EVP_sha1();
if (m == NULL)
{
- free(der_name);
+ OPENSSL_free(der_name);
return NULL;
}
+
EVP_DigestInit(&ctx, m);
EVP_DigestUpdate(&ctx, delegation_id, strlen(delegation_id));
EVP_DigestFinal(&ctx, hash_delegation_id, &delegation_id_len);
for (i=0; i <=7; ++i)
sprintf(&filename[i*2], "%02x", hash_delegation_id[i]);
-
+
filename[16] = '-';
-
+
+
+
EVP_DigestInit(&ctx, m);
- EVP_DigestUpdate(&ctx, der_name, der_name_len);
+ EVP_DigestUpdate(&ctx, buf, der_name_len);
EVP_DigestFinal(&ctx, hash_name, &hash_name_len);
for (i=0; i <=7; ++i)
sprintf(&filename[17 + i*2], "%02x", hash_name[i]);
-
+
return strdup(filename);
}
return GRST_RET_FAILED;
}
+ fprintf(stderr, "\n\n\n\n PROXYCHAIN = \n %s", proxychain);
if (GRSTx509StringToChain(&certstack, proxychain) != GRST_RET_OK)
return GRST_RET_FAILED;