/*
Derived from source code of TrueCrypt 7.1a, which is
Copyright (c) 2008-2012 TrueCrypt Developers Association and which is governed
by the TrueCrypt License 3.0.
Modifications and additions to the original source code (contained in this file)
and all other portions of this file are Copyright (c) 2013-2017 IDRIX
and are governed by the Apache License 2.0 the full text of which is
contained in the file License.txt included in VeraCrypt binary and source
code distribution packages.
*/
#include "System.h"
#include "StringFormatter.h"
#include "UserInterfaceException.h"
namespace VeraCrypt
{
StringFormatter::StringFormatter (const wxString &format, StringFormatterArg arg0, StringFormatterArg arg1, StringFormatterArg arg2, StringFormatterArg arg3, StringFormatterArg arg4, StringFormatterArg arg5, StringFormatterArg arg6, StringFormatterArg arg7, StringFormatterArg arg8, StringFormatterArg arg9)
{
bool numberExpected = false;
bool endTagExpected = false;
foreach (wchar_t c, wstring (format))
{
if (numberExpected)
{
endTagExpected = true;
bool err = false;
switch (c)
{
case L'{': FormattedString += L'{'; endTagExpected = false; break; // Escaped {
case L'0': FormattedString += arg0; err = arg0.IsEmpty(); break;
case L'1': FormattedString += arg1; err = arg1.IsEmpty(); break;
case L'2': FormattedString += arg2; err = arg2.IsEmpty(); break;
case L'3': FormattedString += arg3; err = arg3.IsEmpty(); break;
case L'4': FormattedString += arg4; err = arg4.IsEmpty(); break;
case L'5': FormattedString += arg5; err = arg5.IsEmpty(); break;
case L'6': FormattedString += arg6; err = arg6.IsEmpty(); break;
case L'7': FormattedString += arg7; err = arg7.IsEmpty(); break;
case L'8': FormattedString += arg8; err = arg8.IsEmpty(); break;
case L'9': FormattedString += arg9; err = arg9.IsEmpty(); break;
default: err = true; break;
}
if (err)
throw StringFormatterException (SRC_POS, wstring (format));
numberExpected = false;
}
else if (endTagExpected)
{
if (c != L'}')
throw StringFormatterException (SRC_POS, wstring (format));
endTagExpected = false;
}
else if (c == L'{')
{
numberExpected = true;
}
else if (c == L'}')
{
FormattedString += c;
endTagExpected = true;
}
else
FormattedString += c;
}
if (numberExpected
|| endTagExpected
|| (!arg0.WasReferenced() && !arg0.IsEmpty())
|| (!arg1.WasReferenced() && !arg1.IsEmpty())
|| (!arg2.WasReferenced() && !arg2.IsEmpty())
|| (!arg3.WasReferenced() && !arg3.IsEmpty())
|| (!arg4.WasReferenced() && !arg4.IsEmpty())
|| (!arg5.WasReferenced() && !arg5.IsEmpty())
|| (!arg6.WasReferenced() && !arg6.IsEmpty())
|| (!arg7.WasReferenced() && !arg7.IsEmpty())
|| (!arg8.WasReferenced() && !arg8.IsEmpty())
|| (!arg9.WasReferenced() && !arg9.IsEmpty())
)
throw StringFormatterException (SRC_POS, wstring (format));
}
StringFormatter::~StringFormatter ()
{
}
}
6.18&id=fd156affd53381d01c48f11553cefb50e434f4b8'>html/Technical Details.html
blob: 63878e052b0aaa44133ea4f2ecf6cf32bddbc386 (
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
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
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>VeraCrypt - Free Open source disk encryption with strong security for the Paranoid</title>
<meta name="description" content="VeraCrypt is free open-source disk encryption software for Windows, Mac OS X and Linux. In case an attacker forces you to reveal the password, VeraCrypt provides plausible deniability. In contrast to file encryption, data encryption performed by VeraCrypt is real-time (on-the-fly), automatic, transparent, needs very little memory, and does not involve temporary unencrypted files."/>
<meta name="keywords" content="encryption, security"/>
<link href="styles.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div>
<a href="Documentation.html"><img src="VeraCrypt128x128.png" alt="VeraCrypt"/></a>
</div>
<div id="menu">
<ul>
<li><a href="Home.html">Home</a></li>
<li><a href="/code/">Source Code</a></li>
<li><a href="Downloads.html">Downloads</a></li>
<li><a class="active" href="Documentation.html">Documentation</a></li>
<li><a href="Donation.html">Donate</a></li>
<li><a href="https://sourceforge.net/p/veracrypt/discussion/" target="_blank">Forums</a></li>
</ul>
</div>
<div>
<p>
<a href="Documentation.html">Documentation</a>
<img src="arrow_right.gif" alt=">>" style="margin-top: 5px">
<a href="Technical%20Details.html">Technical Details</a>
</p></div>
<div class="wikidoc">
<h1>Technical Details</h1>
<ul style="text-align:left; margin-top:18px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<a href="Notation.html" style="text-align:left; color:#0080c0; text-decoration:none.html">Notation</a>
</li><li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<a href="Encryption%20Scheme.html" style="text-align:left; color:#0080c0; text-decoration:none.html">Encryption Scheme</a>
</li><li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<a href="Modes%20of%20Operation.html" style="text-align:left; color:#0080c0; text-decoration:none.html">Modes of Operation</a>
</li><li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<a href="Header%20Key%20Derivation.html" style="text-align:left; color:#0080c0; text-decoration:none.html">Header Key Derivation, Salt, and Iteration Count</a>
</li><li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<a href="Random%20Number%20Generator.html" style="text-align:left; color:#0080c0; text-decoration:none.html">Random Number Generator</a>
</li><li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<a href="Keyfiles.html" style="text-align:left; color:#0080c0; text-decoration:none.html">Keyfiles</a>
</li><li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<a href="Personal%20Iterations%20Multiplier%20%28PIM%29.html">PIM</a>
</li><li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<a href="VeraCrypt%20Volume%20Format%20Specification.html" style="text-align:left; color:#0080c0; text-decoration:none.html">VeraCrypt Volume Format Specification</a>
</li><li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<a href="Standard%20Compliance.html" style="text-align:left; color:#0080c0; text-decoration:none.html">Compliance with Standards and Specifications</a>
</li><li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<a href="Source%20Code.html" style="text-align:left; color:#0080c0; text-decoration:none.html">Source Code</a>
</li><li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<a href="CompilingGuidelines.html" style="text-align:left; color:#0080c0; text-decoration:none.html">Building VeraCrypt From Source</a>
<ul>
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<a href="CompilingGuidelineWin.html" style="text-align:left; color:#0080c0; text-decoration:none.html">Windows Build Guide</a>
</li><li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<a href="CompilingGuidelineLinux.html" style="text-align:left; color:#0080c0; text-decoration:none.html">Linux Build Guide</a>
</li>
</ul>
</li></ul>
</div><div class="ClearBoth"></div></body></html>
|