sv_PrintUTCTime(out, value, om);
sv_PrintTime(out, value, om);
sv_PrintAttribute(FILE *out, SEC_PKCS7Attribute *attr, char *m){    SECItem *value;    int i;    char om[100];    fprintf(out, m);    /*     * XXX Make this smarter; look at the type field and then decode     * and print the value(s) appropriately!     */    sv_PrintObjectID(out, &(attr->type), "type=");    if (attr->values != NULL) {        i = 0;        while ((value = attr->values[i]) != NULL) {            sprintf(om, "%svalue[%d]=%s", m, i++, attr->encoded ? "(encoded)" : "");             if (attr->encoded || attr->typeTag == NULL) {                sv_PrintAsHex(out, value, om);            } else {                switch (attr->typeTag->offset) {                    default:                        sv_PrintAsHex(out, value, om);                        break;                    case SEC_OID_PKCS9_CONTENT_TYPE:                        sv_PrintObjectID(out, value, om);                        break;                    case SEC_OID_PKCS9_SIGNING_TIME:                        sv_PrintUTCTime(out, value, om);                        break;                }            }        }    }}