Only add the hot link on cert windows if the target for the HTTP request

is a certificate resource.
This commit is contained in:
javi%netscape.com 2000-04-27 01:08:19 +00:00
Родитель 47730f25c5
Коммит d05124301e
4 изменённых файлов: 26 добавлений и 12 удалений

Просмотреть файл

@ -1965,7 +1965,7 @@ SSM_ViewCertInfoKeywordHandler(SSMTextGenContext * cx)
style = (char *) SSM_At(cx->m_params, STYLE_PARAM);
PR_FREEIF(cx->m_result);
if (!strcmp(style, "pretty"))
rv = SSM_PrettyFormatCert(cert, pattern, &cx->m_result);
rv = SSM_PrettyFormatCert(cert, pattern, &cx->m_result, PR_TRUE);
else
rv = SSM_FormatCert(cert, pattern, &cx->m_result);
goto done;
@ -2598,15 +2598,25 @@ SSMStatus
SSM_MakeUniqueNameForIssuerWindow(SSMTextGenContext *cx)
{
SSMResourceCert *certres;
CERTCertificate *issuer;
CERTCertificate *issuer, *serverCert;
char *certHex=NULL, *issuerHex=NULL;
SSMSSLDataConnection *sslConn;
if (!SSM_IsAKindOf(cx->m_request->target, SSM_RESTYPE_CERTIFICATE)) {
return SSM_FAILURE;
if (SSM_IsAKindOf(cx->m_request->target, SSM_RESTYPE_CERTIFICATE)) {
certres = (SSMResourceCert*)cx->m_request->target;
serverCert = certres->cert;
} else if (SSM_IsAKindOf(cx->m_request->target,
SSM_RESTYPE_SSL_DATA_CONNECTION)) {
sslConn = (SSMSSLDataConnection*)cx->m_request->target;
serverCert = SSL_PeerCertificate(sslConn->socketSSL);
if (serverCert == NULL) {
goto loser;
}
} else {
goto loser;
}
certres = (SSMResourceCert*)cx->m_request->target;
issuer = CERT_FindCertIssuer(certres->cert,PR_Now(),certUsageAnyCA);
certHex = CERT_Hexify(&certres->cert->serialNumber,0);
issuer = CERT_FindCertIssuer(serverCert,PR_Now(),certUsageAnyCA);
certHex = CERT_Hexify(&serverCert->serialNumber,0);
if (issuer != NULL) {
issuerHex = CERT_Hexify(&issuer->serialNumber,0);
CERT_DestroyCertificate(issuer);
@ -2616,6 +2626,8 @@ SSM_MakeUniqueNameForIssuerWindow(SSMTextGenContext *cx)
PR_FREEIF(issuerHex);
PR_Free(certHex);
return SSM_SUCCESS;
loser:
return SSM_FAILURE;
}
SSMStatus

Просмотреть файл

@ -1295,7 +1295,7 @@ SSMStatus SSM_CACertKeywordHandler(SSMTextGenContext* cx)
style = (char *) SSM_At(cx->m_params, CERT_FORMAT);
PR_FREEIF(cx->m_result);
if (!strcmp(style, "pretty"))
rv = SSM_PrettyFormatCert(caCert, pattern, &cx->m_result);
rv = SSM_PrettyFormatCert(caCert, pattern, &cx->m_result, PR_FALSE);
else if (!strcmp(style, "simple"))
rv = SSM_FormatCert(caCert, pattern, &cx->m_result);
else {

Просмотреть файл

@ -229,7 +229,8 @@ SSMStatus SSM_ServerCertKeywordHandler(SSMTextGenContext* cx)
if (formatKey[0] == 's') {
rv = SSM_FormatCert(serverCert, pattern, &cx->m_result);
} else if (formatKey[0] == 'p') {
rv = SSM_PrettyFormatCert(serverCert, pattern, &cx->m_result);
rv = SSM_PrettyFormatCert(serverCert, pattern,
&cx->m_result, PR_FALSE);
} else {
SSM_DEBUG("cannot understand the format key.\n");
rv = SSM_FAILURE;
@ -1223,7 +1224,7 @@ loser:
}
SSMStatus SSM_PrettyFormatCert(CERTCertificate* cert, char* fmt,
char** result)
char** result,PRBool addIssuerLink)
{
SSMStatus rv = SSM_SUCCESS;
char * displayName = NULL, *location=NULL, *state = NULL, *country = NULL;
@ -1276,7 +1277,8 @@ SSMStatus SSM_PrettyFormatCert(CERTCertificate* cert, char* fmt,
/*
* Don't add the extra link if this is a self-signed cert.
*/
if (CERT_CompareName(&cert->subject, &cert->issuer) != SECEqual) {
if (addIssuerLink &&
CERT_CompareName(&cert->subject, &cert->issuer) != SECEqual) {
tmp=PR_smprintf("<a href=\"javascript:openIssuerWindow();\">%s</a>",
issuer);
PR_Free(issuer);

Просмотреть файл

@ -193,7 +193,7 @@ SSMStatus SSM_VerifyServerCertKeywordHandler(SSMTextGenContext* cx);
* we also access lots of internal cert fields but can't help it...
*/
SSMStatus SSM_PrettyFormatCert(CERTCertificate* cert, char* fmt,
char** result);
char** result, PRBool addIssuerLink);
SECStatus SSM_SSLMakeUnknownIssuerDialog(CERTCertificate* cert,
SSMSSLDataConnection* conn);