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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
#ifndef __VXGG_REWRITE___ENCRYPTION_H___1481879318188___
#define __VXGG_REWRITE___ENCRYPTION_H___1481879318188___
// Determines whether any function that calls libsodium functions also checks to make sure libsodium is actually initialized. May
// cause unexpected issues with early exiting due to libsodium failing to initialize properly. It's recommended that you just
// manually run `sodium_init()` in some main or init function of your own so that you can deal with a potential error yourself
#define ___VXGG___ALWAYS_CHECK_LIBSODIUM___ 0
#if defined ___VXGG___ALWAYS_CHECK_LIBSODIUM___ && ___VXGG___ALWAYS_CHECK_LIBSODIUM___ > 0
// Definition for the callback function that fires when a call to checksodium fails
typedef void (*vxgg_naclfailcb)(void*);
// Sets the error callback for when libsodium fails. Runs `cb(data)` if `(sodium_init() < 0)`
void vxgg_setsodiumfailcb(const vxgg_naclfailcb cb, void *data);
#endif
// I need to store a dictionary of valid words for generating a password, and I don't want to read it in from another file, so I'm experimenting with this
#define PASSWORD_WORDS (\
(const char *[]){\
"the", "of", "to", "and", "for", "our", "their", "has", "in", "he", "a", "them", "that", "these", "by", "have", "we", "us",\
"people", "which", "all", "is", "with", "laws", "be", "are", "his", "states", "on", "they", "right", "it", "from", \
"government", "such", "among", "powers", "most", "an", "time", "should", "new", "as", "been", "colonies", "assent", \
"large", "at", "independent", "free", "united", "when", "mankind", "hold", "rights", "governments", "consent", "its", \
"long", "themselves", "abolishing", "usurpations", "absolute", "repeated", "this", "world", "refused", "pass", "other", \
"others", "without", "justice", "peace", "power", "seas", "war", "do", "declaration", "america", "becomes", "necessary", \
"political", "equal", "declare", "causes", "separation", "men", "happiness", "any", "form", "alter", "or", "will", \
"forms", "same", "object", "off", "necessity", "history", "great", "britain", "tyranny", "over", "public", "good", \
"unless", "suspended", "so", "would", "legislature", "only", "legislative", "bodies", "purpose", "into", "dissolved", \
"state", "endeavoured", "refusing", "hither", "conditions", "establishing", "offices", "out", "armies", "legislatures", \
"render", "jurisdiction", "foreign", "acts", "pretended", "trial", "inhabitants", "cases", "transporting", "rule", \
"declaring", "here", "protection", "against", "lives", "circumstances", "ages", "totally", "friends", "brethren", "whose", \
"every", "may", "therefore", "ought", "unanimous", "thirteen", "course", "human", "events", "one", "dissolve", "bands", \
"connected", "another", "assume", "earth", "separate", "station", "nature", "natures", "god", "entitle", "decent", \
"respect", "opinions", "requires", "impel", "truths", "self", "evident", "created", "endowed", "creator", "certain", \
"unalienable", "life", "liberty", "pursuit", "secure", "instituted", "deriving", "just", "governed", "whenever", \
"destructive", "ends", "abolish", "institute", "laying", "foundation", "principles", "organizing", "shall", "seem", \
"likely", "effect", "safety", "prudence", "indeed", "dictate", "established", "not", "changed", "light", "transient", \
"accordingly", "experience", "hath", "shewn", "more", "disposed", "suffer", "while", "evils", "sufferable", "than", \
"accustomed", "but", "train", "abuses", "pursuing", "invariably", "evinces", "design", "reduce", "under", "despotism", \
"duty", "throw", "provide", "guards", "future", "security", "patient", "sufferance", "now", "constrains", "former", \
"systems", "present", "king", "injuries", "having", "direct", "establishment", "prove", "let", "facts", "submitted", \
"candid", "wholesome", "forbidden", "governors", "immediate", "pressing", "importance", "operation", "till", "obtained", \
"utterly", "neglected", "attend", "accommodation", "districts", "those", "relinquish", "representation", "inestimable", \
"formidable", "tyrants", "called", "together", "places", "unusual", "uncomfortable", "distant", "depository", "records", \
"sole", "fatiguing", "compliance", "measures", "representative", "houses", "repeatedly", "opposing", "manly", "firmness", \
"invasions", "after", "dissolutions", "cause", "elected", "whereby", "incapable", "annihilation", "returned", "exercise", \
"remaining", "mean", "exposed", "dangers", "invasion", "convulsions", "within", "prevent", "population", "obstructing", \
"naturalization", "foreigners", "encourage", "migrations", "raising", "appropriations", "lands", "obstructed", \
"administration", "judiciary", "made", "judges", "dependent", "alone", "tenure", "amount", "payment", "salaries", \
"erected", "multitude", "sent", "swarms", "officers", "harrass", "eat", "substance", "kept", "times", "standing", \
"affected", "military", "superior", "civil", "combined", "subject", "constitution", "unacknowledged", "giving", \
"legislation", "quartering", "armed", "troops", "protecting", "mock", "punishment", "murders", "commit", "cutting", \
"trade", "parts", "imposing", "taxes", "depriving", "many", "benefits", "jury", "beyond", "tried", "offences", "system", \
"english", "neighbouring", "province", "therein", "arbitrary", "enlarging", "boundaries", "once", "example", "fit", \
"instrument", "introducing", "taking", "away", "charters", "valuable", "altering", "fundamentally", "suspending", "own", \
"invested", "legislate", "whatsoever", "abdicated", "waging", "plundered", "ravaged", "coasts", "burnt", "towns", \
"destroyed", "mercenaries", "compleat", "works", "death", "desolation", "already", "begun", "cruelty", "perfidy", \
"scarcely", "paralleled", "barbarous", "unworthy", "head", "civilized", "nation", "constrained", "fellow", "citizens", \
"taken", "captive", "high", "bear", "arms", "country", "become", "executioners", "fall", "hands", "excited", "domestic", \
"insurrections", "amongst", "bring", "frontiers", "merciless", "indian", "savages", "known", "warfare", "undistinguished", \
"destruction", "sexes", "stage", "oppressions", "petitioned", "redress", "humble", "terms", "petitions", "answered", \
"injury", "prince", "character", "thus", "marked", "act", "define", "tyrant", "unfit", "ruler", "nor", "wanting", \
"attentions", "brittish", "warned", "attempts", "extend", "unwarrantable", "reminded", "emigration", "settlement", \
"appealed", "native", "magnanimity", "conjured", "ties", "common", "kindred", "disavow", "inevitably", "interrupt", \
"connections", "correspondence", "too", "deaf", "voice", "consanguinity", "must", "acquiesce", "denounces", "rest", \
"enemies", "representatives", "general", "congress", "assembled", "appealing", "supreme", "judge", "rectitude", \
"intentions", "name", "authority", "solemnly", "publish", "absolved", "allegiance", "british", "crown", "connection", \
"between", "full", "levy", "conclude", "contract", "alliances", "establish", "commerce", "things", "support", "firm", \
"reliance", "divine", "providence", "mutually", "pledge", "each", "fortunes", "sacred", "honor"\
}\
)
#define PASSWORD_WORDS_LEN (STATICARR_SIZE(PASSWORD_WORDS))
// Checks if sodium is initialized. Initializes it if not. If `___VXGG___ALWAYS_CHECK_LIBSODIUM___ > 0`, it's possible to set an error callback to avoid exiting the entire program. Otherwise calls `error()` if libsodium can't initialize
void checksodium(void);
// open() with the flags O_TMPFILE, O_WRONLY, O_CLOEXEC, and O_SYNC. Opened with mode S_IRUSR, S_IWUSR
int maketmp(const char * const dest);
#endif
|