Botan 3.8.1
Crypto and TLS for C&
version.cpp
Go to the documentation of this file.
1/*
2* Version Information
3* (C) 1999-2013,2015 Jack Lloyd
4*
5* Botan is released under the Simplified BSD License (see license.txt)
6*/
7
8#include <botan/version.h>
9
10#include <botan/internal/fmt.h>
11#include <botan/internal/target_info.h>
12#include <botan/internal/version_info.h>
13
14namespace Botan {
15
16const char* short_version_cstr() {
17 return BOTAN_SHORT_VERSION_STRING;
18}
19
20const char* version_cstr() {
21 return BOTAN_FULL_VERSION_STRING;
22}
23
24std::string version_string() {
25 return std::string(version_cstr());
26}
27
28std::string short_version_string() {
29 return std::string(short_version_cstr());
30}
31
34}
35
36std::optional<std::string> version_vc_revision() {
37#if defined(BOTAN_VC_REVISION)
38 return std::string(BOTAN_VC_REVISION);
39#else
40 return std::nullopt;
41#endif
42}
43
44std::optional<std::string> version_distribution_info() {
45#if defined(BOTAN_DISTRIBUTION_INFO_STRING)
46 return std::string(BOTAN_DISTRIBUTION_INFO_STRING);
47#else
48 return std::nullopt;
49#endif
50}
51
52/*
53* Return parts of the version as integers
54*/
55uint32_t version_major() {
57}
58
59uint32_t version_minor() {
61}
62
63uint32_t version_patch() {
65}
66
68#if defined(BOTAN_UNSAFE_FUZZER_MODE) || defined(BOTAN_TERMINATE_ON_ASSERTS)
69 return true;
70#else
71 return false;
72#endif
73}
74
75std::string runtime_version_check(uint32_t major, uint32_t minor, uint32_t patch) {
76 if(major != version_major() || minor != version_minor() || patch != version_patch()) {
77 return fmt("Warning: linked version ({}) does not match version built against ({}.{}.{})\n",
79 major,
80 minor,
81 patch);
82 }
83
84 return "";
85}
86
87} // namespace Botan
#define BOTAN_VERSION_PATCH
Definition build.h:32
#define BOTAN_VERSION_DATESTAMP
Definition build.h:43
#define BOTAN_VERSION_MINOR
Definition build.h:27
#define BOTAN_VERSION_MAJOR
Definition build.h:22
uint32_t version_minor()
Definition version.cpp:59
std::string version_string()
Definition version.cpp:24
std::string fmt(std::string_view format, const T &... args)
Definition fmt.h:53
const char * short_version_cstr()
Definition version.cpp:16
uint32_t version_major()
Definition version.cpp:55
const char * version_cstr()
Definition version.cpp:20
uint32_t version_datestamp()
Definition version.cpp:32
std::optional< std::string > version_distribution_info()
Definition version.cpp:44
uint32_t version_patch()
Definition version.cpp:63
std::string short_version_string()
Definition version.cpp:28
std::optional< std::string > version_vc_revision()
Definition version.cpp:36
std::string runtime_version_check(uint32_t major, uint32_t minor, uint32_t patch)
Definition version.cpp:75
bool unsafe_for_production_build()
Definition version.cpp:67