1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/security/nss/cmd/tests/dertimetest.c Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,97 @@ 1.4 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.5 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.6 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.7 + 1.8 +#include <stdio.h> 1.9 +#include <stdlib.h> 1.10 + 1.11 +#include "secder.h" 1.12 +#include "secerr.h" 1.13 + 1.14 +int main() 1.15 +{ 1.16 + SECItem badTime; 1.17 + PRTime prtime; 1.18 + SECStatus rv; 1.19 + int error; 1.20 + PRBool failed = PR_FALSE; 1.21 + 1.22 + /* A UTCTime string with an embedded null. */ 1.23 + badTime.type = siBuffer; 1.24 + badTime.data = (unsigned char *)"091219000000Z\0junkjunkjunkjunkjunkjunk"; 1.25 + badTime.len = 38; 1.26 + rv = DER_UTCTimeToTime(&prtime, &badTime); 1.27 + if (rv == SECSuccess) { 1.28 + fprintf(stderr, "DER_UTCTimeToTime should have failed but " 1.29 + "succeeded\n"); 1.30 + failed = PR_TRUE; 1.31 + } else { 1.32 + error = PORT_GetError(); 1.33 + if (error != SEC_ERROR_INVALID_TIME) { 1.34 + fprintf(stderr, "DER_UTCTimeToTime failed with error %d, " 1.35 + "expected error %d\n", error, SEC_ERROR_INVALID_TIME); 1.36 + failed = PR_TRUE; 1.37 + } 1.38 + } 1.39 + 1.40 + /* A UTCTime string with junk after a valid date/time. */ 1.41 + badTime.type = siBuffer; 1.42 + badTime.data = (unsigned char *)"091219000000Zjunk"; 1.43 + badTime.len = 17; 1.44 + rv = DER_UTCTimeToTime(&prtime, &badTime); 1.45 + if (rv == SECSuccess) { 1.46 + fprintf(stderr, "DER_UTCTimeToTime should have failed but " 1.47 + "succeeded\n"); 1.48 + failed = PR_TRUE; 1.49 + } else { 1.50 + error = PORT_GetError(); 1.51 + if (error != SEC_ERROR_INVALID_TIME) { 1.52 + fprintf(stderr, "DER_UTCTimeToTime failed with error %d, " 1.53 + "expected error %d\n", error, SEC_ERROR_INVALID_TIME); 1.54 + failed = PR_TRUE; 1.55 + } 1.56 + } 1.57 + 1.58 + /* A GeneralizedTime string with an embedded null. */ 1.59 + badTime.type = siBuffer; 1.60 + badTime.data = (unsigned char *)"20091219000000Z\0junkjunkjunkjunkjunkjunk"; 1.61 + badTime.len = 40; 1.62 + rv = DER_GeneralizedTimeToTime(&prtime, &badTime); 1.63 + if (rv == SECSuccess) { 1.64 + fprintf(stderr, "DER_GeneralizedTimeToTime should have failed but " 1.65 + "succeeded\n"); 1.66 + failed = PR_TRUE; 1.67 + } else { 1.68 + error = PORT_GetError(); 1.69 + if (error != SEC_ERROR_INVALID_TIME) { 1.70 + fprintf(stderr, "DER_GeneralizedTimeToTime failed with error %d, " 1.71 + "expected error %d\n", error, SEC_ERROR_INVALID_TIME); 1.72 + failed = PR_TRUE; 1.73 + } 1.74 + } 1.75 + 1.76 + /* A GeneralizedTime string with junk after a valid date/time. */ 1.77 + badTime.type = siBuffer; 1.78 + badTime.data = (unsigned char *)"20091219000000Zjunk"; 1.79 + badTime.len = 19; 1.80 + rv = DER_GeneralizedTimeToTime(&prtime, &badTime); 1.81 + if (rv == SECSuccess) { 1.82 + fprintf(stderr, "DER_GeneralizedTimeToTime should have failed but " 1.83 + "succeeded\n"); 1.84 + failed = PR_TRUE; 1.85 + } else { 1.86 + error = PORT_GetError(); 1.87 + if (error != SEC_ERROR_INVALID_TIME) { 1.88 + fprintf(stderr, "DER_GeneralizedTimeToTime failed with error %d, " 1.89 + "expected error %d\n", error, SEC_ERROR_INVALID_TIME); 1.90 + failed = PR_TRUE; 1.91 + } 1.92 + } 1.93 + 1.94 + if (failed) { 1.95 + fprintf(stderr, "FAIL\n"); 1.96 + return 1; 1.97 + } 1.98 + printf("PASS\n"); 1.99 + return 0; 1.100 +}