blob: 25e9c21d125caa06f2959634e46012af4af26a0b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
#ifndef MOD_JWT_HXX
#define MOD_JWT_HXX
#include <libbrep/types.hxx>
#include <libbrep/utility.hxx>
#include <mod/module-options.hxx>
#include <chrono>
namespace brep
{
// Generate a JSON Web Token (JWT), defined in RFC7519.
//
// A JWT is essentially the token issuer's name along with a number of
// claims, signed with a private key.
//
// Note that only GitHub's requirements are implemented, not the entire JWT
// spec; see the source file for details.
//
// The token expires when the validity period has elapsed.
//
// The backdate argument specifies the number of seconds to subtract from
// the "issued at" time in order to combat potential clock drift (which can
// casue the token to be not valid yet).
//
// Return the token or std::system_error in case if an error.
//
string
gen_jwt (const options::openssl_options&,
const path& private_key,
const string& issuer,
const std::chrono::minutes& validity_period,
const std::chrono::seconds& backdate = 60);
}
#endif
|