pki: Add a certificate lifetime calculation helper function
This commit is contained in:
+52
-1
@@ -13,9 +13,11 @@
|
|||||||
* for more details.
|
* for more details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#define _GNU_SOURCE
|
||||||
#include "command.h"
|
#include "command.h"
|
||||||
#include "pki.h"
|
#include "pki.h"
|
||||||
|
|
||||||
|
#include <time.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#include <utils/debug.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;
|
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
|
* Callback credential set pki uses
|
||||||
*/
|
*/
|
||||||
@@ -188,4 +240,3 @@ int main(int argc, char *argv[])
|
|||||||
atexit(remove_callback);
|
atexit(remove_callback);
|
||||||
return command_dispatch(argc, argv);
|
return command_dispatch(argc, argv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -33,4 +33,21 @@
|
|||||||
*/
|
*/
|
||||||
bool get_form(char *form, cred_encoding_type_t *enc, credential_type_t type);
|
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_ @}*/
|
#endif /** PKI_H_ @}*/
|
||||||
|
|||||||
Reference in New Issue
Block a user