summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralexei.volkov.bugs%sun.com <devnull@localhost>2007-01-04 20:32:26 +0000
committeralexei.volkov.bugs%sun.com <devnull@localhost>2007-01-04 20:32:26 +0000
commit862f9d5138c3b9e20cba05867ffe7deab1caa169 (patch)
tree4de3ab0ab45623d293264662f0c5da68e956c462
parente58446e8f64c21def72e17a49983cfa091d973c8 (diff)
downloadnss-hg-862f9d5138c3b9e20cba05867ffe7deab1caa169.tar.gz
363987 - crlutil does not change thisUpdate date when creating a modified CRL. r=nelson, neil
-rw-r--r--security/nss/cmd/crlutil/crlutil.c16
-rwxr-xr-xsecurity/nss/tests/cert/cert.sh10
2 files changed, 22 insertions, 4 deletions
diff --git a/security/nss/cmd/crlutil/crlutil.c b/security/nss/cmd/crlutil/crlutil.c
index 7488465c5..9d164a4c8 100644
--- a/security/nss/cmd/crlutil/crlutil.c
+++ b/security/nss/cmd/crlutil/crlutil.c
@@ -351,7 +351,7 @@ FindSigningCert(CERTCertDBHandle *certHandle, CERTSignedCrl *signCrl,
}
static CERTSignedCrl*
-DuplicateModCrl(PRArenaPool *arena, CERTCertDBHandle *certHandle,
+CreateModifiedCRLCopy(PRArenaPool *arena, CERTCertDBHandle *certHandle,
CERTCertificate **cert, char *certNickName,
PRFileDesc *inFile, PRInt32 decodeOptions,
PRInt32 importOptions)
@@ -365,7 +365,7 @@ DuplicateModCrl(PRArenaPool *arena, CERTCertDBHandle *certHandle,
PORT_Assert(arena != NULL && certHandle != NULL &&
certNickName != NULL);
if (!arena || !certHandle || !certNickName) {
- SECU_PrintError(progName, "DuplicateModCrl: invalid args\n");
+ SECU_PrintError(progName, "CreateModifiedCRLCopy: invalid args\n");
return NULL;
}
@@ -429,7 +429,15 @@ DuplicateModCrl(PRArenaPool *arena, CERTCertDBHandle *certHandle,
goto loser;
}
- signCrl->arena = arena;
+ /* Make sure the update time is current. It can be modified later
+ * by "update <time>" command from crl generation script */
+ rv = DER_EncodeTimeChoice(arena, &signCrl->crl.lastUpdate, PR_Now());
+ if (rv != SECSuccess) {
+ SECU_PrintError(progName, "fail to encode current time\n");
+ goto loser;
+ }
+
+ signCrl->arena = arena;
loser:
SECITEM_FreeItem(&crlDER, PR_FALSE);
@@ -675,7 +683,7 @@ GenerateCRL (CERTCertDBHandle *certHandle, char *certNickName,
}
if (modifyFlag == PR_TRUE) {
- signCrl = DuplicateModCrl(arena, certHandle, &cert, certNickName,
+ signCrl = CreateModifiedCRLCopy(arena, certHandle, &cert, certNickName,
inFile, decodeOptions, importOptions);
if (signCrl == NULL) {
goto loser;
diff --git a/security/nss/tests/cert/cert.sh b/security/nss/tests/cert/cert.sh
index 613cbb5ce..e667be958 100755
--- a/security/nss/tests/cert/cert.sh
+++ b/security/nss/tests/cert/cert.sh
@@ -1164,10 +1164,12 @@ EOF_CRLINI
echo "$SCRIPTNAME: Modifying CA CRL by adding one more cert ============"
sleep 2
+ CRLUPDATE=`date "+%Y%m%d%H%M%SZ"`
CRL_GRP_DATE=`date "+%Y%m%d%H%M%SZ"`
CU_ACTION="Modify CRL by adding one more cert"
crlu -d $CADIR -M -n "TestCA" -f ${R_PWFILE} -o ${CRL_FILE_GRP_1}_or1 \
-i ${CRL_FILE_GRP_1}_or <<EOF_CRLINI
+update=$CRLUPDATE
addcert ${CRL_GRP_END} $CRL_GRP_DATE
EOF_CRLINI
CRL_GEN_RES=`expr $? + $CRL_GEN_RES`
@@ -1177,6 +1179,7 @@ EOF_CRLINI
CU_ACTION="Modify CRL (ECC) by adding one more cert"
crlu -d $CADIR -M -n "TestCA-ec" -f ${R_PWFILE} \
-o ${CRL_FILE_GRP_1}_or1-ec -i ${CRL_FILE_GRP_1}_or-ec <<EOF_CRLINI
+update=$CRLUPDATE
addcert ${CRL_GRP_END} $CRL_GRP_DATE
EOF_CRLINI
CRL_GEN_RES=`expr $? + $CRL_GEN_RES`
@@ -1187,8 +1190,11 @@ EOF_CRLINI
########### Removing one cert ${UNREVOKED_CERT_GRP_1} #######################
echo "$SCRIPTNAME: Modifying CA CRL by removing one cert ==============="
CU_ACTION="Modify CRL by removing one cert"
+ sleep 2
+ CRLUPDATE=`date "+%Y%m%d%H%M%SZ"`
crlu -d $CADIR -M -n "TestCA" -f ${R_PWFILE} -o ${CRL_FILE_GRP_1} \
-i ${CRL_FILE_GRP_1}_or1 <<EOF_CRLINI
+update=$CRLUPDATE
rmcert ${UNREVOKED_CERT_GRP_1}
EOF_CRLINI
chmod 600 ${CRL_FILE_GRP_1}
@@ -1197,6 +1203,7 @@ EOF_CRLINI
CU_ACTION="Modify CRL (ECC) by removing one cert"
crlu -d $CADIR -M -n "TestCA-ec" -f ${R_PWFILE} -o ${CRL_FILE_GRP_1}-ec \
-i ${CRL_FILE_GRP_1}_or1-ec <<EOF_CRLINI
+update=$CRLUPDATE
rmcert ${UNREVOKED_CERT_GRP_1}
EOF_CRLINI
chmod 600 ${CRL_FILE_GRP_1}-ec
@@ -1208,6 +1215,7 @@ EOF_CRLINI
CRL_FILE_GRP_2=${R_SERVERDIR}/root.crl_${CRL_GRP_2_BEGIN}-${CRL_GRP_END}
echo "$SCRIPTNAME: Creating CA CRL for groups 1 and 2 ==============="
+ sleep 2
CRLUPDATE=`date "+%Y%m%d%H%M%SZ"`
CRL_GRP_DATE=`date "+%Y%m%d%H%M%SZ"`
CU_ACTION="Creating CRL for groups 1 and 2"
@@ -1268,10 +1276,12 @@ EOF_CRLINI
echo "$SCRIPTNAME: Importing Server CA Issued CRL for certs ${CRL_GRP_BEGIN} trough ${CRL_GRP_END}"
CU_ACTION="Importing CRL for groups 1"
+ crlu -D -n TestCA -f "${R_PWFILE}" -d "${R_SERVERDIR}"
crlu -I -i ${CRL_FILE} -n "TestCA" -f "${R_PWFILE}" -d "${R_SERVERDIR}"
CRL_GEN_RES=`expr $? + $CRL_GEN_RES`
if [ -n "$NSS_ENABLE_ECC" ] ; then
CU_ACTION="Importing CRL (ECC) for groups 1"
+ crlu -D -n TestCA-ec -f "${R_PWFILE}" -d "${R_SERVERDIR}"
crlu -I -i ${CRL_FILE}-ec -n "TestCA-ec" -f "${R_PWFILE}" \
-d "${R_SERVERDIR}"
CRL_GEN_RES=`expr $? + $CRL_GEN_RES`