pki: Add a certificate lifetime calculation helper function
This commit is contained in:
+52
-1
@@ -13,9 +13,11 @@
|
||||
* for more details.
|
||||
*/
|
||||
|
||||
#define _GNU_SOURCE
|
||||
#include "command.h"
|
||||
#include "pki.h"
|
||||
|
||||
#include <time.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <utils/debug.h>
|
||||
@@ -101,6 +103,56 @@ bool get_form(char *form, cred_encoding_type_t *enc, credential_type_t type)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/**
|
||||
* See header
|
||||
*/
|
||||
bool calculate_lifetime(char *format, char *nbstr, char *nastr, time_t span,
|
||||
time_t *nb, time_t *na)
|
||||
{
|
||||
struct tm tm;
|
||||
time_t now;
|
||||
char *end;
|
||||
|
||||
if (!format)
|
||||
{
|
||||
format = "%d.%m.%y %T";
|
||||
}
|
||||
|
||||
now = time(NULL);
|
||||
|
||||
localtime_r(&now, &tm);
|
||||
if (nbstr)
|
||||
{
|
||||
end = strptime(nbstr, format, &tm);
|
||||
if (end == NULL || *end != '\0')
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
*nb = mktime(&tm);
|
||||
|
||||
localtime_r(&now, &tm);
|
||||
if (nastr)
|
||||
{
|
||||
end = strptime(nastr, format, &tm);
|
||||
if (end == NULL || *end != '\0')
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
*na = mktime(&tm);
|
||||
|
||||
if (!nbstr && nastr)
|
||||
{
|
||||
*nb = *na - span;
|
||||
}
|
||||
else if (!nastr)
|
||||
{
|
||||
*na = *nb + span;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Callback credential set pki uses
|
||||
*/
|
||||
@@ -188,4 +240,3 @@ int main(int argc, char *argv[])
|
||||
atexit(remove_callback);
|
||||
return command_dispatch(argc, argv);
|
||||
}
|
||||
|
||||
|
||||
@@ -33,4 +33,21 @@
|
||||
*/
|
||||
bool get_form(char *form, cred_encoding_type_t *enc, credential_type_t type);
|
||||
|
||||
/**
|
||||
* Calculate start/end lifetime for certificates.
|
||||
*
|
||||
* If both nbstr and nastr are given, span is ignored. Otherwise missing
|
||||
* arguments are calculated, or assumed to be now.
|
||||
*
|
||||
* @param format strptime() format, NULL for default: %d.%m.%y %T
|
||||
* @param nbstr string describing notBefore datetime, or NULL
|
||||
* @param nastr string describing notAfter datetime, or NULL
|
||||
* @param span lifetime span, from notBefore to notAfter
|
||||
* @param nb calculated notBefore time
|
||||
* @param na calculated notAfter time
|
||||
* @return TRUE of nb/na calculated successfully
|
||||
*/
|
||||
bool calculate_lifetime(char *format, char *nbstr, char *nastr, time_t span,
|
||||
time_t *nb, time_t *na);
|
||||
|
||||
#endif /** PKI_H_ @}*/
|
||||
|
||||
Reference in New Issue
Block a user