mirror of
https://github.com/veracrypt/VeraCrypt.git
synced 2026-08-29 12:17:16 +00:00
Compare commits
115
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9a6b371c96 | ||
|
|
078614fbce | ||
|
|
ec327c006e | ||
|
|
03afe1224a | ||
|
|
11013ce71e | ||
|
|
a185b540bd | ||
|
|
a5df5d981a | ||
|
|
dfff927389 | ||
|
|
e6ebc63c66 | ||
|
|
f31c7b3a88 | ||
|
|
bc9005968a | ||
|
|
b2438b5029 | ||
|
|
51fa86b246 | ||
|
|
b5dfe9c9ed | ||
|
|
c3353c71d4 | ||
|
|
de93034485 | ||
|
|
f1a596109b | ||
|
|
2c6e9fc15c | ||
|
|
ce7fab744b | ||
|
|
65e4b3a91b | ||
|
|
2cdfbd2703 | ||
|
|
81b9e28993 | ||
|
|
d7498fae01 | ||
|
|
3c471383d9 | ||
|
|
0a09314336 | ||
|
|
b0bb124772 | ||
|
|
f7d8e565b4 | ||
|
|
3f2e20e339 | ||
|
|
714a2ce0ae | ||
|
|
c1378f781a | ||
|
|
c61f8c70de | ||
|
|
e1a0826ef5 | ||
|
|
9c1ddff7e3 | ||
|
|
ea03100d9e | ||
|
|
067394d110 | ||
|
|
f05f6a00a6 | ||
|
|
905a3ff4a5 | ||
|
|
922a09b634 | ||
|
|
f043e6cbf0 | ||
|
|
68f16dae24 | ||
|
|
f38cf0b694 | ||
|
|
bd7d151abf | ||
|
|
2fe23a3fa3 | ||
|
|
effb5c7c1e | ||
|
|
50ca9fe46f | ||
|
|
0178a6d33f | ||
|
|
411e8599f3 | ||
|
|
b80ee2b7b9 | ||
|
|
8a028aca45 | ||
|
|
fb12b635ed | ||
|
|
d761e95133 | ||
|
|
f7d783dda8 | ||
|
|
ccbc2cff0b | ||
|
|
809394d383 | ||
|
|
7c501359b3 | ||
|
|
f82e16f0a1 | ||
|
|
4fa4d6d227 | ||
|
|
e0efb36f33 | ||
|
|
ef4355acf8 | ||
|
|
5fcb262539 | ||
|
|
d6aa653648 | ||
|
|
6de2c143b9 | ||
|
|
9083f95db0 | ||
|
|
03cf7cc566 | ||
|
|
f158df394e | ||
|
|
bb7ef68040 | ||
|
|
37891c2bb0 | ||
|
|
3e2cf28d92 | ||
|
|
92af806488 | ||
|
|
ce44ad4c57 | ||
|
|
a857f6c087 | ||
|
|
0d6443e05a | ||
|
|
41a31ac76f | ||
|
|
4fefd61cee | ||
|
|
8ee17fd727 | ||
|
|
7aceaf124e | ||
|
|
f143182cbc | ||
|
|
f94707e4ef | ||
|
|
73bf608efc | ||
|
|
6688c9d85a | ||
|
|
e8fbc912ce | ||
|
|
80a26745a6 | ||
|
|
88b4628c34 | ||
|
|
ee9f3101fd | ||
|
|
cb6dad6bd2 | ||
|
|
4d8d59c23d | ||
|
|
1c11ee428d | ||
|
|
97154aaf51 | ||
|
|
1ddae20932 | ||
|
|
a5c1978eef | ||
|
|
75f7808719 | ||
|
|
0594532cf1 | ||
|
|
c220db0128 | ||
|
|
c01f392a7b | ||
|
|
bbc738c490 | ||
|
|
8bf58486af | ||
|
|
ba733dd032 | ||
|
|
016edc150b | ||
|
|
5c1db9d0e1 | ||
|
|
f3625a080f | ||
|
|
3137d36d9a | ||
|
|
516fda09a7 | ||
|
|
626a3aedd7 | ||
|
|
c7c8e28655 | ||
|
|
469f1dba40 | ||
|
|
515495f2f3 | ||
|
|
7bb812af66 | ||
|
|
9d027b02b9 | ||
|
|
899a22b840 | ||
|
|
5281e2d3b9 | ||
|
|
2a288a7e12 | ||
|
|
f67748ae8e | ||
|
|
d6817f941a | ||
|
|
f19cfb3361 | ||
|
|
9bb962c8bb |
+503
@@ -0,0 +1,503 @@
|
|||||||
|
TrueCrypt License Version 3.0
|
||||||
|
|
||||||
|
Software distributed under this license is distributed on an "AS
|
||||||
|
IS" BASIS WITHOUT WARRANTIES OF ANY KIND. THE AUTHORS AND
|
||||||
|
DISTRIBUTORS OF THE SOFTWARE DISCLAIM ANY LIABILITY. ANYONE WHO
|
||||||
|
USES, COPIES, MODIFIES, OR (RE)DISTRIBUTES ANY PART OF THE
|
||||||
|
SOFTWARE IS, BY SUCH ACTION(S), ACCEPTING AND AGREEING TO BE
|
||||||
|
BOUND BY ALL TERMS AND CONDITIONS OF THIS LICENSE. IF YOU DO NOT
|
||||||
|
ACCEPT THEM, DO NOT USE, COPY, MODIFY, NOR (RE)DISTRIBUTE THE
|
||||||
|
SOFTWARE, NOR ANY PART(S) THEREOF.
|
||||||
|
|
||||||
|
|
||||||
|
I. Definitions
|
||||||
|
|
||||||
|
1. "This Product" means the work (including, but not limited to,
|
||||||
|
source code, graphics, texts, and accompanying files) made
|
||||||
|
available under and governed by this version of this license
|
||||||
|
("License"), as may be indicated by, but is not limited to,
|
||||||
|
copyright notice(s) attached to or included in the work.
|
||||||
|
|
||||||
|
2. "You" means (and "Your" refers to) an individual or a legal
|
||||||
|
entity (e.g., a non-profit organization, commercial
|
||||||
|
organization, government agency, etc.) exercising permissions
|
||||||
|
granted by this License.
|
||||||
|
|
||||||
|
3. "Modification" means (and "modify" refers to) any alteration
|
||||||
|
of This Product, including, but not limited to, addition to or
|
||||||
|
deletion from the substance or structure of This Product,
|
||||||
|
translation into another language, repackaging, alteration or
|
||||||
|
removal of any file included with This Product, and addition of
|
||||||
|
any new files to This Product.
|
||||||
|
|
||||||
|
4. "Your Product" means This Product modified by You, or any
|
||||||
|
work You derive from (or base on) any part of This Product. In
|
||||||
|
addition, "Your Product" means any work in which You include any
|
||||||
|
(modified or unmodified) portion of This Product. However, if
|
||||||
|
the work in which you include it is an aggregate software
|
||||||
|
distribution (such as an operating system distribution or a
|
||||||
|
cover CD-ROM of a magazine) containing multiple separate
|
||||||
|
products, then the term "Your Product" includes only those
|
||||||
|
products (in the aggregate software distribution) that use,
|
||||||
|
include, or depend on a modified or unmodified version of This
|
||||||
|
Product (and the term "Your Product" does not include the whole
|
||||||
|
aggregate software distribution). For the purposes of this
|
||||||
|
License, a product suite consisting of two or more products is
|
||||||
|
considered a single product (operating system distributions and
|
||||||
|
cover media of magazines are not considered product suites).
|
||||||
|
|
||||||
|
5. "Distribution" means (and "distribute" refers to), regardless
|
||||||
|
of means or methods, conveyance, transfer, providing, or making
|
||||||
|
available of This/Your Product or portions thereof to third
|
||||||
|
parties (including, but not limited to, making This/Your
|
||||||
|
Product, or portions thereof, available for download to third
|
||||||
|
parties, whether or not any third party has downloaded the
|
||||||
|
product, or any portion thereof, made available for download).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
II. Use, Copying, and Distribution of This Product
|
||||||
|
|
||||||
|
1. Provided that You comply with all applicable terms and
|
||||||
|
conditions of this License, You may make copies of This Product
|
||||||
|
(unmodified) and distribute copies of This Product (unmodified)
|
||||||
|
that are not included in another product forming Your Product
|
||||||
|
(except as permitted under Chapter III). Note: For terms and
|
||||||
|
conditions for copying and distribution of modified versions of
|
||||||
|
This Product, see Chapter III.
|
||||||
|
|
||||||
|
2. Provided that You comply with all applicable terms and
|
||||||
|
conditions of this License, You may use This Product freely (see
|
||||||
|
also Chapter III) on any number of computers/systems for non-
|
||||||
|
commercial and/or commercial purposes.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
III. Modification, Derivation, and Inclusion in Other Products
|
||||||
|
|
||||||
|
1. If all conditions specified in the following paragraphs in
|
||||||
|
this Chapter (III) are met (for exceptions, see Section III.2)
|
||||||
|
and if You comply with all other applicable terms and conditions
|
||||||
|
of this License, You may modify This Product (thus forming Your
|
||||||
|
Product), derive new works from This Product or portions thereof
|
||||||
|
(thus forming Your Product), include This Product or portions
|
||||||
|
thereof in another product (thus forming Your Product, unless
|
||||||
|
defined otherwise in Chapter I), and You may use (for non-
|
||||||
|
commercial and/or commercial purposes), copy, and/or distribute
|
||||||
|
Your Product.
|
||||||
|
|
||||||
|
a. The name of Your Product (or of Your modified version of
|
||||||
|
This Product) must not contain the name TrueCrypt (for
|
||||||
|
example, the following names are not allowed: TrueCrypt,
|
||||||
|
TrueCrypt+, TrueCrypt Professional, iTrueCrypt, etc.) nor
|
||||||
|
any other names confusingly similar to the name TrueCrypt
|
||||||
|
(e.g., True-Crypt, True Crypt, TruKrypt, etc.)
|
||||||
|
|
||||||
|
All occurrences of the name TrueCrypt that could reasonably
|
||||||
|
be considered to identify Your Product must be removed from
|
||||||
|
Your Product and from any associated materials. Logo(s)
|
||||||
|
included in (or attached to) Your Product (and in/to
|
||||||
|
associated materials) must not incorporate and must not be
|
||||||
|
confusingly similar to any of the TrueCrypt logos
|
||||||
|
(including, but not limited to, the non-textual logo
|
||||||
|
consisting primarily of a key in stylized form) or
|
||||||
|
portion(s) thereof. All graphics contained in This Product
|
||||||
|
(logos, icons, etc.) must be removed from Your Product (or
|
||||||
|
from Your modified version of This Product) and from any
|
||||||
|
associated materials.
|
||||||
|
|
||||||
|
b. The following phrases must be removed from Your Product
|
||||||
|
and from any associated materials, except the text of this
|
||||||
|
License: "A TrueCrypt Foundation Release", "Released by
|
||||||
|
TrueCrypt Foundation", "This is a TrueCrypt Foundation
|
||||||
|
release."
|
||||||
|
|
||||||
|
c. Phrase "Based on TrueCrypt, freely available at
|
||||||
|
http://www.truecrypt.org/" must be displayed by Your Product
|
||||||
|
(if technically feasible) and contained in its
|
||||||
|
documentation. Alternatively, if This Product or its portion
|
||||||
|
You included in Your Product constitutes only a minor
|
||||||
|
portion of Your Product, phrase "Portions of this product
|
||||||
|
are based in part on TrueCrypt, freely available at
|
||||||
|
http://www.truecrypt.org/" may be displayed instead. In each
|
||||||
|
of the cases mentioned above in this paragraph,
|
||||||
|
"http://www.truecrypt.org/" must be a hyperlink (if
|
||||||
|
technically feasible) pointing to http://www.truecrypt.org/
|
||||||
|
and You may freely choose the location within the user
|
||||||
|
interface (if there is any) of Your Product (e.g., an
|
||||||
|
"About" window, etc.) and the way in which Your Product will
|
||||||
|
display the respective phrase.
|
||||||
|
|
||||||
|
Your Product (and any associated materials, e.g., the
|
||||||
|
documentation, the content of the official web site of Your
|
||||||
|
Product, etc.) must not present any Internet address
|
||||||
|
containing the domain name truecrypt.org (or any domain name
|
||||||
|
that forwards to the domain name truecrypt.org) in a manner
|
||||||
|
that might suggest that it is where information about Your
|
||||||
|
Product may be obtained or where bugs found in Your Product
|
||||||
|
may be reported or where support for Your Product may be
|
||||||
|
available or otherwise attempt to indicate that the domain
|
||||||
|
name truecrypt.org is associated with Your Product.
|
||||||
|
|
||||||
|
d. The complete source code of Your Product must be freely
|
||||||
|
and publicly available (for exceptions, see Section III.2)
|
||||||
|
at least until You cease to distribute Your Product. This
|
||||||
|
condition can be met in one or both of the following ways:
|
||||||
|
(i) You include the complete source code of Your Product
|
||||||
|
with every copy of Your Product that You make and distribute
|
||||||
|
and You make all such copies of Your Product available to
|
||||||
|
the general public free of charge, and/or (ii) You include
|
||||||
|
information (valid and correct at least until You cease to
|
||||||
|
distribute Your Product) about where the complete source
|
||||||
|
code of Your Product can be obtained free of charge (e.g.,
|
||||||
|
an Internet address) or for a reasonable reproduction fee
|
||||||
|
with every copy of Your Product that You make and distribute
|
||||||
|
and, if there is a web site officially associated with Your
|
||||||
|
Product, You include the aforementioned information about
|
||||||
|
the source code on a freely and publicly accessible web
|
||||||
|
page to which such web site links via an easily viewable
|
||||||
|
hyperlink (at least until You cease to distribute Your
|
||||||
|
Product).
|
||||||
|
|
||||||
|
The source code of Your Product must not be deliberately
|
||||||
|
obfuscated and it must not be in an intermediate form (e.g.,
|
||||||
|
the output of a preprocessor). Source code means the
|
||||||
|
preferred form in which a programmer would usually modify
|
||||||
|
the program.
|
||||||
|
|
||||||
|
Portions of the source code of Your Product not contained in
|
||||||
|
This Product (e.g., portions added by You in creating Your
|
||||||
|
Product, whether created by You or by third parties) must be
|
||||||
|
available under license(s) that (however, see also
|
||||||
|
Subsection III.1.e) allow(s) anyone to modify and derive new
|
||||||
|
works from the portions of the source code that are not
|
||||||
|
contained in This Product and to use, copy, and redistribute
|
||||||
|
such modifications and/or derivative works. The license(s)
|
||||||
|
must be perpetual, non-exclusive, royalty-free, no-charge,
|
||||||
|
and worldwide, and must not invalidate, weaken, restrict,
|
||||||
|
interpret, amend, modify, interfere with or otherwise affect
|
||||||
|
any part, term, provision, or clause of this License. The
|
||||||
|
text(s) of the license(s) must be included with every copy
|
||||||
|
of Your Product that You make and distribute.
|
||||||
|
|
||||||
|
e. You must not change the license terms of This Product in
|
||||||
|
any way (adding any new terms is considered changing the
|
||||||
|
license terms even if the original terms are retained),
|
||||||
|
which means, e.g., that no part of This Product may be put
|
||||||
|
under another license. You must keep intact all the legal
|
||||||
|
notices contained in the source code files. You must include
|
||||||
|
the following items with every copy of Your Product that You
|
||||||
|
make and distribute: a clear and conspicuous notice stating
|
||||||
|
that Your Product or portion(s) thereof is/are governed by
|
||||||
|
this version of the TrueCrypt License, a verbatim copy of
|
||||||
|
this version of the TrueCrypt License (as contained herein),
|
||||||
|
a clear and conspicuous notice containing information about
|
||||||
|
where the included copy of the License can be found, and an
|
||||||
|
appropriate copyright notice.
|
||||||
|
|
||||||
|
|
||||||
|
2. You are not obligated to comply with Subsection III.1.d if
|
||||||
|
Your Product is not distributed (i.e., Your Product is available
|
||||||
|
only to You).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
IV. Disclaimer of Liability, Disclaimer of Warranty,
|
||||||
|
Indemnification
|
||||||
|
|
||||||
|
You expressly acknowledge and agree to the following:
|
||||||
|
|
||||||
|
1. IN NO EVENT WILL ANY (CO)AUTHOR OF THIS PRODUCT, OR ANY
|
||||||
|
APPLICABLE INTELLECTUAL-PROPERTY OWNER, OR ANY OTHER PARTY WHO
|
||||||
|
MAY COPY AND/OR (RE)DISTRIBUTE THIS PRODUCT OR PORTIONS THEREOF,
|
||||||
|
AS MAY BE PERMITTED HEREIN, BE LIABLE TO YOU OR TO ANY OTHER
|
||||||
|
PARTY FOR ANY DAMAGES, INCLUDING, BUT NOT LIMITED TO, ANY
|
||||||
|
DIRECT, INDIRECT, GENERAL, SPECIAL, INCIDENTAL, PUNITIVE,
|
||||||
|
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
|
||||||
|
TO, CORRUPTION OR LOSS OF DATA, ANY LOSSES SUSTAINED BY YOU OR
|
||||||
|
THIRD PARTIES, A FAILURE OF THIS PRODUCT TO OPERATE WITH ANY
|
||||||
|
OTHER PRODUCT, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR
|
||||||
|
BUSINESS INTERRUPTION), WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||||
|
TORT (INCLUDING, BUT NOT LIMITED TO, NEGLIGENCE) OR OTHERWISE,
|
||||||
|
ARISING OUT OF THE USE, COPYING, MODIFICATION, OR
|
||||||
|
(RE)DISTRIBUTION OF THIS PRODUCT (OR A PORTION THEREOF) OR OF
|
||||||
|
YOUR PRODUCT (OR A PORTION THEREOF), OR INABILITY TO USE THIS
|
||||||
|
PRODUCT (OR A PORTION THEREOF), EVEN IF SUCH DAMAGES (OR THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGES) ARE/WERE PREDICTABLE OR KNOWN TO
|
||||||
|
ANY (CO)AUTHOR, INTELLECTUAL-PROPERTY OWNER, OR ANY OTHER PARTY.
|
||||||
|
|
||||||
|
2. THIS PRODUCT IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
|
||||||
|
KIND, WHETHER EXPRESS, IMPLIED, OR STATUTORY, INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THE ENTIRE RISK AS TO
|
||||||
|
THE QUALITY AND PERFORMANCE OF THIS PRODUCT IS WITH YOU. SHOULD
|
||||||
|
THIS PRODUCT PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
|
||||||
|
NECESSARY SERVICING, REPAIR, OR CORRECTION.
|
||||||
|
|
||||||
|
3. THIS PRODUCT MAY INCORPORATE IMPLEMENTATIONS OF CRYPTOGRAPHIC
|
||||||
|
ALGORITHMS THAT ARE REGULATED (E.G., SUBJECT TO EXPORT/IMPORT
|
||||||
|
CONTROL REGULATIONS) OR ILLEGAL IN SOME COUNTRIES. IT IS SOLELY
|
||||||
|
YOUR RESPONSIBILITY TO VERIFY THAT IT IS LEGAL TO IMPORT AND/OR
|
||||||
|
(RE)EXPORT AND/OR USE THIS PRODUCT (OR PORTIONS THEREOF) IN
|
||||||
|
COUNTRIES WHERE YOU INTEND TO USE IT AND/OR TO WHICH YOU INTEND
|
||||||
|
TO IMPORT IT AND/OR FROM WHICH YOU INTEND TO EXPORT IT, AND IT
|
||||||
|
IS SOLELY YOUR RESPONSIBILITY TO COMPLY WITH ANY APPLICABLE
|
||||||
|
REGULATIONS, RESTRICTIONS, AND LAWS.
|
||||||
|
|
||||||
|
4. YOU SHALL INDEMNIFY, DEFEND AND HOLD ALL (CO)AUTHORS OF THIS
|
||||||
|
PRODUCT, AND APPLICABLE INTELLECTUAL-PROPERTY OWNERS, HARMLESS
|
||||||
|
FROM AND AGAINST ANY AND ALL LIABILITY, DAMAGES, LOSSES,
|
||||||
|
SETTLEMENTS, PENALTIES, FINES, COSTS, EXPENSES (INCLUDING
|
||||||
|
REASONABLE ATTORNEYS' FEES), DEMANDS, CAUSES OF ACTION, CLAIMS,
|
||||||
|
ACTIONS, PROCEEDINGS, AND SUITS, DIRECTLY RELATED TO OR ARISING
|
||||||
|
OUT OF YOUR USE, INABILITY TO USE, COPYING, (RE)DISTRIBUTION,
|
||||||
|
IMPORT AND/OR (RE)EXPORT OF THIS PRODUCT (OR PORTIONS THEREOF)
|
||||||
|
AND/OR YOUR BREACH OF ANY TERM OF THIS LICENSE.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
V. Trademarks
|
||||||
|
|
||||||
|
This License does not grant permission to use trademarks
|
||||||
|
associated with (or applying to) This Product, except for fair
|
||||||
|
use as defined by applicable law and except for use expressly
|
||||||
|
permitted or required by this License. Any attempt otherwise to
|
||||||
|
use trademarks associated with (or applying to) This Product
|
||||||
|
automatically and immediately terminates Your rights under This
|
||||||
|
License and may constitute trademark infringement (which may be
|
||||||
|
prosecuted).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
VI. General Terms and Conditions, Miscellaneous Provisions
|
||||||
|
|
||||||
|
1. ANYONE WHO USES AND/OR COPIES AND/OR MODIFIES AND/OR CREATES
|
||||||
|
DERIVATIVE WORKS OF AND/OR (RE)DISTRIBUTES THIS PRODUCT, OR ANY
|
||||||
|
PORTION(S) THEREOF, IS, BY SUCH ACTION(S), AGREEING TO BE BOUND
|
||||||
|
BY AND ACCEPTING ALL TERMS AND CONDITIONS OF THIS LICENSE (AND
|
||||||
|
THE RESPONSIBILITIES AND OBLIGATIONS CONTAINED IN THIS LICENSE).
|
||||||
|
IF YOU DO NOT ACCEPT (AND AGREE TO BE BOUND BY) ALL TERMS AND
|
||||||
|
CONDITIONS OF THIS LICENSE, DO NOT USE, COPY, MODIFY, CREATE
|
||||||
|
DERIVATIVE WORKS OF, NOR (RE)DISTRIBUTE THIS PRODUCT, NOR ANY
|
||||||
|
PORTION(S) THEREOF.
|
||||||
|
|
||||||
|
2. YOU MAY NOT USE, MODIFY, COPY, CREATE DERIVATIVE WORKS OF,
|
||||||
|
(RE)DISTRIBUTE, OR SUBLICENSE THIS PRODUCT, OR PORTION(S)
|
||||||
|
THEREOF, EXCEPT AS EXPRESSLY PROVIDED IN THIS LICENSE (EVEN IF
|
||||||
|
APPLICABLE LAW GIVES YOU MORE RIGHTS). ANY ATTEMPT (EVEN IF
|
||||||
|
PERMITTED BY APPLICABLE LAW) OTHERWISE TO USE, MODIFY, COPY,
|
||||||
|
CREATE DERIVATIVE WORKS OF, (RE)DISTRIBUTE, OR SUBLICENSE THIS
|
||||||
|
PRODUCT, OR PORTION(S) THEREOF, AUTOMATICALLY AND IMMEDIATELY
|
||||||
|
TERMINATES YOUR RIGHTS UNDER THIS LICENSE AND CAN CONSTITUTE
|
||||||
|
COPYRIGHT INFRINGEMENT (WHICH MAY BE PROSECUTED). ANY CONDITIONS
|
||||||
|
AND RESTRICTIONS CONTAINED IN THIS LICENSE ARE ALSO LIMITATIONS
|
||||||
|
ON THE SCOPE OF THIS LICENSE AND ALSO DEFINE THE SCOPE OF YOUR
|
||||||
|
RIGHTS UNDER THIS LICENSE. YOUR FAILURE TO COMPLY WITH THE TERMS
|
||||||
|
AND CONDITIONS OF THIS LICENSE OR FAILURE TO PERFORM ANY
|
||||||
|
APPLICABLE OBLIGATION IMPOSED BY THIS LICENSE AUTOMATICALLY AND
|
||||||
|
IMMEDIATELY TERMINATES YOUR RIGHTS UNDER THIS LICENSE AND CAN
|
||||||
|
CAUSE OR BE CONSIDERED COPYRIGHT INFRINGEMENT (WHICH MAY BE
|
||||||
|
PROSECUTED). NOTHING IN THIS LICENSE SHALL IMPLY OR BE CONSTRUED
|
||||||
|
AS A PROMISE, OBLIGATION, OR COVENANT NOT TO SUE FOR COPYRIGHT
|
||||||
|
OR TRADEMARK INFRINGEMENT IF YOU DO NOT COMPLY WITH THE TERMS
|
||||||
|
AND CONDITIONS OF THIS LICENSE.
|
||||||
|
|
||||||
|
3. This License does not constitute or imply a waiver of any
|
||||||
|
intellectual property rights except as may be otherwise
|
||||||
|
expressly provided in this License. This License does not
|
||||||
|
transfer, assign, or convey any intellectual property rights
|
||||||
|
(e.g., it does not transfer ownership of copyrights or
|
||||||
|
trademarks).
|
||||||
|
|
||||||
|
4. Subject to the terms and conditions of this License, You may
|
||||||
|
allow a third party to use Your copy of This Product (or a copy
|
||||||
|
that You make and distribute, or Your Product) provided that the
|
||||||
|
third party explicitly accepts and agrees to be bound by all
|
||||||
|
terms and conditions of this License and the third party is not
|
||||||
|
prohibited from using This Product (or portions thereof) by this
|
||||||
|
License (see, e.g., Section VI.7) or by applicable law. However,
|
||||||
|
You are not obligated to ensure that the third party accepts
|
||||||
|
(and agrees to be bound by all terms of) this License if You
|
||||||
|
distribute only the self-extracting package (containing This
|
||||||
|
Product) that does not allow the user to install (nor extract)
|
||||||
|
the files contained in the package until he or she accepts and
|
||||||
|
agrees to be bound by all terms and conditions of this License.
|
||||||
|
|
||||||
|
5. Without specific prior written permission from the authors of
|
||||||
|
This Product (or from their common representative), You must not
|
||||||
|
use the name of This Product, the names of the authors of This
|
||||||
|
Product, or the names of the legal entities (or informal groups)
|
||||||
|
of which the authors were/are members/employees, to endorse or
|
||||||
|
promote Your Product or any work in which You include a modified
|
||||||
|
or unmodified version of This Product, or to endorse or promote
|
||||||
|
You or Your affiliates, or in a way that might suggest that Your
|
||||||
|
Product (or any work in which You include a modified or
|
||||||
|
unmodified version of This Product), You, or Your affiliates
|
||||||
|
is/are endorsed by one or more authors of This Product, or in a
|
||||||
|
way that might suggest that one or more authors of This Product
|
||||||
|
is/are affiliated with You (or Your affiliates) or directly
|
||||||
|
participated in the creation of Your Product or of any work in
|
||||||
|
which You include a modified or unmodified version of This
|
||||||
|
Product.
|
||||||
|
|
||||||
|
6. IF YOU ARE NOT SURE WHETHER YOU UNDERSTAND ALL PARTS OF THIS
|
||||||
|
LICENSE OR IF YOU ARE NOT SURE WHETHER YOU CAN COMPLY WITH ALL
|
||||||
|
TERMS AND CONDITIONS OF THIS LICENSE, YOU MUST NOT USE, COPY,
|
||||||
|
MODIFY, CREATE DERIVATIVE WORKS OF, NOR (RE)DISTRIBUTE THIS
|
||||||
|
PRODUCT, NOR ANY PORTION(S) OF IT. YOU SHOULD CONSULT WITH A
|
||||||
|
LAWYER.
|
||||||
|
|
||||||
|
7. IF (IN RELEVANT CONTEXT) ANY PROVISION OF CHAPTER IV OF THIS
|
||||||
|
LICENSE IS UNENFORCEABLE, INVALID, OR PROHIBITED UNDER
|
||||||
|
APPLICABLE LAW IN YOUR JURISDICTION, YOU HAVE NO RIGHTS UNDER
|
||||||
|
THIS LICENSE AND YOU MUST NOT USE, COPY, MODIFY, CREATE
|
||||||
|
DERIVATIVE WORKS OF, NOR (RE)DISTRIBUTE THIS PRODUCT, NOR ANY
|
||||||
|
PORTION(S) THEREOF.
|
||||||
|
|
||||||
|
8. Except as otherwise provided in this License, if any
|
||||||
|
provision of this License, or a portion thereof, is found to be
|
||||||
|
invalid or unenforceable under applicable law, it shall not
|
||||||
|
affect the validity or enforceability of the remainder of this
|
||||||
|
License, and such invalid or unenforceable provision shall be
|
||||||
|
construed to reflect the original intent of the provision and
|
||||||
|
shall be enforced to the maximum extent permitted by applicable
|
||||||
|
law so as to effect the original intent of the provision as
|
||||||
|
closely as possible.
|
||||||
|
|
||||||
|
____________________________________________________________
|
||||||
|
|
||||||
|
|
||||||
|
Third-Party Licenses
|
||||||
|
|
||||||
|
This Product contains components that were created by third
|
||||||
|
parties and that are governed by third-party licenses, which are
|
||||||
|
contained hereinafter (separated by lines consisting of
|
||||||
|
underscores). Each of the third-party licenses applies only to
|
||||||
|
(portions of) the source code file(s) in which the third-party
|
||||||
|
license is contained or in which it is explicitly referenced,
|
||||||
|
and to compiled or otherwise processed forms of such source
|
||||||
|
code. None of the third-party licenses applies to This Product
|
||||||
|
as a whole, even when it uses terms such as "product",
|
||||||
|
"program", or any other equivalent terms/phrases. This Product
|
||||||
|
as a whole is governed by the TrueCrypt License (see above).
|
||||||
|
Some of the third-party components have been modified by the
|
||||||
|
authors of This Product. Unless otherwise stated, such
|
||||||
|
modifications and additions are governed by the TrueCrypt
|
||||||
|
License (see above). Note: Unless otherwise stated, graphics and
|
||||||
|
files that are not part of the source code are governed by the
|
||||||
|
TrueCrypt License.
|
||||||
|
|
||||||
|
____________________________________________________________
|
||||||
|
|
||||||
|
License agreement for Encryption for the Masses.
|
||||||
|
|
||||||
|
Copyright (C) 1998-2000 Paul Le Roux. All Rights Reserved.
|
||||||
|
|
||||||
|
This product can be copied and distributed free of charge,
|
||||||
|
including source code.
|
||||||
|
|
||||||
|
You may modify this product and source code, and distribute such
|
||||||
|
modifications, and you may derive new works based on this
|
||||||
|
product, provided that:
|
||||||
|
|
||||||
|
1. Any product which is simply derived from this product cannot
|
||||||
|
be called E4M, or Encryption for the Masses.
|
||||||
|
|
||||||
|
2. If you use any of the source code in your product, and your
|
||||||
|
product is distributed with source code, you must include this
|
||||||
|
notice with those portions of this source code that you use.
|
||||||
|
|
||||||
|
Or,
|
||||||
|
|
||||||
|
If your product is distributed in binary form only, you must
|
||||||
|
display on any packaging, and marketing materials which
|
||||||
|
reference your product, a notice which states:
|
||||||
|
|
||||||
|
"This product uses components written by Paul Le Roux
|
||||||
|
<pleroux@swprofessionals.com>"
|
||||||
|
|
||||||
|
3. If you use any of the source code originally by Eric Young,
|
||||||
|
you must in addition follow his terms and conditions.
|
||||||
|
|
||||||
|
4. Nothing requires that you accept this License, as you have
|
||||||
|
not signed it. However, nothing else grants you permission to
|
||||||
|
modify or distribute the product or its derivative works.
|
||||||
|
|
||||||
|
These actions are prohibited by law if you do not accept this
|
||||||
|
License.
|
||||||
|
|
||||||
|
5. If any of these license terms is found to be to broad in
|
||||||
|
scope, and declared invalid by any court or legal process, you
|
||||||
|
agree that all other terms shall not be so affected, and shall
|
||||||
|
remain valid and enforceable.
|
||||||
|
|
||||||
|
6. THIS PROGRAM IS DISTRIBUTED FREE OF CHARGE, THEREFORE THERE
|
||||||
|
IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||||
|
APPLICABLE LAW. UNLESS OTHERWISE STATED THE PROGRAM IS PROVIDED
|
||||||
|
"AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR
|
||||||
|
IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
|
||||||
|
ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS
|
||||||
|
WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE
|
||||||
|
COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
7. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||||||
|
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY
|
||||||
|
MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE
|
||||||
|
LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
|
||||||
|
INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
|
||||||
|
INABILITY TO USE THE PROGRAM, INCLUDING BUT NOT LIMITED TO LOSS
|
||||||
|
OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||||
|
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH
|
||||||
|
ANY OTHER PROGRAMS, EVEN IF SUCH HOLDER OR OTHER PARTY HAD
|
||||||
|
PREVIOUSLY BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
____________________________________________________________
|
||||||
|
|
||||||
|
Copyright (c) 1998-2008, Brian Gladman, Worcester, UK.
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
LICENSE TERMS
|
||||||
|
|
||||||
|
The free distribution and use of this software is allowed (with
|
||||||
|
or without changes) provided that:
|
||||||
|
|
||||||
|
1. source code distributions include the above copyright
|
||||||
|
notice, this list of conditions and the following
|
||||||
|
disclaimer;
|
||||||
|
|
||||||
|
2. binary distributions include the above copyright notice,
|
||||||
|
this list of conditions and the following disclaimer in
|
||||||
|
their documentation;
|
||||||
|
|
||||||
|
3. the name of the copyright holder is not used to endorse
|
||||||
|
products built using this software without specific written
|
||||||
|
permission.
|
||||||
|
|
||||||
|
DISCLAIMER
|
||||||
|
|
||||||
|
This software is provided 'as is' with no explicit or implied
|
||||||
|
warranties in respect of its properties, including, but not
|
||||||
|
limited to, correctness and/or fitness for purpose.
|
||||||
|
____________________________________________________________
|
||||||
|
|
||||||
|
Copyright (C) 2002-2004 Mark Adler, all rights reserved
|
||||||
|
version 1.8, 9 Jan 2004
|
||||||
|
|
||||||
|
This software is provided 'as-is', without any express or
|
||||||
|
implied warranty. In no event will the author be held liable
|
||||||
|
for any damages arising from the use of this software.
|
||||||
|
|
||||||
|
Permission is granted to anyone to use this software for any
|
||||||
|
purpose, including commercial applications, and to alter it and
|
||||||
|
redistribute it freely, subject to the following restrictions:
|
||||||
|
|
||||||
|
1. The origin of this software must not be misrepresented; you
|
||||||
|
must not claim that you wrote the original software. If you
|
||||||
|
use this software in a product, an acknowledgment in the
|
||||||
|
product documentation would be appreciated but is not
|
||||||
|
required.
|
||||||
|
2. Altered source versions must be plainly marked as such, and
|
||||||
|
must not be misrepresented as being the original software.
|
||||||
|
3. This notice may not be removed or altered from any source
|
||||||
|
distribution.
|
||||||
|
____________________________________________________________
|
||||||
@@ -0,0 +1,257 @@
|
|||||||
|
This archive contains the source code of VeraCrypt.
|
||||||
|
It is based on original TrueCrypt 7.1a with security enhancements and modifications.
|
||||||
|
|
||||||
|
|
||||||
|
Important
|
||||||
|
=========
|
||||||
|
|
||||||
|
You may use the source code contained in this archive only if you accept and
|
||||||
|
agree to the license terms contained in the file 'License.txt', which is
|
||||||
|
included in this archive.
|
||||||
|
|
||||||
|
Note that the license specifies, for example, that a derived work must not be
|
||||||
|
called 'TrueCrypt' or 'VeraCrypt'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Contents
|
||||||
|
========
|
||||||
|
|
||||||
|
I. Windows
|
||||||
|
Requirements for Building VeraCrypt for Windows
|
||||||
|
Instructions for Building VeraCrypt for Windows
|
||||||
|
Instructions for Signing and Packaging VeraCrypt for Windows
|
||||||
|
|
||||||
|
II. Linux and Mac OS X
|
||||||
|
Requirements for Building VeraCrypt for Linux and Mac OS X
|
||||||
|
Instructions for Building VeraCrypt for Linux and Mac OS X
|
||||||
|
Mac OS X specifics
|
||||||
|
|
||||||
|
III. FreeBSD and OpenSolaris
|
||||||
|
|
||||||
|
IV. Third-Party Developers (Contributors)
|
||||||
|
|
||||||
|
V. Legal Information
|
||||||
|
|
||||||
|
VI. Further Information
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
I. Windows
|
||||||
|
==========
|
||||||
|
|
||||||
|
Requirements for Building VeraCrypt for Windows:
|
||||||
|
------------------------------------------------
|
||||||
|
|
||||||
|
- Microsoft Visual C++ 2008 SP1 (Professional Edition or compatible)
|
||||||
|
- Microsoft Visual C++ 1.52 (available from MSDN Subscriber Downloads)
|
||||||
|
- Microsoft Windows SDK for Windows 7 (configured for Visual C++)
|
||||||
|
- Microsoft Windows Driver Kit 7.1.0 (build 7600.16385.1)
|
||||||
|
- RSA Security Inc. PKCS #11 Cryptographic Token Interface (Cryptoki) 2.20
|
||||||
|
header files (available at ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-11/v2-20)
|
||||||
|
- NASM assembler 2.08 or compatible
|
||||||
|
- gzip compressor
|
||||||
|
|
||||||
|
IMPORTANT:
|
||||||
|
|
||||||
|
The 64-bit editions of Windows Vista and later versions of Windows, and in
|
||||||
|
some cases (e.g. playback of HD DVD content) also the 32-bit editions, do not
|
||||||
|
allow the VeraCrypt driver to run without an appropriate digital signature.
|
||||||
|
Therefore, all .sys files in official VeraCrypt binary packages are digitally
|
||||||
|
signed with the digital certificate of the IDRIX, which was
|
||||||
|
issued by Thawt certification authority. At the end of each official .exe and
|
||||||
|
.sys file, there are embedded digital signatures and all related certificates
|
||||||
|
(i.e. all certificates in the relevant certification chain, such as the
|
||||||
|
certification authority certificates, CA-MS cross-certificate, and the
|
||||||
|
IDRIX certificate). Keep this in mind if you compile VeraCrypt
|
||||||
|
and compare your binaries with the official binaries. If your binaries are
|
||||||
|
unsigned, the sizes of the official binaries will usually be approximately
|
||||||
|
10 KB greater than sizes of your binaries (there may be further differences
|
||||||
|
if you use a different version of the compiler, or if you install a different
|
||||||
|
or no service pack for Visual Studio, or different hotfixes for it, or if you
|
||||||
|
use different versions of the required SDKs).
|
||||||
|
|
||||||
|
|
||||||
|
Instructions for Building VeraCrypt for Windows:
|
||||||
|
------------------------------------------------
|
||||||
|
|
||||||
|
1) Create an environment variable 'MSVC16_ROOT' pointing to the folder 'MSVC15'
|
||||||
|
extracted from the Visual C++ 1.52 self-extracting package.
|
||||||
|
|
||||||
|
Note: The 16-bit installer MSVC15\SETUP.EXE cannot be run on 64-bit Windows,
|
||||||
|
but it is actually not necessary to run it. You only need to extract the
|
||||||
|
folder 'MSVC15', which contains the 32-bit binaries required to build the
|
||||||
|
VeraCrypt Boot Loader.
|
||||||
|
|
||||||
|
2) If you have installed the Windows Driver Development Kit in another
|
||||||
|
directory than '%SYSTEMDRIVE%\WinDDK', create an environment variable
|
||||||
|
'WINDDK_ROOT' pointing to the DDK installation directory.
|
||||||
|
|
||||||
|
3) Copy the PKCS #11 header files to a standard include path or create an
|
||||||
|
environment variable 'PKCS11_INC' pointing to the directory where
|
||||||
|
the PKCS #11 header files are installed.
|
||||||
|
|
||||||
|
4) Open the solution file 'VeraCrypt.sln' in Microsoft Visual Studio 2008.
|
||||||
|
|
||||||
|
5) Select 'All' as the active solution configuration.
|
||||||
|
|
||||||
|
6) Build the solution.
|
||||||
|
|
||||||
|
7) If successful, there should be newly built VeraCrypt binaries in the
|
||||||
|
'Release' folder.
|
||||||
|
|
||||||
|
Instructions for Signing VeraCrypt for Windows:
|
||||||
|
------------------------------------------------
|
||||||
|
|
||||||
|
The folder "Signing" contains a batch file (sign.bat) that will sign all
|
||||||
|
VeraCrypt components using a code signing certificate present on the
|
||||||
|
certificate store and also build the final installation setup.
|
||||||
|
The batch file suppose that the code signing certificate is issued by Thawt.
|
||||||
|
This is the case for IDRIX's certificate. If yours is issued by another CA,
|
||||||
|
then you should put the Root and Intermediate certificates in the "Signing"
|
||||||
|
folder and then modify sign.bat accordingly.
|
||||||
|
|
||||||
|
|
||||||
|
II. Linux and Mac OS X
|
||||||
|
======================
|
||||||
|
|
||||||
|
Requirements for Building VeraCrypt for Linux and Mac OS X:
|
||||||
|
-----------------------------------------------------------
|
||||||
|
|
||||||
|
- GNU Make
|
||||||
|
- GNU C++ Compiler 4.0 or compatible
|
||||||
|
- Apple Xcode (Mac OS X only)
|
||||||
|
- NASM assembler 2.08 or compatible (x86/x64 architecture only)
|
||||||
|
- pkg-config
|
||||||
|
- wxWidgets 3.0 shared library and header files installed or
|
||||||
|
wxWidgets 3.0 library source code (available at http://www.wxwidgets.org)
|
||||||
|
- FUSE library and header files (available at http://fuse.sourceforge.net
|
||||||
|
and https://osxfuse.github.io/)
|
||||||
|
- RSA Security Inc. PKCS #11 Cryptographic Token Interface (Cryptoki) 2.20
|
||||||
|
header files (available at ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-11/v2-20).
|
||||||
|
They are already included in the source tree under the directory PKCS11 but
|
||||||
|
it is possible to override it using the environment variable 'PKCS11_INC'.
|
||||||
|
|
||||||
|
|
||||||
|
Instructions for Building VeraCrypt for Linux and Mac OS X:
|
||||||
|
-----------------------------------------------------------
|
||||||
|
|
||||||
|
1) Change the current directory to the root of the VeraCrypt source code.
|
||||||
|
|
||||||
|
2) If you have no wxWidgets shared library installed, run the following
|
||||||
|
command to configure the wxWidgets static library for VeraCrypt and to
|
||||||
|
build it:
|
||||||
|
|
||||||
|
$ make WXSTATIC=1 WX_ROOT=/usr/src/wxWidgets wxbuild
|
||||||
|
|
||||||
|
The variable WX_ROOT must point to the location of the source code of the
|
||||||
|
wxWidgets library. Output files will be placed in the './wxrelease/'
|
||||||
|
directory.
|
||||||
|
|
||||||
|
3) To build VeraCrypt, run the following command:
|
||||||
|
|
||||||
|
$ make
|
||||||
|
|
||||||
|
or if you have no wxWidgets shared library installed:
|
||||||
|
|
||||||
|
$ make WXSTATIC=1
|
||||||
|
|
||||||
|
4) If successful, the VeraCrypt executable should be located in the directory
|
||||||
|
'Main'.
|
||||||
|
|
||||||
|
By default, a universal executable supporting both graphical and text user
|
||||||
|
interface is built. To build a console-only executable, which requires no GUI
|
||||||
|
library, use the 'NOGUI' parameter:
|
||||||
|
|
||||||
|
$ make NOGUI=1 WXSTATIC=1 WX_ROOT=/usr/src/wxWidgets wxbuild
|
||||||
|
$ make NOGUI=1 WXSTATIC=1
|
||||||
|
|
||||||
|
|
||||||
|
Mac OS X specifics:
|
||||||
|
-----------------------------------------------------------
|
||||||
|
|
||||||
|
Under MacOSX, the SDK for OSX 10.7 is used by default. To use another version
|
||||||
|
of the SDK (e.i. 10.6), you can export the environment variable VC_OSX_TARGET :
|
||||||
|
|
||||||
|
$ export VC_OSX_TARGET=10.6
|
||||||
|
|
||||||
|
|
||||||
|
Before building under MacOSX, pkg-config must be installed if not yet available.
|
||||||
|
Get it from http://pkgconfig.freedesktop.org/releases/pkg-config-0.28.tar.gz and
|
||||||
|
compile using the following commands :
|
||||||
|
|
||||||
|
$ ./configure --with-internal-glib
|
||||||
|
$ make
|
||||||
|
$ sudo make install
|
||||||
|
|
||||||
|
After making sure pkg-config is available, download and install OSXFuse from
|
||||||
|
https://osxfuse.github.io/ (MacFUSE compatibility layer must selected)
|
||||||
|
|
||||||
|
The script build_veracrypt_macosx.sh available under "src/Build" performs the
|
||||||
|
full build of VeraCrypt including the creation of the installer pkg. It expects
|
||||||
|
to find the wxWidgets 3.0.2 sources at the same level as where you put
|
||||||
|
VeraCrypt sources (e.i. if "src" path is "/Users/joe/Projects/VeraCrypt/src"
|
||||||
|
then wxWidgets should be at "/Users/joe/Projects/wxWidgets-wxWidgets-3.0.2")
|
||||||
|
|
||||||
|
The build process uses Code Signing certificates whose ID is specified in
|
||||||
|
src/Main/Main.make (lines 167 & 169). You'll have to modify these lines to put
|
||||||
|
the ID of your Code Signing certificates or comment them if you don't have one.
|
||||||
|
|
||||||
|
Because of incompatibility issues with OSXFUSE, the SDK 10.9 generates a
|
||||||
|
VeraCrypt binary that has issues communicating with the OSXFUSE kernel extension.
|
||||||
|
Thus, we recommend to use the SDK 10.8 or earlier for building VeraCrypt.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
III. FreeBSD and OpenSolaris
|
||||||
|
============================
|
||||||
|
|
||||||
|
FreeBSD and OpenSolaris are not yet supported.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
IV. Third-Party Developers (Contributors)
|
||||||
|
=========================================
|
||||||
|
|
||||||
|
If you intend to implement a feature, please contact us first to make sure:
|
||||||
|
|
||||||
|
1) That the feature has not been implemented (we may have already implemented
|
||||||
|
it, but haven't released the code yet).
|
||||||
|
2) That the feature is acceptable.
|
||||||
|
3) Whether we need help of third-party developers with implementing the feature.
|
||||||
|
|
||||||
|
Information on how to contact us can be found at:
|
||||||
|
https://veracrypt.codeplex.com/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
V. Legal Information
|
||||||
|
====================
|
||||||
|
|
||||||
|
Copyright Information
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
This software as a whole:
|
||||||
|
Copyright (c) 2013-2014 IDRIX. All rights reserved.
|
||||||
|
|
||||||
|
Portions of this software:
|
||||||
|
Copyright (c) 2003-2012 TrueCrypt Developers Association. All rights reserved.
|
||||||
|
Copyright (c) 1998-2000 Paul Le Roux. All rights reserved.
|
||||||
|
Copyright (c) 1998-2008 Brian Gladman, Worcester, UK. All rights reserved.
|
||||||
|
Copyright (c) 2002-2004 Mark Adler. All rights reserved.
|
||||||
|
For more information, please see the legal notices attached to parts of the
|
||||||
|
source code.
|
||||||
|
|
||||||
|
Trademark Information
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
Any trademarks contained in the source code, binaries, and/or in the
|
||||||
|
documentation, are the sole property of their respective owners.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
VI. Further Information
|
||||||
|
=======================
|
||||||
|
|
||||||
|
http://www.veracrypt.fr
|
||||||
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<VeraCrypt>
|
<VeraCrypt>
|
||||||
<localization prog-version="1.0d">
|
<localization prog-version="1.0e">
|
||||||
<!-- Languages -->
|
<!-- Languages -->
|
||||||
<language langid="ar" name="العربية" en-name="Arabic" version="0.1.0" translators="Ahmad Gharbeia, Khaled Hosny" />
|
<language langid="ar" name="العربية" en-name="Arabic" version="0.1.0" translators="Ahmad Gharbeia, Khaled Hosny" />
|
||||||
<!-- Fonts -->
|
<!-- Fonts -->
|
||||||
@@ -1049,6 +1049,7 @@
|
|||||||
<string lang="ar" key="WIPE_MODE_3_DOD_5220">3 مرّات (US DoD 5220.22-M)</string>
|
<string lang="ar" key="WIPE_MODE_3_DOD_5220">3 مرّات (US DoD 5220.22-M)</string>
|
||||||
<string lang="ar" key="WIPE_MODE_7_DOD_5220">7 مرّات (US DoD 5220.22-M)</string>
|
<string lang="ar" key="WIPE_MODE_7_DOD_5220">7 مرّات (US DoD 5220.22-M)</string>
|
||||||
<string lang="ar" key="WIPE_MODE_35_GUTMANN">35 مرة (Gutmann)</string>
|
<string lang="ar" key="WIPE_MODE_35_GUTMANN">35 مرة (Gutmann)</string>
|
||||||
|
<string lang="ar" key="WIPE_MODE_256">256 مرة </string>
|
||||||
<string lang="ar" key="SYS_MULTI_BOOT_MODE_TITLE">عدد نظم التشغيل</string>
|
<string lang="ar" key="SYS_MULTI_BOOT_MODE_TITLE">عدد نظم التشغيل</string>
|
||||||
<string lang="ar" key="MULTI_BOOT_FOR_ADVANCED_ONLY">تحذير: ينبغي ألا يعمي المستخدمون غير ذوي الخبرة ويندوز في التجهيزات عديدة الإقلاع. أأواصل؟</string>
|
<string lang="ar" key="MULTI_BOOT_FOR_ADVANCED_ONLY">تحذير: ينبغي ألا يعمي المستخدمون غير ذوي الخبرة ويندوز في التجهيزات عديدة الإقلاع. أأواصل؟</string>
|
||||||
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<VeraCrypt>
|
<VeraCrypt>
|
||||||
<localization prog-version="1.0d">
|
<localization prog-version="1.0e">
|
||||||
<!-- Languages -->
|
<!-- Languages -->
|
||||||
<language langid="be" name="Беларуская" en-name="Belarusian" version="0.1.0" translators="Aleg Azarousky" />
|
<language langid="be" name="Беларуская" en-name="Belarusian" version="0.1.0" translators="Aleg Azarousky" />
|
||||||
<!-- Fonts -->
|
<!-- Fonts -->
|
||||||
@@ -1049,6 +1049,7 @@
|
|||||||
<string lang="be" key="WIPE_MODE_3_DOD_5220">3 праходы (US DoD 5220.22-M)</string>
|
<string lang="be" key="WIPE_MODE_3_DOD_5220">3 праходы (US DoD 5220.22-M)</string>
|
||||||
<string lang="be" key="WIPE_MODE_7_DOD_5220">7 праходаў (US DoD 5220.22-M)</string>
|
<string lang="be" key="WIPE_MODE_7_DOD_5220">7 праходаў (US DoD 5220.22-M)</string>
|
||||||
<string lang="en" key="WIPE_MODE_35_GUTMANN">35-pass ("Gutmann")</string>
|
<string lang="en" key="WIPE_MODE_35_GUTMANN">35-pass ("Gutmann")</string>
|
||||||
|
<string lang="en" key="WIPE_MODE_256">256-pass</string>
|
||||||
<string lang="be" key="SYS_MULTI_BOOT_MODE_TITLE">Лік аперацыйных сістэм</string>
|
<string lang="be" key="SYS_MULTI_BOOT_MODE_TITLE">Лік аперацыйных сістэм</string>
|
||||||
<string lang="be" key="MULTI_BOOT_FOR_ADVANCED_ONLY">УВАГА: Неспрактыкаваным карыстачам не варта спрабаваць шыфраваць Windows у мультызагрузных канфігурацыях.\n\nПрацягнуць?</string>
|
<string lang="be" key="MULTI_BOOT_FOR_ADVANCED_ONLY">УВАГА: Неспрактыкаваным карыстачам не варта спрабаваць шыфраваць Windows у мультызагрузных канфігурацыях.\n\nПрацягнуць?</string>
|
||||||
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<VeraCrypt>
|
<VeraCrypt>
|
||||||
<localization prog-version="1.0d">
|
<localization prog-version="1.0e">
|
||||||
<!-- Languages -->
|
<!-- Languages -->
|
||||||
<language langid="bg" name="Български" en-name="Bulgarian" version="0.1.0" translators="Lachezar Gorchev" />
|
<language langid="bg" name="Български" en-name="Bulgarian" version="0.1.0" translators="Lachezar Gorchev" />
|
||||||
<!-- Fonts -->
|
<!-- Fonts -->
|
||||||
@@ -1049,6 +1049,7 @@
|
|||||||
<string lang="bg" key="WIPE_MODE_3_DOD_5220">3-пасов (US DoD 5220.22-M)</string>
|
<string lang="bg" key="WIPE_MODE_3_DOD_5220">3-пасов (US DoD 5220.22-M)</string>
|
||||||
<string lang="bg" key="WIPE_MODE_7_DOD_5220">7-пасов (US DoD 5220.22-M)</string>
|
<string lang="bg" key="WIPE_MODE_7_DOD_5220">7-пасов (US DoD 5220.22-M)</string>
|
||||||
<string lang="bg" key="WIPE_MODE_35_GUTMANN">35-пасов ("Gutmann")</string>
|
<string lang="bg" key="WIPE_MODE_35_GUTMANN">35-пасов ("Gutmann")</string>
|
||||||
|
<string lang="bg" key="WIPE_MODE_256">256-пасов</string>
|
||||||
<string lang="bg" key="SYS_MULTI_BOOT_MODE_TITLE">Брой операционни системи</string>
|
<string lang="bg" key="SYS_MULTI_BOOT_MODE_TITLE">Брой операционни системи</string>
|
||||||
<string lang="bg" key="MULTI_BOOT_FOR_ADVANCED_ONLY">ВНИМАНИЕ: Начинаещи потребители никога не трябва да опитват да криптират Windows в multi-boot конфигурации.\n\nПродължаване?</string>
|
<string lang="bg" key="MULTI_BOOT_FOR_ADVANCED_ONLY">ВНИМАНИЕ: Начинаещи потребители никога не трябва да опитват да криптират Windows в multi-boot конфигурации.\n\nПродължаване?</string>
|
||||||
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<VeraCrypt>
|
<VeraCrypt>
|
||||||
<localization prog-version="1.0d">
|
<localization prog-version="1.0e">
|
||||||
<!-- Languages -->
|
<!-- Languages -->
|
||||||
<language langid="ca" name="Català" en-name="Catalan" version="0.1.0" translators="CESICAT, Centre de Seguretat de la Informació de Catalunya" />
|
<language langid="ca" name="Català" en-name="Catalan" version="0.1.0" translators="CESICAT, Centre de Seguretat de la Informació de Catalunya" />
|
||||||
<!-- Fonts -->
|
<!-- Fonts -->
|
||||||
@@ -1049,6 +1049,7 @@
|
|||||||
<string lang="ca" key="WIPE_MODE_3_DOD_5220">3 passades (US DoD 5220.22-M)</string>
|
<string lang="ca" key="WIPE_MODE_3_DOD_5220">3 passades (US DoD 5220.22-M)</string>
|
||||||
<string lang="ca" key="WIPE_MODE_7_DOD_5220">7 passades (US DoD 5220.22-M)</string>
|
<string lang="ca" key="WIPE_MODE_7_DOD_5220">7 passades (US DoD 5220.22-M)</string>
|
||||||
<string lang="ca" key="WIPE_MODE_35_GUTMANN">35 passades ("Gutmann")</string>
|
<string lang="ca" key="WIPE_MODE_35_GUTMANN">35 passades ("Gutmann")</string>
|
||||||
|
<string lang="ca" key="WIPE_MODE_256">256 passades</string>
|
||||||
<string lang="ca" key="SYS_MULTI_BOOT_MODE_TITLE">Número de sistemes operatius</string>
|
<string lang="ca" key="SYS_MULTI_BOOT_MODE_TITLE">Número de sistemes operatius</string>
|
||||||
<string lang="ca" key="MULTI_BOOT_FOR_ADVANCED_ONLY">ATENCIÓ: Els usuaris sense experiència no haurien d'intentar xifrar el Windows en una màquina amb arrencada múltiple.\n\nVol continuar?</string>
|
<string lang="ca" key="MULTI_BOOT_FOR_ADVANCED_ONLY">ATENCIÓ: Els usuaris sense experiència no haurien d'intentar xifrar el Windows en una màquina amb arrencada múltiple.\n\nVol continuar?</string>
|
||||||
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<VeraCrypt>
|
<VeraCrypt>
|
||||||
<localization prog-version="1.0d">
|
<localization prog-version="1.0e">
|
||||||
<!-- Languages -->
|
<!-- Languages -->
|
||||||
<language langid="cs" name="Čeština" en-name="Czech" version="1.0.0" translators="Vítek Moser" />
|
<language langid="cs" name="Čeština" en-name="Czech" version="1.0.0" translators="Vítek Moser" />
|
||||||
<!-- Fonts -->
|
<!-- Fonts -->
|
||||||
@@ -1048,7 +1048,7 @@
|
|||||||
<string lang="cs" key="WIPE_MODE_1_RAND">1-stopý (náhodná data)</string>
|
<string lang="cs" key="WIPE_MODE_1_RAND">1-stopý (náhodná data)</string>
|
||||||
<string lang="cs" key="WIPE_MODE_3_DOD_5220">3-stopý (US DoD 5220.22-M)</string>
|
<string lang="cs" key="WIPE_MODE_3_DOD_5220">3-stopý (US DoD 5220.22-M)</string>
|
||||||
<string lang="cs" key="WIPE_MODE_7_DOD_5220">7-stopý (US DoD 5220.22-M)</string>
|
<string lang="cs" key="WIPE_MODE_7_DOD_5220">7-stopý (US DoD 5220.22-M)</string>
|
||||||
<string lang="cs" key="WIPE_MODE_35_GUTMANN">35-stopý ("Gutmann")</string>
|
<string lang="cs" key="WIPE_MODE_256">256-stopý</string>
|
||||||
<string lang="cs" key="SYS_MULTI_BOOT_MODE_TITLE">Počet operačních systémů</string>
|
<string lang="cs" key="SYS_MULTI_BOOT_MODE_TITLE">Počet operačních systémů</string>
|
||||||
<string lang="cs" key="MULTI_BOOT_FOR_ADVANCED_ONLY">VAROVÁNÍ: Nezkušení uživatelé by se nikdy neměli pokoušet zašifrovat Windows ve vícesystémové bootovací konfiguraci.\n\nPokračovat?</string>
|
<string lang="cs" key="MULTI_BOOT_FOR_ADVANCED_ONLY">VAROVÁNÍ: Nezkušení uživatelé by se nikdy neměli pokoušet zašifrovat Windows ve vícesystémové bootovací konfiguraci.\n\nPokračovat?</string>
|
||||||
<string lang="cs" key="HIDDEN_OS_MULTI_BOOT">VeraCrypt podporuje vícesystémové bootování při vytvoření/použití skrytého operačního systému pouze za následujících podmínek:\n\n- Operační systém, který aktuálně běží, musí být nainstalován na bootovacím disku, který nesmí obsahovat žádné další operační systémy.\n\n- Operační systémy nainstalované na ostatních discích nesmí používat žádný bootovací zavaděč, který by byl umístěn na disku, kde je nainstalován systém, který nyní běží.\n\nJsou výše uvedené podmínky splněny?</string>
|
<string lang="cs" key="HIDDEN_OS_MULTI_BOOT">VeraCrypt podporuje vícesystémové bootování při vytvoření/použití skrytého operačního systému pouze za následujících podmínek:\n\n- Operační systém, který aktuálně běží, musí být nainstalován na bootovacím disku, který nesmí obsahovat žádné další operační systémy.\n\n- Operační systémy nainstalované na ostatních discích nesmí používat žádný bootovací zavaděč, který by byl umístěn na disku, kde je nainstalován systém, který nyní běží.\n\nJsou výše uvedené podmínky splněny?</string>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<VeraCrypt>
|
<VeraCrypt>
|
||||||
<localization prog-version="1.0d">
|
<localization prog-version="1.0e">
|
||||||
<!-- Languages -->
|
<!-- Languages -->
|
||||||
<language langid="da" name="Dansk" en-name="Danish" version="0.1.0" translators="Lasse Bond" />
|
<language langid="da" name="Dansk" en-name="Danish" version="0.1.0" translators="Lasse Bond" />
|
||||||
<!-- Fonts -->
|
<!-- Fonts -->
|
||||||
@@ -1049,6 +1049,7 @@
|
|||||||
<string lang="da" key="WIPE_MODE_3_DOD_5220">3-passager (US DoD 5220.22-M)</string>
|
<string lang="da" key="WIPE_MODE_3_DOD_5220">3-passager (US DoD 5220.22-M)</string>
|
||||||
<string lang="da" key="WIPE_MODE_7_DOD_5220">7-passager (US DoD 5220.22-M)</string>
|
<string lang="da" key="WIPE_MODE_7_DOD_5220">7-passager (US DoD 5220.22-M)</string>
|
||||||
<string lang="en" key="WIPE_MODE_35_GUTMANN">35-pass ("Gutmann")</string>
|
<string lang="en" key="WIPE_MODE_35_GUTMANN">35-pass ("Gutmann")</string>
|
||||||
|
<string lang="en" key="WIPE_MODE_256">256-pass</string>
|
||||||
<string lang="da" key="SYS_MULTI_BOOT_MODE_TITLE">Antal Operativsystemer</string>
|
<string lang="da" key="SYS_MULTI_BOOT_MODE_TITLE">Antal Operativsystemer</string>
|
||||||
<string lang="da" key="MULTI_BOOT_FOR_ADVANCED_ONLY">ADVARSEL: Uerfarne brugere bør aldrig forsøge at kryptere Windows i multi-boot konfigurationer.\n\nFortsæt?</string>
|
<string lang="da" key="MULTI_BOOT_FOR_ADVANCED_ONLY">ADVARSEL: Uerfarne brugere bør aldrig forsøge at kryptere Windows i multi-boot konfigurationer.\n\nFortsæt?</string>
|
||||||
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<VeraCrypt>
|
<VeraCrypt>
|
||||||
<localization prog-version="1.0d">
|
<localization prog-version="1.0e">
|
||||||
<!-- Languages -->
|
<!-- Languages -->
|
||||||
<language langid="de" name="Deutsch" en-name="German" version="1.0.1" translators="Harry Haller, Alexander Schorg, Simon Frankenberger, David Arndt" />
|
<language langid="de" name="Deutsch" en-name="German" version="1.0.1" translators="Harry Haller, Alexander Schorg, Simon Frankenberger, David Arndt" />
|
||||||
<!-- Fonts -->
|
<!-- Fonts -->
|
||||||
@@ -1049,6 +1049,7 @@
|
|||||||
<string lang="de" key="WIPE_MODE_3_DOD_5220">3-Durchgänge (US DoD 5220.22-M)</string>
|
<string lang="de" key="WIPE_MODE_3_DOD_5220">3-Durchgänge (US DoD 5220.22-M)</string>
|
||||||
<string lang="de" key="WIPE_MODE_7_DOD_5220">7-Durchgänge (US DoD 5220.22-M)</string>
|
<string lang="de" key="WIPE_MODE_7_DOD_5220">7-Durchgänge (US DoD 5220.22-M)</string>
|
||||||
<string lang="de" key="WIPE_MODE_35_GUTMANN">35-Durchgänge ("Gutmann")</string>
|
<string lang="de" key="WIPE_MODE_35_GUTMANN">35-Durchgänge ("Gutmann")</string>
|
||||||
|
<string lang="de" key="WIPE_MODE_256">256-Durchgänge</string>
|
||||||
<string lang="de" key="SYS_MULTI_BOOT_MODE_TITLE">Anzahl der Betriebssysteme</string>
|
<string lang="de" key="SYS_MULTI_BOOT_MODE_TITLE">Anzahl der Betriebssysteme</string>
|
||||||
<string lang="de" key="MULTI_BOOT_FOR_ADVANCED_ONLY">WARNUNG: Unerfahrene Benutzer sollten niemals versuchen Windows in einer Multiboot-Konfigurationen verschlüsseln.\n\nFortfahren?</string>
|
<string lang="de" key="MULTI_BOOT_FOR_ADVANCED_ONLY">WARNUNG: Unerfahrene Benutzer sollten niemals versuchen Windows in einer Multiboot-Konfigurationen verschlüsseln.\n\nFortfahren?</string>
|
||||||
<string lang="de" key="HIDDEN_OS_MULTI_BOOT">Wenn Sie ein verstecktes Betriebsystem erstellen oder nutzen unterstützt VeraCrypt Mulit-Boot-Konfigurationen nur wenn die folgenden Bedingungen erfüllt sind:\n\n- Das derzeit laufende Betriebssystem muss auf dem Bootlaufwerk installiert sein welches keine weitere Betriebssysteme enthalten darf.\n\n- Betriebssysteme auf anderen Laufwerken dürfen keine Bootloader nutzen die auf dem selben Laufwerk liegen auf dem das derzeit aktive Betriebssystem installiert ist.\n\nSind die obigen Bedingungen erfüllt?</string>
|
<string lang="de" key="HIDDEN_OS_MULTI_BOOT">Wenn Sie ein verstecktes Betriebsystem erstellen oder nutzen unterstützt VeraCrypt Mulit-Boot-Konfigurationen nur wenn die folgenden Bedingungen erfüllt sind:\n\n- Das derzeit laufende Betriebssystem muss auf dem Bootlaufwerk installiert sein welches keine weitere Betriebssysteme enthalten darf.\n\n- Betriebssysteme auf anderen Laufwerken dürfen keine Bootloader nutzen die auf dem selben Laufwerk liegen auf dem das derzeit aktive Betriebssystem installiert ist.\n\nSind die obigen Bedingungen erfüllt?</string>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<VeraCrypt>
|
<VeraCrypt>
|
||||||
<localization prog-version="1.0d">
|
<localization prog-version="1.0e">
|
||||||
<!-- Languages -->
|
<!-- Languages -->
|
||||||
<language langid="el" name="Ελληνικά" en-name="Greek" version="0.1.0" translators="Βασίλης Κοσμίδης" />
|
<language langid="el" name="Ελληνικά" en-name="Greek" version="0.1.0" translators="Βασίλης Κοσμίδης" />
|
||||||
<!-- Fonts -->
|
<!-- Fonts -->
|
||||||
@@ -1048,7 +1048,7 @@
|
|||||||
<string lang="en" key="WIPE_MODE_1_RAND">1-pass (random data)</string>
|
<string lang="en" key="WIPE_MODE_1_RAND">1-pass (random data)</string>
|
||||||
<string lang="el" key="WIPE_MODE_3_DOD_5220">3 περάσματα (US DoD 5220.22-M)</string>
|
<string lang="el" key="WIPE_MODE_3_DOD_5220">3 περάσματα (US DoD 5220.22-M)</string>
|
||||||
<string lang="el" key="WIPE_MODE_7_DOD_5220">7 περάσματα (US DoD 5220.22-M)</string>
|
<string lang="el" key="WIPE_MODE_7_DOD_5220">7 περάσματα (US DoD 5220.22-M)</string>
|
||||||
<string lang="en" key="WIPE_MODE_35_GUTMANN">35-pass ("Gutmann")</string>
|
<string lang="en" key="WIPE_MODE_256">256-pass</string>
|
||||||
<string lang="el" key="SYS_MULTI_BOOT_MODE_TITLE">Αριθμός λειτουργικών συστημάτων</string>
|
<string lang="el" key="SYS_MULTI_BOOT_MODE_TITLE">Αριθμός λειτουργικών συστημάτων</string>
|
||||||
<string lang="el" key="MULTI_BOOT_FOR_ADVANCED_ONLY">ΠΡΟΣΟΧΗ: Άπειροι χρήστες δεν πρέπει να επιχειρούν να κρυπτογραφήσουν τα Windows σε διαμορφώσεις πολλαπλής εκκίνησης.\n\nΣυνέχεια;</string>
|
<string lang="el" key="MULTI_BOOT_FOR_ADVANCED_ONLY">ΠΡΟΣΟΧΗ: Άπειροι χρήστες δεν πρέπει να επιχειρούν να κρυπτογραφήσουν τα Windows σε διαμορφώσεις πολλαπλής εκκίνησης.\n\nΣυνέχεια;</string>
|
||||||
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<VeraCrypt>
|
<VeraCrypt>
|
||||||
<localization prog-version="1.0d">
|
<localization prog-version="1.0e">
|
||||||
<!-- Languages -->
|
<!-- Languages -->
|
||||||
<language langid="es" name="Español" en-name="Spanish" version="1.0.0" translators="Juan Antonio Auñón Ochando" />
|
<language langid="es" name="Español" en-name="Spanish" version="1.0.0" translators="Juan Antonio Auñón Ochando" />
|
||||||
<!-- Fonts -->
|
<!-- Fonts -->
|
||||||
@@ -1049,6 +1049,7 @@
|
|||||||
<string lang="es" key="WIPE_MODE_3_DOD_5220">3 pasadas (US DoD 5220.22-M)</string>
|
<string lang="es" key="WIPE_MODE_3_DOD_5220">3 pasadas (US DoD 5220.22-M)</string>
|
||||||
<string lang="es" key="WIPE_MODE_7_DOD_5220">7 pasadas (US DoD 5220.22-M)</string>
|
<string lang="es" key="WIPE_MODE_7_DOD_5220">7 pasadas (US DoD 5220.22-M)</string>
|
||||||
<string lang="es" key="WIPE_MODE_35_GUTMANN">35 pasadas ("Gutmann")</string>
|
<string lang="es" key="WIPE_MODE_35_GUTMANN">35 pasadas ("Gutmann")</string>
|
||||||
|
<string lang="es" key="WIPE_MODE_256">256 pasadas</string>
|
||||||
<string lang="es" key="SYS_MULTI_BOOT_MODE_TITLE">Número de Sistemas Operativos</string>
|
<string lang="es" key="SYS_MULTI_BOOT_MODE_TITLE">Número de Sistemas Operativos</string>
|
||||||
<string lang="es" key="MULTI_BOOT_FOR_ADVANCED_ONLY">AVISO: Los usuarios sin experiencia nunca deberían intentar cifrar Windows en configuraciones multi-arranque.\n\n¿Continuar?</string>
|
<string lang="es" key="MULTI_BOOT_FOR_ADVANCED_ONLY">AVISO: Los usuarios sin experiencia nunca deberían intentar cifrar Windows en configuraciones multi-arranque.\n\n¿Continuar?</string>
|
||||||
<string lang="es" key="HIDDEN_OS_MULTI_BOOT">Al crear/usar un sistema operativo oculto, VeraCrypt soporta configuraciones multi-arranque sólo cuando se cumplen las siguientes condiciones:\n\n- El sistema operativo en ejecución debe estar instalado en la unidad de arranque, la cual no debe contener ningún otro sistema operativo.\n\n- Los sistemas operativos instalados en otras unidades no deben usar ningún cargador de arranque residente en la unidad en la que está instalado el sistema operativo en ejecución.\n\n¿Se cumplen las condiciones mencionadas?</string>
|
<string lang="es" key="HIDDEN_OS_MULTI_BOOT">Al crear/usar un sistema operativo oculto, VeraCrypt soporta configuraciones multi-arranque sólo cuando se cumplen las siguientes condiciones:\n\n- El sistema operativo en ejecución debe estar instalado en la unidad de arranque, la cual no debe contener ningún otro sistema operativo.\n\n- Los sistemas operativos instalados en otras unidades no deben usar ningún cargador de arranque residente en la unidad en la que está instalado el sistema operativo en ejecución.\n\n¿Se cumplen las condiciones mencionadas?</string>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<VeraCrypt>
|
<VeraCrypt>
|
||||||
<localization prog-version="1.0d">
|
<localization prog-version="1.0e">
|
||||||
<!-- Languages -->
|
<!-- Languages -->
|
||||||
<language langid="et" name="Eesti" en-name="Estonian" version="0.1.0" translators="Maiko Mõtsar" />
|
<language langid="et" name="Eesti" en-name="Estonian" version="0.1.0" translators="Maiko Mõtsar" />
|
||||||
<!-- Fonts -->
|
<!-- Fonts -->
|
||||||
@@ -1049,6 +1049,7 @@
|
|||||||
<string lang="en" key="WIPE_MODE_3_DOD_5220">3-pass (US DoD 5220.22-M)</string>
|
<string lang="en" key="WIPE_MODE_3_DOD_5220">3-pass (US DoD 5220.22-M)</string>
|
||||||
<string lang="en" key="WIPE_MODE_7_DOD_5220">7-pass (US DoD 5220.22-M)</string>
|
<string lang="en" key="WIPE_MODE_7_DOD_5220">7-pass (US DoD 5220.22-M)</string>
|
||||||
<string lang="en" key="WIPE_MODE_35_GUTMANN">35-pass ("Gutmann")</string>
|
<string lang="en" key="WIPE_MODE_35_GUTMANN">35-pass ("Gutmann")</string>
|
||||||
|
<string lang="en" key="WIPE_MODE_256">256-pass</string>
|
||||||
<string lang="en" key="SYS_MULTI_BOOT_MODE_TITLE">Number of Operating Systems</string>
|
<string lang="en" key="SYS_MULTI_BOOT_MODE_TITLE">Number of Operating Systems</string>
|
||||||
<string lang="en" key="MULTI_BOOT_FOR_ADVANCED_ONLY">WARNING: Inexperienced users should never attempt to encrypt Windows in multi-boot configurations.\n\nContinue?</string>
|
<string lang="en" key="MULTI_BOOT_FOR_ADVANCED_ONLY">WARNING: Inexperienced users should never attempt to encrypt Windows in multi-boot configurations.\n\nContinue?</string>
|
||||||
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<VeraCrypt>
|
<VeraCrypt>
|
||||||
<localization prog-version="1.0d">
|
<localization prog-version="1.0e">
|
||||||
<!-- Languages -->
|
<!-- Languages -->
|
||||||
<language langid="eu" name="Euskara" en-name="Basque" version="1.0.0" translators="Ander Genua" />
|
<language langid="eu" name="Euskara" en-name="Basque" version="1.0.0" translators="Ander Genua" />
|
||||||
<!-- Fonts -->
|
<!-- Fonts -->
|
||||||
@@ -1051,6 +1051,7 @@
|
|||||||
<string lang="eu" key="WIPE_MODE_3_DOD_5220">3-pasatze (US DoD 5220.22-M)</string>
|
<string lang="eu" key="WIPE_MODE_3_DOD_5220">3-pasatze (US DoD 5220.22-M)</string>
|
||||||
<string lang="eu" key="WIPE_MODE_7_DOD_5220">7-pasatze (US DoD 5220.22-M)</string>
|
<string lang="eu" key="WIPE_MODE_7_DOD_5220">7-pasatze (US DoD 5220.22-M)</string>
|
||||||
<string lang="eu" key="WIPE_MODE_35_GUTMANN">35-pasatze ("Gutmann")</string>
|
<string lang="eu" key="WIPE_MODE_35_GUTMANN">35-pasatze ("Gutmann")</string>
|
||||||
|
<string lang="eu" key="WIPE_MODE_256">256-pasatze</string>
|
||||||
<string lang="eu" key="SYS_MULTI_BOOT_MODE_TITLE">Sistema Eragile Kopurua</string>
|
<string lang="eu" key="SYS_MULTI_BOOT_MODE_TITLE">Sistema Eragile Kopurua</string>
|
||||||
<string lang="eu" key="MULTI_BOOT_FOR_ADVANCED_ONLY">KONTUZ: Esperientziarik gabeko erabiltzaileek ez lirateke Windows zifratzen saiatu behar hasieraketa-anitzeko konfigurazioekin.\n\nJarraitu?</string>
|
<string lang="eu" key="MULTI_BOOT_FOR_ADVANCED_ONLY">KONTUZ: Esperientziarik gabeko erabiltzaileek ez lirateke Windows zifratzen saiatu behar hasieraketa-anitzeko konfigurazioekin.\n\nJarraitu?</string>
|
||||||
<string lang="eu" key="HIDDEN_OS_MULTI_BOOT">Ezkutuko sistema eragile bat sortu/erabiltzerakoan, VeraCrypt-ek abiaketa-anitza hurrengo kasuetan onartzen du bakarrik :\n\n- Orain martxan dagoen sistema eragilea abiatze unitatean instalatuta egon behar du, eta bertan dagoen sistema eragile bakarra izan behar du.\n\n- Beste unitateetan dauden sistema eragileek ezin dute martxan dagoen sistema eragilearen unitatean dagoen hasieraketa kargatzailea erabili.\n\nGoiko kondizioak betetzen al dira?</string>
|
<string lang="eu" key="HIDDEN_OS_MULTI_BOOT">Ezkutuko sistema eragile bat sortu/erabiltzerakoan, VeraCrypt-ek abiaketa-anitza hurrengo kasuetan onartzen du bakarrik :\n\n- Orain martxan dagoen sistema eragilea abiatze unitatean instalatuta egon behar du, eta bertan dagoen sistema eragile bakarra izan behar du.\n\n- Beste unitateetan dauden sistema eragileek ezin dute martxan dagoen sistema eragilearen unitatean dagoen hasieraketa kargatzailea erabili.\n\nGoiko kondizioak betetzen al dira?</string>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<VeraCrypt>
|
<VeraCrypt>
|
||||||
<localization prog-version="1.0d">
|
<localization prog-version="1.0e">
|
||||||
<!-- Languages -->
|
<!-- Languages -->
|
||||||
<language langid="fa" name="فارسي" en-name="Persian" version="0.1.0" translators="Ali Bitazar, Rodabeh Sarmadi" />
|
<language langid="fa" name="فارسي" en-name="Persian" version="0.1.0" translators="Ali Bitazar, Rodabeh Sarmadi" />
|
||||||
<!-- Fonts -->
|
<!-- Fonts -->
|
||||||
@@ -1049,6 +1049,7 @@
|
|||||||
<string lang="en" key="WIPE_MODE_3_DOD_5220">3-pass (US DoD 5220.22-M)</string>
|
<string lang="en" key="WIPE_MODE_3_DOD_5220">3-pass (US DoD 5220.22-M)</string>
|
||||||
<string lang="en" key="WIPE_MODE_7_DOD_5220">7-pass (US DoD 5220.22-M)</string>
|
<string lang="en" key="WIPE_MODE_7_DOD_5220">7-pass (US DoD 5220.22-M)</string>
|
||||||
<string lang="en" key="WIPE_MODE_35_GUTMANN">35-pass ("Gutmann")</string>
|
<string lang="en" key="WIPE_MODE_35_GUTMANN">35-pass ("Gutmann")</string>
|
||||||
|
<string lang="en" key="WIPE_MODE_256">256-pass</string>
|
||||||
<string lang="en" key="SYS_MULTI_BOOT_MODE_TITLE">Number of Operating Systems</string>
|
<string lang="en" key="SYS_MULTI_BOOT_MODE_TITLE">Number of Operating Systems</string>
|
||||||
<string lang="en" key="MULTI_BOOT_FOR_ADVANCED_ONLY">WARNING: Inexperienced users should never attempt to encrypt Windows in multi-boot configurations.\n\nContinue?</string>
|
<string lang="en" key="MULTI_BOOT_FOR_ADVANCED_ONLY">WARNING: Inexperienced users should never attempt to encrypt Windows in multi-boot configurations.\n\nContinue?</string>
|
||||||
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<VeraCrypt>
|
<VeraCrypt>
|
||||||
<localization prog-version="1.0d">
|
<localization prog-version="1.0e">
|
||||||
<!-- Languages -->
|
<!-- Languages -->
|
||||||
<language langid="fi" name="Suomi" en-name="Finnish" version="0.1.0" translators="Matti Ruhanen" />
|
<language langid="fi" name="Suomi" en-name="Finnish" version="0.1.0" translators="Matti Ruhanen" />
|
||||||
<!-- Fonts -->
|
<!-- Fonts -->
|
||||||
@@ -1049,6 +1049,7 @@
|
|||||||
<string lang="fi" key="WIPE_MODE_3_DOD_5220">3-läpi (US DoD 5220.22-M)</string>
|
<string lang="fi" key="WIPE_MODE_3_DOD_5220">3-läpi (US DoD 5220.22-M)</string>
|
||||||
<string lang="fi" key="WIPE_MODE_7_DOD_5220">7-läpi (US DoD 5220.22-M)</string>
|
<string lang="fi" key="WIPE_MODE_7_DOD_5220">7-läpi (US DoD 5220.22-M)</string>
|
||||||
<string lang="fi" key="WIPE_MODE_35_GUTMANN">35-läpi ("Gutmann")</string>
|
<string lang="fi" key="WIPE_MODE_35_GUTMANN">35-läpi ("Gutmann")</string>
|
||||||
|
<string lang="fi" key="WIPE_MODE_256">256-läpi</string>
|
||||||
<string lang="fi" key="SYS_MULTI_BOOT_MODE_TITLE">Käyttöjärjestelmän numero</string>
|
<string lang="fi" key="SYS_MULTI_BOOT_MODE_TITLE">Käyttöjärjestelmän numero</string>
|
||||||
<string lang="fi" key="MULTI_BOOT_FOR_ADVANCED_ONLY">VAROITUS: Aloittelevan käyttäjän ei koskaan pidä yrittää salata Windows monikäynnistys (multi-boot) konfiguraatioita.\n\nJatkatko?</string>
|
<string lang="fi" key="MULTI_BOOT_FOR_ADVANCED_ONLY">VAROITUS: Aloittelevan käyttäjän ei koskaan pidä yrittää salata Windows monikäynnistys (multi-boot) konfiguraatioita.\n\nJatkatko?</string>
|
||||||
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<VeraCrypt>
|
<VeraCrypt>
|
||||||
<localization prog-version="1.0d">
|
<localization prog-version="1.0e">
|
||||||
<!-- Languages -->
|
<!-- Languages -->
|
||||||
<language langid="fr" name="Français" en-name="French" version="0.2.0" translators="Stéphane S., Olivier M." />
|
<language langid="fr" name="Français" en-name="French" version="0.2.0" translators="Stéphane S., Olivier M." />
|
||||||
<!-- Fonts -->
|
<!-- Fonts -->
|
||||||
@@ -1045,10 +1045,11 @@
|
|||||||
<string lang="en" key="CONFIRM_WIPE_START_DECOY_SYS_PARTITION">The entire content of the partition where the original system resides will be erased.\n\nNote: The entire content of the partition that is to be erased has been copied to this hidden system partition.</string>
|
<string lang="en" key="CONFIRM_WIPE_START_DECOY_SYS_PARTITION">The entire content of the partition where the original system resides will be erased.\n\nNote: The entire content of the partition that is to be erased has been copied to this hidden system partition.</string>
|
||||||
<string lang="en" key="WIPE_MODE_WARN">WARNING: Note that when you choose e.g. the 3-pass wipe mode, the time necessary to encrypt the partition/drive will be up to 4 times longer. Likewise, if you choose the 35-pass wipe mode, it will be up to 36 times longer (it might even take several weeks).\n\nHowever, please note that wiping will NOT be performed after the partition/drive is fully encrypted. When the partition/drive is fully encrypted, no unencrypted data is written to it. Any data being written to it is first encrypted on the fly in memory and only then is the (encrypted) data written to the disk (so the performance will NOT be affected).\n\nAre you sure you want to use the wipe mode?</string>
|
<string lang="en" key="WIPE_MODE_WARN">WARNING: Note that when you choose e.g. the 3-pass wipe mode, the time necessary to encrypt the partition/drive will be up to 4 times longer. Likewise, if you choose the 35-pass wipe mode, it will be up to 36 times longer (it might even take several weeks).\n\nHowever, please note that wiping will NOT be performed after the partition/drive is fully encrypted. When the partition/drive is fully encrypted, no unencrypted data is written to it. Any data being written to it is first encrypted on the fly in memory and only then is the (encrypted) data written to the disk (so the performance will NOT be affected).\n\nAre you sure you want to use the wipe mode?</string>
|
||||||
<string lang="fr" key="WIPE_MODE_NONE">Aucun (le plus rapide)</string>
|
<string lang="fr" key="WIPE_MODE_NONE">Aucun (le plus rapide)</string>
|
||||||
<string lang="en" key="WIPE_MODE_1_RAND">1-pass (random data)</string>
|
<string lang="en" key="WIPE_MODE_1_RAND">1-passage (random data)</string>
|
||||||
<string lang="fr" key="WIPE_MODE_3_DOD_5220">3 passages (US DoD 5220.22-M)</string>
|
<string lang="fr" key="WIPE_MODE_3_DOD_5220">3 passages (US DoD 5220.22-M)</string>
|
||||||
<string lang="fr" key="WIPE_MODE_7_DOD_5220">7 passages (US DoD 5220.22-M)</string>
|
<string lang="fr" key="WIPE_MODE_7_DOD_5220">7 passages (US DoD 5220.22-M)</string>
|
||||||
<string lang="en" key="WIPE_MODE_35_GUTMANN">35-pass ("Gutmann")</string>
|
<string lang="en" key="WIPE_MODE_35_GUTMANN">35-passages ("Gutmann")</string>
|
||||||
|
<string lang="en" key="WIPE_MODE_256">256-passages</string>
|
||||||
<string lang="fr" key="SYS_MULTI_BOOT_MODE_TITLE">Nombre de système d'exploitation</string>
|
<string lang="fr" key="SYS_MULTI_BOOT_MODE_TITLE">Nombre de système d'exploitation</string>
|
||||||
<string lang="fr" key="MULTI_BOOT_FOR_ADVANCED_ONLY">AVERTISSEMENT : Les utilisateurs novices ne devraient pas essayer de chiffrer Windows dans des configurations à amorçages multiples.\n\nContinuer ?</string>
|
<string lang="fr" key="MULTI_BOOT_FOR_ADVANCED_ONLY">AVERTISSEMENT : Les utilisateurs novices ne devraient pas essayer de chiffrer Windows dans des configurations à amorçages multiples.\n\nContinuer ?</string>
|
||||||
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<VeraCrypt>
|
<VeraCrypt>
|
||||||
<localization prog-version="1.0d">
|
<localization prog-version="1.0e">
|
||||||
<!-- Languages -->
|
<!-- Languages -->
|
||||||
<language langid="hu" name="Magyar" en-name="Hungarian" version="0.1.0" translators="Nyul Balazs" />
|
<language langid="hu" name="Magyar" en-name="Hungarian" version="0.1.0" translators="Nyul Balazs" />
|
||||||
<!-- Fonts -->
|
<!-- Fonts -->
|
||||||
@@ -1049,6 +1049,7 @@
|
|||||||
<string lang="en" key="WIPE_MODE_3_DOD_5220">3-pass (US DoD 5220.22-M)</string>
|
<string lang="en" key="WIPE_MODE_3_DOD_5220">3-pass (US DoD 5220.22-M)</string>
|
||||||
<string lang="en" key="WIPE_MODE_7_DOD_5220">7-pass (US DoD 5220.22-M)</string>
|
<string lang="en" key="WIPE_MODE_7_DOD_5220">7-pass (US DoD 5220.22-M)</string>
|
||||||
<string lang="en" key="WIPE_MODE_35_GUTMANN">35-pass ("Gutmann")</string>
|
<string lang="en" key="WIPE_MODE_35_GUTMANN">35-pass ("Gutmann")</string>
|
||||||
|
<string lang="en" key="WIPE_MODE_256">256-pass</string>
|
||||||
<string lang="en" key="SYS_MULTI_BOOT_MODE_TITLE">Number of Operating Systems</string>
|
<string lang="en" key="SYS_MULTI_BOOT_MODE_TITLE">Number of Operating Systems</string>
|
||||||
<string lang="en" key="MULTI_BOOT_FOR_ADVANCED_ONLY">WARNING: Inexperienced users should never attempt to encrypt Windows in multi-boot configurations.\n\nContinue?</string>
|
<string lang="en" key="MULTI_BOOT_FOR_ADVANCED_ONLY">WARNING: Inexperienced users should never attempt to encrypt Windows in multi-boot configurations.\n\nContinue?</string>
|
||||||
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<VeraCrypt>
|
<VeraCrypt>
|
||||||
<localization prog-version="1.0d">
|
<localization prog-version="1.0e">
|
||||||
<!-- Languages -->
|
<!-- Languages -->
|
||||||
<language langid="id" name="Bahasa Indonesia" en-name="Indonesian" version="0.1.0" translators="Tajuddin N. F." />
|
<language langid="id" name="Bahasa Indonesia" en-name="Indonesian" version="0.1.0" translators="Tajuddin N. F." />
|
||||||
<!-- Fonts -->
|
<!-- Fonts -->
|
||||||
@@ -1049,6 +1049,7 @@
|
|||||||
<string lang="en" key="WIPE_MODE_3_DOD_5220">3-pass (US DoD 5220.22-M)</string>
|
<string lang="en" key="WIPE_MODE_3_DOD_5220">3-pass (US DoD 5220.22-M)</string>
|
||||||
<string lang="en" key="WIPE_MODE_7_DOD_5220">7-pass (US DoD 5220.22-M)</string>
|
<string lang="en" key="WIPE_MODE_7_DOD_5220">7-pass (US DoD 5220.22-M)</string>
|
||||||
<string lang="en" key="WIPE_MODE_35_GUTMANN">35-pass ("Gutmann")</string>
|
<string lang="en" key="WIPE_MODE_35_GUTMANN">35-pass ("Gutmann")</string>
|
||||||
|
<string lang="en" key="WIPE_MODE_256">256-pass</string>
|
||||||
<string lang="en" key="SYS_MULTI_BOOT_MODE_TITLE">Number of Operating Systems</string>
|
<string lang="en" key="SYS_MULTI_BOOT_MODE_TITLE">Number of Operating Systems</string>
|
||||||
<string lang="en" key="MULTI_BOOT_FOR_ADVANCED_ONLY">WARNING: Inexperienced users should never attempt to encrypt Windows in multi-boot configurations.\n\nContinue?</string>
|
<string lang="en" key="MULTI_BOOT_FOR_ADVANCED_ONLY">WARNING: Inexperienced users should never attempt to encrypt Windows in multi-boot configurations.\n\nContinue?</string>
|
||||||
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<VeraCrypt>
|
<VeraCrypt>
|
||||||
<localization prog-version="1.0d">
|
<localization prog-version="1.0e">
|
||||||
<!-- Languages -->
|
<!-- Languages -->
|
||||||
<language langid="it" name="Italiano" en-name="Italian" version="1.0.1" translators="Maurizio Ballo, Consiglio Gaetano" />
|
<language langid="it" name="Italiano" en-name="Italian" version="1.0.1" translators="Maurizio Ballo, Consiglio Gaetano" />
|
||||||
<!-- Fonts -->
|
<!-- Fonts -->
|
||||||
@@ -1049,6 +1049,7 @@
|
|||||||
<string lang="it" key="WIPE_MODE_3_DOD_5220">3-passaggi (US DoD 5220.22-M)</string>
|
<string lang="it" key="WIPE_MODE_3_DOD_5220">3-passaggi (US DoD 5220.22-M)</string>
|
||||||
<string lang="it" key="WIPE_MODE_7_DOD_5220">7-passaggi (US DoD 5220.22-M)</string>
|
<string lang="it" key="WIPE_MODE_7_DOD_5220">7-passaggi (US DoD 5220.22-M)</string>
|
||||||
<string lang="it" key="WIPE_MODE_35_GUTMANN">35-passaggi ("Gutmann")</string>
|
<string lang="it" key="WIPE_MODE_35_GUTMANN">35-passaggi ("Gutmann")</string>
|
||||||
|
<string lang="it" key="WIPE_MODE_256">256-passaggi</string>
|
||||||
<string lang="it" key="SYS_MULTI_BOOT_MODE_TITLE">Numero di sistemi operativi</string>
|
<string lang="it" key="SYS_MULTI_BOOT_MODE_TITLE">Numero di sistemi operativi</string>
|
||||||
<string lang="it" key="MULTI_BOOT_FOR_ADVANCED_ONLY">AVVERTENZA: Gli utenti non esperti non devono mai tentare di codificare Windows in configurazione di multi-avvio.\n\nContinuare?</string>
|
<string lang="it" key="MULTI_BOOT_FOR_ADVANCED_ONLY">AVVERTENZA: Gli utenti non esperti non devono mai tentare di codificare Windows in configurazione di multi-avvio.\n\nContinuare?</string>
|
||||||
<string lang="it" key="HIDDEN_OS_MULTI_BOOT">Quando si usa o si crea un sistema operativo nascosto, VeraCrypt supporta una configurazione multi-avvio solo quando si verificano le seguenti condizioni:\n\n- Il sistema operativo attualmente in uso deve essere installato sul disco d'avvio (di boot), il quale non deve contenere altri sistemi operativi.\n\n- Sistemi operativi installati su altri drive non devono usare boot d'avvio residenti sul disco nel quale è installato l'attuale sistema operativo in uso.\n\nSi sono verificate le condizioni di cui sopra?</string>
|
<string lang="it" key="HIDDEN_OS_MULTI_BOOT">Quando si usa o si crea un sistema operativo nascosto, VeraCrypt supporta una configurazione multi-avvio solo quando si verificano le seguenti condizioni:\n\n- Il sistema operativo attualmente in uso deve essere installato sul disco d'avvio (di boot), il quale non deve contenere altri sistemi operativi.\n\n- Sistemi operativi installati su altri drive non devono usare boot d'avvio residenti sul disco nel quale è installato l'attuale sistema operativo in uso.\n\nSi sono verificate le condizioni di cui sopra?</string>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<VeraCrypt>
|
<VeraCrypt>
|
||||||
<localization prog-version="1.0d">
|
<localization prog-version="1.0e">
|
||||||
<!-- Languages -->
|
<!-- Languages -->
|
||||||
<language langid="ja" name="日本語" en-name="Japanese" version="1.0.0" translators="OGOSHI Masayuki" />
|
<language langid="ja" name="日本語" en-name="Japanese" version="1.0.0" translators="OGOSHI Masayuki" />
|
||||||
<!-- Fonts -->
|
<!-- Fonts -->
|
||||||
@@ -1049,6 +1049,7 @@
|
|||||||
<string lang="ja" key="WIPE_MODE_3_DOD_5220">3パス(US DoD 5220.22-M)</string>
|
<string lang="ja" key="WIPE_MODE_3_DOD_5220">3パス(US DoD 5220.22-M)</string>
|
||||||
<string lang="ja" key="WIPE_MODE_7_DOD_5220">7パス(US DoD 5220.22-M)</string>
|
<string lang="ja" key="WIPE_MODE_7_DOD_5220">7パス(US DoD 5220.22-M)</string>
|
||||||
<string lang="ja" key="WIPE_MODE_35_GUTMANN">35パス ("Gutmann")</string>
|
<string lang="ja" key="WIPE_MODE_35_GUTMANN">35パス ("Gutmann")</string>
|
||||||
|
<string lang="ja" key="WIPE_MODE_256">256パス</string>
|
||||||
<string lang="ja" key="SYS_MULTI_BOOT_MODE_TITLE">OSの数</string>
|
<string lang="ja" key="SYS_MULTI_BOOT_MODE_TITLE">OSの数</string>
|
||||||
<string lang="ja" key="MULTI_BOOT_FOR_ADVANCED_ONLY">警告:慣れているユーザー以外はマルチブート設定のWindowsを暗号化しないでください。\n\n続けますか?</string>
|
<string lang="ja" key="MULTI_BOOT_FOR_ADVANCED_ONLY">警告:慣れているユーザー以外はマルチブート設定のWindowsを暗号化しないでください。\n\n続けますか?</string>
|
||||||
<string lang="ja" key="HIDDEN_OS_MULTI_BOOT">隠しOSを作成あるいは使用する場合、VeraCryptは次の条件を満たすときのみ、マルチブート設定に対応します:\n\n-現在起動中のOSが起動用ドライブにインストールされており、かつそのドライブに他のOSが一切含まれていないこと\n\n-起動用以外のドライブにインストールされているOSが、現在起動中のOSがインストールされているドライブに置かれたブートローダーを使用していないこと\n\n以上の条件を満たしていますか?</string>
|
<string lang="ja" key="HIDDEN_OS_MULTI_BOOT">隠しOSを作成あるいは使用する場合、VeraCryptは次の条件を満たすときのみ、マルチブート設定に対応します:\n\n-現在起動中のOSが起動用ドライブにインストールされており、かつそのドライブに他のOSが一切含まれていないこと\n\n-起動用以外のドライブにインストールされているOSが、現在起動中のOSがインストールされているドライブに置かれたブートローダーを使用していないこと\n\n以上の条件を満たしていますか?</string>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<VeraCrypt>
|
<VeraCrypt>
|
||||||
<localization prog-version="1.0d">
|
<localization prog-version="1.0e">
|
||||||
<!-- Languages -->
|
<!-- Languages -->
|
||||||
<language langid="ka" name="ქართული" en-name="Georgian" version="0.1.0" translators="Kakha Lomiashvili" />
|
<language langid="ka" name="ქართული" en-name="Georgian" version="0.1.0" translators="Kakha Lomiashvili" />
|
||||||
<!-- Fonts -->
|
<!-- Fonts -->
|
||||||
@@ -1045,10 +1045,11 @@
|
|||||||
<string lang="en" key="CONFIRM_WIPE_START_DECOY_SYS_PARTITION">The entire content of the partition where the original system resides will be erased.\n\nNote: The entire content of the partition that is to be erased has been copied to this hidden system partition.</string>
|
<string lang="en" key="CONFIRM_WIPE_START_DECOY_SYS_PARTITION">The entire content of the partition where the original system resides will be erased.\n\nNote: The entire content of the partition that is to be erased has been copied to this hidden system partition.</string>
|
||||||
<string lang="en" key="WIPE_MODE_WARN">WARNING: Note that when you choose e.g. the 3-pass wipe mode, the time necessary to encrypt the partition/drive will be up to 4 times longer. Likewise, if you choose the 35-pass wipe mode, it will be up to 36 times longer (it might even take several weeks).\n\nHowever, please note that wiping will NOT be performed after the partition/drive is fully encrypted. When the partition/drive is fully encrypted, no unencrypted data is written to it. Any data being written to it is first encrypted on the fly in memory and only then is the (encrypted) data written to the disk (so the performance will NOT be affected).\n\nAre you sure you want to use the wipe mode?</string>
|
<string lang="en" key="WIPE_MODE_WARN">WARNING: Note that when you choose e.g. the 3-pass wipe mode, the time necessary to encrypt the partition/drive will be up to 4 times longer. Likewise, if you choose the 35-pass wipe mode, it will be up to 36 times longer (it might even take several weeks).\n\nHowever, please note that wiping will NOT be performed after the partition/drive is fully encrypted. When the partition/drive is fully encrypted, no unencrypted data is written to it. Any data being written to it is first encrypted on the fly in memory and only then is the (encrypted) data written to the disk (so the performance will NOT be affected).\n\nAre you sure you want to use the wipe mode?</string>
|
||||||
<string lang="ka" key="WIPE_MODE_NONE">არანაირი (უსწრაფესი)</string>
|
<string lang="ka" key="WIPE_MODE_NONE">არანაირი (უსწრაფესი)</string>
|
||||||
<string lang="en" key="WIPE_MODE_1_RAND">1-pass (random data)</string>
|
<string lang="en" key="WIPE_MODE_1_RAND">1-გზის (random data)</string>
|
||||||
<string lang="ka" key="WIPE_MODE_3_DOD_5220">3-გზის (US DoD 5220.22-M)</string>
|
<string lang="ka" key="WIPE_MODE_3_DOD_5220">3-გზის (US DoD 5220.22-M)</string>
|
||||||
<string lang="ka" key="WIPE_MODE_7_DOD_5220">7-გზის (US DoD 5220.22-M)</string>
|
<string lang="ka" key="WIPE_MODE_7_DOD_5220">7-გზის (US DoD 5220.22-M)</string>
|
||||||
<string lang="en" key="WIPE_MODE_35_GUTMANN">35-pass ("Gutmann")</string>
|
<string lang="en" key="WIPE_MODE_35_GUTMANN">35-გზის ("Gutmann")</string>
|
||||||
|
<string lang="en" key="WIPE_MODE_256">256-გზის</string>
|
||||||
<string lang="ka" key="SYS_MULTI_BOOT_MODE_TITLE">ოპერაციული სისტემების რაოდენობა</string>
|
<string lang="ka" key="SYS_MULTI_BOOT_MODE_TITLE">ოპერაციული სისტემების რაოდენობა</string>
|
||||||
<string lang="ka" key="MULTI_BOOT_FOR_ADVANCED_ONLY">გაფრთხილება: გამოუცდელი მომხმარებლისათვის არარეკომენდებულია Windows-ის შიფრაცია მრავალ-ჩატვირთვად კონფიგურაციაში.\n\nგავაგრძელოთ?</string>
|
<string lang="ka" key="MULTI_BOOT_FOR_ADVANCED_ONLY">გაფრთხილება: გამოუცდელი მომხმარებლისათვის არარეკომენდებულია Windows-ის შიფრაცია მრავალ-ჩატვირთვად კონფიგურაციაში.\n\nგავაგრძელოთ?</string>
|
||||||
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<VeraCrypt>
|
<VeraCrypt>
|
||||||
<localization prog-version="1.0d">
|
<localization prog-version="1.0e">
|
||||||
<!-- Languages -->
|
<!-- Languages -->
|
||||||
<language langid="ko" name="한국어" en-name="Korean" version="0.1.0" translators="Kim Young" />
|
<language langid="ko" name="한국어" en-name="Korean" version="0.1.0" translators="Kim Young" />
|
||||||
<!-- Fonts -->
|
<!-- Fonts -->
|
||||||
@@ -1049,6 +1049,7 @@
|
|||||||
<string lang="ko" key="WIPE_MODE_3_DOD_5220">3-번 (US DoD 5220.22-M)</string>
|
<string lang="ko" key="WIPE_MODE_3_DOD_5220">3-번 (US DoD 5220.22-M)</string>
|
||||||
<string lang="ko" key="WIPE_MODE_7_DOD_5220">7-번 (US DoD 5220.22-M)</string>
|
<string lang="ko" key="WIPE_MODE_7_DOD_5220">7-번 (US DoD 5220.22-M)</string>
|
||||||
<string lang="ko" key="WIPE_MODE_35_GUTMANN">35-번 (“GUtmann”)</string>
|
<string lang="ko" key="WIPE_MODE_35_GUTMANN">35-번 (“GUtmann”)</string>
|
||||||
|
<string lang="ko" key="WIPE_MODE_256">256-번</string>
|
||||||
<string lang="ko" key="SYS_MULTI_BOOT_MODE_TITLE">운영체제 개수</string>
|
<string lang="ko" key="SYS_MULTI_BOOT_MODE_TITLE">운영체제 개수</string>
|
||||||
<string lang="ko" key="MULTI_BOOT_FOR_ADVANCED_ONLY">주의: 경험이 없는 사용자는 “멀티-부트 설정의 윈도우”를 암호화하려고 시도해서는 안됩니다.\n\n계속하시겠습니까?</string>
|
<string lang="ko" key="MULTI_BOOT_FOR_ADVANCED_ONLY">주의: 경험이 없는 사용자는 “멀티-부트 설정의 윈도우”를 암호화하려고 시도해서는 안됩니다.\n\n계속하시겠습니까?</string>
|
||||||
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<VeraCrypt>
|
<VeraCrypt>
|
||||||
<localization prog-version="1.0d">
|
<localization prog-version="1.0e">
|
||||||
<!-- Languages -->
|
<!-- Languages -->
|
||||||
<language langid="lv" name="Latviešu" en-name="Latvian" version="0.1.0" translators="Edmunds Melkers" />
|
<language langid="lv" name="Latviešu" en-name="Latvian" version="0.1.0" translators="Edmunds Melkers" />
|
||||||
<!-- Fonts -->
|
<!-- Fonts -->
|
||||||
@@ -1049,6 +1049,7 @@
|
|||||||
<string lang="en" key="WIPE_MODE_3_DOD_5220">3-pass (US DoD 5220.22-M)</string>
|
<string lang="en" key="WIPE_MODE_3_DOD_5220">3-pass (US DoD 5220.22-M)</string>
|
||||||
<string lang="en" key="WIPE_MODE_7_DOD_5220">7-pass (US DoD 5220.22-M)</string>
|
<string lang="en" key="WIPE_MODE_7_DOD_5220">7-pass (US DoD 5220.22-M)</string>
|
||||||
<string lang="en" key="WIPE_MODE_35_GUTMANN">35-pass ("Gutmann")</string>
|
<string lang="en" key="WIPE_MODE_35_GUTMANN">35-pass ("Gutmann")</string>
|
||||||
|
<string lang="en" key="WIPE_MODE_256">256-pass</string>
|
||||||
<string lang="en" key="SYS_MULTI_BOOT_MODE_TITLE">Number of Operating Systems</string>
|
<string lang="en" key="SYS_MULTI_BOOT_MODE_TITLE">Number of Operating Systems</string>
|
||||||
<string lang="en" key="MULTI_BOOT_FOR_ADVANCED_ONLY">WARNING: Inexperienced users should never attempt to encrypt Windows in multi-boot configurations.\n\nContinue?</string>
|
<string lang="en" key="MULTI_BOOT_FOR_ADVANCED_ONLY">WARNING: Inexperienced users should never attempt to encrypt Windows in multi-boot configurations.\n\nContinue?</string>
|
||||||
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<VeraCrypt>
|
<VeraCrypt>
|
||||||
<localization prog-version="1.0d">
|
<localization prog-version="1.0e">
|
||||||
<!-- Languages -->
|
<!-- Languages -->
|
||||||
<language langid="my" name="မြန်မာ" en-name="Burmese" version="1.0.0" translators="Zaw Myo Htet" />
|
<language langid="my" name="မြန်မာ" en-name="Burmese" version="1.0.0" translators="Zaw Myo Htet" />
|
||||||
<!-- Fonts -->
|
<!-- Fonts -->
|
||||||
@@ -1051,6 +1051,7 @@
|
|||||||
<string lang="my" key="WIPE_MODE_3_DOD_5220">၃-ကြိမ် (US DoD 5220.22-M)</string>
|
<string lang="my" key="WIPE_MODE_3_DOD_5220">၃-ကြိမ် (US DoD 5220.22-M)</string>
|
||||||
<string lang="my" key="WIPE_MODE_7_DOD_5220">၇-ကြိမ် (US DoD 5220.22-M)</string>
|
<string lang="my" key="WIPE_MODE_7_DOD_5220">၇-ကြိမ် (US DoD 5220.22-M)</string>
|
||||||
<string lang="my" key="WIPE_MODE_35_GUTMANN">၃၅-ကြိမ် ("Gutmann")</string>
|
<string lang="my" key="WIPE_MODE_35_GUTMANN">၃၅-ကြိမ် ("Gutmann")</string>
|
||||||
|
<string lang="en" key="WIPE_MODE_256">256-pass</string>
|
||||||
<string lang="my" key="SYS_MULTI_BOOT_MODE_TITLE">OS စနစ် အရေအတွက်</string>
|
<string lang="my" key="SYS_MULTI_BOOT_MODE_TITLE">OS စနစ် အရေအတွက်</string>
|
||||||
<string lang="my" key="MULTI_BOOT_FOR_ADVANCED_ONLY">သတိပေးချက် - အတွေ့အကြုံမရှိသေးသော သုံးစွဲသူများသည် ၀င်းဒိုးကို Multi-boot ပြုပြင်ဖန်တီးစနစ်ဖြင့် စာဝှက်ရန် မကြိုးစားသင့်ပါ။\n\n ဆက်လုပ်မည်လား?</string>
|
<string lang="my" key="MULTI_BOOT_FOR_ADVANCED_ONLY">သတိပေးချက် - အတွေ့အကြုံမရှိသေးသော သုံးစွဲသူများသည် ၀င်းဒိုးကို Multi-boot ပြုပြင်ဖန်တီးစနစ်ဖြင့် စာဝှက်ရန် မကြိုးစားသင့်ပါ။\n\n ဆက်လုပ်မည်လား?</string>
|
||||||
<string lang="my" key="HIDDEN_OS_MULTI_BOOT">လျှို့ဝှက် OS စနစ်ကို ဖန်တီး/သုံးစွဲသည့်အခါ၊ VeraCrypt သည် အောက်ပါ အခြေအနေများနှင့် ကိုက်ညီမှ multi-boot ပြုပြင်ဖန်တီးမှုကကို ထောက်ပံ့ပေးသည် -\n\n- လောလောဆယ် အသုံးပြုနေသော OS စနစ်ကို boot drive ထဲတွင် ထည့်သွင်းရမည် ဖြစ်သည်၊ ၄င်း၌ အခြား OS စနစ်များ ရှိမည် မဟုတ်ပါ။\n\n အခြား drives များ၌ ထည့်သွင်းထားသော OS စနစ်များသည် လောလောဆယ် အသုံးပြုနေသော OS စနစ် ထည့်သွင်းထားသည့် drive ထဲတွင် ရှိသော မည်သည့် boot loader ကို အသုံးမပြုရပါ။\n\n အထက်မှ အခြေအနေများနှင့် ကိုက်ညီသလား?</string>
|
<string lang="my" key="HIDDEN_OS_MULTI_BOOT">လျှို့ဝှက် OS စနစ်ကို ဖန်တီး/သုံးစွဲသည့်အခါ၊ VeraCrypt သည် အောက်ပါ အခြေအနေများနှင့် ကိုက်ညီမှ multi-boot ပြုပြင်ဖန်တီးမှုကကို ထောက်ပံ့ပေးသည် -\n\n- လောလောဆယ် အသုံးပြုနေသော OS စနစ်ကို boot drive ထဲတွင် ထည့်သွင်းရမည် ဖြစ်သည်၊ ၄င်း၌ အခြား OS စနစ်များ ရှိမည် မဟုတ်ပါ။\n\n အခြား drives များ၌ ထည့်သွင်းထားသော OS စနစ်များသည် လောလောဆယ် အသုံးပြုနေသော OS စနစ် ထည့်သွင်းထားသည့် drive ထဲတွင် ရှိသော မည်သည့် boot loader ကို အသုံးမပြုရပါ။\n\n အထက်မှ အခြေအနေများနှင့် ကိုက်ညီသလား?</string>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<VeraCrypt>
|
<VeraCrypt>
|
||||||
<localization prog-version="1.0d">
|
<localization prog-version="1.0e">
|
||||||
<!-- Languages -->
|
<!-- Languages -->
|
||||||
<language langid="nl" name="Nederlands" en-name="Dutch" version="0.1.0" translators="Jan van der Wal" />
|
<language langid="nl" name="Nederlands" en-name="Dutch" version="0.1.0" translators="Jan van der Wal" />
|
||||||
<!-- Fonts -->
|
<!-- Fonts -->
|
||||||
@@ -1049,6 +1049,7 @@
|
|||||||
<string lang="nl" key="WIPE_MODE_3_DOD_5220">3-maal (US DoD 5220.22-M)</string>
|
<string lang="nl" key="WIPE_MODE_3_DOD_5220">3-maal (US DoD 5220.22-M)</string>
|
||||||
<string lang="nl" key="WIPE_MODE_7_DOD_5220">7-maal (US DoD 5220.22-M)</string>
|
<string lang="nl" key="WIPE_MODE_7_DOD_5220">7-maal (US DoD 5220.22-M)</string>
|
||||||
<string lang="nl" key="WIPE_MODE_35_GUTMANN">35-maal ("Gutmann")</string>
|
<string lang="nl" key="WIPE_MODE_35_GUTMANN">35-maal ("Gutmann")</string>
|
||||||
|
<string lang="nl" key="WIPE_MODE_256">256-maal</string>
|
||||||
<string lang="nl" key="SYS_MULTI_BOOT_MODE_TITLE">Aantal Operating Systemen</string>
|
<string lang="nl" key="SYS_MULTI_BOOT_MODE_TITLE">Aantal Operating Systemen</string>
|
||||||
<string lang="nl" key="MULTI_BOOT_FOR_ADVANCED_ONLY">WAARSCHUWING: Onervaren gebruikers wordt het dringend afgeraden Windows te coderen in een multi-boot configuratie.\n\nDoorgaan?</string>
|
<string lang="nl" key="MULTI_BOOT_FOR_ADVANCED_ONLY">WAARSCHUWING: Onervaren gebruikers wordt het dringend afgeraden Windows te coderen in een multi-boot configuratie.\n\nDoorgaan?</string>
|
||||||
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<VeraCrypt>
|
<VeraCrypt>
|
||||||
<localization prog-version="1.0d">
|
<localization prog-version="1.0e">
|
||||||
<!-- Languages -->
|
<!-- Languages -->
|
||||||
<language langid="nn" name="Norsk Nynorsk" en-name="Norwegian (Nynorsk)" version="0.1.0" translators="Kjell Rune Helland" />
|
<language langid="nn" name="Norsk Nynorsk" en-name="Norwegian (Nynorsk)" version="0.1.0" translators="Kjell Rune Helland" />
|
||||||
<!-- Fonts -->
|
<!-- Fonts -->
|
||||||
@@ -1049,6 +1049,7 @@
|
|||||||
<string lang="en" key="WIPE_MODE_3_DOD_5220">3-pass (US DoD 5220.22-M)</string>
|
<string lang="en" key="WIPE_MODE_3_DOD_5220">3-pass (US DoD 5220.22-M)</string>
|
||||||
<string lang="en" key="WIPE_MODE_7_DOD_5220">7-pass (US DoD 5220.22-M)</string>
|
<string lang="en" key="WIPE_MODE_7_DOD_5220">7-pass (US DoD 5220.22-M)</string>
|
||||||
<string lang="en" key="WIPE_MODE_35_GUTMANN">35-pass ("Gutmann")</string>
|
<string lang="en" key="WIPE_MODE_35_GUTMANN">35-pass ("Gutmann")</string>
|
||||||
|
<string lang="en" key="WIPE_MODE_256">256-pass</string>
|
||||||
<string lang="en" key="SYS_MULTI_BOOT_MODE_TITLE">Number of Operating Systems</string>
|
<string lang="en" key="SYS_MULTI_BOOT_MODE_TITLE">Number of Operating Systems</string>
|
||||||
<string lang="en" key="MULTI_BOOT_FOR_ADVANCED_ONLY">WARNING: Inexperienced users should never attempt to encrypt Windows in multi-boot configurations.\n\nContinue?</string>
|
<string lang="en" key="MULTI_BOOT_FOR_ADVANCED_ONLY">WARNING: Inexperienced users should never attempt to encrypt Windows in multi-boot configurations.\n\nContinue?</string>
|
||||||
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<VeraCrypt>
|
<VeraCrypt>
|
||||||
<localization prog-version="1.0d">
|
<localization prog-version="1.0e">
|
||||||
<!-- Languages -->
|
<!-- Languages -->
|
||||||
<language langid="pl" name="Polski" en-name="Polish" version="1.0.0" translators="Mirek Druchowicz, Janusz Zamecki, Sobiesław Antolak, Begina Felicysym" />
|
<language langid="pl" name="Polski" en-name="Polish" version="1.0.0" translators="Mirek Druchowicz, Janusz Zamecki, Sobiesław Antolak, Begina Felicysym" />
|
||||||
<!-- Fonts -->
|
<!-- Fonts -->
|
||||||
@@ -1049,6 +1049,7 @@
|
|||||||
<string lang="pl" key="WIPE_MODE_3_DOD_5220">3-przebiegowy (US DoD 5220.22-M)</string>
|
<string lang="pl" key="WIPE_MODE_3_DOD_5220">3-przebiegowy (US DoD 5220.22-M)</string>
|
||||||
<string lang="pl" key="WIPE_MODE_7_DOD_5220">7-przebiegowy (US DoD 5220.22-M)</string>
|
<string lang="pl" key="WIPE_MODE_7_DOD_5220">7-przebiegowy (US DoD 5220.22-M)</string>
|
||||||
<string lang="pl" key="WIPE_MODE_35_GUTMANN">35-przebiegowy ("Gutmann")</string>
|
<string lang="pl" key="WIPE_MODE_35_GUTMANN">35-przebiegowy ("Gutmann")</string>
|
||||||
|
<string lang="pl" key="WIPE_MODE_256">256-przebiegowy</string>
|
||||||
<string lang="pl" key="SYS_MULTI_BOOT_MODE_TITLE">Liczba systemów operacyjnych</string>
|
<string lang="pl" key="SYS_MULTI_BOOT_MODE_TITLE">Liczba systemów operacyjnych</string>
|
||||||
<string lang="pl" key="MULTI_BOOT_FOR_ADVANCED_ONLY">OSTRZEŻENIE: Niedoświadczeni użytkownicy nie powinni nigdy próbować szyfrować systemu Windows w konfiguracji z wieloma uruchamianymi systemami.\n\nCzy kontynuować?</string>
|
<string lang="pl" key="MULTI_BOOT_FOR_ADVANCED_ONLY">OSTRZEŻENIE: Niedoświadczeni użytkownicy nie powinni nigdy próbować szyfrować systemu Windows w konfiguracji z wieloma uruchamianymi systemami.\n\nCzy kontynuować?</string>
|
||||||
<string lang="pl" key="HIDDEN_OS_MULTI_BOOT">Podczas tworzenia/używania ukrytego systemu operacyjnego, VeraCrypt obsługuje konfigurację uruchamiania wielu systemów tylko gdy zostaną spełnione następujące warunki:\n\n- Obecnie działający system operacyjny musi być zainstalowany na napędzie rozruchowym, który nie może zawieraćżadnych innych systemów operacyjnych.\n\n- Systemy operacyjne zainstalowane na innych dyskach nie mogą używać żadnego programu startowego znajdującego się na dysku, na którym zainstalowany jest obecnie działający system operacyjny.\n\nCzy powyższe wymagania są spełnione?</string>
|
<string lang="pl" key="HIDDEN_OS_MULTI_BOOT">Podczas tworzenia/używania ukrytego systemu operacyjnego, VeraCrypt obsługuje konfigurację uruchamiania wielu systemów tylko gdy zostaną spełnione następujące warunki:\n\n- Obecnie działający system operacyjny musi być zainstalowany na napędzie rozruchowym, który nie może zawieraćżadnych innych systemów operacyjnych.\n\n- Systemy operacyjne zainstalowane na innych dyskach nie mogą używać żadnego programu startowego znajdującego się na dysku, na którym zainstalowany jest obecnie działający system operacyjny.\n\nCzy powyższe wymagania są spełnione?</string>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<VeraCrypt>
|
<VeraCrypt>
|
||||||
<localization prog-version="1.0d">
|
<localization prog-version="1.0e">
|
||||||
<!-- Languages -->
|
<!-- Languages -->
|
||||||
<language langid="pt-br" name="Português-Brasil" en-name="Portuguese (Brazil)" version="0.1.0" translators="Thiago C. L. Mendes, Lecidio S. Alencar , Lucas C. Ferreira" />
|
<language langid="pt-br" name="Português-Brasil" en-name="Portuguese (Brazil)" version="0.1.0" translators="Thiago C. L. Mendes, Lecidio S. Alencar , Lucas C. Ferreira" />
|
||||||
<!-- Fonts -->
|
<!-- Fonts -->
|
||||||
@@ -1049,6 +1049,7 @@
|
|||||||
<string lang="pt-br" key="WIPE_MODE_3_DOD_5220">3 ciclos (US DoD 5220.22-M)</string>
|
<string lang="pt-br" key="WIPE_MODE_3_DOD_5220">3 ciclos (US DoD 5220.22-M)</string>
|
||||||
<string lang="pt-br" key="WIPE_MODE_7_DOD_5220">7 ciclos (US DoD 5220.22-M)</string>
|
<string lang="pt-br" key="WIPE_MODE_7_DOD_5220">7 ciclos (US DoD 5220.22-M)</string>
|
||||||
<string lang="pt-br" key="WIPE_MODE_35_GUTMANN">35 ciclos ('Gutmann')</string>
|
<string lang="pt-br" key="WIPE_MODE_35_GUTMANN">35 ciclos ('Gutmann')</string>
|
||||||
|
<string lang="pt-br" key="WIPE_MODE_256">256 ciclos</string>
|
||||||
<string lang="pt-br" key="SYS_MULTI_BOOT_MODE_TITLE">Número de Sistemas Operacionais</string>
|
<string lang="pt-br" key="SYS_MULTI_BOOT_MODE_TITLE">Número de Sistemas Operacionais</string>
|
||||||
<string lang="pt-br" key="MULTI_BOOT_FOR_ADVANCED_ONLY">AVISO: usuários inexperientes nunca devem tentar criptografar o Windows em configurações de boot múltiplo.\n\nDeseja continuar?</string>
|
<string lang="pt-br" key="MULTI_BOOT_FOR_ADVANCED_ONLY">AVISO: usuários inexperientes nunca devem tentar criptografar o Windows em configurações de boot múltiplo.\n\nDeseja continuar?</string>
|
||||||
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<VeraCrypt>
|
<VeraCrypt>
|
||||||
<localization prog-version="1.0d">
|
<localization prog-version="1.0e">
|
||||||
<!-- Languages -->
|
<!-- Languages -->
|
||||||
<language langid="ru" name="Русский" en-name="Russian" version="1.0.0" translators="Dmitry Yerokhin" />
|
<language langid="ru" name="Русский" en-name="Russian" version="1.0.0" translators="Dmitry Yerokhin" />
|
||||||
<!-- Fonts -->
|
<!-- Fonts -->
|
||||||
@@ -1049,6 +1049,7 @@
|
|||||||
<string lang="ru" key="WIPE_MODE_3_DOD_5220">3 прохода (US DoD 5220.22-M)</string>
|
<string lang="ru" key="WIPE_MODE_3_DOD_5220">3 прохода (US DoD 5220.22-M)</string>
|
||||||
<string lang="ru" key="WIPE_MODE_7_DOD_5220">7 проходов (US DoD 5220.22-M)</string>
|
<string lang="ru" key="WIPE_MODE_7_DOD_5220">7 проходов (US DoD 5220.22-M)</string>
|
||||||
<string lang="ru" key="WIPE_MODE_35_GUTMANN">35 проходов ("Gutmann")</string>
|
<string lang="ru" key="WIPE_MODE_35_GUTMANN">35 проходов ("Gutmann")</string>
|
||||||
|
<string lang="ru" key="WIPE_MODE_256">256 проходов</string>
|
||||||
<string lang="ru" key="SYS_MULTI_BOOT_MODE_TITLE">Число операционных систем</string>
|
<string lang="ru" key="SYS_MULTI_BOOT_MODE_TITLE">Число операционных систем</string>
|
||||||
<string lang="ru" key="MULTI_BOOT_FOR_ADVANCED_ONLY">ВНИМАНИЕ: Неопытным пользователям не следует пытаться шифровать Windows в мультизагрузочных конфигурациях.\n\nПродолжить?</string>
|
<string lang="ru" key="MULTI_BOOT_FOR_ADVANCED_ONLY">ВНИМАНИЕ: Неопытным пользователям не следует пытаться шифровать Windows в мультизагрузочных конфигурациях.\n\nПродолжить?</string>
|
||||||
<string lang="ru" key="HIDDEN_OS_MULTI_BOOT">При создании/использовании скрытой операционной системы VeraCrypt поддерживает мультизагрузочные конфигурации только при соблюдении следующих условий:\n\n- работающая сейчас операционная система должна быть установлена на загрузочном диске, на котором не может быть других операционных систем;\n\n- операционные системы, установленные на других дисках, не должны использовать загрузчик, находящийся на диске, на котором установлена текущая операционная система.\n\nЭти условия соблюдены?</string>
|
<string lang="ru" key="HIDDEN_OS_MULTI_BOOT">При создании/использовании скрытой операционной системы VeraCrypt поддерживает мультизагрузочные конфигурации только при соблюдении следующих условий:\n\n- работающая сейчас операционная система должна быть установлена на загрузочном диске, на котором не может быть других операционных систем;\n\n- операционные системы, установленные на других дисках, не должны использовать загрузчик, находящийся на диске, на котором установлена текущая операционная система.\n\nЭти условия соблюдены?</string>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<VeraCrypt>
|
<VeraCrypt>
|
||||||
<localization prog-version="1.0d">
|
<localization prog-version="1.0e">
|
||||||
<!-- Languages -->
|
<!-- Languages -->
|
||||||
<language langid="sk" name="Slovenčina" en-name="Slovak" version="0.1.0" translators="Kamil David" />
|
<language langid="sk" name="Slovenčina" en-name="Slovak" version="0.1.0" translators="Kamil David" />
|
||||||
<!-- Fonts -->
|
<!-- Fonts -->
|
||||||
@@ -1049,6 +1049,7 @@
|
|||||||
<string lang="en" key="WIPE_MODE_3_DOD_5220">3-pass (US DoD 5220.22-M)</string>
|
<string lang="en" key="WIPE_MODE_3_DOD_5220">3-pass (US DoD 5220.22-M)</string>
|
||||||
<string lang="en" key="WIPE_MODE_7_DOD_5220">7-pass (US DoD 5220.22-M)</string>
|
<string lang="en" key="WIPE_MODE_7_DOD_5220">7-pass (US DoD 5220.22-M)</string>
|
||||||
<string lang="en" key="WIPE_MODE_35_GUTMANN">35-pass ("Gutmann")</string>
|
<string lang="en" key="WIPE_MODE_35_GUTMANN">35-pass ("Gutmann")</string>
|
||||||
|
<string lang="en" key="WIPE_MODE_256">256-pass</string>
|
||||||
<string lang="en" key="SYS_MULTI_BOOT_MODE_TITLE">Number of Operating Systems</string>
|
<string lang="en" key="SYS_MULTI_BOOT_MODE_TITLE">Number of Operating Systems</string>
|
||||||
<string lang="en" key="MULTI_BOOT_FOR_ADVANCED_ONLY">WARNING: Inexperienced users should never attempt to encrypt Windows in multi-boot configurations.\n\nContinue?</string>
|
<string lang="en" key="MULTI_BOOT_FOR_ADVANCED_ONLY">WARNING: Inexperienced users should never attempt to encrypt Windows in multi-boot configurations.\n\nContinue?</string>
|
||||||
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<VeraCrypt>
|
<VeraCrypt>
|
||||||
<localization prog-version="1.0d">
|
<localization prog-version="1.0e">
|
||||||
<!-- Languages -->
|
<!-- Languages -->
|
||||||
<language langid="sl" name="Slovenščina" en-name="Slovenian" version="0.1.0" translators="Erik David Salam" />
|
<language langid="sl" name="Slovenščina" en-name="Slovenian" version="0.1.0" translators="Erik David Salam" />
|
||||||
<!-- Fonts -->
|
<!-- Fonts -->
|
||||||
@@ -1049,6 +1049,7 @@
|
|||||||
<string lang="en" key="WIPE_MODE_3_DOD_5220">3-pass (US DoD 5220.22-M)</string>
|
<string lang="en" key="WIPE_MODE_3_DOD_5220">3-pass (US DoD 5220.22-M)</string>
|
||||||
<string lang="en" key="WIPE_MODE_7_DOD_5220">7-pass (US DoD 5220.22-M)</string>
|
<string lang="en" key="WIPE_MODE_7_DOD_5220">7-pass (US DoD 5220.22-M)</string>
|
||||||
<string lang="en" key="WIPE_MODE_35_GUTMANN">35-pass ("Gutmann")</string>
|
<string lang="en" key="WIPE_MODE_35_GUTMANN">35-pass ("Gutmann")</string>
|
||||||
|
<string lang="en" key="WIPE_MODE_256">256-pass</string>
|
||||||
<string lang="sl" key="SYS_MULTI_BOOT_MODE_TITLE">Število operacijskih sistemov</string>
|
<string lang="sl" key="SYS_MULTI_BOOT_MODE_TITLE">Število operacijskih sistemov</string>
|
||||||
<string lang="sl" key="MULTI_BOOT_FOR_ADVANCED_ONLY">OPOZORILO: Neizkušeni uporabniki naj ne bi nikoli poizkušali šifrirati Okna v nastavitvi poljubnega zagona.\n\nNadaljujem?</string>
|
<string lang="sl" key="MULTI_BOOT_FOR_ADVANCED_ONLY">OPOZORILO: Neizkušeni uporabniki naj ne bi nikoli poizkušali šifrirati Okna v nastavitvi poljubnega zagona.\n\nNadaljujem?</string>
|
||||||
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<VeraCrypt>
|
<VeraCrypt>
|
||||||
<localization prog-version="1.0d">
|
<localization prog-version="1.0e">
|
||||||
<!-- Languages -->
|
<!-- Languages -->
|
||||||
<language langid="sv" name="Svenska" en-name="Swedish" version="1.0.0" translators="Peter Runesson" />
|
<language langid="sv" name="Svenska" en-name="Swedish" version="1.0.0" translators="Peter Runesson" />
|
||||||
<!-- Fonts -->
|
<!-- Fonts -->
|
||||||
@@ -1049,6 +1049,7 @@
|
|||||||
<string lang="sv" key="WIPE_MODE_3_DOD_5220">Tre steg (US DoD 5220.22-M)</string>
|
<string lang="sv" key="WIPE_MODE_3_DOD_5220">Tre steg (US DoD 5220.22-M)</string>
|
||||||
<string lang="sv" key="WIPE_MODE_7_DOD_5220">Sju steg (US DoD 5220.22-M)</string>
|
<string lang="sv" key="WIPE_MODE_7_DOD_5220">Sju steg (US DoD 5220.22-M)</string>
|
||||||
<string lang="sv" key="WIPE_MODE_35_GUTMANN">35 steg (”Gutmann”)</string>
|
<string lang="sv" key="WIPE_MODE_35_GUTMANN">35 steg (”Gutmann”)</string>
|
||||||
|
<string lang="sv" key="WIPE_MODE_256">256 steg</string>
|
||||||
<string lang="sv" key="SYS_MULTI_BOOT_MODE_TITLE">Antal operativsystem</string>
|
<string lang="sv" key="SYS_MULTI_BOOT_MODE_TITLE">Antal operativsystem</string>
|
||||||
<string lang="sv" key="MULTI_BOOT_FOR_ADVANCED_ONLY">VARNING: Oerfarna användare bör aldrig försöka kryptera Windows i flervalsstartkonfigurationer.\n\nVill du fortsätta?</string>
|
<string lang="sv" key="MULTI_BOOT_FOR_ADVANCED_ONLY">VARNING: Oerfarna användare bör aldrig försöka kryptera Windows i flervalsstartkonfigurationer.\n\nVill du fortsätta?</string>
|
||||||
<string lang="sv" key="HIDDEN_OS_MULTI_BOOT">Endast när följande villkor är uppfyllda stöder VeraCrypt flervalsstartkonfigurationer vid skapandet eller användandet av ett dolt operativsystem:\n\n- Det aktuella operativsystemet måste vara installerat på startenheten, som inte får innehålla några andra operativsystem.\n\n- Operativsystem installerade på övriga enheter får inte använda sig av någon startinläsare belägen på enheten där det aktuella operativsystemet är installerat.\n\nÄr ovanstående villkor uppfyllda?</string>
|
<string lang="sv" key="HIDDEN_OS_MULTI_BOOT">Endast när följande villkor är uppfyllda stöder VeraCrypt flervalsstartkonfigurationer vid skapandet eller användandet av ett dolt operativsystem:\n\n- Det aktuella operativsystemet måste vara installerat på startenheten, som inte får innehålla några andra operativsystem.\n\n- Operativsystem installerade på övriga enheter får inte använda sig av någon startinläsare belägen på enheten där det aktuella operativsystemet är installerat.\n\nÄr ovanstående villkor uppfyllda?</string>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<VeraCrypt>
|
<VeraCrypt>
|
||||||
<localization prog-version="1.0d">
|
<localization prog-version="1.0e">
|
||||||
<!-- Languages -->
|
<!-- Languages -->
|
||||||
<language langid="tr" name="Türkçe" en-name="Turkish" version="0.1.0" translators="Ali İskender Turan, Zeynel Abidin Öztürk" />
|
<language langid="tr" name="Türkçe" en-name="Turkish" version="0.1.0" translators="Ali İskender Turan, Zeynel Abidin Öztürk" />
|
||||||
<!-- Fonts -->
|
<!-- Fonts -->
|
||||||
@@ -1049,6 +1049,7 @@
|
|||||||
<string lang="en" key="WIPE_MODE_3_DOD_5220">3-pass (US DoD 5220.22-M)</string>
|
<string lang="en" key="WIPE_MODE_3_DOD_5220">3-pass (US DoD 5220.22-M)</string>
|
||||||
<string lang="en" key="WIPE_MODE_7_DOD_5220">7-pass (US DoD 5220.22-M)</string>
|
<string lang="en" key="WIPE_MODE_7_DOD_5220">7-pass (US DoD 5220.22-M)</string>
|
||||||
<string lang="en" key="WIPE_MODE_35_GUTMANN">35-pass ("Gutmann")</string>
|
<string lang="en" key="WIPE_MODE_35_GUTMANN">35-pass ("Gutmann")</string>
|
||||||
|
<string lang="en" key="WIPE_MODE_256">256-pass</string>
|
||||||
<string lang="en" key="SYS_MULTI_BOOT_MODE_TITLE">Number of Operating Systems</string>
|
<string lang="en" key="SYS_MULTI_BOOT_MODE_TITLE">Number of Operating Systems</string>
|
||||||
<string lang="en" key="MULTI_BOOT_FOR_ADVANCED_ONLY">WARNING: Inexperienced users should never attempt to encrypt Windows in multi-boot configurations.\n\nContinue?</string>
|
<string lang="en" key="MULTI_BOOT_FOR_ADVANCED_ONLY">WARNING: Inexperienced users should never attempt to encrypt Windows in multi-boot configurations.\n\nContinue?</string>
|
||||||
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<VeraCrypt>
|
<VeraCrypt>
|
||||||
<localization prog-version="1.0d">
|
<localization prog-version="1.0e">
|
||||||
<!-- Languages -->
|
<!-- Languages -->
|
||||||
<language langid="uk" name="Українська" en-name="Ukrainian" version="1.0.0" translators="Kravchuk Olexandr, Babchuk Volodymyr" />
|
<language langid="uk" name="Українська" en-name="Ukrainian" version="1.0.0" translators="Kravchuk Olexandr, Babchuk Volodymyr" />
|
||||||
<!-- Fonts -->
|
<!-- Fonts -->
|
||||||
@@ -1049,6 +1049,7 @@
|
|||||||
<string lang="uk" key="WIPE_MODE_3_DOD_5220">3 проходи (US DoD 5220.22-M)</string>
|
<string lang="uk" key="WIPE_MODE_3_DOD_5220">3 проходи (US DoD 5220.22-M)</string>
|
||||||
<string lang="uk" key="WIPE_MODE_7_DOD_5220">7 проходів (US DoD 5220.22-M)</string>
|
<string lang="uk" key="WIPE_MODE_7_DOD_5220">7 проходів (US DoD 5220.22-M)</string>
|
||||||
<string lang="uk" key="WIPE_MODE_35_GUTMANN">35 проходів ("Gutmann")</string>
|
<string lang="uk" key="WIPE_MODE_35_GUTMANN">35 проходів ("Gutmann")</string>
|
||||||
|
<string lang="uk" key="WIPE_MODE_256">256 проходів</string>
|
||||||
<string lang="uk" key="SYS_MULTI_BOOT_MODE_TITLE">Число операційних систем</string>
|
<string lang="uk" key="SYS_MULTI_BOOT_MODE_TITLE">Число операційних систем</string>
|
||||||
<string lang="uk" key="MULTI_BOOT_FOR_ADVANCED_ONLY">УВАГА: недосвідченим користувачам не слід намагатися шифрувати Windows в мультизагрузочних конфігураціях.\n\nПродовжити?</string>
|
<string lang="uk" key="MULTI_BOOT_FOR_ADVANCED_ONLY">УВАГА: недосвідченим користувачам не слід намагатися шифрувати Windows в мультизагрузочних конфігураціях.\n\nПродовжити?</string>
|
||||||
<string lang="uk" key="HIDDEN_OS_MULTI_BOOT">При створенні/використанні прихованої операційної системи VeraCrypt підтримує Мультизавантажуючі конфігурації тільки при дотриманні наступних умов: \n\n-працююча зараз операційна система повинна бути встановлена на завантажувальному диску, на якому не може бути інших операційних систем;\n\n-операційні системи, встановлені на інших дисках, не повинні використовувати завантажувач, що знаходиться на диску, на якому встановлена поточна операційна система.\n\nЦі умови дотримані?</string>
|
<string lang="uk" key="HIDDEN_OS_MULTI_BOOT">При створенні/використанні прихованої операційної системи VeraCrypt підтримує Мультизавантажуючі конфігурації тільки при дотриманні наступних умов: \n\n-працююча зараз операційна система повинна бути встановлена на завантажувальному диску, на якому не може бути інших операційних систем;\n\n-операційні системи, встановлені на інших дисках, не повинні використовувати завантажувач, що знаходиться на диску, на якому встановлена поточна операційна система.\n\nЦі умови дотримані?</string>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<VeraCrypt>
|
<VeraCrypt>
|
||||||
<localization prog-version="1.0d">
|
<localization prog-version="1.0e">
|
||||||
<!-- Languages -->
|
<!-- Languages -->
|
||||||
<language langid="uz" name="Ўзбекча" en-name="Uzbek (Cyrillic)" version="0.1.0" translators="Abdurauf Azizov, Dmitry Yerokhin" />
|
<language langid="uz" name="Ўзбекча" en-name="Uzbek (Cyrillic)" version="0.1.0" translators="Abdurauf Azizov, Dmitry Yerokhin" />
|
||||||
<!-- Fonts -->
|
<!-- Fonts -->
|
||||||
@@ -1049,6 +1049,7 @@
|
|||||||
<string lang="uz" key="WIPE_MODE_3_DOD_5220">3 прохода (US DoD 5220.22-M)</string>
|
<string lang="uz" key="WIPE_MODE_3_DOD_5220">3 прохода (US DoD 5220.22-M)</string>
|
||||||
<string lang="uz" key="WIPE_MODE_7_DOD_5220">7 проходов (US DoD 5220.22-M)</string>
|
<string lang="uz" key="WIPE_MODE_7_DOD_5220">7 проходов (US DoD 5220.22-M)</string>
|
||||||
<string lang="uz" key="WIPE_MODE_35_GUTMANN">35 проходов ("Gutmann")</string>
|
<string lang="uz" key="WIPE_MODE_35_GUTMANN">35 проходов ("Gutmann")</string>
|
||||||
|
<string lang="uz" key="WIPE_MODE_256">256 проходов</string>
|
||||||
<string lang="uz" key="SYS_MULTI_BOOT_MODE_TITLE">Число операционных систем</string>
|
<string lang="uz" key="SYS_MULTI_BOOT_MODE_TITLE">Число операционных систем</string>
|
||||||
<string lang="uz" key="MULTI_BOOT_FOR_ADVANCED_ONLY">ВНИМАНИЕ: Неопытным пользователям не следует пытаться шифровать Windows в мультизагрузочных конфигурациях.\n\nПродолжить?</string>
|
<string lang="uz" key="MULTI_BOOT_FOR_ADVANCED_ONLY">ВНИМАНИЕ: Неопытным пользователям не следует пытаться шифровать Windows в мультизагрузочных конфигурациях.\n\nПродолжить?</string>
|
||||||
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<VeraCrypt>
|
<VeraCrypt>
|
||||||
<localization prog-version="1.0d">
|
<localization prog-version="1.0e">
|
||||||
<!-- Languages -->
|
<!-- Languages -->
|
||||||
<language langid="vi" name="Tiếng Việt" en-name="Vietnamese" version="0.1.0" translators="Nguyễn Kim Huy" />
|
<language langid="vi" name="Tiếng Việt" en-name="Vietnamese" version="0.1.0" translators="Nguyễn Kim Huy" />
|
||||||
<!-- Fonts -->
|
<!-- Fonts -->
|
||||||
@@ -1049,6 +1049,7 @@
|
|||||||
<string lang="en" key="WIPE_MODE_3_DOD_5220">3-pass (US DoD 5220.22-M)</string>
|
<string lang="en" key="WIPE_MODE_3_DOD_5220">3-pass (US DoD 5220.22-M)</string>
|
||||||
<string lang="en" key="WIPE_MODE_7_DOD_5220">7-pass (US DoD 5220.22-M)</string>
|
<string lang="en" key="WIPE_MODE_7_DOD_5220">7-pass (US DoD 5220.22-M)</string>
|
||||||
<string lang="vi" key="WIPE_MODE_35_GUTMANN">35-pass ("Gutmann")</string>
|
<string lang="vi" key="WIPE_MODE_35_GUTMANN">35-pass ("Gutmann")</string>
|
||||||
|
<string lang="vi" key="WIPE_MODE_256">256-pass</string>
|
||||||
<string lang="vi" key="SYS_MULTI_BOOT_MODE_TITLE">Số Hệ Điều hành</string>
|
<string lang="vi" key="SYS_MULTI_BOOT_MODE_TITLE">Số Hệ Điều hành</string>
|
||||||
<string lang="vi" key="MULTI_BOOT_FOR_ADVANCED_ONLY">CẢNH BÁO: Người dùng không kinh nghiệm không bao giờ nên thử mã hóa Windows theo cấu hình khởi động đa hệ.\n\nTiếp tục không?</string>
|
<string lang="vi" key="MULTI_BOOT_FOR_ADVANCED_ONLY">CẢNH BÁO: Người dùng không kinh nghiệm không bao giờ nên thử mã hóa Windows theo cấu hình khởi động đa hệ.\n\nTiếp tục không?</string>
|
||||||
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<VeraCrypt>
|
<VeraCrypt>
|
||||||
<localization prog-version="1.0d">
|
<localization prog-version="1.0e">
|
||||||
<!-- Languages -->
|
<!-- Languages -->
|
||||||
<language langid="zh-cn" name="简体中文" en-name="Chinese (Simplified)" version="1.0.0" translators="Barney Li" />
|
<language langid="zh-cn" name="简体中文" en-name="Chinese (Simplified)" version="1.0.0" translators="Barney Li" />
|
||||||
<!-- Fonts -->
|
<!-- Fonts -->
|
||||||
@@ -1049,6 +1049,7 @@
|
|||||||
<string lang="zh-cn" key="WIPE_MODE_3_DOD_5220">3-次擦除(US DoD 5220.22-M)</string>
|
<string lang="zh-cn" key="WIPE_MODE_3_DOD_5220">3-次擦除(US DoD 5220.22-M)</string>
|
||||||
<string lang="zh-cn" key="WIPE_MODE_7_DOD_5220">7-次擦除(US DoD 5220.22-M)</string>
|
<string lang="zh-cn" key="WIPE_MODE_7_DOD_5220">7-次擦除(US DoD 5220.22-M)</string>
|
||||||
<string lang="zh-cn" key="WIPE_MODE_35_GUTMANN">35-次擦除("Gutmann")</string>
|
<string lang="zh-cn" key="WIPE_MODE_35_GUTMANN">35-次擦除("Gutmann")</string>
|
||||||
|
<string lang="zh-cn" key="WIPE_MODE_256">256-次擦除</string>
|
||||||
<string lang="zh-cn" key="SYS_MULTI_BOOT_MODE_TITLE">操作系统数目</string>
|
<string lang="zh-cn" key="SYS_MULTI_BOOT_MODE_TITLE">操作系统数目</string>
|
||||||
<string lang="zh-cn" key="MULTI_BOOT_FOR_ADVANCED_ONLY">警告:入门用户请勿尝试加密多重启动方式的 Windows 。\n\n希望继续吗?</string>
|
<string lang="zh-cn" key="MULTI_BOOT_FOR_ADVANCED_ONLY">警告:入门用户请勿尝试加密多重启动方式的 Windows 。\n\n希望继续吗?</string>
|
||||||
<string lang="zh-cn" key="HIDDEN_OS_MULTI_BOOT">当创建或使用隐形操作系统时,只有满足如下条件时,VeraCrypt 才支持多重启动配置:\n\n- 当前运行操作系统必须安装在启动驱动器,并且该驱动器中不能包含其它操作系统。\n\n- 安装在其它驱动器的操作系统不能使用任何位于当前运行操作系统所在驱动器中的启动管理器。\n\n确认满足以上条件吗?</string>
|
<string lang="zh-cn" key="HIDDEN_OS_MULTI_BOOT">当创建或使用隐形操作系统时,只有满足如下条件时,VeraCrypt 才支持多重启动配置:\n\n- 当前运行操作系统必须安装在启动驱动器,并且该驱动器中不能包含其它操作系统。\n\n- 安装在其它驱动器的操作系统不能使用任何位于当前运行操作系统所在驱动器中的启动管理器。\n\n确认满足以上条件吗?</string>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<VeraCrypt>
|
<VeraCrypt>
|
||||||
<localization prog-version="1.0d">
|
<localization prog-version="1.0e">
|
||||||
<!-- Languages -->
|
<!-- Languages -->
|
||||||
<language langid="zh-hk" name="繁體中文" en-name="Chinese (Hong Kong)" version="0.1.0" translators="PUN Chi Ho" />
|
<language langid="zh-hk" name="繁體中文" en-name="Chinese (Hong Kong)" version="0.1.0" translators="PUN Chi Ho" />
|
||||||
<!-- Fonts -->
|
<!-- Fonts -->
|
||||||
@@ -1049,6 +1049,7 @@
|
|||||||
<string lang="zh-hk" key="WIPE_MODE_3_DOD_5220">3-次擦除(US DoD 5220.22-M)</string>
|
<string lang="zh-hk" key="WIPE_MODE_3_DOD_5220">3-次擦除(US DoD 5220.22-M)</string>
|
||||||
<string lang="zh-hk" key="WIPE_MODE_7_DOD_5220">7-次擦除(US DoD 5220.22-M)</string>
|
<string lang="zh-hk" key="WIPE_MODE_7_DOD_5220">7-次擦除(US DoD 5220.22-M)</string>
|
||||||
<string lang="zh-hk" key="WIPE_MODE_35_GUTMANN">35-次擦除("Gutmann")</string>
|
<string lang="zh-hk" key="WIPE_MODE_35_GUTMANN">35-次擦除("Gutmann")</string>
|
||||||
|
<string lang="zh-hk" key="WIPE_MODE_256">256-次擦除</string>
|
||||||
<string lang="zh-hk" key="SYS_MULTI_BOOT_MODE_TITLE">作業系統數目</string>
|
<string lang="zh-hk" key="SYS_MULTI_BOOT_MODE_TITLE">作業系統數目</string>
|
||||||
<string lang="zh-hk" key="MULTI_BOOT_FOR_ADVANCED_ONLY">警告:入門用戶應當從來不嘗試加密多重啟動方式的 Windows 。\n\n希望繼續嗎?</string>
|
<string lang="zh-hk" key="MULTI_BOOT_FOR_ADVANCED_ONLY">警告:入門用戶應當從來不嘗試加密多重啟動方式的 Windows 。\n\n希望繼續嗎?</string>
|
||||||
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<VeraCrypt>
|
<VeraCrypt>
|
||||||
<localization prog-version="1.0d">
|
<localization prog-version="1.0e">
|
||||||
<!-- Languages -->
|
<!-- Languages -->
|
||||||
<language langid="zh-tw" name="繁體中文" en-name="Chinese (Taiwan)" version="0.1.0" translators="Barney Li, Simon Ma, ChangMing Hsu" />
|
<language langid="zh-tw" name="繁體中文" en-name="Chinese (Taiwan)" version="0.1.0" translators="Barney Li, Simon Ma, ChangMing Hsu" />
|
||||||
<!-- Fonts -->
|
<!-- Fonts -->
|
||||||
@@ -1049,6 +1049,7 @@
|
|||||||
<string lang="zh-tw" key="WIPE_MODE_3_DOD_5220">3 次複寫(美國國防部 5220.22-M 演算法)</string>
|
<string lang="zh-tw" key="WIPE_MODE_3_DOD_5220">3 次複寫(美國國防部 5220.22-M 演算法)</string>
|
||||||
<string lang="zh-tw" key="WIPE_MODE_7_DOD_5220">7 次複寫(美國國防部 5220.22-M 演算法)</string>
|
<string lang="zh-tw" key="WIPE_MODE_7_DOD_5220">7 次複寫(美國國防部 5220.22-M 演算法)</string>
|
||||||
<string lang="en" key="WIPE_MODE_35_GUTMANN">35-pass ("Gutmann")</string>
|
<string lang="en" key="WIPE_MODE_35_GUTMANN">35-pass ("Gutmann")</string>
|
||||||
|
<string lang="en" key="WIPE_MODE_256">256-pass</string>
|
||||||
<string lang="zh-tw" key="SYS_MULTI_BOOT_MODE_TITLE">作業系統數目</string>
|
<string lang="zh-tw" key="SYS_MULTI_BOOT_MODE_TITLE">作業系統數目</string>
|
||||||
<string lang="zh-tw" key="MULTI_BOOT_FOR_ADVANCED_ONLY">警告:經驗不足的使用者從不應該試圖在多重開機的組態設定下加密 Windows。\n\n要繼續嗎?</string>
|
<string lang="zh-tw" key="MULTI_BOOT_FOR_ADVANCED_ONLY">警告:經驗不足的使用者從不應該試圖在多重開機的組態設定下加密 Windows。\n\n要繼續嗎?</string>
|
||||||
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
||||||
|
|||||||
@@ -24,9 +24,9 @@
|
|||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCNMakeTool"
|
Name="VCNMakeTool"
|
||||||
BuildCommandLine="md Release 2>NUL:
nmake.exe /nologo RELEASE=1

md Release_AES 2>NUL:
nmake.exe /nologo RELEASE=1 SINGLE_CIPHER=AES

md Release_Serpent 2>NUL:
nmake.exe /nologo RELEASE=1 SINGLE_CIPHER=SERPENT

md Release_Twofish 2>NUL:
nmake.exe /nologo RELEASE=1 SINGLE_CIPHER=TWOFISH

md Rescue 2>NUL:
nmake.exe /nologo RELEASE=1 RESCUE_DISK=1

md Rescue_AES 2>NUL:
nmake.exe /nologo RELEASE=1 SINGLE_CIPHER=AES RESCUE_DISK=1

md Rescue_Serpent 2>NUL:
nmake.exe /nologo RELEASE=1 SINGLE_CIPHER=SERPENT RESCUE_DISK=1

md Rescue_Twofish 2>NUL:
nmake.exe /nologo RELEASE=1 SINGLE_CIPHER=TWOFISH RESCUE_DISK=1"
|
BuildCommandLine="md Release 2>NUL:
nmake.exe /nologo RELEASE=1

md Release_SHA2 2>NUL:
nmake.exe /nologo RELEASE=1 SINGLE_PRF=SHA2

md Release_AES 2>NUL:
nmake.exe /nologo RELEASE=1 SINGLE_CIPHER=AES

md Release_AES_SHA2 2>NUL:
nmake.exe /nologo RELEASE=1 SINGLE_CIPHER=AES SINGLE_PRF=SHA2

md Release_Serpent 2>NUL:
nmake.exe /nologo RELEASE=1 SINGLE_CIPHER=SERPENT

md Release_Serpent_SHA2 2>NUL:
nmake.exe /nologo RELEASE=1 SINGLE_CIPHER=SERPENT SINGLE_PRF=SHA2

md Release_Twofish 2>NUL:
nmake.exe /nologo RELEASE=1 SINGLE_CIPHER=TWOFISH

md Release_Twofish_SHA2 2>NUL:
nmake.exe /nologo RELEASE=1 SINGLE_CIPHER=TWOFISH SINGLE_PRF=SHA2

md Rescue 2>NUL:
nmake.exe /nologo RELEASE=1 RESCUE_DISK=1

md Rescue_SHA2 2>NUL:
nmake.exe /nologo RELEASE=1 RESCUE_DISK=1 SINGLE_PRF=SHA2

md Rescue_AES 2>NUL:
nmake.exe /nologo RELEASE=1 SINGLE_CIPHER=AES RESCUE_DISK=1

md Rescue_AES_SHA2 2>NUL:
nmake.exe /nologo RELEASE=1 SINGLE_CIPHER=AES RESCUE_DISK=1 SINGLE_PRF=SHA2

md Rescue_Serpent 2>NUL:
nmake.exe /nologo RELEASE=1 SINGLE_CIPHER=SERPENT RESCUE_DISK=1

md Rescue_Serpent_SHA2 2>NUL:
nmake.exe /nologo RELEASE=1 SINGLE_CIPHER=SERPENT RESCUE_DISK=1 SINGLE_PRF=SHA2

md Rescue_Twofish 2>NUL:
nmake.exe /nologo RELEASE=1 SINGLE_CIPHER=TWOFISH RESCUE_DISK=1

md Rescue_Twofish_SHA2 2>NUL:
nmake.exe /nologo RELEASE=1 SINGLE_CIPHER=TWOFISH RESCUE_DISK=1 SINGLE_PRF=SHA2"
|
||||||
ReBuildCommandLine="del /q /s Release >NUL:
md Release 2>NUL:
nmake.exe /nologo RELEASE=1

del /q /s Release_AES >NUL:
md Release_AES 2>NUL:
nmake.exe /nologo RELEASE=1 SINGLE_CIPHER=AES

del /q /s Release_Serpent >NUL:
md Release_Serpent 2>NUL:
nmake.exe /nologo RELEASE=1 SINGLE_CIPHER=SERPENT

del /q /s Release_Twofish >NUL:
md Release_Twofish 2>NUL:
nmake.exe /nologo RELEASE=1 SINGLE_CIPHER=TWOFISH

del /q /s Rescue >NUL:
md Rescue 2>NUL:
nmake.exe /nologo RELEASE=1 RESCUE_DISK=1

del /q /s Rescue_AES >NUL:
md Rescue_AES 2>NUL:
nmake.exe /nologo RELEASE=1 SINGLE_CIPHER=AES RESCUE_DISK=1

del /q /s Rescue_Serpent >NUL:
md Rescue_Serpent 2>NUL:
nmake.exe /nologo RELEASE=1 SINGLE_CIPHER=SERPENT RESCUE_DISK=1

del /q /s Rescue_Twofish >NUL:
md Rescue_Twofish 2>NUL:
nmake.exe /nologo RELEASE=1 SINGLE_CIPHER=TWOFISH RESCUE_DISK=1"
|
ReBuildCommandLine="del /q /s Release >NUL:
md Release 2>NUL:
nmake.exe /nologo RELEASE=1

del /q /s Release_SHA2 >NUL:
md Release_SHA2 2>NUL:
nmake.exe /nologo RELEASE=1 SINGLE_PRF=SHA2

del /q /s Release_AES >NUL:
md Release_AES 2>NUL:
nmake.exe /nologo RELEASE=1 SINGLE_CIPHER=AES

del /q /s Release_AES_SHA2 >NUL:
md Release_AES_SHA2 2>NUL:
nmake.exe /nologo RELEASE=1 SINGLE_CIPHER=AES SINGLE_PRF=SHA2

del /q /s Release_Serpent >NUL:
md Release_Serpent 2>NUL:
nmake.exe /nologo RELEASE=1 SINGLE_CIPHER=SERPENT

del /q /s Release_Serpent_SHA2 >NUL:
md Release_Serpent_SHA2 2>NUL:
nmake.exe /nologo RELEASE=1 SINGLE_CIPHER=SERPENT SINGLE_PRF=SHA2

del /q /s Release_Twofish >NUL:
md Release_Twofish 2>NUL:
nmake.exe /nologo RELEASE=1 SINGLE_CIPHER=TWOFISH

del /q /s Release_Twofish_SHA2 >NUL:
md Release_Twofish_SHA2 2>NUL:
nmake.exe /nologo RELEASE=1 SINGLE_CIPHER=TWOFISH SINGLE_PRF=SHA2

del /q /s Rescue >NUL:
md Rescue 2>NUL:
nmake.exe /nologo RELEASE=1 RESCUE_DISK=1

del /q /s Rescue_SHA2 >NUL:
md Rescue_SHA2 2>NUL:
nmake.exe /nologo RELEASE=1 RESCUE_DISK=1 SINGLE_PRF=SHA2

del /q /s Rescue_AES >NUL:
md Rescue_AES 2>NUL:
nmake.exe /nologo RELEASE=1 SINGLE_CIPHER=AES RESCUE_DISK=1

del /q /s Rescue_AES_SHA2 >NUL:
md Rescue_AES_SHA2 2>NUL:
nmake.exe /nologo RELEASE=1 SINGLE_CIPHER=AES RESCUE_DISK=1 SINGLE_PRF=SHA2

del /q /s Rescue_Serpent >NUL:
md Rescue_Serpent 2>NUL:
nmake.exe /nologo RELEASE=1 SINGLE_CIPHER=SERPENT RESCUE_DISK=1

del /q /s Rescue_Serpent_SHA2 >NUL:
md Rescue_Serpent_SHA2 2>NUL:
nmake.exe /nologo RELEASE=1 SINGLE_CIPHER=SERPENT RESCUE_DISK=1 SINGLE_PRF=SHA2

del /q /s Rescue_Twofish >NUL:
md Rescue_Twofish 2>NUL:
nmake.exe /nologo RELEASE=1 SINGLE_CIPHER=TWOFISH RESCUE_DISK=1

del /q /s Rescue_Twofish_SHA2 >NUL:
md Rescue_Twofish_SHA2 2>NUL:
nmake.exe /nologo RELEASE=1 SINGLE_CIPHER=TWOFISH RESCUE_DISK=1 SINGLE_PRF=SHA2"
|
||||||
CleanCommandLine="del /q /s Release Release_AES Release_Serpent Release_Twofish Rescue Rescue_AES Rescue_Serpent Rescue_Twofish >NUL:"
|
CleanCommandLine="del /q /s Release Release_AES Release_Serpent Release_Twofish Rescue Rescue_AES Rescue_Serpent Rescue_Twofish >NUL:
del /q /s Release_SHA2 Release_AES_SHA2 Release_Serpent_SHA2 Release_Twofish_SHA2 Rescue_SHA2 Rescue_AES_SHA2 Rescue_Serpent_SHA2 Rescue_Twofish_SHA2 >NUL:
"
|
||||||
Output="Release\BootLoader.com"
|
Output="Release\BootLoader.com"
|
||||||
PreprocessorDefinitions="WIN32;NDEBUG"
|
PreprocessorDefinitions="WIN32;NDEBUG"
|
||||||
IncludeSearchPath=""$(SolutionDir)";"$(SolutionDir)\Common";"$(SolutionDir)\Crypto";"$(MSVC16_ROOT)\Include""
|
IncludeSearchPath=""$(SolutionDir)";"$(SolutionDir)\Common";"$(SolutionDir)\Crypto";"$(MSVC16_ROOT)\Include""
|
||||||
@@ -164,6 +164,10 @@
|
|||||||
RelativePath="..\..\Crypto\Serpent.c"
|
RelativePath="..\..\Crypto\Serpent.c"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\Crypto\Sha2Small.c"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\Crypto\Twofish.c"
|
RelativePath="..\..\Crypto\Twofish.c"
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
#include "BootDefs.h"
|
#include "BootDefs.h"
|
||||||
|
|
||||||
// The user will be advised to upgrade the rescue disk if upgrading from the following or any previous version
|
// The user will be advised to upgrade the rescue disk if upgrading from the following or any previous version
|
||||||
#define TC_RESCUE_DISK_UPGRADE_NOTICE_MAX_VERSION 0x010a
|
#define TC_RESCUE_DISK_UPGRADE_NOTICE_MAX_VERSION 0x010e
|
||||||
|
|
||||||
#define TC_BOOT_LOADER_AREA_SIZE (TC_BOOT_LOADER_AREA_SECTOR_COUNT * TC_SECTOR_SIZE_BIOS)
|
#define TC_BOOT_LOADER_AREA_SIZE (TC_BOOT_LOADER_AREA_SECTOR_COUNT * TC_SECTOR_SIZE_BIOS)
|
||||||
|
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ BiosResult ReadEncryptedSectors (uint16 destSegment, uint16 destOffset, byte dri
|
|||||||
|
|
||||||
BiosResult WriteEncryptedSectors (uint16 sourceSegment, uint16 sourceOffset, byte drive, uint64 sector, uint16 sectorCount)
|
BiosResult WriteEncryptedSectors (uint16 sourceSegment, uint16 sourceOffset, byte drive, uint64 sector, uint16 sectorCount)
|
||||||
{
|
{
|
||||||
BiosResult result;
|
BiosResult result = BiosResultSuccess;
|
||||||
AcquireSectorBuffer();
|
AcquireSectorBuffer();
|
||||||
uint64 dataUnitNo;
|
uint64 dataUnitNo;
|
||||||
uint64 writeOffset;
|
uint64 writeOffset;
|
||||||
|
|||||||
@@ -584,7 +584,7 @@ static bool CopySystemPartitionToHiddenVolume (byte drive, byte &exitKey)
|
|||||||
sectorOffset.HighPart = 0;
|
sectorOffset.HighPart = 0;
|
||||||
|
|
||||||
int fragmentSectorCount = 0x7f; // Maximum safe value supported by BIOS
|
int fragmentSectorCount = 0x7f; // Maximum safe value supported by BIOS
|
||||||
int statCount;
|
int statCount = 0;
|
||||||
|
|
||||||
if (!CheckMemoryRequirements ())
|
if (!CheckMemoryRequirements ())
|
||||||
goto err;
|
goto err;
|
||||||
@@ -709,7 +709,7 @@ static void DecryptDrive (byte drive)
|
|||||||
uint64 sector = EncryptedVirtualPartition.EndSector + 1;
|
uint64 sector = EncryptedVirtualPartition.EndSector + 1;
|
||||||
|
|
||||||
int fragmentSectorCount = 0x7f; // Maximum safe value supported by BIOS
|
int fragmentSectorCount = 0x7f; // Maximum safe value supported by BIOS
|
||||||
int statCount;
|
int statCount = 0;
|
||||||
|
|
||||||
bool skipBadSectors = false;
|
bool skipBadSectors = false;
|
||||||
|
|
||||||
|
|||||||
@@ -134,6 +134,8 @@ checksum_ok:
|
|||||||
push dx
|
push dx
|
||||||
|
|
||||||
; Decompress boot loader
|
; Decompress boot loader
|
||||||
|
mov cx, word ptr [start + TC_BOOT_SECTOR_LOADER_LENGTH_OFFSET]
|
||||||
|
push cx ; Compressed data size
|
||||||
push TC_BOOT_LOADER_COMPRESSED_BUFFER_OFFSET + TC_GZIP_HEADER_SIZE ; Compressed data
|
push TC_BOOT_LOADER_COMPRESSED_BUFFER_OFFSET + TC_GZIP_HEADER_SIZE ; Compressed data
|
||||||
push TC_MAX_BOOT_LOADER_DECOMPRESSED_SIZE ; Output buffer size
|
push TC_MAX_BOOT_LOADER_DECOMPRESSED_SIZE ; Output buffer size
|
||||||
push TC_BOOT_LOADER_DECOMPRESSOR_MEMORY_SIZE + TC_COM_EXECUTABLE_OFFSET ; Output buffer
|
push TC_BOOT_LOADER_DECOMPRESSOR_MEMORY_SIZE + TC_COM_EXECUTABLE_OFFSET ; Output buffer
|
||||||
@@ -145,7 +147,7 @@ checksum_ok:
|
|||||||
retf
|
retf
|
||||||
decompressor_ret:
|
decompressor_ret:
|
||||||
|
|
||||||
add sp, 6
|
add sp, 8
|
||||||
pop dx
|
pop dx
|
||||||
|
|
||||||
; Restore boot sector segment
|
; Restore boot sector segment
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ struct state {
|
|||||||
|
|
||||||
/* input state */
|
/* input state */
|
||||||
unsigned char *in; /* input buffer */
|
unsigned char *in; /* input buffer */
|
||||||
|
unsigned int inlen; /* available input at in */
|
||||||
unsigned int incnt; /* bytes read so far */
|
unsigned int incnt; /* bytes read so far */
|
||||||
int bitbuf; /* bit buffer */
|
int bitbuf; /* bit buffer */
|
||||||
int bitcnt; /* number of bits in bit buffer */
|
int bitcnt; /* number of bits in bit buffer */
|
||||||
@@ -81,6 +82,9 @@ local int stored(struct state *s)
|
|||||||
s->bitbuf = 0;
|
s->bitbuf = 0;
|
||||||
s->bitcnt = 0;
|
s->bitcnt = 0;
|
||||||
|
|
||||||
|
if (s->incnt + 4 > s->inlen)
|
||||||
|
return 2; /* not enough input */
|
||||||
|
|
||||||
/* get length and check against its one's complement */
|
/* get length and check against its one's complement */
|
||||||
len = s->in[s->incnt++];
|
len = s->in[s->incnt++];
|
||||||
len |= s->in[s->incnt++] << 8;
|
len |= s->in[s->incnt++] << 8;
|
||||||
@@ -88,6 +92,9 @@ local int stored(struct state *s)
|
|||||||
s->in[s->incnt++] != ((~len >> 8) & 0xff))
|
s->in[s->incnt++] != ((~len >> 8) & 0xff))
|
||||||
return -2; /* didn't match complement! */
|
return -2; /* didn't match complement! */
|
||||||
|
|
||||||
|
if (s->incnt + len > s->inlen)
|
||||||
|
return 2; /* not enough input */
|
||||||
|
|
||||||
/* copy len bytes from in to out */
|
/* copy len bytes from in to out */
|
||||||
if (s->out != NIL) {
|
if (s->out != NIL) {
|
||||||
if (s->outcnt + len > s->outlen)
|
if (s->outcnt + len > s->outlen)
|
||||||
@@ -110,6 +117,8 @@ struct huffman {
|
|||||||
short *symbol; /* canonically ordered symbols */
|
short *symbol; /* canonically ordered symbols */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* reduce code size by using slow version of the decompressor */
|
||||||
|
#define SLOW
|
||||||
|
|
||||||
#ifdef SLOW
|
#ifdef SLOW
|
||||||
local int decode(struct state *s, struct huffman *h)
|
local int decode(struct state *s, struct huffman *h)
|
||||||
@@ -265,7 +274,7 @@ local int codes(struct state *s,
|
|||||||
|
|
||||||
/* get and check distance */
|
/* get and check distance */
|
||||||
symbol = decode(s, distcode);
|
symbol = decode(s, distcode);
|
||||||
if (symbol < 0) return symbol; /* invalid symbol */
|
if (symbol < 0) return symbol; /* invalid symbol */
|
||||||
dist = dists[symbol] + bits(s, dext[symbol]);
|
dist = dists[symbol] + bits(s, dext[symbol]);
|
||||||
if (dist > s->outcnt)
|
if (dist > s->outcnt)
|
||||||
return -10; /* distance too far back */
|
return -10; /* distance too far back */
|
||||||
@@ -363,26 +372,38 @@ local int dynamic(struct state *s)
|
|||||||
int len; /* last length to repeat */
|
int len; /* last length to repeat */
|
||||||
|
|
||||||
symbol = decode(s, &lencode);
|
symbol = decode(s, &lencode);
|
||||||
|
if (symbol < 0)
|
||||||
|
return symbol; /* invalid symbol */
|
||||||
if (symbol < 16) /* length in 0..15 */
|
if (symbol < 16) /* length in 0..15 */
|
||||||
lengths[index++] = symbol;
|
lengths[index++] = symbol;
|
||||||
else { /* repeat instruction */
|
else { /* repeat instruction */
|
||||||
len = 0; /* assume repeating zeros */
|
len = 0; /* assume repeating zeros */
|
||||||
if (symbol == 16) { /* repeat last length 3..6 times */
|
switch(symbol)
|
||||||
if (index == 0) return -5; /* no last length! */
|
{
|
||||||
len = lengths[index - 1]; /* last length */
|
case 16: { /* repeat last length 3..6 times */
|
||||||
symbol = 3 + bits(s, 2);
|
if (index == 0) return -5; /* no last length! */
|
||||||
}
|
len = lengths[index - 1]; /* last length */
|
||||||
else if (symbol == 17) /* repeat zero 3..10 times */
|
symbol = 3 + bits(s, 2);
|
||||||
symbol = 3 + bits(s, 3);
|
break;
|
||||||
else /* == 18, repeat zero 11..138 times */
|
}
|
||||||
symbol = 11 + bits(s, 7);
|
case 17: /* repeat zero 3..10 times */
|
||||||
if (index + symbol > nlen + ndist)
|
symbol = 3 + bits(s, 3);
|
||||||
|
break;
|
||||||
|
default: /* == 18, repeat zero 11..138 times */
|
||||||
|
symbol = 11 + bits(s, 7);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if ((index + symbol > nlen + ndist))
|
||||||
return -6; /* too many lengths! */
|
return -6; /* too many lengths! */
|
||||||
while (symbol--) /* repeat last or zero symbol times */
|
while (symbol--) /* repeat last or zero symbol times */
|
||||||
lengths[index++] = len;
|
lengths[index++] = len;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* check for end-of-block code -- there better be one! */
|
||||||
|
if (lengths[256] == 0)
|
||||||
|
return -9;
|
||||||
|
|
||||||
/* build huffman table for literal/length codes */
|
/* build huffman table for literal/length codes */
|
||||||
err = construct(&lencode, lengths, nlen);
|
err = construct(&lencode, lengths, nlen);
|
||||||
if (err < 0 || (err > 0 && nlen - lencode.count[0] != 1))
|
if (err < 0 || (err > 0 && nlen - lencode.count[0] != 1))
|
||||||
@@ -404,7 +425,8 @@ void _acrtused () { }
|
|||||||
int far main (
|
int far main (
|
||||||
unsigned char *dest, /* pointer to destination pointer */
|
unsigned char *dest, /* pointer to destination pointer */
|
||||||
unsigned int destlen, /* amount of output space */
|
unsigned int destlen, /* amount of output space */
|
||||||
unsigned char *source) /* pointer to source data pointer */
|
unsigned char *source, /* pointer to source data pointer */
|
||||||
|
unsigned int sourcelen)
|
||||||
{
|
{
|
||||||
struct state s; /* input/output state */
|
struct state s; /* input/output state */
|
||||||
int last, type; /* block information */
|
int last, type; /* block information */
|
||||||
@@ -417,6 +439,7 @@ int far main (
|
|||||||
|
|
||||||
/* initialize input state */
|
/* initialize input state */
|
||||||
s.in = source;
|
s.in = source;
|
||||||
|
s.inlen = sourcelen;
|
||||||
s.incnt = 0;
|
s.incnt = 0;
|
||||||
s.bitbuf = 0;
|
s.bitbuf = 0;
|
||||||
s.bitcnt = 0;
|
s.bitcnt = 0;
|
||||||
@@ -425,10 +448,22 @@ int far main (
|
|||||||
do {
|
do {
|
||||||
last = bits(&s, 1); /* one if last block */
|
last = bits(&s, 1); /* one if last block */
|
||||||
type = bits(&s, 2); /* block type 0..3 */
|
type = bits(&s, 2); /* block type 0..3 */
|
||||||
err = type == 0 ? stored(&s) :
|
switch(type)
|
||||||
(type == 1 ? fixed(&s) :
|
{
|
||||||
(type == 2 ? dynamic(&s) :
|
case 0:
|
||||||
-1)); /* type == 3, invalid */
|
err = stored(&s);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
err = fixed(&s);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
err = dynamic(&s);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
err = -1; /* type == 3, invalid */
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (err != 0) break; /* return with error */
|
if (err != 0) break; /* return with error */
|
||||||
} while (!last);
|
} while (!last);
|
||||||
|
|
||||||
|
|||||||
@@ -39,6 +39,13 @@ OBJDIR = $(OBJDIR)_$(SINGLE_CIPHER)
|
|||||||
CFLAGS = $(CFLAGS) /D TC_WINDOWS_BOOT_SINGLE_CIPHER_MODE /D TC_WINDOWS_BOOT_$(SINGLE_CIPHER)
|
CFLAGS = $(CFLAGS) /D TC_WINDOWS_BOOT_SINGLE_CIPHER_MODE /D TC_WINDOWS_BOOT_$(SINGLE_CIPHER)
|
||||||
!endif
|
!endif
|
||||||
|
|
||||||
|
!ifdef SINGLE_PRF
|
||||||
|
OBJDIR = $(OBJDIR)_$(SINGLE_PRF)
|
||||||
|
CFLAGS = $(CFLAGS) /D TC_WINDOWS_BOOT_$(SINGLE_PRF)
|
||||||
|
!else
|
||||||
|
CFLAGS = $(CFLAGS) /D TC_WINDOWS_BOOT_RIPEMD160
|
||||||
|
!endif
|
||||||
|
|
||||||
OUTDIR = $(OBJDIR)
|
OUTDIR = $(OBJDIR)
|
||||||
TARGETEXT = com
|
TARGETEXT = com
|
||||||
TARGETS = $(OUTDIR)\BootDefs.i $(OUTDIR)\BootSector.bin $(OUTDIR)\Decompressor.com
|
TARGETS = $(OUTDIR)\BootDefs.i $(OUTDIR)\BootSector.bin $(OUTDIR)\Decompressor.com
|
||||||
@@ -72,7 +79,11 @@ OBJS = $(OBJS) $(OUTDIR)\Pkcs5.obj
|
|||||||
OBJS = $(OBJS) $(OUTDIR)\Volumes.obj
|
OBJS = $(OBJS) $(OUTDIR)\Volumes.obj
|
||||||
OBJS = $(OBJS) $(OUTDIR)\Xts.obj
|
OBJS = $(OBJS) $(OUTDIR)\Xts.obj
|
||||||
|
|
||||||
|
!if "$(SINGLE_PRF)" == "SHA2"
|
||||||
|
OBJS = $(OBJS) $(OUTDIR)\Sha2Small.obj
|
||||||
|
!else
|
||||||
OBJS = $(OBJS) $(OUTDIR)\Rmd160.obj
|
OBJS = $(OBJS) $(OUTDIR)\Rmd160.obj
|
||||||
|
!endif
|
||||||
|
|
||||||
!if !DEFINED (SINGLE_CIPHER)
|
!if !DEFINED (SINGLE_CIPHER)
|
||||||
OBJS = $(OBJS) $(OUTDIR)\AesSmall.obj
|
OBJS = $(OBJS) $(OUTDIR)\AesSmall.obj
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ $(NAME): $(NAME).a
|
|||||||
|
|
||||||
clean:
|
clean:
|
||||||
@echo Cleaning $(NAME)
|
@echo Cleaning $(NAME)
|
||||||
rm -f $(APPNAME) $(NAME).a $(OBJS) $(OBJS:.o=.d) *.gch
|
rm -f $(APPNAME) $(NAME).a $(OBJS) $(OBJSEX) $(OBJS:.o=.d) *.gch
|
||||||
|
|
||||||
%.o: %.c
|
%.o: %.c
|
||||||
@echo Compiling $(<F)
|
@echo Compiling $(<F)
|
||||||
@@ -20,10 +20,17 @@ clean:
|
|||||||
@echo Compiling $(<F)
|
@echo Compiling $(<F)
|
||||||
$(CXX) $(CXXFLAGS) -c $< -o $@
|
$(CXX) $(CXXFLAGS) -c $< -o $@
|
||||||
|
|
||||||
|
ifeq "$(PLATFORM)" "MacOSX"
|
||||||
|
%.o: %.asm
|
||||||
|
@echo Assembling $(<F)
|
||||||
|
$(AS) $(ASFLAGS) -f macho32 -o $@.32 $<
|
||||||
|
$(AS) $(ASFLAGS) -f macho64 -o $@.64 $<
|
||||||
|
lipo -create $@.32 $@.64 -output $@
|
||||||
|
else
|
||||||
%.o: %.asm
|
%.o: %.asm
|
||||||
@echo Assembling $(<F)
|
@echo Assembling $(<F)
|
||||||
$(AS) $(ASFLAGS) -o $@ $<
|
$(AS) $(ASFLAGS) -o $@ $<
|
||||||
|
endif
|
||||||
|
|
||||||
# Precompiled headers
|
# Precompiled headers
|
||||||
%.h.gch: %.h
|
%.h.gch: %.h
|
||||||
@@ -49,10 +56,10 @@ TR_SED_BIN := tr '\n' ' ' | tr -s ' ' ',' | sed -e 's/^,//g' -e 's/,$$/n/' | tr
|
|||||||
|
|
||||||
|
|
||||||
# Dependencies
|
# Dependencies
|
||||||
-include $(OBJS:.o=.d)
|
-include $(OBJS:.o=.d) $(OBJSEX:.oo=.d)
|
||||||
|
|
||||||
|
|
||||||
$(NAME).a: $(OBJS)
|
$(NAME).a: $(OBJS) $(OBJSEX)
|
||||||
@echo Updating library $@
|
@echo Updating library $@
|
||||||
$(AR) $(AFLAGS) -rcu $@ $(OBJS)
|
$(AR) $(AFLAGS) -rcu $@ $(OBJS) $(OBJSEX)
|
||||||
$(RANLIB) $@
|
$(RANLIB) $@
|
||||||
|
|||||||
Executable
BIN
Binary file not shown.
Executable
+29
@@ -0,0 +1,29 @@
|
|||||||
|
# Absolute path to this script
|
||||||
|
SCRIPT=$(readlink -f "$0")
|
||||||
|
# Absolute path this script is in
|
||||||
|
SCRIPTPATH=$(dirname "$SCRIPT")
|
||||||
|
# source directory which contains the Makefile
|
||||||
|
SOURCEPATH=$(readlink -f "$SCRIPTPATH/..")
|
||||||
|
# directory where the VeraCrypt has been checked out
|
||||||
|
PARENTDIR=$(readlink -f "$SCRIPTPATH/../../..")
|
||||||
|
|
||||||
|
# Make sure only root can run our script
|
||||||
|
if [ "$(id -u)" != "0" ]; then
|
||||||
|
echo "VeraCrypt must be built by root" 1>&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# the sources of wxWidgets 3.0.2 must be extracted to the parent directory
|
||||||
|
export WX_ROOT=$PARENTDIR/wxWidgets-3.0.2
|
||||||
|
echo "Using wxWidgets sources in $WX_ROOT"
|
||||||
|
|
||||||
|
# this will be the temporary wxWidgets directory
|
||||||
|
export WX_BUILD_DIR=$PARENTDIR/wxBuild
|
||||||
|
|
||||||
|
cd $SOURCEPATH
|
||||||
|
|
||||||
|
echo "Building GUI version of VeraCrypt"
|
||||||
|
make WXSTATIC=1 wxbuild && make WXSTATIC=1 clean && make WXSTATIC=1
|
||||||
|
|
||||||
|
echo "Building console version of VeraCrypt"
|
||||||
|
make WXSTATIC=1 NOGUI=1 wxbuild && make WXSTATIC=1 NOGUI=1 clean && make WXSTATIC=1 NOGUI=1
|
||||||
Executable
+24
@@ -0,0 +1,24 @@
|
|||||||
|
# Absolute path this script is in
|
||||||
|
SCRIPTPATH=$(cd "$(dirname "$0")"; pwd)
|
||||||
|
# source directory which contains the Makefile
|
||||||
|
SOURCEPATH=$(cd "$(dirname "$SCRIPTPATH/../.")"; pwd)
|
||||||
|
# directory where the VeraCrypt project has been checked out
|
||||||
|
PARENTDIR=$(cd "$(dirname "$SCRIPTPATH/../../../.")"; pwd)
|
||||||
|
|
||||||
|
# the sources of wxWidgets 3.0.2 must be extracted to the parent directory
|
||||||
|
export WX_ROOT=$PARENTDIR/wxWidgets-3.0.2
|
||||||
|
echo "Using wxWidgets sources in $WX_ROOT"
|
||||||
|
|
||||||
|
# this will be the temporary wxWidgets directory
|
||||||
|
export WX_BUILD_DIR=$PARENTDIR/wxBuild
|
||||||
|
|
||||||
|
# define the SDK version to use. We use 10.6 by default
|
||||||
|
export VC_OSX_TARGET=10.6
|
||||||
|
echo "Using MacOSX SDK $VC_OSX_TARGET"
|
||||||
|
|
||||||
|
|
||||||
|
cd $SOURCEPATH
|
||||||
|
|
||||||
|
echo "Building VeraCrypt"
|
||||||
|
make WXSTATIC=1 wxbuild && make WXSTATIC=1 clean && make WXSTATIC=1
|
||||||
|
|
||||||
@@ -133,10 +133,6 @@ typedef struct
|
|||||||
BOOL readOnly;
|
BOOL readOnly;
|
||||||
BOOL removable;
|
BOOL removable;
|
||||||
BOOL partitionInInactiveSysEncScope;
|
BOOL partitionInInactiveSysEncScope;
|
||||||
#if 0
|
|
||||||
unsigned __int64 volumeCreationTime; // Deprecated in v6.0
|
|
||||||
unsigned __int64 headerCreationTime; // Deprecated in v6.0
|
|
||||||
#endif
|
|
||||||
uint32 volumeHeaderFlags;
|
uint32 volumeHeaderFlags;
|
||||||
unsigned __int64 totalBytesRead;
|
unsigned __int64 totalBytesRead;
|
||||||
unsigned __int64 totalBytesWritten;
|
unsigned __int64 totalBytesWritten;
|
||||||
@@ -245,6 +241,7 @@ typedef struct
|
|||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
char BootEncryptionAlgorithmName[256];
|
char BootEncryptionAlgorithmName[256];
|
||||||
|
char BootPrfAlgorithmName[256];
|
||||||
} GetBootEncryptionAlgorithmNameRequest;
|
} GetBootEncryptionAlgorithmNameRequest;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
|
|||||||
@@ -83,9 +83,8 @@ DWORD BaseCom::CallDriver (DWORD ioctl, BSTR input, BSTR *output)
|
|||||||
|
|
||||||
DWORD BaseCom::CopyFile (BSTR sourceFile, BSTR destinationFile)
|
DWORD BaseCom::CopyFile (BSTR sourceFile, BSTR destinationFile)
|
||||||
{
|
{
|
||||||
USES_CONVERSION;
|
|
||||||
|
|
||||||
if (!::CopyFile (CW2A (sourceFile), CW2A (destinationFile), FALSE))
|
if (!::CopyFileW (sourceFile, destinationFile, FALSE))
|
||||||
return GetLastError();
|
return GetLastError();
|
||||||
|
|
||||||
return ERROR_SUCCESS;
|
return ERROR_SUCCESS;
|
||||||
@@ -94,9 +93,8 @@ DWORD BaseCom::CopyFile (BSTR sourceFile, BSTR destinationFile)
|
|||||||
|
|
||||||
DWORD BaseCom::DeleteFile (BSTR file)
|
DWORD BaseCom::DeleteFile (BSTR file)
|
||||||
{
|
{
|
||||||
USES_CONVERSION;
|
|
||||||
|
|
||||||
if (!::DeleteFile (CW2A (file)))
|
if (!::DeleteFileW (file))
|
||||||
return GetLastError();
|
return GetLastError();
|
||||||
|
|
||||||
return ERROR_SUCCESS;
|
return ERROR_SUCCESS;
|
||||||
@@ -112,10 +110,15 @@ BOOL BaseCom::IsPagingFileActive (BOOL checkNonWindowsPartitionsOnly)
|
|||||||
DWORD BaseCom::ReadWriteFile (BOOL write, BOOL device, BSTR filePath, BSTR *bufferBstr, unsigned __int64 offset, unsigned __int32 size, DWORD *sizeDone)
|
DWORD BaseCom::ReadWriteFile (BOOL write, BOOL device, BSTR filePath, BSTR *bufferBstr, unsigned __int64 offset, unsigned __int32 size, DWORD *sizeDone)
|
||||||
{
|
{
|
||||||
USES_CONVERSION;
|
USES_CONVERSION;
|
||||||
|
CW2A szFilePathA(filePath);
|
||||||
|
if (!szFilePathA.m_psz)
|
||||||
|
{
|
||||||
|
return ERROR_NOT_ENOUGH_MEMORY;
|
||||||
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
auto_ptr <File> file (device ? new Device (string (CW2A (filePath)), !write) : new File (string (CW2A (filePath)), !write));
|
auto_ptr <File> file (device ? new Device (string (szFilePathA.m_psz), !write) : new File (string (szFilePathA.m_psz), !write));
|
||||||
file->SeekAt (offset);
|
file->SeekAt (offset);
|
||||||
|
|
||||||
if (write)
|
if (write)
|
||||||
@@ -223,8 +226,7 @@ DWORD BaseCom::SetDriverServiceStartType (DWORD startType)
|
|||||||
|
|
||||||
DWORD BaseCom::WriteLocalMachineRegistryDwordValue (BSTR keyPath, BSTR valueName, DWORD value)
|
DWORD BaseCom::WriteLocalMachineRegistryDwordValue (BSTR keyPath, BSTR valueName, DWORD value)
|
||||||
{
|
{
|
||||||
USES_CONVERSION;
|
if (!::WriteLocalMachineRegistryDwordW (keyPath, valueName, value))
|
||||||
if (!::WriteLocalMachineRegistryDword (CW2A (keyPath), CW2A (valueName), value))
|
|
||||||
return GetLastError();
|
return GetLastError();
|
||||||
|
|
||||||
return ERROR_SUCCESS;
|
return ERROR_SUCCESS;
|
||||||
|
|||||||
@@ -32,6 +32,8 @@
|
|||||||
#include "Mount/MainCom.h"
|
#include "Mount/MainCom.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <Strsafe.h>
|
||||||
|
|
||||||
namespace VeraCrypt
|
namespace VeraCrypt
|
||||||
{
|
{
|
||||||
#if !defined (SETUP)
|
#if !defined (SETUP)
|
||||||
@@ -373,8 +375,16 @@ namespace VeraCrypt
|
|||||||
RescueIsoImage (nullptr),
|
RescueIsoImage (nullptr),
|
||||||
RescueVolumeHeaderValid (false),
|
RescueVolumeHeaderValid (false),
|
||||||
SelectedEncryptionAlgorithmId (0),
|
SelectedEncryptionAlgorithmId (0),
|
||||||
|
SelectedPrfAlgorithmId (0),
|
||||||
VolumeHeaderValid (false)
|
VolumeHeaderValid (false)
|
||||||
{
|
{
|
||||||
|
HiddenOSCandidatePartition.IsGPT = FALSE;
|
||||||
|
HiddenOSCandidatePartition.Number = (size_t) -1;
|
||||||
|
DriveConfig.DriveNumber = -1;
|
||||||
|
DriveConfig.ExtraBootPartitionPresent = false;
|
||||||
|
DriveConfig.SystemLoaderPresent = false;
|
||||||
|
DriveConfig.InitialUnallocatedSpace = 0;
|
||||||
|
DriveConfig.TotalUnallocatedSpace = 0;
|
||||||
Elevator::AddReference();
|
Elevator::AddReference();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -597,7 +607,7 @@ namespace VeraCrypt
|
|||||||
GetSystemDriveConfiguration();
|
GetSystemDriveConfiguration();
|
||||||
|
|
||||||
ProbeRealDriveSizeRequest request;
|
ProbeRealDriveSizeRequest request;
|
||||||
_snwprintf (request.DeviceName, array_capacity (request.DeviceName), L"%hs", DriveConfig.DrivePartition.DevicePath.c_str());
|
StringCbPrintfW (request.DeviceName, sizeof (request.DeviceName), L"%hs", DriveConfig.DrivePartition.DevicePath.c_str());
|
||||||
|
|
||||||
CallDriver (TC_IOCTL_PROBE_REAL_DRIVE_SIZE, &request, sizeof (request), &request, sizeof (request));
|
CallDriver (TC_IOCTL_PROBE_REAL_DRIVE_SIZE, &request, sizeof (request), &request, sizeof (request));
|
||||||
DriveConfig.DrivePartition.Info.PartitionLength = request.RealDriveSize;
|
DriveConfig.DrivePartition.Info.PartitionLength = request.RealDriveSize;
|
||||||
@@ -626,7 +636,7 @@ namespace VeraCrypt
|
|||||||
partPath << "\\Device\\Harddisk" << driveNumber << "\\Partition" << partNumber;
|
partPath << "\\Device\\Harddisk" << driveNumber << "\\Partition" << partNumber;
|
||||||
|
|
||||||
DISK_PARTITION_INFO_STRUCT diskPartInfo;
|
DISK_PARTITION_INFO_STRUCT diskPartInfo;
|
||||||
_snwprintf (diskPartInfo.deviceName, array_capacity (diskPartInfo.deviceName), L"%hs", partPath.str().c_str());
|
StringCbPrintfW (diskPartInfo.deviceName, sizeof (diskPartInfo.deviceName), L"%hs", partPath.str().c_str());
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -656,7 +666,7 @@ namespace VeraCrypt
|
|||||||
|
|
||||||
// Volume ID
|
// Volume ID
|
||||||
wchar_t volumePath[TC_MAX_PATH];
|
wchar_t volumePath[TC_MAX_PATH];
|
||||||
if (ResolveSymbolicLink ((wchar_t *) ws.str().c_str(), volumePath))
|
if (ResolveSymbolicLink ((wchar_t *) ws.str().c_str(), volumePath, sizeof(volumePath)))
|
||||||
{
|
{
|
||||||
wchar_t volumeName[TC_MAX_PATH];
|
wchar_t volumeName[TC_MAX_PATH];
|
||||||
HANDLE fh = FindFirstVolumeW (volumeName, array_capacity (volumeName));
|
HANDLE fh = FindFirstVolumeW (volumeName, array_capacity (volumeName));
|
||||||
@@ -735,8 +745,8 @@ namespace VeraCrypt
|
|||||||
memset (&openTestStruct, 0, sizeof (openTestStruct));
|
memset (&openTestStruct, 0, sizeof (openTestStruct));
|
||||||
DWORD dwResult;
|
DWORD dwResult;
|
||||||
|
|
||||||
strcpy ((char *) &openTestStruct.wszFileName[0], devicePath);
|
StringCbCopyA ((char *) &openTestStruct.wszFileName[0], sizeof(openTestStruct.wszFileName),devicePath);
|
||||||
ToUNICODE ((char *) &openTestStruct.wszFileName[0]);
|
ToUNICODE ((char *) &openTestStruct.wszFileName[0], sizeof(openTestStruct.wszFileName));
|
||||||
|
|
||||||
openTestStruct.bDetectTCBootLoader = TRUE;
|
openTestStruct.bDetectTCBootLoader = TRUE;
|
||||||
|
|
||||||
@@ -837,7 +847,7 @@ namespace VeraCrypt
|
|||||||
bool BootEncryption::SystemDriveIsDynamic ()
|
bool BootEncryption::SystemDriveIsDynamic ()
|
||||||
{
|
{
|
||||||
GetSystemDriveConfigurationRequest request;
|
GetSystemDriveConfigurationRequest request;
|
||||||
_snwprintf (request.DevicePath, array_capacity (request.DevicePath), L"%hs", GetSystemDriveConfiguration().DeviceKernelPath.c_str());
|
StringCbPrintfW (request.DevicePath, sizeof (request.DevicePath), L"%hs", GetSystemDriveConfiguration().DeviceKernelPath.c_str());
|
||||||
|
|
||||||
CallDriver (TC_IOCTL_GET_SYSTEM_DRIVE_CONFIG, &request, sizeof (request), &request, sizeof (request));
|
CallDriver (TC_IOCTL_GET_SYSTEM_DRIVE_CONFIG, &request, sizeof (request), &request, sizeof (request));
|
||||||
return request.DriveIsDynamic ? true : false;
|
return request.DriveIsDynamic ? true : false;
|
||||||
@@ -966,11 +976,16 @@ namespace VeraCrypt
|
|||||||
ZeroMemory (buffer, bufferSize);
|
ZeroMemory (buffer, bufferSize);
|
||||||
|
|
||||||
int ea = 0;
|
int ea = 0;
|
||||||
|
int pkcs5_prf = 0;
|
||||||
if (GetStatus().DriveMounted)
|
if (GetStatus().DriveMounted)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
GetBootEncryptionAlgorithmNameRequest request;
|
GetBootEncryptionAlgorithmNameRequest request;
|
||||||
|
// since we added new field to GetBootEncryptionAlgorithmNameRequest since version 1.0f
|
||||||
|
// we zero all the structure so that if we are talking to an older driver, the field
|
||||||
|
// BootPrfAlgorithmName will be an empty string
|
||||||
|
ZeroMemory(&request, sizeof(request));
|
||||||
CallDriver (TC_IOCTL_GET_BOOT_ENCRYPTION_ALGORITHM_NAME, NULL, 0, &request, sizeof (request));
|
CallDriver (TC_IOCTL_GET_BOOT_ENCRYPTION_ALGORITHM_NAME, NULL, 0, &request, sizeof (request));
|
||||||
|
|
||||||
if (_stricmp (request.BootEncryptionAlgorithmName, "AES") == 0)
|
if (_stricmp (request.BootEncryptionAlgorithmName, "AES") == 0)
|
||||||
@@ -979,6 +994,13 @@ namespace VeraCrypt
|
|||||||
ea = SERPENT;
|
ea = SERPENT;
|
||||||
else if (_stricmp (request.BootEncryptionAlgorithmName, "Twofish") == 0)
|
else if (_stricmp (request.BootEncryptionAlgorithmName, "Twofish") == 0)
|
||||||
ea = TWOFISH;
|
ea = TWOFISH;
|
||||||
|
|
||||||
|
if (_stricmp(request.BootPrfAlgorithmName, "SHA-256") == 0)
|
||||||
|
pkcs5_prf = SHA256;
|
||||||
|
else if (_stricmp(request.BootPrfAlgorithmName, "RIPEMD-160") == 0)
|
||||||
|
pkcs5_prf = RIPEMD160;
|
||||||
|
else if (strlen(request.BootPrfAlgorithmName) == 0) // case of version < 1.0f
|
||||||
|
pkcs5_prf = RIPEMD160;
|
||||||
}
|
}
|
||||||
catch (...)
|
catch (...)
|
||||||
{
|
{
|
||||||
@@ -987,36 +1009,77 @@ namespace VeraCrypt
|
|||||||
VOLUME_PROPERTIES_STRUCT properties;
|
VOLUME_PROPERTIES_STRUCT properties;
|
||||||
GetVolumeProperties (&properties);
|
GetVolumeProperties (&properties);
|
||||||
ea = properties.ea;
|
ea = properties.ea;
|
||||||
|
pkcs5_prf = properties.pkcs5;
|
||||||
}
|
}
|
||||||
catch (...) { }
|
catch (...) { }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (SelectedEncryptionAlgorithmId == 0)
|
if (SelectedEncryptionAlgorithmId == 0 || SelectedPrfAlgorithmId == 0)
|
||||||
throw ParameterIncorrect (SRC_POS);
|
throw ParameterIncorrect (SRC_POS);
|
||||||
|
|
||||||
ea = SelectedEncryptionAlgorithmId;
|
ea = SelectedEncryptionAlgorithmId;
|
||||||
|
pkcs5_prf = SelectedPrfAlgorithmId;
|
||||||
}
|
}
|
||||||
|
|
||||||
int bootSectorId = rescueDisk ? IDR_RESCUE_BOOT_SECTOR : IDR_BOOT_SECTOR;
|
// Only RIPEMD160 and SHA-256 are supported for boot loader
|
||||||
int bootLoaderId = rescueDisk ? IDR_RESCUE_LOADER : IDR_BOOT_LOADER;
|
if (pkcs5_prf != RIPEMD160 && pkcs5_prf != SHA256)
|
||||||
|
throw ParameterIncorrect (SRC_POS);
|
||||||
|
|
||||||
|
int bootSectorId = 0;
|
||||||
|
int bootLoaderId = 0;
|
||||||
|
|
||||||
|
if (pkcs5_prf == SHA256)
|
||||||
|
{
|
||||||
|
bootSectorId = rescueDisk ? IDR_RESCUE_BOOT_SECTOR_SHA2 : IDR_BOOT_SECTOR_SHA2;
|
||||||
|
bootLoaderId = rescueDisk ? IDR_RESCUE_LOADER_SHA2 : IDR_BOOT_LOADER_SHA2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
bootSectorId = rescueDisk ? IDR_RESCUE_BOOT_SECTOR : IDR_BOOT_SECTOR;
|
||||||
|
bootLoaderId = rescueDisk ? IDR_RESCUE_LOADER : IDR_BOOT_LOADER;
|
||||||
|
}
|
||||||
|
|
||||||
switch (ea)
|
switch (ea)
|
||||||
{
|
{
|
||||||
case AES:
|
case AES:
|
||||||
bootSectorId = rescueDisk ? IDR_RESCUE_BOOT_SECTOR_AES : IDR_BOOT_SECTOR_AES;
|
if (pkcs5_prf == SHA256)
|
||||||
bootLoaderId = rescueDisk ? IDR_RESCUE_LOADER_AES : IDR_BOOT_LOADER_AES;
|
{
|
||||||
|
bootSectorId = rescueDisk ? IDR_RESCUE_BOOT_SECTOR_AES_SHA2 : IDR_BOOT_SECTOR_AES_SHA2;
|
||||||
|
bootLoaderId = rescueDisk ? IDR_RESCUE_LOADER_AES_SHA2 : IDR_BOOT_LOADER_AES_SHA2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
bootSectorId = rescueDisk ? IDR_RESCUE_BOOT_SECTOR_AES : IDR_BOOT_SECTOR_AES;
|
||||||
|
bootLoaderId = rescueDisk ? IDR_RESCUE_LOADER_AES : IDR_BOOT_LOADER_AES;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SERPENT:
|
case SERPENT:
|
||||||
bootSectorId = rescueDisk ? IDR_RESCUE_BOOT_SECTOR_SERPENT : IDR_BOOT_SECTOR_SERPENT;
|
if (pkcs5_prf == SHA256)
|
||||||
bootLoaderId = rescueDisk ? IDR_RESCUE_LOADER_SERPENT : IDR_BOOT_LOADER_SERPENT;
|
{
|
||||||
|
bootSectorId = rescueDisk ? IDR_RESCUE_BOOT_SECTOR_SERPENT_SHA2 : IDR_BOOT_SECTOR_SERPENT_SHA2;
|
||||||
|
bootLoaderId = rescueDisk ? IDR_RESCUE_LOADER_SERPENT_SHA2 : IDR_BOOT_LOADER_SERPENT_SHA2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
bootSectorId = rescueDisk ? IDR_RESCUE_BOOT_SECTOR_SERPENT : IDR_BOOT_SECTOR_SERPENT;
|
||||||
|
bootLoaderId = rescueDisk ? IDR_RESCUE_LOADER_SERPENT : IDR_BOOT_LOADER_SERPENT;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TWOFISH:
|
case TWOFISH:
|
||||||
bootSectorId = rescueDisk ? IDR_RESCUE_BOOT_SECTOR_TWOFISH : IDR_BOOT_SECTOR_TWOFISH;
|
if (pkcs5_prf == SHA256)
|
||||||
bootLoaderId = rescueDisk ? IDR_RESCUE_LOADER_TWOFISH : IDR_BOOT_LOADER_TWOFISH;
|
{
|
||||||
|
bootSectorId = rescueDisk ? IDR_RESCUE_BOOT_SECTOR_TWOFISH_SHA2 : IDR_BOOT_SECTOR_TWOFISH_SHA2;
|
||||||
|
bootLoaderId = rescueDisk ? IDR_RESCUE_LOADER_TWOFISH_SHA2 : IDR_BOOT_LOADER_TWOFISH_SHA2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
bootSectorId = rescueDisk ? IDR_RESCUE_BOOT_SECTOR_TWOFISH : IDR_BOOT_SECTOR_TWOFISH;
|
||||||
|
bootLoaderId = rescueDisk ? IDR_RESCUE_LOADER_TWOFISH : IDR_BOOT_LOADER_TWOFISH;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1075,7 +1138,7 @@ namespace VeraCrypt
|
|||||||
|
|
||||||
buffer[TC_BOOT_SECTOR_CONFIG_OFFSET] |= TC_BOOT_CFG_FLAG_BACKUP_LOADER_AVAILABLE;
|
buffer[TC_BOOT_SECTOR_CONFIG_OFFSET] |= TC_BOOT_CFG_FLAG_BACKUP_LOADER_AVAILABLE;
|
||||||
}
|
}
|
||||||
else if (!rescueDisk && bootLoaderId != IDR_BOOT_LOADER)
|
else if (!rescueDisk && bootLoaderId != IDR_BOOT_LOADER && bootLoaderId != IDR_BOOT_LOADER_SHA2)
|
||||||
{
|
{
|
||||||
throw ParameterIncorrect (SRC_POS);
|
throw ParameterIncorrect (SRC_POS);
|
||||||
}
|
}
|
||||||
@@ -1088,7 +1151,7 @@ namespace VeraCrypt
|
|||||||
throw ParameterIncorrect (SRC_POS);
|
throw ParameterIncorrect (SRC_POS);
|
||||||
|
|
||||||
GetSystemDriveConfigurationRequest request;
|
GetSystemDriveConfigurationRequest request;
|
||||||
_snwprintf (request.DevicePath, array_capacity (request.DevicePath), L"%hs", GetSystemDriveConfiguration().DeviceKernelPath.c_str());
|
StringCbPrintfW (request.DevicePath, sizeof (request.DevicePath), L"%hs", GetSystemDriveConfiguration().DeviceKernelPath.c_str());
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -1395,8 +1458,10 @@ namespace VeraCrypt
|
|||||||
memset (image, 0, RescueIsoImageSize);
|
memset (image, 0, RescueIsoImageSize);
|
||||||
|
|
||||||
// Primary volume descriptor
|
// Primary volume descriptor
|
||||||
strcpy ((char *)image + 0x8000, "\001CD001\001");
|
const char* szPrimVolDesc = "\001CD001\001";
|
||||||
strcpy ((char *)image + 0x7fff + 41, "VeraCrypt Rescue Disk ");
|
const char* szPrimVolLabel = "VeraCrypt Rescue Disk ";
|
||||||
|
memcpy (image + 0x8000, szPrimVolDesc, strlen(szPrimVolDesc) + 1);
|
||||||
|
memcpy (image + 0x7fff + 41, szPrimVolLabel, strlen(szPrimVolLabel) + 1);
|
||||||
*(uint32 *) (image + 0x7fff + 81) = RescueIsoImageSize / 2048;
|
*(uint32 *) (image + 0x7fff + 81) = RescueIsoImageSize / 2048;
|
||||||
*(uint32 *) (image + 0x7fff + 85) = BE32 (RescueIsoImageSize / 2048);
|
*(uint32 *) (image + 0x7fff + 85) = BE32 (RescueIsoImageSize / 2048);
|
||||||
image[0x7fff + 121] = 1;
|
image[0x7fff + 121] = 1;
|
||||||
@@ -1413,11 +1478,13 @@ namespace VeraCrypt
|
|||||||
image[0x7fff + 159] = 0x18;
|
image[0x7fff + 159] = 0x18;
|
||||||
|
|
||||||
// Boot record volume descriptor
|
// Boot record volume descriptor
|
||||||
strcpy ((char *)image + 0x8801, "CD001\001EL TORITO SPECIFICATION");
|
const char* szBootRecDesc = "CD001\001EL TORITO SPECIFICATION";
|
||||||
|
memcpy (image + 0x8801, szBootRecDesc, strlen(szBootRecDesc) + 1);
|
||||||
image[0x8800 + 0x47] = 0x19;
|
image[0x8800 + 0x47] = 0x19;
|
||||||
|
|
||||||
// Volume descriptor set terminator
|
// Volume descriptor set terminator
|
||||||
strcpy ((char *)image + 0x9000, "\377CD001\001");
|
const char* szVolDescTerm = "\377CD001\001";
|
||||||
|
memcpy (image + 0x9000, szVolDescTerm, strlen(szVolDescTerm) + 1);
|
||||||
|
|
||||||
// Path table
|
// Path table
|
||||||
image[0xA000 + 0] = 1;
|
image[0xA000 + 0] = 1;
|
||||||
@@ -1715,7 +1782,7 @@ namespace VeraCrypt
|
|||||||
DWORD size = sizeof (regKeyBuf) - strSize;
|
DWORD size = sizeof (regKeyBuf) - strSize;
|
||||||
|
|
||||||
// SetupInstallFromInfSection() does not support prepending of values so we have to modify the registry directly
|
// SetupInstallFromInfSection() does not support prepending of values so we have to modify the registry directly
|
||||||
strncpy ((char *) regKeyBuf, filter.c_str(), sizeof (regKeyBuf));
|
StringCbCopyA ((char *) regKeyBuf, sizeof(regKeyBuf), filter.c_str());
|
||||||
|
|
||||||
if (RegQueryValueEx (regKey, filterReg.c_str(), NULL, NULL, regKeyBuf + strSize, &size) != ERROR_SUCCESS)
|
if (RegQueryValueEx (regKey, filterReg.c_str(), NULL, NULL, regKeyBuf + strSize, &size) != ERROR_SUCCESS)
|
||||||
size = 1;
|
size = 1;
|
||||||
@@ -2047,11 +2114,11 @@ namespace VeraCrypt
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int BootEncryption::ChangePassword (Password *oldPassword, Password *newPassword, int pkcs5)
|
int BootEncryption::ChangePassword (Password *oldPassword, Password *newPassword, int pkcs5, int wipePassCount)
|
||||||
{
|
{
|
||||||
BootEncryptionStatus encStatus = GetStatus();
|
BootEncryptionStatus encStatus = GetStatus();
|
||||||
|
|
||||||
if (encStatus.SetupInProgress)
|
if (encStatus.SetupInProgress || (wipePassCount <= 0))
|
||||||
throw ParameterIncorrect (SRC_POS);
|
throw ParameterIncorrect (SRC_POS);
|
||||||
|
|
||||||
SystemDriveConfiguration config = GetSystemDriveConfiguration ();
|
SystemDriveConfiguration config = GetSystemDriveConfiguration ();
|
||||||
@@ -2112,7 +2179,7 @@ namespace VeraCrypt
|
|||||||
UserEnrichRandomPool (ParentWindow);
|
UserEnrichRandomPool (ParentWindow);
|
||||||
WaitCursor();
|
WaitCursor();
|
||||||
|
|
||||||
/* The header will be re-encrypted PRAND_DISK_WIPE_PASSES times to prevent adversaries from using
|
/* The header will be re-encrypted wipePassCount times to prevent adversaries from using
|
||||||
techniques such as magnetic force microscopy or magnetic force scanning tunnelling microscopy
|
techniques such as magnetic force microscopy or magnetic force scanning tunnelling microscopy
|
||||||
to recover the overwritten header. According to Peter Gutmann, data should be overwritten 22
|
to recover the overwritten header. According to Peter Gutmann, data should be overwritten 22
|
||||||
times (ideally, 35 times) using non-random patterns and pseudorandom data. However, as users might
|
times (ideally, 35 times) using non-random patterns and pseudorandom data. However, as users might
|
||||||
@@ -2132,7 +2199,7 @@ namespace VeraCrypt
|
|||||||
BOOL backupHeader = FALSE;
|
BOOL backupHeader = FALSE;
|
||||||
while (TRUE)
|
while (TRUE)
|
||||||
{
|
{
|
||||||
for (int wipePass = 0; wipePass < PRAND_DISK_WIPE_PASSES; wipePass++)
|
for (int wipePass = 0; wipePass < wipePassCount; wipePass++)
|
||||||
{
|
{
|
||||||
PCRYPTO_INFO tmpCryptoInfo = NULL;
|
PCRYPTO_INFO tmpCryptoInfo = NULL;
|
||||||
|
|
||||||
@@ -2151,7 +2218,7 @@ namespace VeraCrypt
|
|||||||
cryptoInfo->RequiredProgramVersion,
|
cryptoInfo->RequiredProgramVersion,
|
||||||
cryptoInfo->HeaderFlags | TC_HEADER_FLAG_ENCRYPTED_SYSTEM,
|
cryptoInfo->HeaderFlags | TC_HEADER_FLAG_ENCRYPTED_SYSTEM,
|
||||||
cryptoInfo->SectorSize,
|
cryptoInfo->SectorSize,
|
||||||
wipePass < PRAND_DISK_WIPE_PASSES - 1);
|
wipePass < wipePassCount - 1);
|
||||||
|
|
||||||
if (tmpCryptoInfo)
|
if (tmpCryptoInfo)
|
||||||
crypto_close (tmpCryptoInfo);
|
crypto_close (tmpCryptoInfo);
|
||||||
@@ -2240,6 +2307,7 @@ namespace VeraCrypt
|
|||||||
BackupSystemLoader();
|
BackupSystemLoader();
|
||||||
|
|
||||||
SelectedEncryptionAlgorithmId = ea;
|
SelectedEncryptionAlgorithmId = ea;
|
||||||
|
SelectedPrfAlgorithmId = pkcs5;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -2294,6 +2362,7 @@ namespace VeraCrypt
|
|||||||
}
|
}
|
||||||
|
|
||||||
SelectedEncryptionAlgorithmId = ea;
|
SelectedEncryptionAlgorithmId = ea;
|
||||||
|
SelectedPrfAlgorithmId = pkcs5;
|
||||||
CreateVolumeHeader (volumeSize, encryptedAreaStart, &password, ea, mode, pkcs5);
|
CreateVolumeHeader (volumeSize, encryptedAreaStart, &password, ea, mode, pkcs5);
|
||||||
|
|
||||||
if (!rescueIsoImagePath.empty())
|
if (!rescueIsoImagePath.empty())
|
||||||
@@ -2311,7 +2380,7 @@ namespace VeraCrypt
|
|||||||
void BootEncryption::RestrictPagingFilesToSystemPartition ()
|
void BootEncryption::RestrictPagingFilesToSystemPartition ()
|
||||||
{
|
{
|
||||||
char pagingFiles[128];
|
char pagingFiles[128];
|
||||||
strncpy (pagingFiles, "X:\\pagefile.sys 0 0", sizeof (pagingFiles));
|
StringCbCopyA (pagingFiles, sizeof(pagingFiles), "X:\\pagefile.sys 0 0");
|
||||||
pagingFiles[0] = GetWindowsDirectory()[0];
|
pagingFiles[0] = GetWindowsDirectory()[0];
|
||||||
|
|
||||||
throw_sys_if (!WriteLocalMachineRegistryMultiString ("System\\CurrentControlSet\\Control\\Session Manager\\Memory Management", "PagingFiles", pagingFiles, strlen (pagingFiles) + 2));
|
throw_sys_if (!WriteLocalMachineRegistryMultiString ("System\\CurrentControlSet\\Control\\Session Manager\\Memory Management", "PagingFiles", pagingFiles, strlen (pagingFiles) + 2));
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ namespace VeraCrypt
|
|||||||
class File
|
class File
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
File () : FileOpen (false) { }
|
File () : Elevated (false), FileOpen (false), FilePointerPosition(0), Handle(NULL), IsDevice(false) { }
|
||||||
File (string path, bool readOnly = false, bool create = false);
|
File (string path, bool readOnly = false, bool create = false);
|
||||||
~File () { Close(); }
|
~File () { Close(); }
|
||||||
|
|
||||||
@@ -141,7 +141,7 @@ namespace VeraCrypt
|
|||||||
void AbortSetup ();
|
void AbortSetup ();
|
||||||
void AbortSetupWait ();
|
void AbortSetupWait ();
|
||||||
void CallDriver (DWORD ioctl, void *input = nullptr, DWORD inputSize = 0, void *output = nullptr, DWORD outputSize = 0);
|
void CallDriver (DWORD ioctl, void *input = nullptr, DWORD inputSize = 0, void *output = nullptr, DWORD outputSize = 0);
|
||||||
int ChangePassword (Password *oldPassword, Password *newPassword, int pkcs5);
|
int ChangePassword (Password *oldPassword, Password *newPassword, int pkcs5, int wipePassCount);
|
||||||
void CheckDecoyOSWipeResult ();
|
void CheckDecoyOSWipeResult ();
|
||||||
void CheckEncryptionSetupResult ();
|
void CheckEncryptionSetupResult ();
|
||||||
void CheckRequirements ();
|
void CheckRequirements ();
|
||||||
@@ -215,6 +215,7 @@ namespace VeraCrypt
|
|||||||
HWND ParentWindow;
|
HWND ParentWindow;
|
||||||
SystemDriveConfiguration DriveConfig;
|
SystemDriveConfiguration DriveConfig;
|
||||||
int SelectedEncryptionAlgorithmId;
|
int SelectedEncryptionAlgorithmId;
|
||||||
|
int SelectedPrfAlgorithmId;
|
||||||
Partition HiddenOSCandidatePartition;
|
Partition HiddenOSCandidatePartition;
|
||||||
byte *RescueIsoImage;
|
byte *RescueIsoImage;
|
||||||
byte RescueVolumeHeader[TC_BOOT_ENCRYPTION_VOLUME_HEADER_SIZE];
|
byte RescueVolumeHeader[TC_BOOT_ENCRYPTION_VOLUME_HEADER_SIZE];
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
#include "Apidrvr.h"
|
#include "Apidrvr.h"
|
||||||
#include "Dlgcode.h"
|
#include "Dlgcode.h"
|
||||||
#include "Language.h"
|
#include "Language.h"
|
||||||
|
#include <Strsafe.h>
|
||||||
|
|
||||||
/* Except in response to the WM_INITDIALOG message, the dialog box procedure
|
/* Except in response to the WM_INITDIALOG message, the dialog box procedure
|
||||||
should return nonzero if it processes the message, and zero if it does
|
should return nonzero if it processes the message, and zero if it does
|
||||||
@@ -44,17 +45,19 @@ BOOL CALLBACK CommandHelpDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM
|
|||||||
|
|
||||||
*tmp = 0;
|
*tmp = 0;
|
||||||
|
|
||||||
strcpy (tmp, "Command line options:\n\n");
|
StringCbCopyA (tmp, 8192, "Command line options:\n\n");
|
||||||
for (i = 0; i < as->arg_cnt; i ++)
|
for (i = 0; i < as->arg_cnt; i ++)
|
||||||
{
|
{
|
||||||
if (!as->args[i].Internal)
|
if (!as->args[i].Internal)
|
||||||
{
|
{
|
||||||
sprintf(tmp2, "%s\t%s\n", as->args[i].short_name, as->args[i].long_name);
|
StringCchPrintf(tmp2, MAX_PATH * 2, "%s\t%s\n", as->args[i].short_name, as->args[i].long_name);
|
||||||
strcat(tmp,tmp2);
|
StringCchCat(tmp, 8192, tmp2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SetWindowText (GetDlgItem (hwndDlg, IDC_COMMANDHELP_TEXT), (char*) tmp);
|
SetWindowText (GetDlgItem (hwndDlg, IDC_COMMANDHELP_TEXT), (char*) tmp);
|
||||||
|
|
||||||
|
TCfree(tmp);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -218,7 +221,7 @@ int GetArgumentValue (char **lpszCommandLineArgs, int nArgPos, int *nArgIdx,
|
|||||||
{
|
{
|
||||||
/* Handles the case of no space between parameter code and
|
/* Handles the case of no space between parameter code and
|
||||||
value */
|
value */
|
||||||
strncpy (lpszValue, &lpszCommandLineArgs[*nArgIdx][nArgPos], nValueSize);
|
StringCbCopyA (lpszValue, nValueSize, &lpszCommandLineArgs[*nArgIdx][nArgPos]);
|
||||||
lpszValue[nValueSize - 1] = 0;
|
lpszValue[nValueSize - 1] = 0;
|
||||||
return HAS_ARGUMENT;
|
return HAS_ARGUMENT;
|
||||||
}
|
}
|
||||||
@@ -229,7 +232,7 @@ int GetArgumentValue (char **lpszCommandLineArgs, int nArgPos, int *nArgIdx,
|
|||||||
{
|
{
|
||||||
/* Handles the case of space between parameter code
|
/* Handles the case of space between parameter code
|
||||||
and value */
|
and value */
|
||||||
strncpy (lpszValue, &lpszCommandLineArgs[*nArgIdx + 1][x], nValueSize);
|
StringCbCopyA (lpszValue, nValueSize, &lpszCommandLineArgs[*nArgIdx + 1][x]);
|
||||||
lpszValue[nValueSize - 1] = 0;
|
lpszValue[nValueSize - 1] = 0;
|
||||||
(*nArgIdx)++;
|
(*nArgIdx)++;
|
||||||
return HAS_ARGUMENT;
|
return HAS_ARGUMENT;
|
||||||
|
|||||||
+27
-3
@@ -194,20 +194,24 @@ BEGIN
|
|||||||
CONTROL "",IDC_INFO_BOX_TEXT,"RichEdit20A",ES_MULTILINE | ES_READONLY | ES_NUMBER | WS_BORDER | WS_VSCROLL | WS_TABSTOP,5,6,361,188
|
CONTROL "",IDC_INFO_BOX_TEXT,"RichEdit20A",ES_MULTILINE | ES_READONLY | ES_NUMBER | WS_BORDER | WS_VSCROLL | WS_TABSTOP,5,6,361,188
|
||||||
END
|
END
|
||||||
|
|
||||||
IDD_KEYFILE_GENERATOR DIALOGEX 0, 0, 308, 270
|
IDD_KEYFILE_GENERATOR DIALOGEX 0, 0, 308, 303
|
||||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||||
CAPTION "VeraCrypt - Keyfile Generator"
|
CAPTION "VeraCrypt - Keyfile Generator"
|
||||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
DEFPUSHBUTTON "Close",IDCLOSE,237,10,59,14
|
DEFPUSHBUTTON "Close",IDCLOSE,237,10,59,14
|
||||||
COMBOBOX IDC_PRF_ID,79,49,91,90,CBS_DROPDOWNLIST | WS_TABSTOP
|
COMBOBOX IDC_PRF_ID,79,49,91,90,CBS_DROPDOWNLIST | WS_TABSTOP
|
||||||
PUSHBUTTON "Generate and Save Keyfile...",IDC_GENERATE_AND_SAVE_KEYFILE,89,248,131,14
|
PUSHBUTTON "Generate and Save Keyfile...",IDC_GENERATE_AND_SAVE_KEYFILE,92,281,131,14
|
||||||
LTEXT "IMPORTANT: Move your mouse as randomly as possible within this window. The longer you move it, the better. This significantly increases the cryptographic strength of the keyfile.",IDT_KEYFILE_GENERATOR_NOTE,11,5,213,33
|
LTEXT "IMPORTANT: Move your mouse as randomly as possible within this window. The longer you move it, the better. This significantly increases the cryptographic strength of the keyfile.",IDT_KEYFILE_GENERATOR_NOTE,11,5,213,33
|
||||||
CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,1,40,307,1,WS_EX_STATICEDGE
|
CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,1,40,307,1,WS_EX_STATICEDGE
|
||||||
RTEXT "Mixing PRF:",IDT_PRF,6,51,67,10,SS_CENTERIMAGE
|
RTEXT "Mixing PRF:",IDT_PRF,6,51,67,10,SS_CENTERIMAGE
|
||||||
GROUPBOX "Current Pool Content",IDT_POOL_CONTENTS,6,70,296,170
|
GROUPBOX "Current Pool Content",IDT_POOL_CONTENTS,6,70,296,170
|
||||||
CONTROL "",IDC_POOL_CONTENTS,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,16,83,282,148,WS_EX_TRANSPARENT
|
CONTROL "",IDC_POOL_CONTENTS,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,16,83,282,148,WS_EX_TRANSPARENT
|
||||||
CONTROL "Display pool content",IDC_DISPLAY_POOL_CONTENTS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,191,51,111,10
|
CONTROL "Display pool content",IDC_DISPLAY_POOL_CONTENTS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,191,51,111,10
|
||||||
|
LTEXT "Number of keyfiles:",IDT_NUMBER_KEYFILES,9,247,75,8
|
||||||
|
EDITTEXT IDC_NUMBER_KEYFILES,92,244,51,14,ES_RIGHT | ES_AUTOHSCROLL | ES_NUMBER
|
||||||
|
LTEXT "Keyfiles base name:",IDT_KEYFILES_BASE_NAME,9,266,75,8
|
||||||
|
EDITTEXT IDC_KEYFILES_BASE_NAME,92,263,131,14,ES_AUTOHSCROLL
|
||||||
END
|
END
|
||||||
|
|
||||||
IDD_MULTI_CHOICE_DLG DIALOGEX 0, 0, 167, 322
|
IDD_MULTI_CHOICE_DLG DIALOGEX 0, 0, 167, 322
|
||||||
@@ -373,7 +377,7 @@ BEGIN
|
|||||||
LEFTMARGIN, 7
|
LEFTMARGIN, 7
|
||||||
RIGHTMARGIN, 299
|
RIGHTMARGIN, 299
|
||||||
TOPMARGIN, 7
|
TOPMARGIN, 7
|
||||||
BOTTOMMARGIN, 266
|
BOTTOMMARGIN, 299
|
||||||
END
|
END
|
||||||
|
|
||||||
IDD_MULTI_CHOICE_DLG, DIALOG
|
IDD_MULTI_CHOICE_DLG, DIALOG
|
||||||
@@ -449,6 +453,17 @@ IDR_BOOT_LOADER BIN "..\\Boot\\Windows\\Release\\Boo
|
|||||||
IDR_BOOT_LOADER_AES BIN "..\\Boot\\Windows\\Release_AES\\BootLoader.com.gz"
|
IDR_BOOT_LOADER_AES BIN "..\\Boot\\Windows\\Release_AES\\BootLoader.com.gz"
|
||||||
IDR_BOOT_LOADER_SERPENT BIN "..\\Boot\\Windows\\Release_Serpent\\BootLoader.com.gz"
|
IDR_BOOT_LOADER_SERPENT BIN "..\\Boot\\Windows\\Release_Serpent\\BootLoader.com.gz"
|
||||||
IDR_BOOT_LOADER_TWOFISH BIN "..\\Boot\\Windows\\Release_Twofish\\BootLoader.com.gz"
|
IDR_BOOT_LOADER_TWOFISH BIN "..\\Boot\\Windows\\Release_Twofish\\BootLoader.com.gz"
|
||||||
|
|
||||||
|
IDR_BOOT_SECTOR_SHA2 BIN "..\\Boot\\Windows\\Release_SHA2\\BootSector.bin"
|
||||||
|
IDR_BOOT_SECTOR_AES_SHA2 BIN "..\\Boot\\Windows\\Release_AES_SHA2\\BootSector.bin"
|
||||||
|
IDR_BOOT_SECTOR_SERPENT_SHA2 BIN "..\\Boot\\Windows\\Release_Serpent_SHA2\\BootSector.bin"
|
||||||
|
IDR_BOOT_SECTOR_TWOFISH_SHA2 BIN "..\\Boot\\Windows\\Release_Twofish_SHA2\\BootSector.bin"
|
||||||
|
IDR_BOOT_LOADER_SHA2 BIN "..\\Boot\\Windows\\Release_SHA2\\BootLoader.com.gz"
|
||||||
|
IDR_BOOT_LOADER_AES_SHA2 BIN "..\\Boot\\Windows\\Release_AES_SHA2\\BootLoader.com.gz"
|
||||||
|
IDR_BOOT_LOADER_SERPENT_SHA2 BIN "..\\Boot\\Windows\\Release_Serpent_SHA2\\BootLoader.com.gz"
|
||||||
|
IDR_BOOT_LOADER_TWOFISH_SHA2 BIN "..\\Boot\\Windows\\Release_Twofish_SHA2\\BootLoader.com.gz"
|
||||||
|
|
||||||
|
|
||||||
IDR_RESCUE_BOOT_SECTOR BIN "..\\Boot\\Windows\\Rescue\\BootSector.bin"
|
IDR_RESCUE_BOOT_SECTOR BIN "..\\Boot\\Windows\\Rescue\\BootSector.bin"
|
||||||
IDR_RESCUE_BOOT_SECTOR_AES BIN "..\\Boot\\Windows\\Rescue_AES\\BootSector.bin"
|
IDR_RESCUE_BOOT_SECTOR_AES BIN "..\\Boot\\Windows\\Rescue_AES\\BootSector.bin"
|
||||||
IDR_RESCUE_BOOT_SECTOR_SERPENT BIN "..\\Boot\\Windows\\Rescue_Serpent\\BootSector.bin"
|
IDR_RESCUE_BOOT_SECTOR_SERPENT BIN "..\\Boot\\Windows\\Rescue_Serpent\\BootSector.bin"
|
||||||
@@ -458,6 +473,15 @@ IDR_RESCUE_LOADER_AES BIN "..\\Boot\\Windows\\Rescue_AES\\
|
|||||||
IDR_RESCUE_LOADER_SERPENT BIN "..\\Boot\\Windows\\Rescue_Serpent\\BootLoader.com.gz"
|
IDR_RESCUE_LOADER_SERPENT BIN "..\\Boot\\Windows\\Rescue_Serpent\\BootLoader.com.gz"
|
||||||
IDR_RESCUE_LOADER_TWOFISH BIN "..\\Boot\\Windows\\Rescue_Twofish\\BootLoader.com.gz"
|
IDR_RESCUE_LOADER_TWOFISH BIN "..\\Boot\\Windows\\Rescue_Twofish\\BootLoader.com.gz"
|
||||||
|
|
||||||
|
IDR_RESCUE_BOOT_SECTOR_SHA2 BIN "..\\Boot\\Windows\\Rescue_SHA2\\BootSector.bin"
|
||||||
|
IDR_RESCUE_BOOT_SECTOR_AES_SHA2 BIN "..\\Boot\\Windows\\Rescue_AES_SHA2\\BootSector.bin"
|
||||||
|
IDR_RESCUE_BOOT_SECTOR_SERPENT_SHA2 BIN "..\\Boot\\Windows\\Rescue_Serpent_SHA2\\BootSector.bin"
|
||||||
|
IDR_RESCUE_BOOT_SECTOR_TWOFISH_SHA2 BIN "..\\Boot\\Windows\\Rescue_Twofish_SHA2\\BootSector.bin"
|
||||||
|
IDR_RESCUE_LOADER_SHA2 BIN "..\\Boot\\Windows\\Rescue_SHA2\\BootLoader.com.gz"
|
||||||
|
IDR_RESCUE_LOADER_AES_SHA2 BIN "..\\Boot\\Windows\\Rescue_AES_SHA2\\BootLoader.com.gz"
|
||||||
|
IDR_RESCUE_LOADER_SERPENT_SHA2 BIN "..\\Boot\\Windows\\Rescue_Serpent_SHA2\\BootLoader.com.gz"
|
||||||
|
IDR_RESCUE_LOADER_TWOFISH_SHA2 BIN "..\\Boot\\Windows\\Rescue_Twofish_SHA2\\BootLoader.com.gz"
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
// XML
|
// XML
|
||||||
|
|||||||
+80
-905
File diff suppressed because it is too large
Load Diff
+30
-37
@@ -42,21 +42,16 @@ extern "C" {
|
|||||||
// Size of the volume header area containing concatenated master key(s) and secondary key(s) (XTS mode)
|
// Size of the volume header area containing concatenated master key(s) and secondary key(s) (XTS mode)
|
||||||
#define MASTER_KEYDATA_SIZE 256
|
#define MASTER_KEYDATA_SIZE 256
|
||||||
|
|
||||||
// Size of the deprecated volume header item containing either an IV seed (CBC mode) or tweak key (LRW mode)
|
|
||||||
#define LEGACY_VOL_IV_SIZE 32
|
|
||||||
|
|
||||||
// The first PRF to try when mounting
|
// The first PRF to try when mounting
|
||||||
#define FIRST_PRF_ID 1
|
#define FIRST_PRF_ID 1
|
||||||
|
|
||||||
// Hash algorithms (pseudorandom functions).
|
// Hash algorithms (pseudorandom functions).
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
RIPEMD160 = FIRST_PRF_ID,
|
SHA512 = FIRST_PRF_ID,
|
||||||
#ifndef TC_WINDOWS_BOOT
|
|
||||||
SHA512,
|
|
||||||
WHIRLPOOL,
|
WHIRLPOOL,
|
||||||
SHA1, // Deprecated/legacy
|
SHA256,
|
||||||
#endif
|
RIPEMD160,
|
||||||
HASH_ENUM_END_ID
|
HASH_ENUM_END_ID
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -66,8 +61,8 @@ enum
|
|||||||
#define RIPEMD160_BLOCKSIZE 64
|
#define RIPEMD160_BLOCKSIZE 64
|
||||||
#define RIPEMD160_DIGESTSIZE 20
|
#define RIPEMD160_DIGESTSIZE 20
|
||||||
|
|
||||||
#define SHA1_BLOCKSIZE 64
|
#define SHA256_BLOCKSIZE 64
|
||||||
#define SHA1_DIGESTSIZE 20
|
#define SHA256_DIGESTSIZE 32
|
||||||
|
|
||||||
#define SHA512_BLOCKSIZE 128
|
#define SHA512_BLOCKSIZE 128
|
||||||
#define SHA512_DIGESTSIZE 64
|
#define SHA512_DIGESTSIZE 64
|
||||||
@@ -78,7 +73,7 @@ enum
|
|||||||
#define MAX_DIGESTSIZE WHIRLPOOL_DIGESTSIZE
|
#define MAX_DIGESTSIZE WHIRLPOOL_DIGESTSIZE
|
||||||
|
|
||||||
#define DEFAULT_HASH_ALGORITHM FIRST_PRF_ID
|
#define DEFAULT_HASH_ALGORITHM FIRST_PRF_ID
|
||||||
#define DEFAULT_HASH_ALGORITHM_BOOT RIPEMD160
|
#define DEFAULT_HASH_ALGORITHM_BOOT SHA256
|
||||||
|
|
||||||
// The mode of operation used for newly created volumes and first to try when mounting
|
// The mode of operation used for newly created volumes and first to try when mounting
|
||||||
#define FIRST_MODE_OF_OPERATION_ID 1
|
#define FIRST_MODE_OF_OPERATION_ID 1
|
||||||
@@ -89,12 +84,6 @@ enum
|
|||||||
/* If you add/remove a mode, update the following: GetMaxPkcs5OutSize(), EAInitMode() */
|
/* If you add/remove a mode, update the following: GetMaxPkcs5OutSize(), EAInitMode() */
|
||||||
|
|
||||||
XTS = FIRST_MODE_OF_OPERATION_ID,
|
XTS = FIRST_MODE_OF_OPERATION_ID,
|
||||||
#ifndef TC_WINDOWS_BOOT
|
|
||||||
LRW, // Deprecated/legacy
|
|
||||||
CBC, // Deprecated/legacy
|
|
||||||
OUTER_CBC, // Deprecated/legacy
|
|
||||||
INNER_CBC, // Deprecated/legacy
|
|
||||||
#endif
|
|
||||||
MODE_ENUM_END_ID
|
MODE_ENUM_END_ID
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -115,12 +104,7 @@ enum
|
|||||||
NONE = 0,
|
NONE = 0,
|
||||||
AES,
|
AES,
|
||||||
SERPENT,
|
SERPENT,
|
||||||
TWOFISH,
|
TWOFISH
|
||||||
#ifndef TC_WINDOWS_BOOT
|
|
||||||
BLOWFISH, // Deprecated/legacy
|
|
||||||
CAST, // Deprecated/legacy
|
|
||||||
TRIPLEDES // Deprecated/legacy
|
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
@@ -177,6 +161,9 @@ typedef struct
|
|||||||
# define PRAND_DISK_WIPE_PASSES 256
|
# define PRAND_DISK_WIPE_PASSES 256
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* specific value for volume header wipe used only when drive is fully wiped. */
|
||||||
|
#define PRAND_HEADER_WIPE_PASSES 3
|
||||||
|
|
||||||
#if !defined (TC_WINDOWS_BOOT) || defined (TC_WINDOWS_BOOT_AES)
|
#if !defined (TC_WINDOWS_BOOT) || defined (TC_WINDOWS_BOOT_AES)
|
||||||
# include "Aes.h"
|
# include "Aes.h"
|
||||||
#else
|
#else
|
||||||
@@ -184,15 +171,11 @@ typedef struct
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "Aes_hw_cpu.h"
|
#include "Aes_hw_cpu.h"
|
||||||
#include "Blowfish.h"
|
|
||||||
#include "Cast.h"
|
|
||||||
#include "Des.h"
|
|
||||||
#include "Serpent.h"
|
#include "Serpent.h"
|
||||||
#include "Twofish.h"
|
#include "Twofish.h"
|
||||||
|
|
||||||
#include "Rmd160.h"
|
#include "Rmd160.h"
|
||||||
#ifndef TC_WINDOWS_BOOT
|
#ifndef TC_WINDOWS_BOOT
|
||||||
# include "Sha1.h"
|
|
||||||
# include "Sha2.h"
|
# include "Sha2.h"
|
||||||
# include "Whirlpool.h"
|
# include "Whirlpool.h"
|
||||||
#endif
|
#endif
|
||||||
@@ -227,7 +210,6 @@ typedef struct CRYPTO_INFO_t
|
|||||||
unsigned __int8 k2[MASTER_KEYDATA_SIZE]; /* For XTS, this contains the secondary key (if cascade, multiple concatenated). For LRW (deprecated/legacy), it contains the tweak key. For CBC (deprecated/legacy), it contains the IV seed. */
|
unsigned __int8 k2[MASTER_KEYDATA_SIZE]; /* For XTS, this contains the secondary key (if cascade, multiple concatenated). For LRW (deprecated/legacy), it contains the tweak key. For CBC (deprecated/legacy), it contains the IV seed. */
|
||||||
unsigned __int8 salt[PKCS5_SALT_SIZE];
|
unsigned __int8 salt[PKCS5_SALT_SIZE];
|
||||||
int noIterations;
|
int noIterations;
|
||||||
int pkcs5;
|
|
||||||
|
|
||||||
uint64 volume_creation_time; // Legacy
|
uint64 volume_creation_time; // Legacy
|
||||||
uint64 header_creation_time; // Legacy
|
uint64 header_creation_time; // Legacy
|
||||||
@@ -258,6 +240,7 @@ typedef struct CRYPTO_INFO_t
|
|||||||
UINT64_STRUCT EncryptedAreaLength;
|
UINT64_STRUCT EncryptedAreaLength;
|
||||||
|
|
||||||
uint32 HeaderFlags;
|
uint32 HeaderFlags;
|
||||||
|
int pkcs5;
|
||||||
|
|
||||||
} CRYPTO_INFO, *PCRYPTO_INFO;
|
} CRYPTO_INFO, *PCRYPTO_INFO;
|
||||||
|
|
||||||
@@ -269,10 +252,18 @@ int CipherGetBlockSize (int cipher);
|
|||||||
int CipherGetKeySize (int cipher);
|
int CipherGetKeySize (int cipher);
|
||||||
int CipherGetKeyScheduleSize (int cipher);
|
int CipherGetKeyScheduleSize (int cipher);
|
||||||
BOOL CipherSupportsIntraDataUnitParallelization (int cipher);
|
BOOL CipherSupportsIntraDataUnitParallelization (int cipher);
|
||||||
|
|
||||||
|
#ifndef TC_WINDOWS_BOOT
|
||||||
|
const
|
||||||
|
#endif
|
||||||
char * CipherGetName (int cipher);
|
char * CipherGetName (int cipher);
|
||||||
|
|
||||||
int CipherInit (int cipher, unsigned char *key, unsigned char *ks);
|
int CipherInit (int cipher, unsigned char *key, unsigned char *ks);
|
||||||
|
#ifndef TC_WINDOWS_BOOT_SINGLE_CIPHER_MODE
|
||||||
int EAInit (int ea, unsigned char *key, unsigned char *ks);
|
int EAInit (int ea, unsigned char *key, unsigned char *ks);
|
||||||
|
#else
|
||||||
|
int EAInit (unsigned char *key, unsigned char *ks);
|
||||||
|
#endif
|
||||||
BOOL EAInitMode (PCRYPTO_INFO ci);
|
BOOL EAInitMode (PCRYPTO_INFO ci);
|
||||||
void EncipherBlock(int cipher, void *data, void *ks);
|
void EncipherBlock(int cipher, void *data, void *ks);
|
||||||
void DecipherBlock(int cipher, void *data, void *ks);
|
void DecipherBlock(int cipher, void *data, void *ks);
|
||||||
@@ -302,10 +293,19 @@ int EAGetPreviousCipher (int ea, int previousCipherId);
|
|||||||
int EAIsFormatEnabled (int ea);
|
int EAIsFormatEnabled (int ea);
|
||||||
BOOL EAIsModeSupported (int ea, int testedMode);
|
BOOL EAIsModeSupported (int ea, int testedMode);
|
||||||
|
|
||||||
char *HashGetName (int hash_algo_id);
|
|
||||||
BOOL HashIsDeprecated (int hashId);
|
|
||||||
|
|
||||||
|
#ifndef TC_WINDOWS_BOOT
|
||||||
|
const
|
||||||
|
#endif
|
||||||
|
char *HashGetName (int hash_algo_id);
|
||||||
|
|
||||||
|
#ifndef TC_WINDOWS_BOOT
|
||||||
|
void HashGetName2 (char *buf, int hashId);
|
||||||
|
BOOL HashIsDeprecated (int hashId);
|
||||||
|
BOOL HashForSystemEncryption (int hashId);
|
||||||
int GetMaxPkcs5OutSize (void);
|
int GetMaxPkcs5OutSize (void);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
void EncryptDataUnits (unsigned __int8 *buf, const UINT64_STRUCT *structUnitNo, uint32 nbrUnits, PCRYPTO_INFO ci);
|
void EncryptDataUnits (unsigned __int8 *buf, const UINT64_STRUCT *structUnitNo, uint32 nbrUnits, PCRYPTO_INFO ci);
|
||||||
void EncryptDataUnitsCurrentThread (unsigned __int8 *buf, const UINT64_STRUCT *structUnitNo, TC_LARGEST_COMPILER_UINT nbrUnits, PCRYPTO_INFO ci);
|
void EncryptDataUnitsCurrentThread (unsigned __int8 *buf, const UINT64_STRUCT *structUnitNo, TC_LARGEST_COMPILER_UINT nbrUnits, PCRYPTO_INFO ci);
|
||||||
@@ -313,13 +313,6 @@ void DecryptDataUnits (unsigned __int8 *buf, const UINT64_STRUCT *structUnitNo,
|
|||||||
void DecryptDataUnitsCurrentThread (unsigned __int8 *buf, const UINT64_STRUCT *structUnitNo, TC_LARGEST_COMPILER_UINT nbrUnits, PCRYPTO_INFO ci);
|
void DecryptDataUnitsCurrentThread (unsigned __int8 *buf, const UINT64_STRUCT *structUnitNo, TC_LARGEST_COMPILER_UINT nbrUnits, PCRYPTO_INFO ci);
|
||||||
void EncryptBuffer (unsigned __int8 *buf, TC_LARGEST_COMPILER_UINT len, PCRYPTO_INFO cryptoInfo);
|
void EncryptBuffer (unsigned __int8 *buf, TC_LARGEST_COMPILER_UINT len, PCRYPTO_INFO cryptoInfo);
|
||||||
void DecryptBuffer (unsigned __int8 *buf, TC_LARGEST_COMPILER_UINT len, PCRYPTO_INFO cryptoInfo);
|
void DecryptBuffer (unsigned __int8 *buf, TC_LARGEST_COMPILER_UINT len, PCRYPTO_INFO cryptoInfo);
|
||||||
#ifndef TC_NO_COMPILER_INT64
|
|
||||||
void EncryptBufferLRW128 (byte *buffer, uint64 length, uint64 blockIndex, PCRYPTO_INFO cryptoInfo);
|
|
||||||
void DecryptBufferLRW128 (byte *buffer, uint64 length, uint64 blockIndex, PCRYPTO_INFO cryptoInfo);
|
|
||||||
void EncryptBufferLRW64 (byte *buffer, uint64 length, uint64 blockIndex, PCRYPTO_INFO cryptoInfo);
|
|
||||||
void DecryptBufferLRW64 (byte *buffer, uint64 length, uint64 blockIndex, PCRYPTO_INFO cryptoInfo);
|
|
||||||
uint64 DataUnit2LRWIndex (uint64 dataUnit, int blockSize, PCRYPTO_INFO ci);
|
|
||||||
#endif // #ifndef TC_NO_COMPILER_INT64
|
|
||||||
|
|
||||||
BOOL IsAesHwCpuSupported ();
|
BOOL IsAesHwCpuSupported ();
|
||||||
void EnableHwEncryption (BOOL enable);
|
void EnableHwEncryption (BOOL enable);
|
||||||
|
|||||||
+710
-385
File diff suppressed because it is too large
Load Diff
+16
-15
@@ -218,13 +218,13 @@ typedef struct
|
|||||||
#define YES_NO MB_YESNO
|
#define YES_NO MB_YESNO
|
||||||
|
|
||||||
#define ISO_BURNER_TOOL "isoburn.exe"
|
#define ISO_BURNER_TOOL "isoburn.exe"
|
||||||
#define PRINT_TOOL "notepad"
|
#define PRINT_TOOL "notepad.exe"
|
||||||
|
|
||||||
void cleanup ( void );
|
void cleanup ( void );
|
||||||
void LowerCaseCopy ( char *lpszDest , const char *lpszSource );
|
void LowerCaseCopy ( char *lpszDest , const char *lpszSource );
|
||||||
void UpperCaseCopy ( char *lpszDest , const char *lpszSource );
|
void UpperCaseCopy ( char *lpszDest , size_t cbDest, const char *lpszSource );
|
||||||
void CreateFullVolumePath ( char *lpszDiskFile , const char *lpszFileName , BOOL *bDevice );
|
void CreateFullVolumePath ( char *lpszDiskFile , size_t cbDiskFile, const char *lpszFileName , BOOL *bDevice );
|
||||||
int FakeDosNameForDevice ( const char *lpszDiskFile , char *lpszDosDevice , char *lpszCFDevice , BOOL bNameOnly );
|
int FakeDosNameForDevice ( const char *lpszDiskFile , char *lpszDosDevice , size_t cbDosDevice, char *lpszCFDevice , size_t cbCFDevice, BOOL bNameOnly );
|
||||||
int RemoveFakeDosName ( char *lpszDiskFile , char *lpszDosDevice );
|
int RemoveFakeDosName ( char *lpszDiskFile , char *lpszDosDevice );
|
||||||
void AbortProcess ( char *stringId );
|
void AbortProcess ( char *stringId );
|
||||||
void AbortProcessSilent ( void );
|
void AbortProcessSilent ( void );
|
||||||
@@ -242,8 +242,8 @@ void CloseStaticModelessWaitDlg (void);
|
|||||||
BOOL IsButtonChecked ( HWND hButton );
|
BOOL IsButtonChecked ( HWND hButton );
|
||||||
void CheckButton ( HWND hButton );
|
void CheckButton ( HWND hButton );
|
||||||
void LeftPadString (char *szTmp, int len, int targetLen, char filler);
|
void LeftPadString (char *szTmp, int len, int targetLen, char filler);
|
||||||
void ToSBCS ( LPWSTR lpszText );
|
void ToSBCS ( LPWSTR lpszText, size_t cbSize );
|
||||||
void ToUNICODE ( char *lpszText );
|
void ToUNICODE ( char *lpszText , size_t cbSize);
|
||||||
void InitDialog ( HWND hwndDlg );
|
void InitDialog ( HWND hwndDlg );
|
||||||
void ProcessPaintMessages (HWND hwnd, int maxMessagesToProcess);
|
void ProcessPaintMessages (HWND hwnd, int maxMessagesToProcess);
|
||||||
HDC CreateMemBitmap ( HINSTANCE hInstance , HWND hwnd , char *resource );
|
HDC CreateMemBitmap ( HINSTANCE hInstance , HWND hwnd , char *resource );
|
||||||
@@ -259,7 +259,7 @@ void HandCursor ();
|
|||||||
void AddComboPair (HWND hComboBox, const char *lpszItem, int value);
|
void AddComboPair (HWND hComboBox, const char *lpszItem, int value);
|
||||||
void AddComboPairW (HWND hComboBox, const wchar_t *lpszItem, int value);
|
void AddComboPairW (HWND hComboBox, const wchar_t *lpszItem, int value);
|
||||||
void SelectAlgo ( HWND hComboBox , int *nCipher );
|
void SelectAlgo ( HWND hComboBox , int *nCipher );
|
||||||
void PopulateWipeModeCombo (HWND hComboBox, BOOL bNA, BOOL bInPlaceEncryption);
|
void PopulateWipeModeCombo (HWND hComboBox, BOOL bNA, BOOL bInPlaceEncryption, BOOL bHeaderWipe);
|
||||||
wchar_t *GetWipeModeName (WipeAlgorithmId modeId);
|
wchar_t *GetWipeModeName (WipeAlgorithmId modeId);
|
||||||
wchar_t *GetPathType (const char *path, BOOL bUpperCase, BOOL *bIsPartition);
|
wchar_t *GetPathType (const char *path, BOOL bUpperCase, BOOL *bIsPartition);
|
||||||
LRESULT CALLBACK CustomDlgProc ( HWND hwnd , UINT uMsg , WPARAM wParam , LPARAM lParam );
|
LRESULT CALLBACK CustomDlgProc ( HWND hwnd , UINT uMsg , WPARAM wParam , LPARAM lParam );
|
||||||
@@ -293,7 +293,7 @@ BOOL OpenDevice (const char *lpszPath, OPEN_TEST_STRUCT *driver, BOOL detectFile
|
|||||||
void NotifyDriverOfPortableMode (void);
|
void NotifyDriverOfPortableMode (void);
|
||||||
int GetAvailableFixedDisks ( HWND hComboBox , char *lpszRootPath );
|
int GetAvailableFixedDisks ( HWND hComboBox , char *lpszRootPath );
|
||||||
int GetAvailableRemovables ( HWND hComboBox , char *lpszRootPath );
|
int GetAvailableRemovables ( HWND hComboBox , char *lpszRootPath );
|
||||||
int IsSystemDevicePath (char *path, HWND hwndDlg, BOOL bReliableRequired);
|
int IsSystemDevicePath (const char *path, HWND hwndDlg, BOOL bReliableRequired);
|
||||||
BOOL CALLBACK RawDevicesDlgProc ( HWND hwndDlg , UINT msg , WPARAM wParam , LPARAM lParam );
|
BOOL CALLBACK RawDevicesDlgProc ( HWND hwndDlg , UINT msg , WPARAM wParam , LPARAM lParam );
|
||||||
BOOL TextInfoDialogBox (int nID);
|
BOOL TextInfoDialogBox (int nID);
|
||||||
BOOL CALLBACK TextInfoDialogBoxDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
BOOL CALLBACK TextInfoDialogBoxDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
||||||
@@ -333,7 +333,7 @@ int GetMountedVolumeDriveNo (char *volname);
|
|||||||
BOOL IsAdmin (void);
|
BOOL IsAdmin (void);
|
||||||
BOOL IsBuiltInAdmin ();
|
BOOL IsBuiltInAdmin ();
|
||||||
BOOL IsUacSupported ();
|
BOOL IsUacSupported ();
|
||||||
BOOL ResolveSymbolicLink (const wchar_t *symLinkName, PWSTR targetName);
|
BOOL ResolveSymbolicLink (const wchar_t *symLinkName, PWSTR targetName, size_t cbTargetName);
|
||||||
int GetDiskDeviceDriveLetter (PWSTR deviceName);
|
int GetDiskDeviceDriveLetter (PWSTR deviceName);
|
||||||
int FileSystemAppearsEmpty (const char *devicePath);
|
int FileSystemAppearsEmpty (const char *devicePath);
|
||||||
__int64 GetStatsFreeSpaceOnPartition (const char *devicePath, float *percent, __int64 *occupiedBytes, BOOL silent);
|
__int64 GetStatsFreeSpaceOnPartition (const char *devicePath, float *percent, __int64 *occupiedBytes, BOOL silent);
|
||||||
@@ -346,7 +346,7 @@ BOOL TCCopyFile (char *sourceFileName, char *destinationFile);
|
|||||||
BOOL SaveBufferToFile (const char *inputBuffer, const char *destinationFile, DWORD inputLength, BOOL bAppend);
|
BOOL SaveBufferToFile (const char *inputBuffer, const char *destinationFile, DWORD inputLength, BOOL bAppend);
|
||||||
BOOL TCFlushFile (FILE *f);
|
BOOL TCFlushFile (FILE *f);
|
||||||
BOOL PrintHardCopyTextUTF16 (wchar_t *text, char *title, int byteLen);
|
BOOL PrintHardCopyTextUTF16 (wchar_t *text, char *title, int byteLen);
|
||||||
void GetSpeedString (unsigned __int64 speed, wchar_t *str);
|
void GetSpeedString (unsigned __int64 speed, wchar_t *str, size_t cbStr);
|
||||||
BOOL IsNonInstallMode ();
|
BOOL IsNonInstallMode ();
|
||||||
BOOL DriverUnload ();
|
BOOL DriverUnload ();
|
||||||
LRESULT SetCheckBox (HWND hwndDlg, int dlgItem, BOOL state);
|
LRESULT SetCheckBox (HWND hwndDlg, int dlgItem, BOOL state);
|
||||||
@@ -362,7 +362,7 @@ LRESULT ListSubItemSet (HWND list, int index, int subIndex, char *string);
|
|||||||
LRESULT ListSubItemSetW (HWND list, int index, int subIndex, wchar_t *string);
|
LRESULT ListSubItemSetW (HWND list, int index, int subIndex, wchar_t *string);
|
||||||
BOOL GetMountList (MOUNT_LIST_STRUCT *list);
|
BOOL GetMountList (MOUNT_LIST_STRUCT *list);
|
||||||
int GetDriverRefCount ();
|
int GetDriverRefCount ();
|
||||||
void GetSizeString (unsigned __int64 size, wchar_t *str);
|
void GetSizeString (unsigned __int64 size, wchar_t *str, size_t cbStr);
|
||||||
__int64 GetFileSize64 (const char *path);
|
__int64 GetFileSize64 (const char *path);
|
||||||
BOOL LoadInt16 (char *filePath, int *result, __int64 fileOffset);
|
BOOL LoadInt16 (char *filePath, int *result, __int64 fileOffset);
|
||||||
BOOL LoadInt32 (char *filePath, unsigned __int32 *result, __int64 fileOffset);
|
BOOL LoadInt32 (char *filePath, unsigned __int32 *result, __int64 fileOffset);
|
||||||
@@ -429,8 +429,8 @@ BOOL CALLBACK FindTCWindowEnum (HWND hwnd, LPARAM lParam);
|
|||||||
BYTE *MapResource (char *resourceType, int resourceId, PDWORD size);
|
BYTE *MapResource (char *resourceType, int resourceId, PDWORD size);
|
||||||
void InconsistencyResolved (char *msg);
|
void InconsistencyResolved (char *msg);
|
||||||
void ReportUnexpectedState (char *techInfo);
|
void ReportUnexpectedState (char *techInfo);
|
||||||
BOOL SelectMultipleFiles (HWND hwndDlg, char *stringId, char *lpszFileName, BOOL keepHistory);
|
BOOL SelectMultipleFiles (HWND hwndDlg, const char *stringId, char *lpszFileName, size_t cbFileName, BOOL keepHistory);
|
||||||
BOOL SelectMultipleFilesNext (char *lpszFileName);
|
BOOL SelectMultipleFilesNext (char *lpszFileName, size_t cbFileName);
|
||||||
void OpenOnlineHelp ();
|
void OpenOnlineHelp ();
|
||||||
BOOL GetPartitionInfo (const char *deviceName, PPARTITION_INFORMATION rpartInfo);
|
BOOL GetPartitionInfo (const char *deviceName, PPARTITION_INFORMATION rpartInfo);
|
||||||
BOOL GetDeviceInfo (const char *deviceName, DISK_PARTITION_INFO_STRUCT *info);
|
BOOL GetDeviceInfo (const char *deviceName, DISK_PARTITION_INFO_STRUCT *info);
|
||||||
@@ -464,7 +464,7 @@ int AskNonSysInPlaceEncryptionResume ();
|
|||||||
BOOL RemoveDeviceWriteProtection (HWND hwndDlg, char *devicePath);
|
BOOL RemoveDeviceWriteProtection (HWND hwndDlg, char *devicePath);
|
||||||
void EnableElevatedCursorChange (HWND parent);
|
void EnableElevatedCursorChange (HWND parent);
|
||||||
BOOL DisableFileCompression (HANDLE file);
|
BOOL DisableFileCompression (HANDLE file);
|
||||||
BOOL VolumePathExists (char *volumePath);
|
BOOL VolumePathExists (const char *volumePath);
|
||||||
BOOL IsWindowsIsoBurnerAvailable ();
|
BOOL IsWindowsIsoBurnerAvailable ();
|
||||||
BOOL LaunchWindowsIsoBurner (HWND hwnd, const char *isoPath);
|
BOOL LaunchWindowsIsoBurner (HWND hwnd, const char *isoPath);
|
||||||
BOOL IsApplicationInstalled (const char *appName);
|
BOOL IsApplicationInstalled (const char *appName);
|
||||||
@@ -487,7 +487,8 @@ struct HostDevice
|
|||||||
IsVirtualPartition (false),
|
IsVirtualPartition (false),
|
||||||
HasUnencryptedFilesystem (false),
|
HasUnencryptedFilesystem (false),
|
||||||
Removable (false),
|
Removable (false),
|
||||||
Size (0)
|
Size (0),
|
||||||
|
SystemNumber((uint32) -1)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -159,7 +159,7 @@ static TC_THREAD_PROC EncryptionThreadProc (void *threadArg)
|
|||||||
switch (workItem->KeyDerivation.Pkcs5Prf)
|
switch (workItem->KeyDerivation.Pkcs5Prf)
|
||||||
{
|
{
|
||||||
case RIPEMD160:
|
case RIPEMD160:
|
||||||
derive_key_ripemd160 (TRUE, workItem->KeyDerivation.Password, workItem->KeyDerivation.PasswordLength, workItem->KeyDerivation.Salt, PKCS5_SALT_SIZE,
|
derive_key_ripemd160 (workItem->KeyDerivation.Password, workItem->KeyDerivation.PasswordLength, workItem->KeyDerivation.Salt, PKCS5_SALT_SIZE,
|
||||||
workItem->KeyDerivation.IterationCount, workItem->KeyDerivation.DerivedKey, GetMaxPkcs5OutSize());
|
workItem->KeyDerivation.IterationCount, workItem->KeyDerivation.DerivedKey, GetMaxPkcs5OutSize());
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -173,8 +173,8 @@ static TC_THREAD_PROC EncryptionThreadProc (void *threadArg)
|
|||||||
workItem->KeyDerivation.IterationCount, workItem->KeyDerivation.DerivedKey, GetMaxPkcs5OutSize());
|
workItem->KeyDerivation.IterationCount, workItem->KeyDerivation.DerivedKey, GetMaxPkcs5OutSize());
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SHA1:
|
case SHA256:
|
||||||
derive_key_sha1 (workItem->KeyDerivation.Password, workItem->KeyDerivation.PasswordLength, workItem->KeyDerivation.Salt, PKCS5_SALT_SIZE,
|
derive_key_sha256 (workItem->KeyDerivation.Password, workItem->KeyDerivation.PasswordLength, workItem->KeyDerivation.Salt, PKCS5_SALT_SIZE,
|
||||||
workItem->KeyDerivation.IterationCount, workItem->KeyDerivation.DerivedKey, GetMaxPkcs5OutSize());
|
workItem->KeyDerivation.IterationCount, workItem->KeyDerivation.DerivedKey, GetMaxPkcs5OutSize());
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|||||||
@@ -35,12 +35,12 @@ namespace VeraCrypt
|
|||||||
struct ErrorException : public Exception
|
struct ErrorException : public Exception
|
||||||
{
|
{
|
||||||
ErrorException (char *langId) : ErrLangId (langId) { }
|
ErrorException (char *langId) : ErrLangId (langId) { }
|
||||||
ErrorException (const wstring &errMsg) : ErrMsg (errMsg) { }
|
ErrorException (const wstring &errMsg) : ErrLangId(NULL), ErrMsg (errMsg) { }
|
||||||
|
|
||||||
void Show (HWND parent) const
|
void Show (HWND parent) const
|
||||||
{
|
{
|
||||||
if (ErrMsg.empty())
|
if (ErrMsg.empty())
|
||||||
::Error (ErrLangId);
|
::Error (ErrLangId? ErrLangId : "");
|
||||||
else
|
else
|
||||||
::ErrorDirect (ErrMsg.c_str());
|
::ErrorDirect (ErrMsg.c_str());
|
||||||
}
|
}
|
||||||
|
|||||||
+17
-5
@@ -29,6 +29,8 @@
|
|||||||
#include "Format/FormatCom.h"
|
#include "Format/FormatCom.h"
|
||||||
#include "Format/Tcformat.h"
|
#include "Format/Tcformat.h"
|
||||||
|
|
||||||
|
#include <Strsafe.h>
|
||||||
|
|
||||||
int FormatWriteBufferSize = 1024 * 1024;
|
int FormatWriteBufferSize = 1024 * 1024;
|
||||||
static uint32 FormatSectorSize = 0;
|
static uint32 FormatSectorSize = 0;
|
||||||
|
|
||||||
@@ -129,8 +131,8 @@ int TCFormatVolume (volatile FORMAT_VOL_PARAMETERS *volParams)
|
|||||||
|
|
||||||
if (volParams->bDevice)
|
if (volParams->bDevice)
|
||||||
{
|
{
|
||||||
strcpy ((char *)deviceName, volParams->volumePath);
|
StringCbCopyA ((char *)deviceName, sizeof(deviceName), volParams->volumePath);
|
||||||
ToUNICODE ((char *)deviceName);
|
ToUNICODE ((char *)deviceName, sizeof(deviceName));
|
||||||
|
|
||||||
driveLetter = GetDiskDeviceDriveLetter (deviceName);
|
driveLetter = GetDiskDeviceDriveLetter (deviceName);
|
||||||
}
|
}
|
||||||
@@ -170,7 +172,7 @@ begin_format:
|
|||||||
DWORD dwResult;
|
DWORD dwResult;
|
||||||
int nPass;
|
int nPass;
|
||||||
|
|
||||||
if (FakeDosNameForDevice (volParams->volumePath, dosDev, devName, FALSE) != 0)
|
if (FakeDosNameForDevice (volParams->volumePath, dosDev, sizeof(dosDev), devName, sizeof(devName), FALSE) != 0)
|
||||||
return ERR_OS_ERROR;
|
return ERR_OS_ERROR;
|
||||||
|
|
||||||
if (IsDeviceMounted (devName))
|
if (IsDeviceMounted (devName))
|
||||||
@@ -795,11 +797,21 @@ BOOLEAN __stdcall FormatExCallback (int command, DWORD subCommand, PVOID paramet
|
|||||||
|
|
||||||
BOOL FormatNtfs (int driveNo, int clusterSize)
|
BOOL FormatNtfs (int driveNo, int clusterSize)
|
||||||
{
|
{
|
||||||
|
char dllPath[MAX_PATH] = {0};
|
||||||
WCHAR dir[8] = { (WCHAR) driveNo + 'A', 0 };
|
WCHAR dir[8] = { (WCHAR) driveNo + 'A', 0 };
|
||||||
PFORMATEX FormatEx;
|
PFORMATEX FormatEx;
|
||||||
HMODULE hModule = LoadLibrary ("fmifs.dll");
|
HMODULE hModule;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
if (GetSystemDirectory (dllPath, MAX_PATH))
|
||||||
|
{
|
||||||
|
StringCbCatA(dllPath, sizeof(dllPath), "\\fmifs.dll");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
StringCbCopyA(dllPath, sizeof(dllPath), "C:\\Windows\\System32\\fmifs.dll");
|
||||||
|
|
||||||
|
hModule = LoadLibrary (dllPath);
|
||||||
|
|
||||||
if (hModule == NULL)
|
if (hModule == NULL)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
@@ -809,7 +821,7 @@ BOOL FormatNtfs (int driveNo, int clusterSize)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
wcscat (dir, L":\\");
|
StringCbCatW (dir, sizeof(dir), L":\\");
|
||||||
|
|
||||||
FormatExResult = FALSE;
|
FormatExResult = FALSE;
|
||||||
|
|
||||||
|
|||||||
@@ -651,43 +651,6 @@ int Gf128Tab64Init (unsigned __int8 *a, GfCtx *ctx)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Gf64TabInit (unsigned __int8 *a, GfCtx *ctx)
|
|
||||||
{
|
|
||||||
/* Deprecated/legacy */
|
|
||||||
|
|
||||||
GfCtx4k64 *ctx4k;
|
|
||||||
unsigned __int8 am[8];
|
|
||||||
int i, j;
|
|
||||||
|
|
||||||
ctx4k = (GfCtx4k64 *) TCalloc (sizeof (GfCtx4k64));
|
|
||||||
if (!ctx4k)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
memcpy (am, a, 8);
|
|
||||||
MirrorBits64 (am);
|
|
||||||
compile_4k_table64 (am, ctx4k);
|
|
||||||
|
|
||||||
/* Convert LSB-first table to MSB-first */
|
|
||||||
for (i = 0; i < 16; i++)
|
|
||||||
{
|
|
||||||
for (j = 0; j < 16; j++)
|
|
||||||
{
|
|
||||||
int jm = 0;
|
|
||||||
jm |= (j & 0x1) << 3;
|
|
||||||
jm |= (j & 0x2) << 1;
|
|
||||||
jm |= (j & 0x4) >> 1;
|
|
||||||
jm |= (j & 0x8) >> 3;
|
|
||||||
|
|
||||||
memcpy (&ctx->gf_t64[i][jm], (unsigned char *)&ctx4k->gf_t4k[15-i][j], 8);
|
|
||||||
MirrorBits64 ((unsigned char *)&ctx->gf_t64[i][jm]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
burn (ctx4k,sizeof (*ctx4k));
|
|
||||||
burn (am, sizeof (am));
|
|
||||||
TCfree (ctx4k);
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
#define xor_8kt64(i) \
|
#define xor_8kt64(i) \
|
||||||
xor_block_aligned(r, ctx->gf_t128[i + i][a[i] & 15]); \
|
xor_block_aligned(r, ctx->gf_t128[i + i][a[i] & 15]); \
|
||||||
@@ -718,36 +681,6 @@ void Gf128MulBy64Tab (unsigned __int8 a[8], unsigned __int8 p[16], GfCtx *ctx)
|
|||||||
move_block_aligned(p, r);
|
move_block_aligned(p, r);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define xor_8k64(i) \
|
|
||||||
xor_block_aligned64(r, ctx->gf_t64[i + i][a[i] & 15]); \
|
|
||||||
xor_block_aligned64(r, ctx->gf_t64[i + i + 1][a[i] >> 4])
|
|
||||||
|
|
||||||
/* Multiply two 64-bit numbers in the finite field GF(2^64) */
|
|
||||||
void Gf64MulTab (unsigned char a[8], unsigned char p[8], GfCtx *ctx)
|
|
||||||
{
|
|
||||||
/* Deprecated/legacy */
|
|
||||||
|
|
||||||
unsigned __int32 r[CBLK_LEN8 >> 2];
|
|
||||||
|
|
||||||
move_block_aligned64(r, ctx->gf_t64[7*2][a[7] & 15]);
|
|
||||||
xor_block_aligned64(r, ctx->gf_t64[7*2+1][a[7] >> 4]);
|
|
||||||
|
|
||||||
if (*(unsigned __int16 *)a)
|
|
||||||
{
|
|
||||||
xor_8k64(0);
|
|
||||||
xor_8k64(1);
|
|
||||||
}
|
|
||||||
if (a[2])
|
|
||||||
{
|
|
||||||
xor_8k64(2);
|
|
||||||
}
|
|
||||||
xor_8k64(3);
|
|
||||||
xor_8k64(4);
|
|
||||||
xor_8k64(5);
|
|
||||||
xor_8k64(6);
|
|
||||||
|
|
||||||
move_block_aligned64(p, r);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Basic algorithms for testing of optimized algorithms */
|
/* Basic algorithms for testing of optimized algorithms */
|
||||||
@@ -793,48 +726,6 @@ static void GfMul128Basic (unsigned __int8 *a, unsigned __int8 *b, unsigned __in
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void xor64 (uint64 *a, uint64 *b)
|
|
||||||
{
|
|
||||||
*a ^= *b;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void shl64 (unsigned __int8 *a)
|
|
||||||
{
|
|
||||||
int i, x = 0, xx;
|
|
||||||
for (i = 7; i >= 0; i--)
|
|
||||||
{
|
|
||||||
xx = (a[i] & 0x80) >> 7;
|
|
||||||
a[i] = (char) ((a[i] << 1) | x);
|
|
||||||
x = xx;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void GfMul64Basic (unsigned __int8 *a, unsigned __int8 *b, unsigned __int8* p)
|
|
||||||
{
|
|
||||||
/* Deprecated/legacy */
|
|
||||||
|
|
||||||
int i;
|
|
||||||
unsigned __int8 la[8];
|
|
||||||
memcpy (la, a, 8);
|
|
||||||
memset (p, 0, 8);
|
|
||||||
|
|
||||||
for (i = 0; i < 64; i++)
|
|
||||||
{
|
|
||||||
if (IsBitSet64 (i, b))
|
|
||||||
xor64 ((uint64 *)p, (uint64 *)la);
|
|
||||||
|
|
||||||
if (la[0] & 0x80)
|
|
||||||
{
|
|
||||||
shl64 (la);
|
|
||||||
la[7] ^= 0x1b;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
shl64 (la);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
BOOL GfMulSelfTest ()
|
BOOL GfMulSelfTest ()
|
||||||
{
|
{
|
||||||
@@ -849,23 +740,6 @@ BOOL GfMulSelfTest ()
|
|||||||
if (!gfCtx)
|
if (!gfCtx)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
/* GF(2^64) - deprecated/legacy */
|
|
||||||
for (i = 0; i < 0x100; i++)
|
|
||||||
{
|
|
||||||
for (j = 0; j < 8; j++)
|
|
||||||
{
|
|
||||||
a[j] = (unsigned __int8) i;
|
|
||||||
b[j] = a[j] ^ 0xff;
|
|
||||||
}
|
|
||||||
|
|
||||||
GfMul64Basic (a, b, p1);
|
|
||||||
|
|
||||||
Gf64TabInit (a, gfCtx);
|
|
||||||
Gf64MulTab (b, p2, gfCtx);
|
|
||||||
|
|
||||||
if (memcmp (p1, p2, 8) != 0)
|
|
||||||
result = FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* GF(2^128) */
|
/* GF(2^128) */
|
||||||
for (i = 0; i < 0x100; i++)
|
for (i = 0; i < 0x100; i++)
|
||||||
|
|||||||
@@ -63,8 +63,6 @@ void GfMul128 (void *a, const void* b);
|
|||||||
void GfMul128Tab(unsigned char a[16], GfCtx8k *ctx);
|
void GfMul128Tab(unsigned char a[16], GfCtx8k *ctx);
|
||||||
int Gf128Tab64Init (unsigned __int8 *a, GfCtx *ctx);
|
int Gf128Tab64Init (unsigned __int8 *a, GfCtx *ctx);
|
||||||
void Gf128MulBy64Tab (unsigned __int8 a[8], unsigned __int8 p[16], GfCtx *ctx);
|
void Gf128MulBy64Tab (unsigned __int8 a[8], unsigned __int8 p[16], GfCtx *ctx);
|
||||||
int Gf64TabInit (unsigned __int8 *a, GfCtx *ctx);
|
|
||||||
void Gf64MulTab (unsigned char a[8], unsigned char p[8], GfCtx *ctx);
|
|
||||||
void MirrorBits128 (unsigned __int8 *a);
|
void MirrorBits128 (unsigned __int8 *a);
|
||||||
void MirrorBits64 (unsigned __int8 *a);
|
void MirrorBits64 (unsigned __int8 *a);
|
||||||
BOOL GfMulSelfTest ();
|
BOOL GfMulSelfTest ();
|
||||||
|
|||||||
+67
-42
@@ -23,11 +23,12 @@
|
|||||||
#include "Platform/Finally.h"
|
#include "Platform/Finally.h"
|
||||||
#include "Platform/ForEach.h"
|
#include "Platform/ForEach.h"
|
||||||
|
|
||||||
|
#include <Strsafe.h>
|
||||||
|
|
||||||
using namespace VeraCrypt;
|
using namespace VeraCrypt;
|
||||||
|
|
||||||
#define stat _stat
|
#define stat _stat
|
||||||
#define S_IFDIR _S_IFDIR
|
#define S_IFDIR _S_IFDIR
|
||||||
#define snprintf _snprintf
|
|
||||||
|
|
||||||
|
|
||||||
BOOL HiddenFilesPresentInKeyfilePath = FALSE;
|
BOOL HiddenFilesPresentInKeyfilePath = FALSE;
|
||||||
@@ -97,13 +98,16 @@ void KeyFileRemoveAll (KeyFile **firstKeyFile)
|
|||||||
|
|
||||||
KeyFile *KeyFileClone (KeyFile *keyFile)
|
KeyFile *KeyFileClone (KeyFile *keyFile)
|
||||||
{
|
{
|
||||||
KeyFile *clone;
|
KeyFile *clone = NULL;
|
||||||
|
|
||||||
if (keyFile == NULL) return NULL;
|
if (keyFile == NULL) return NULL;
|
||||||
|
|
||||||
clone = (KeyFile *) malloc (sizeof (KeyFile));
|
clone = (KeyFile *) malloc (sizeof (KeyFile));
|
||||||
strcpy (clone->FileName, keyFile->FileName);
|
if (clone)
|
||||||
clone->Next = NULL;
|
{
|
||||||
|
StringCbCopyA (clone->FileName, sizeof(clone->FileName), keyFile->FileName);
|
||||||
|
clone->Next = NULL;
|
||||||
|
}
|
||||||
return clone;
|
return clone;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -298,7 +302,7 @@ BOOL KeyFilesApply (Password *password, KeyFile *firstKeyFile)
|
|||||||
/* Find and process all keyfiles in the directory */
|
/* Find and process all keyfiles in the directory */
|
||||||
int keyfileCount = 0;
|
int keyfileCount = 0;
|
||||||
|
|
||||||
snprintf (searchPath, sizeof (searchPath), "%s\\*.*", kf->FileName);
|
StringCbPrintfA (searchPath, sizeof (searchPath), "%s\\*.*", kf->FileName);
|
||||||
if ((searchHandle = _findfirst (searchPath, &fBuf)) == -1)
|
if ((searchHandle = _findfirst (searchPath, &fBuf)) == -1)
|
||||||
{
|
{
|
||||||
handleWin32Error (MainDlg);
|
handleWin32Error (MainDlg);
|
||||||
@@ -311,7 +315,7 @@ BOOL KeyFilesApply (Password *password, KeyFile *firstKeyFile)
|
|||||||
{
|
{
|
||||||
WIN32_FILE_ATTRIBUTE_DATA fileAttributes;
|
WIN32_FILE_ATTRIBUTE_DATA fileAttributes;
|
||||||
|
|
||||||
snprintf (kfSub->FileName, sizeof(kfSub->FileName), "%s%c%s", kf->FileName,
|
StringCbPrintfA (kfSub->FileName, sizeof(kfSub->FileName), "%s%c%s", kf->FileName,
|
||||||
'\\',
|
'\\',
|
||||||
fBuf.name
|
fBuf.name
|
||||||
);
|
);
|
||||||
@@ -462,18 +466,21 @@ BOOL CALLBACK KeyFilesDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lPa
|
|||||||
if (lw == IDC_KEYADD)
|
if (lw == IDC_KEYADD)
|
||||||
{
|
{
|
||||||
KeyFile *kf = (KeyFile *) malloc (sizeof (KeyFile));
|
KeyFile *kf = (KeyFile *) malloc (sizeof (KeyFile));
|
||||||
if (SelectMultipleFiles (hwndDlg, "SELECT_KEYFILE", kf->FileName, bHistory))
|
if (kf)
|
||||||
{
|
{
|
||||||
do
|
if (SelectMultipleFiles (hwndDlg, "SELECT_KEYFILE", kf->FileName, sizeof(kf->FileName),bHistory))
|
||||||
{
|
{
|
||||||
param->FirstKeyFile = KeyFileAdd (param->FirstKeyFile, kf);
|
do
|
||||||
LoadKeyList (hwndDlg, param->FirstKeyFile);
|
{
|
||||||
|
param->FirstKeyFile = KeyFileAdd (param->FirstKeyFile, kf);
|
||||||
|
LoadKeyList (hwndDlg, param->FirstKeyFile);
|
||||||
|
|
||||||
kf = (KeyFile *) malloc (sizeof (KeyFile));
|
kf = (KeyFile *) malloc (sizeof (KeyFile));
|
||||||
} while (SelectMultipleFilesNext (kf->FileName));
|
} while (SelectMultipleFilesNext (kf->FileName, sizeof(kf->FileName)));
|
||||||
|
}
|
||||||
|
|
||||||
|
free (kf);
|
||||||
}
|
}
|
||||||
|
|
||||||
free (kf);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -501,10 +508,13 @@ BOOL CALLBACK KeyFilesDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lPa
|
|||||||
foreach (const SecurityTokenKeyfilePath &keyPath, selectedTokenKeyfiles)
|
foreach (const SecurityTokenKeyfilePath &keyPath, selectedTokenKeyfiles)
|
||||||
{
|
{
|
||||||
KeyFile *kf = (KeyFile *) malloc (sizeof (KeyFile));
|
KeyFile *kf = (KeyFile *) malloc (sizeof (KeyFile));
|
||||||
strcpy_s (kf->FileName, sizeof (kf->FileName), WideToSingleString (keyPath).c_str());
|
if (kf)
|
||||||
|
{
|
||||||
|
strcpy_s (kf->FileName, sizeof (kf->FileName), WideToSingleString (keyPath).c_str());
|
||||||
|
|
||||||
param->FirstKeyFile = KeyFileAdd (param->FirstKeyFile, kf);
|
param->FirstKeyFile = KeyFileAdd (param->FirstKeyFile, kf);
|
||||||
LoadKeyList (hwndDlg, param->FirstKeyFile);
|
LoadKeyList (hwndDlg, param->FirstKeyFile);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -547,6 +557,7 @@ BOOL CALLBACK KeyFilesDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lPa
|
|||||||
if (lw == IDC_LINK_KEYFILES_INFO)
|
if (lw == IDC_LINK_KEYFILES_INFO)
|
||||||
{
|
{
|
||||||
Applink ("keyfiles", TRUE, "");
|
Applink ("keyfiles", TRUE, "");
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lw == IDOK)
|
if (lw == IDOK)
|
||||||
@@ -564,6 +575,7 @@ BOOL CALLBACK KeyFilesDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lPa
|
|||||||
EndDialog (hwndDlg, IDCLOSE);
|
EndDialog (hwndDlg, IDCLOSE);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case WM_DROPFILES:
|
case WM_DROPFILES:
|
||||||
{
|
{
|
||||||
@@ -574,9 +586,12 @@ BOOL CALLBACK KeyFilesDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lPa
|
|||||||
while (count-- > 0)
|
while (count-- > 0)
|
||||||
{
|
{
|
||||||
KeyFile *kf = (KeyFile *) malloc (sizeof (KeyFile));
|
KeyFile *kf = (KeyFile *) malloc (sizeof (KeyFile));
|
||||||
DragQueryFile (hdrop, i++, kf->FileName, sizeof (kf->FileName));
|
if (kf)
|
||||||
param->FirstKeyFile = KeyFileAdd (param->FirstKeyFile, kf);
|
{
|
||||||
LoadKeyList (hwndDlg, param->FirstKeyFile);
|
DragQueryFile (hdrop, i++, kf->FileName, sizeof (kf->FileName));
|
||||||
|
param->FirstKeyFile = KeyFileAdd (param->FirstKeyFile, kf);
|
||||||
|
LoadKeyList (hwndDlg, param->FirstKeyFile);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DragFinish (hdrop);
|
DragFinish (hdrop);
|
||||||
@@ -614,6 +629,8 @@ BOOL CALLBACK KeyFilesDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lPa
|
|||||||
BOOL KeyfilesPopupMenu (HWND hwndDlg, POINT popupPosition, KeyFilesDlgParam *param)
|
BOOL KeyfilesPopupMenu (HWND hwndDlg, POINT popupPosition, KeyFilesDlgParam *param)
|
||||||
{
|
{
|
||||||
HMENU popup = CreatePopupMenu ();
|
HMENU popup = CreatePopupMenu ();
|
||||||
|
if (!popup)
|
||||||
|
return FALSE;
|
||||||
int sel;
|
int sel;
|
||||||
BOOL status = FALSE;
|
BOOL status = FALSE;
|
||||||
|
|
||||||
@@ -628,35 +645,40 @@ BOOL KeyfilesPopupMenu (HWND hwndDlg, POINT popupPosition, KeyFilesDlgParam *par
|
|||||||
case IDM_KEYFILES_POPUP_ADD_FILES:
|
case IDM_KEYFILES_POPUP_ADD_FILES:
|
||||||
{
|
{
|
||||||
KeyFile *kf = (KeyFile *) malloc (sizeof (KeyFile));
|
KeyFile *kf = (KeyFile *) malloc (sizeof (KeyFile));
|
||||||
if (SelectMultipleFiles (hwndDlg, "SELECT_KEYFILE", kf->FileName, bHistory))
|
if (kf)
|
||||||
{
|
{
|
||||||
do
|
if (SelectMultipleFiles (hwndDlg, "SELECT_KEYFILE", kf->FileName, sizeof(kf->FileName),bHistory))
|
||||||
{
|
{
|
||||||
param->FirstKeyFile = KeyFileAdd (param->FirstKeyFile, kf);
|
do
|
||||||
kf = (KeyFile *) malloc (sizeof (KeyFile));
|
{
|
||||||
} while (SelectMultipleFilesNext (kf->FileName));
|
param->FirstKeyFile = KeyFileAdd (param->FirstKeyFile, kf);
|
||||||
|
kf = (KeyFile *) malloc (sizeof (KeyFile));
|
||||||
|
} while (SelectMultipleFilesNext (kf->FileName, sizeof(kf->FileName)));
|
||||||
|
|
||||||
param->EnableKeyFiles = TRUE;
|
param->EnableKeyFiles = TRUE;
|
||||||
status = TRUE;
|
status = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
free (kf);
|
||||||
}
|
}
|
||||||
|
|
||||||
free (kf);
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IDM_KEYFILES_POPUP_ADD_DIR:
|
case IDM_KEYFILES_POPUP_ADD_DIR:
|
||||||
{
|
{
|
||||||
KeyFile *kf = (KeyFile *) malloc (sizeof (KeyFile));
|
KeyFile *kf = (KeyFile *) malloc (sizeof (KeyFile));
|
||||||
|
if (kf)
|
||||||
if (BrowseDirectories (hwndDlg,"SELECT_KEYFILE_PATH", kf->FileName))
|
|
||||||
{
|
{
|
||||||
param->FirstKeyFile = KeyFileAdd (param->FirstKeyFile, kf);
|
if (BrowseDirectories (hwndDlg,"SELECT_KEYFILE_PATH", kf->FileName))
|
||||||
param->EnableKeyFiles = TRUE;
|
{
|
||||||
status = TRUE;
|
param->FirstKeyFile = KeyFileAdd (param->FirstKeyFile, kf);
|
||||||
}
|
param->EnableKeyFiles = TRUE;
|
||||||
else
|
status = TRUE;
|
||||||
{
|
}
|
||||||
free (kf);
|
else
|
||||||
|
{
|
||||||
|
free (kf);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -669,11 +691,14 @@ BOOL KeyfilesPopupMenu (HWND hwndDlg, POINT popupPosition, KeyFilesDlgParam *par
|
|||||||
foreach (const SecurityTokenKeyfilePath &keyPath, selectedTokenKeyfiles)
|
foreach (const SecurityTokenKeyfilePath &keyPath, selectedTokenKeyfiles)
|
||||||
{
|
{
|
||||||
KeyFile *kf = (KeyFile *) malloc (sizeof (KeyFile));
|
KeyFile *kf = (KeyFile *) malloc (sizeof (KeyFile));
|
||||||
strcpy_s (kf->FileName, sizeof (kf->FileName), WideToSingleString (keyPath).c_str());
|
if (kf)
|
||||||
|
{
|
||||||
|
strcpy_s (kf->FileName, sizeof (kf->FileName), WideToSingleString (keyPath).c_str());
|
||||||
|
|
||||||
param->FirstKeyFile = KeyFileAdd (param->FirstKeyFile, kf);
|
param->FirstKeyFile = KeyFileAdd (param->FirstKeyFile, kf);
|
||||||
param->EnableKeyFiles = TRUE;
|
param->EnableKeyFiles = TRUE;
|
||||||
status = TRUE;
|
status = TRUE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ extern "C" {
|
|||||||
|
|
||||||
typedef struct KeyFileStruct
|
typedef struct KeyFileStruct
|
||||||
{
|
{
|
||||||
char FileName[MAX_PATH];
|
char FileName[MAX_PATH + 1];
|
||||||
struct KeyFileStruct *Next;
|
struct KeyFileStruct *Next;
|
||||||
} KeyFile;
|
} KeyFile;
|
||||||
|
|
||||||
|
|||||||
+34
-16
@@ -26,6 +26,8 @@
|
|||||||
#include "../Setup/Resource.h"
|
#include "../Setup/Resource.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <Strsafe.h>
|
||||||
|
|
||||||
BOOL LocalizationActive;
|
BOOL LocalizationActive;
|
||||||
int LocalizationSerialNo;
|
int LocalizationSerialNo;
|
||||||
|
|
||||||
@@ -69,7 +71,8 @@ static char *MapNextLanguageFile ()
|
|||||||
t = wcsrchr (f, L'\\');
|
t = wcsrchr (f, L'\\');
|
||||||
if (t == NULL) return NULL;
|
if (t == NULL) return NULL;
|
||||||
|
|
||||||
wcscpy (t, L"\\Language*.xml");
|
*t = 0;
|
||||||
|
StringCbCatW (f, sizeof(f), L"\\Language*.xml");
|
||||||
|
|
||||||
LanguageFileFindHandle = FindFirstFileW (f, &find);
|
LanguageFileFindHandle = FindFirstFileW (f, &find);
|
||||||
}
|
}
|
||||||
@@ -88,14 +91,29 @@ static char *MapNextLanguageFile ()
|
|||||||
|
|
||||||
GetModuleFileNameW (NULL, f, sizeof (f) / sizeof(f[0]));
|
GetModuleFileNameW (NULL, f, sizeof (f) / sizeof(f[0]));
|
||||||
t = wcsrchr (f, L'\\');
|
t = wcsrchr (f, L'\\');
|
||||||
wcscpy (t + 1, find.cFileName);
|
if (t == NULL)
|
||||||
|
{
|
||||||
|
free(LanguageFileBuffer);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
t[1] = 0;
|
||||||
|
StringCbCatW (f, sizeof(f),find.cFileName);
|
||||||
|
|
||||||
file = CreateFileW (f, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
|
file = CreateFileW (f, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
|
||||||
if (file == INVALID_HANDLE_VALUE) return NULL;
|
if (file == INVALID_HANDLE_VALUE)
|
||||||
|
{
|
||||||
|
free(LanguageFileBuffer);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
ReadFile (file, LanguageFileBuffer, find.nFileSizeLow, &read, NULL);
|
ReadFile (file, LanguageFileBuffer, find.nFileSizeLow, &read, NULL);
|
||||||
CloseHandle (file);
|
CloseHandle (file);
|
||||||
if (read != find.nFileSizeLow) return NULL;
|
if (read != find.nFileSizeLow)
|
||||||
|
{
|
||||||
|
free(LanguageFileBuffer);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
return LanguageFileBuffer;
|
return LanguageFileBuffer;
|
||||||
}
|
}
|
||||||
@@ -130,7 +148,7 @@ BOOL LoadLanguageFile ()
|
|||||||
ClearDictionaryPool ();
|
ClearDictionaryPool ();
|
||||||
|
|
||||||
if (PreferredLangId[0] != 0)
|
if (PreferredLangId[0] != 0)
|
||||||
strcpy (langId, PreferredLangId);
|
StringCbCopyA (langId, sizeof(langId), PreferredLangId);
|
||||||
|
|
||||||
// Parse all available language files until preferred language is found
|
// Parse all available language files until preferred language is found
|
||||||
for (res = MapFirstLanguageFile (); res != NULL; res = MapNextLanguageFile ())
|
for (res = MapFirstLanguageFile (); res != NULL; res = MapNextLanguageFile ())
|
||||||
@@ -147,7 +165,7 @@ BOOL LoadLanguageFile ()
|
|||||||
if (defaultLangParsed && strcmp (attr, VERSION_STRING) && strcmp (attr, "DEBUG"))
|
if (defaultLangParsed && strcmp (attr, VERSION_STRING) && strcmp (attr, "DEBUG"))
|
||||||
{
|
{
|
||||||
wchar_t m[2048];
|
wchar_t m[2048];
|
||||||
swprintf (m, L"The installed language pack is incompatible with this version of VeraCrypt (the language pack is for VeraCrypt %hs). A newer version may be available at www.idrix.fr.\n\nTo prevent this message from being displayed, do any of the following:\n\n- Select 'Settings' > 'Language'; then select 'English' and click 'OK'.\n\n- Remove or replace the language pack with a compatible version (the language pack may reside e.g. in 'C:\\Program Files\\VeraCrypt' or '%%LOCALAPPDATA%%\\VirtualStore\\Program Files\\VeraCrypt', etc.)", attr);
|
StringCbPrintfW (m, sizeof(m), L"The installed language pack is incompatible with this version of VeraCrypt (the language pack is for VeraCrypt %hs). A newer version may be available at www.idrix.fr.\n\nTo prevent this message from being displayed, do any of the following:\n\n- Select 'Settings' > 'Language'; then select 'English' and click 'OK'.\n\n- Remove or replace the language pack with a compatible version (the language pack may reside e.g. in 'C:\\Program Files\\VeraCrypt' or '%%LOCALAPPDATA%%\\VirtualStore\\Program Files\\VeraCrypt', etc.)", attr);
|
||||||
MessageBoxW (NULL, m, L"VeraCrypt", MB_ICONERROR);
|
MessageBoxW (NULL, m, L"VeraCrypt", MB_ICONERROR);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -189,7 +207,7 @@ BOOL LoadLanguageFile ()
|
|||||||
XmlGetAttributeText (xml, "size", attr, sizeof (attr));
|
XmlGetAttributeText (xml, "size", attr, sizeof (attr));
|
||||||
sscanf (attr, "%d", &font.Size);
|
sscanf (attr, "%d", &font.Size);
|
||||||
|
|
||||||
strcpy (attr, "font_");
|
StringCbCopyA (attr, sizeof(attr), "font_");
|
||||||
XmlGetAttributeText (xml, "class", attr + 5, sizeof (attr) - 5);
|
XmlGetAttributeText (xml, "class", attr + 5, sizeof (attr) - 5);
|
||||||
AddDictionaryEntry (
|
AddDictionaryEntry (
|
||||||
AddPoolData ((void *) attr, strlen (attr) + 1), 0,
|
AddPoolData ((void *) attr, strlen (attr) + 1), 0,
|
||||||
@@ -298,7 +316,7 @@ BOOL LoadLanguageFile ()
|
|||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
if (sscanf (header, "#define %s %d", key, &intKey) == 2)
|
if (sscanf (header, "#define %127s %d", key, &intKey) == 2)
|
||||||
{
|
{
|
||||||
WCHAR *str = GetString (key);
|
WCHAR *str = GetString (key);
|
||||||
|
|
||||||
@@ -375,13 +393,13 @@ BOOL CALLBACK LanguageDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lPa
|
|||||||
// Language pack version
|
// Language pack version
|
||||||
if (!ActiveLangPackVersion[0] || memcmp (ActiveLangPackVersion, "0.0.0", 5) == 0)
|
if (!ActiveLangPackVersion[0] || memcmp (ActiveLangPackVersion, "0.0.0", 5) == 0)
|
||||||
{
|
{
|
||||||
swprintf (szVers, GetString("LANG_PACK_VERSION"), L"--");
|
StringCbPrintfW (szVers, sizeof(szVers), GetString("LANG_PACK_VERSION"), L"--");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
nLen = MultiByteToWideChar (CP_UTF8, 0, ActiveLangPackVersion, -1, wversion, sizeof (wversion) / sizeof(wversion[0]));
|
nLen = MultiByteToWideChar (CP_UTF8, 0, ActiveLangPackVersion, -1, wversion, sizeof (wversion) / sizeof(wversion[0]));
|
||||||
if (nLen != 0 && nLen != ERROR_NO_UNICODE_TRANSLATION)
|
if (nLen != 0 && nLen != ERROR_NO_UNICODE_TRANSLATION)
|
||||||
swprintf (szVers, GetString("LANG_PACK_VERSION"), wversion);
|
StringCbPrintfW (szVers, sizeof(szVers),GetString("LANG_PACK_VERSION"), wversion);
|
||||||
}
|
}
|
||||||
SetWindowTextW (GetDlgItem (hwndDlg, IDC_LANGPACK_VERSION), szVers);
|
SetWindowTextW (GetDlgItem (hwndDlg, IDC_LANGPACK_VERSION), szVers);
|
||||||
|
|
||||||
@@ -394,7 +412,7 @@ BOOL CALLBACK LanguageDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lPa
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
strcpy (lastLangId, attr);
|
StringCbCopyA (lastLangId, sizeof(lastLangId),attr);
|
||||||
langCount++;
|
langCount++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -410,7 +428,7 @@ BOOL CALLBACK LanguageDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lPa
|
|||||||
EndDialog (hwndDlg, IDCANCEL);
|
EndDialog (hwndDlg, IDCANCEL);
|
||||||
|
|
||||||
if (langCount == 2)
|
if (langCount == 2)
|
||||||
strcpy (PreferredLangId, lastLangId);
|
StringCbCopyA (PreferredLangId, sizeof(PreferredLangId), lastLangId);
|
||||||
|
|
||||||
EndDialog (hwndDlg, IDOK);
|
EndDialog (hwndDlg, IDOK);
|
||||||
}
|
}
|
||||||
@@ -446,7 +464,7 @@ BOOL CALLBACK LanguageDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lPa
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (SendDlgItemMessage (hwndDlg, IDC_LANGLIST, LB_GETCOUNT, 0, 0) > 1)
|
if (SendDlgItemMessage (hwndDlg, IDC_LANGLIST, LB_GETCOUNT, 0, 0) > 1)
|
||||||
strcpy (PreferredLangId, l);
|
StringCbCopyA (PreferredLangId, sizeof(PreferredLangId), l);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -465,7 +483,7 @@ BOOL CALLBACK LanguageDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lPa
|
|||||||
char tmpstr [256];
|
char tmpstr [256];
|
||||||
|
|
||||||
if (strlen (ActiveLangPackVersion) > 0 && strlen (GetPreferredLangId()) > 0)
|
if (strlen (ActiveLangPackVersion) > 0 && strlen (GetPreferredLangId()) > 0)
|
||||||
sprintf (tmpstr, "&langpackversion=%s&lang=%s", ActiveLangPackVersion, GetPreferredLangId());
|
StringCbPrintfA (tmpstr, sizeof(tmpstr), "&langpackversion=%s&lang=%s", ActiveLangPackVersion, GetPreferredLangId());
|
||||||
else
|
else
|
||||||
tmpstr[0] = 0;
|
tmpstr[0] = 0;
|
||||||
|
|
||||||
@@ -488,7 +506,7 @@ char *GetPreferredLangId ()
|
|||||||
|
|
||||||
void SetPreferredLangId (char *langId)
|
void SetPreferredLangId (char *langId)
|
||||||
{
|
{
|
||||||
strncpy (PreferredLangId, langId, 5);
|
StringCbCopyA (PreferredLangId, sizeof(PreferredLangId), langId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -503,7 +521,7 @@ wchar_t *GetString (const char *stringId)
|
|||||||
WCHAR *str = (WCHAR *) GetDictionaryValue (stringId);
|
WCHAR *str = (WCHAR *) GetDictionaryValue (stringId);
|
||||||
if (str != NULL) return str;
|
if (str != NULL) return str;
|
||||||
|
|
||||||
wsprintfW (UnknownString, UNKNOWN_STRING_ID L"%hs" UNKNOWN_STRING_ID, stringId);
|
StringCbPrintfW (UnknownString, sizeof(UnknownString), UNKNOWN_STRING_ID L"%hs" UNKNOWN_STRING_ID, stringId);
|
||||||
return UnknownString;
|
return UnknownString;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+13
-4
@@ -145,6 +145,7 @@
|
|||||||
<control lang="en" key="IDC_PREF_CACHE_PASSWORDS">Cache passwords in driver memory</control>
|
<control lang="en" key="IDC_PREF_CACHE_PASSWORDS">Cache passwords in driver memory</control>
|
||||||
<control lang="en" key="IDC_PREF_DISMOUNT_INACTIVE">Auto-dismount volume after no data has been read/written to it for</control>
|
<control lang="en" key="IDC_PREF_DISMOUNT_INACTIVE">Auto-dismount volume after no data has been read/written to it for</control>
|
||||||
<control lang="en" key="IDC_PREF_DISMOUNT_LOGOFF">User logs off</control>
|
<control lang="en" key="IDC_PREF_DISMOUNT_LOGOFF">User logs off</control>
|
||||||
|
<control lang="en" key="IDC_PREF_DISMOUNT_SESSION_LOCKED">User session locked</control>
|
||||||
<control lang="en" key="IDC_PREF_DISMOUNT_POWERSAVING">Entering power saving mode</control>
|
<control lang="en" key="IDC_PREF_DISMOUNT_POWERSAVING">Entering power saving mode</control>
|
||||||
<control lang="en" key="IDC_PREF_DISMOUNT_SCREENSAVER">Screen saver is launched</control>
|
<control lang="en" key="IDC_PREF_DISMOUNT_SCREENSAVER">Screen saver is launched</control>
|
||||||
<control lang="en" key="IDC_PREF_FORCE_AUTO_DISMOUNT">Force auto-dismount even if volume contains open files or directories</control>
|
<control lang="en" key="IDC_PREF_FORCE_AUTO_DISMOUNT">Force auto-dismount even if volume contains open files or directories</control>
|
||||||
@@ -330,6 +331,8 @@
|
|||||||
<control lang="en" key="IDT_KEYFILE_GENERATOR_NOTE">IMPORTANT: Move your mouse as randomly as possible within this window. The longer you move it, the better. This significantly increases the cryptographic strength of the keyfile.</control>
|
<control lang="en" key="IDT_KEYFILE_GENERATOR_NOTE">IMPORTANT: Move your mouse as randomly as possible within this window. The longer you move it, the better. This significantly increases the cryptographic strength of the keyfile.</control>
|
||||||
<control lang="en" key="IDT_KEYFILE_WARNING">WARNING: If you lose a keyfile or if any bit of its first 1024 kilobytes changes, it will be impossible to mount volumes that use the keyfile!</control>
|
<control lang="en" key="IDT_KEYFILE_WARNING">WARNING: If you lose a keyfile or if any bit of its first 1024 kilobytes changes, it will be impossible to mount volumes that use the keyfile!</control>
|
||||||
<control lang="en" key="IDT_KEY_UNIT">bits</control>
|
<control lang="en" key="IDT_KEY_UNIT">bits</control>
|
||||||
|
<control lang="en" key="IDT_NUMBER_KEYFILES">Number of keyfiles:</control>
|
||||||
|
<control lang="en" key="IDT_KEYFILES_BASE_NAME">Keyfiles base name:</control>
|
||||||
<control lang="en" key="IDT_LANGPACK_AUTHORS">Translated by:</control>
|
<control lang="en" key="IDT_LANGPACK_AUTHORS">Translated by:</control>
|
||||||
<control lang="en" key="IDT_PLAINTEXT">Plaintext size:</control>
|
<control lang="en" key="IDT_PLAINTEXT">Plaintext size:</control>
|
||||||
<control lang="en" key="IDT_PLAINTEXT_SIZE_UNIT">bits</control>
|
<control lang="en" key="IDT_PLAINTEXT_SIZE_UNIT">bits</control>
|
||||||
@@ -476,7 +479,7 @@
|
|||||||
<string lang="en" key="FORMAT_FINISHED_HELP">\n\nThe VeraCrypt volume has been created and is ready for use. If you wish to create another VeraCrypt volume, click Next. Otherwise, click Exit.</string>
|
<string lang="en" key="FORMAT_FINISHED_HELP">\n\nThe VeraCrypt volume has been created and is ready for use. If you wish to create another VeraCrypt volume, click Next. Otherwise, click Exit.</string>
|
||||||
<string lang="en" key="SYSENC_HIDDEN_VOL_FORMAT_FINISHED_HELP">\n\nThe hidden VeraCrypt volume has been successfully created (the hidden operating system will reside within this hidden volume).\n\nClick Next to continue.</string>
|
<string lang="en" key="SYSENC_HIDDEN_VOL_FORMAT_FINISHED_HELP">\n\nThe hidden VeraCrypt volume has been successfully created (the hidden operating system will reside within this hidden volume).\n\nClick Next to continue.</string>
|
||||||
<string lang="en" key="NONSYS_INPLACE_ENC_FINISHED_TITLE">Volume Fully Encrypted</string>
|
<string lang="en" key="NONSYS_INPLACE_ENC_FINISHED_TITLE">Volume Fully Encrypted</string>
|
||||||
<string lang="en" key="NONSYS_INPLACE_ENC_FINISHED_INFO">IMPORTANT: TO MOUNT THIS NEWLY CREATED HDCRYPT VOLUME AND TO ACCESS DATA STORED IN IT, CLICK 'Auto-Mount Devices' IN THE MAIN TRUECRYPT WINDOW. After you enter the correct password (and/or supply correct keyfiles), the volume will be mounted to the drive letter you select from the list in the main VeraCrypt window (and you will be able to access the encrypted data via the selected drive letter).\n\nPLEASE REMEMBER OR WRITE DOWN THE ABOVE STEPS. YOU MUST FOLLOW THEM WHENEVER YOU WANT TO MOUNT THE VOLUME AND ACCESS DATA STORED IN IT. Alternatively, in the main VeraCrypt window, click 'Select Device', then select this partition/volume, and click 'Mount'.\n\nThe partition/volume has been successfully encrypted (it contains a fully encrypted VeraCrypt volume now) and is ready for use.</string>
|
<string lang="en" key="NONSYS_INPLACE_ENC_FINISHED_INFO">IMPORTANT: TO MOUNT THIS NEWLY CREATED VERACRYPT VOLUME AND TO ACCESS DATA STORED IN IT, CLICK 'Auto-Mount Devices' IN THE MAIN TRUECRYPT WINDOW. After you enter the correct password (and/or supply correct keyfiles), the volume will be mounted to the drive letter you select from the list in the main VeraCrypt window (and you will be able to access the encrypted data via the selected drive letter).\n\nPLEASE REMEMBER OR WRITE DOWN THE ABOVE STEPS. YOU MUST FOLLOW THEM WHENEVER YOU WANT TO MOUNT THE VOLUME AND ACCESS DATA STORED IN IT. Alternatively, in the main VeraCrypt window, click 'Select Device', then select this partition/volume, and click 'Mount'.\n\nThe partition/volume has been successfully encrypted (it contains a fully encrypted VeraCrypt volume now) and is ready for use.</string>
|
||||||
<string lang="en" key="FORMAT_FINISHED_INFO">The VeraCrypt volume has been successfully created.</string>
|
<string lang="en" key="FORMAT_FINISHED_INFO">The VeraCrypt volume has been successfully created.</string>
|
||||||
<string lang="en" key="FORMAT_FINISHED_TITLE">Volume Created</string>
|
<string lang="en" key="FORMAT_FINISHED_TITLE">Volume Created</string>
|
||||||
<string lang="en" key="FORMAT_HELP">IMPORTANT: Move your mouse as randomly as possible within this window. The longer you move it, the better. This significantly increases the cryptographic strength of the encryption keys. Then click Format to create the volume.</string>
|
<string lang="en" key="FORMAT_HELP">IMPORTANT: Move your mouse as randomly as possible within this window. The longer you move it, the better. This significantly increases the cryptographic strength of the encryption keys. Then click Format to create the volume.</string>
|
||||||
@@ -489,7 +492,7 @@
|
|||||||
<string lang="en" key="HIDDEN_VOL_WIZARD_MODE_DIRECT_HELP">If you select this option, you will create a hidden volume within an existing VeraCrypt volume. It will be assumed that you have already created a VeraCrypt volume that is suitable to host the hidden volume.</string>
|
<string lang="en" key="HIDDEN_VOL_WIZARD_MODE_DIRECT_HELP">If you select this option, you will create a hidden volume within an existing VeraCrypt volume. It will be assumed that you have already created a VeraCrypt volume that is suitable to host the hidden volume.</string>
|
||||||
<string lang="en" key="HIDDEN_VOL_WIZARD_MODE_TITLE">Volume Creation Mode</string>
|
<string lang="en" key="HIDDEN_VOL_WIZARD_MODE_TITLE">Volume Creation Mode</string>
|
||||||
<string lang="en" key="HIDVOL_FORMAT_FINISHED_TITLE">Hidden Volume Created</string>
|
<string lang="en" key="HIDVOL_FORMAT_FINISHED_TITLE">Hidden Volume Created</string>
|
||||||
<string lang="en" key="HIDVOL_FORMAT_FINISHED_HELP">The hidden VeraCrypt volume has been successfully created and is ready for use. If all the instructions have been followed and if the precautions and requirements listed in the section "Security Requirements and Precautions Pertaining to Hidden Volumes" in the VeraCrypt User's Guide are followed, it should be impossible to prove that the hidden volume exists, even when the outer volume is mounted.\n\nWARNING: IF YOU DO NOT PROTECT THE HIDDEN VOLUME (FOR INFORMATION ON HOW TO DO SO, REFER TO THE SECTION "PROTECTION OF HIDDEN VOLUMES AGAINST DAMAGE" IN THE HDCRYPT USER'S GUIDE), DO NOT WRITE TO THE OUTER VOLUME. OTHERWISE, YOU MAY OVERWRITE AND DAMAGE THE HIDDEN VOLUME!</string>
|
<string lang="en" key="HIDVOL_FORMAT_FINISHED_HELP">The hidden VeraCrypt volume has been successfully created and is ready for use. If all the instructions have been followed and if the precautions and requirements listed in the section "Security Requirements and Precautions Pertaining to Hidden Volumes" in the VeraCrypt User's Guide are followed, it should be impossible to prove that the hidden volume exists, even when the outer volume is mounted.\n\nWARNING: IF YOU DO NOT PROTECT THE HIDDEN VOLUME (FOR INFORMATION ON HOW TO DO SO, REFER TO THE SECTION "PROTECTION OF HIDDEN VOLUMES AGAINST DAMAGE" IN THE VERACRYPT USER'S GUIDE), DO NOT WRITE TO THE OUTER VOLUME. OTHERWISE, YOU MAY OVERWRITE AND DAMAGE THE HIDDEN VOLUME!</string>
|
||||||
<string lang="en" key="FIRST_HIDDEN_OS_BOOT_INFO">You have started the hidden operating system. As you may have noticed, the hidden operating system appears to be installed on the same partition as the original operating system. However, in reality, it is installed within the partition behind it (in the hidden volume). All read and write operations are being transparently redirected from the original system partition to the hidden volume.\n\nNeither the operating system nor applications will know that data written to and read from the system partition are actually written to and read from the partition behind it (from/to a hidden volume). Any such data is encrypted and decrypted on the fly as usual (with an encryption key different from the one that will be used for the decoy operating system).\n\n\nPlease click Next to continue.</string>
|
<string lang="en" key="FIRST_HIDDEN_OS_BOOT_INFO">You have started the hidden operating system. As you may have noticed, the hidden operating system appears to be installed on the same partition as the original operating system. However, in reality, it is installed within the partition behind it (in the hidden volume). All read and write operations are being transparently redirected from the original system partition to the hidden volume.\n\nNeither the operating system nor applications will know that data written to and read from the system partition are actually written to and read from the partition behind it (from/to a hidden volume). Any such data is encrypted and decrypted on the fly as usual (with an encryption key different from the one that will be used for the decoy operating system).\n\n\nPlease click Next to continue.</string>
|
||||||
<string lang="en" key="HIDVOL_HOST_FILLING_HELP_SYSENC">The outer volume has been created and mounted as drive %hc:. To this outer volume you should now copy some sensitive-looking files that you actually do NOT want to hide. They will be there for anyone forcing you to disclose the password for the first partition behind the system partition, where both the outer volume and the hidden volume (containing the hidden operating system) will reside. You will be able to reveal the password for this outer volume, and the existence of the hidden volume (and of the hidden operating system) will remain secret.\n\nIMPORTANT: The files you copy to the outer volume should not occupy more than %s. Otherwise, there may not be enough free space on the outer volume for the hidden volume (and you will not be able to continue). After you finish copying, click Next (do not dismount the volume).</string>
|
<string lang="en" key="HIDVOL_HOST_FILLING_HELP_SYSENC">The outer volume has been created and mounted as drive %hc:. To this outer volume you should now copy some sensitive-looking files that you actually do NOT want to hide. They will be there for anyone forcing you to disclose the password for the first partition behind the system partition, where both the outer volume and the hidden volume (containing the hidden operating system) will reside. You will be able to reveal the password for this outer volume, and the existence of the hidden volume (and of the hidden operating system) will remain secret.\n\nIMPORTANT: The files you copy to the outer volume should not occupy more than %s. Otherwise, there may not be enough free space on the outer volume for the hidden volume (and you will not be able to continue). After you finish copying, click Next (do not dismount the volume).</string>
|
||||||
<string lang="en" key="HIDVOL_HOST_FILLING_HELP">Outer volume has been successfully created and mounted as drive %hc:. To this volume you should now copy some sensitive-looking files that you actually do NOT want to hide. The files will be there for anyone forcing you to disclose your password. You will reveal only the password for this outer volume, not for the hidden one. The files that you really care about will be stored in the hidden volume, which will be created later on. When you finish copying, click Next. Do not dismount the volume.\n\nNote: After you click Next, cluster bitmap of the outer volume will be scanned to determine the size of uninterrupted area of free space whose end is aligned with the end of the volume. This area will accommodate the hidden volume, so it will limit its maximum possible size. Cluster bitmap scanning ensures that no data on the outer volume are overwritten by the hidden volume.</string>
|
<string lang="en" key="HIDVOL_HOST_FILLING_HELP">Outer volume has been successfully created and mounted as drive %hc:. To this volume you should now copy some sensitive-looking files that you actually do NOT want to hide. The files will be there for anyone forcing you to disclose your password. You will reveal only the password for this outer volume, not for the hidden one. The files that you really care about will be stored in the hidden volume, which will be created later on. When you finish copying, click Next. Do not dismount the volume.\n\nNote: After you click Next, cluster bitmap of the outer volume will be scanned to determine the size of uninterrupted area of free space whose end is aligned with the end of the volume. This area will accommodate the hidden volume, so it will limit its maximum possible size. Cluster bitmap scanning ensures that no data on the outer volume are overwritten by the hidden volume.</string>
|
||||||
@@ -549,7 +552,7 @@
|
|||||||
<string lang="en" key="SELECT_PKCS11_MODULE">Select PKCS #11 Library</string>
|
<string lang="en" key="SELECT_PKCS11_MODULE">Select PKCS #11 Library</string>
|
||||||
<string lang="en" key="OUTOFMEMORY">Out of Memory</string>
|
<string lang="en" key="OUTOFMEMORY">Out of Memory</string>
|
||||||
<string lang="en" key="FORMAT_DEVICE_FOR_ADVANCED_ONLY">IMPORTANT: We strongly recommend that inexperienced users create a VeraCrypt file container on the selected device/partition, instead of attempting to encrypt the entire device/partition.\n\nWhen you create a VeraCrypt file container (as opposed to encrypting a device or partition) there is, for example, no risk of destroying a large number of files. Note that a VeraCrypt file container (even though it contains a virtual encrypted disk) is actually just like any normal file. For more information, see the chapter Beginner's Tutorial in the VeraCrypt User Guide.\n\nAre you sure you want to encrypt the entire device/partition?</string>
|
<string lang="en" key="FORMAT_DEVICE_FOR_ADVANCED_ONLY">IMPORTANT: We strongly recommend that inexperienced users create a VeraCrypt file container on the selected device/partition, instead of attempting to encrypt the entire device/partition.\n\nWhen you create a VeraCrypt file container (as opposed to encrypting a device or partition) there is, for example, no risk of destroying a large number of files. Note that a VeraCrypt file container (even though it contains a virtual encrypted disk) is actually just like any normal file. For more information, see the chapter Beginner's Tutorial in the VeraCrypt User Guide.\n\nAre you sure you want to encrypt the entire device/partition?</string>
|
||||||
<string lang="en" key="OVERWRITEPROMPT">WARNING: The file '%hs' already exists!\n\nIMPORTANT: HDCRYPT WILL NOT ENCRYPT THE FILE, BUT IT WILL DELETE IT. Are you sure you want to delete the file and replace it with a new VeraCrypt container?</string>
|
<string lang="en" key="OVERWRITEPROMPT">WARNING: The file '%hs' already exists!\n\nIMPORTANT: VERACRYPT WILL NOT ENCRYPT THE FILE, BUT IT WILL DELETE IT. Are you sure you want to delete the file and replace it with a new VeraCrypt container?</string>
|
||||||
<string lang="en" key="OVERWRITEPROMPT_DEVICE">CAUTION: ALL FILES CURRENTLY STORED ON THE SELECTED %s '%hs'%s WILL BE ERASED AND LOST (THEY WILL NOT BE ENCRYPTED)!\n\nAre you sure you want to proceed with format?</string>
|
<string lang="en" key="OVERWRITEPROMPT_DEVICE">CAUTION: ALL FILES CURRENTLY STORED ON THE SELECTED %s '%hs'%s WILL BE ERASED AND LOST (THEY WILL NOT BE ENCRYPTED)!\n\nAre you sure you want to proceed with format?</string>
|
||||||
<string lang="en" key="NONSYS_INPLACE_ENC_CONFIRM">WARNING: You will not be able to mount the volume or access any files stored on it until it has been fully encrypted.\n\nAre you sure you want to start encrypting the selected %s '%hs'%s?</string>
|
<string lang="en" key="NONSYS_INPLACE_ENC_CONFIRM">WARNING: You will not be able to mount the volume or access any files stored on it until it has been fully encrypted.\n\nAre you sure you want to start encrypting the selected %s '%hs'%s?</string>
|
||||||
<string lang="en" key="NONSYS_INPLACE_ENC_CONFIRM_BACKUP">WARNING: Please note that if power supply is suddenly interrupted while encrypting existing data in place, or when the operating system crashes due to a software error or hardware malfunction while VeraCrypt is encrypting existing data in place, portions of the data will be corrupted or lost. Therefore, before you start encrypting, please make sure that you have backup copies of the files you want to encrypt.\n\nDo you have such a backup?</string>
|
<string lang="en" key="NONSYS_INPLACE_ENC_CONFIRM_BACKUP">WARNING: Please note that if power supply is suddenly interrupted while encrypting existing data in place, or when the operating system crashes due to a software error or hardware malfunction while VeraCrypt is encrypting existing data in place, portions of the data will be corrupted or lost. Therefore, before you start encrypting, please make sure that you have backup copies of the files you want to encrypt.\n\nDo you have such a backup?</string>
|
||||||
@@ -599,6 +602,7 @@
|
|||||||
<string lang="en" key="SELECT_DEST_DIR">Select destination directory</string>
|
<string lang="en" key="SELECT_DEST_DIR">Select destination directory</string>
|
||||||
<string lang="en" key="SELECT_KEYFILE">Select Keyfile</string>
|
<string lang="en" key="SELECT_KEYFILE">Select Keyfile</string>
|
||||||
<string lang="en" key="SELECT_KEYFILE_PATH">Select a keyfile search path. WARNING: Note that only the path will be remembered, not the filenames!</string>
|
<string lang="en" key="SELECT_KEYFILE_PATH">Select a keyfile search path. WARNING: Note that only the path will be remembered, not the filenames!</string>
|
||||||
|
<string lang="en" key="SELECT_KEYFILE_GENERATION_DIRECTORY">Select a directory where to store the keyfiles.</string>
|
||||||
<string lang="en" key="SERPENT_HELP">Designed by Ross Anderson, Eli Biham, and Lars Knudsen. Published in 1998. 256-bit key, 128-bit block. Mode of operation is XTS. Serpent was one of the AES finalists.</string>
|
<string lang="en" key="SERPENT_HELP">Designed by Ross Anderson, Eli Biham, and Lars Knudsen. Published in 1998. 256-bit key, 128-bit block. Mode of operation is XTS. Serpent was one of the AES finalists.</string>
|
||||||
<string lang="en" key="SIZE_HELP">Please specify the size of the container you want to create.\n\nIf you create a dynamic (sparse-file) container, this parameter will specify its maximum possible size.\n\nNote that the minimum possible size of a FAT volume is 292 KB. The minimum possible size of an NTFS volume is 3792 KB.</string>
|
<string lang="en" key="SIZE_HELP">Please specify the size of the container you want to create.\n\nIf you create a dynamic (sparse-file) container, this parameter will specify its maximum possible size.\n\nNote that the minimum possible size of a FAT volume is 292 KB. The minimum possible size of an NTFS volume is 3792 KB.</string>
|
||||||
<string lang="en" key="SIZE_HELP_HIDDEN_HOST_VOL">Please specify the size of the outer volume to be created (you will first create the outer volume and then a hidden volume within it). The minimum possible size of a volume within which a hidden volume is intended to be created is 340 KB.</string>
|
<string lang="en" key="SIZE_HELP_HIDDEN_HOST_VOL">Please specify the size of the outer volume to be created (you will first create the outer volume and then a hidden volume within it). The minimum possible size of a volume within which a hidden volume is intended to be created is 340 KB.</string>
|
||||||
@@ -862,7 +866,11 @@
|
|||||||
<string lang="en" key="ENTER_NORMAL_VOL_PASSWORD">Enter password for the normal/outer volume</string>
|
<string lang="en" key="ENTER_NORMAL_VOL_PASSWORD">Enter password for the normal/outer volume</string>
|
||||||
<string lang="en" key="ENTER_HIDDEN_VOL_PASSWORD">Enter password for the hidden volume</string>
|
<string lang="en" key="ENTER_HIDDEN_VOL_PASSWORD">Enter password for the hidden volume</string>
|
||||||
<string lang="en" key="ENTER_HEADER_BACKUP_PASSWORD">Enter password for the header stored in backup file</string>
|
<string lang="en" key="ENTER_HEADER_BACKUP_PASSWORD">Enter password for the header stored in backup file</string>
|
||||||
<string lang="en" key="KEYFILE_CREATED">Keyfile has been successfully created.</string>
|
<string lang="en" key="KEYFILE_CREATED">Keyfiles have been successfully created.</string>
|
||||||
|
<string lang="en" key="KEYFILE_INCORRECT_NUMBER">The number of keyfiles you supplied is invalid.</string>
|
||||||
|
<string lang="en" key="KEYFILE_EMPTY_BASE_NAME">Please enter a name for the keyfile(s) to be generated</string>
|
||||||
|
<string lang="en" key="KEYFILE_INVALID_BASE_NAME">The base name of the keyfile(s) is invalid</string>
|
||||||
|
<string lang="en" key="KEYFILE_ALREADY_EXISTS">The keyfile '%s' already exists.\nDo you want to overwrite it? The generation process will be stopped if you answer No.</string>
|
||||||
<string lang="en" key="HEADER_DAMAGED_AUTO_USED_HEADER_BAK">WARNING: The header of this volume is damaged! VeraCrypt automatically used the backup of the volume header embedded in the volume.\n\nYou should repair the volume header by selecting 'Tools' > 'Restore Volume Header'.</string>
|
<string lang="en" key="HEADER_DAMAGED_AUTO_USED_HEADER_BAK">WARNING: The header of this volume is damaged! VeraCrypt automatically used the backup of the volume header embedded in the volume.\n\nYou should repair the volume header by selecting 'Tools' > 'Restore Volume Header'.</string>
|
||||||
<string lang="en" key="VOL_HEADER_BACKED_UP">Volume header backup has been successfully created.\n\nIMPORTANT: Restoring the volume header using this backup will also restore the current volume password. Moreover, if keyfile(s) are/is necessary to mount the volume, the same keyfile(s) will be necessary to mount the volume again when the volume header is restored.\n\nWARNING: This volume header backup may be used to restore the header ONLY of this particular volume. If you use this header backup to restore a header of a different volume, you will be able to mount the volume, but you will NOT be able to decrypt any data stored in the volume (because you will change its master key).</string>
|
<string lang="en" key="VOL_HEADER_BACKED_UP">Volume header backup has been successfully created.\n\nIMPORTANT: Restoring the volume header using this backup will also restore the current volume password. Moreover, if keyfile(s) are/is necessary to mount the volume, the same keyfile(s) will be necessary to mount the volume again when the volume header is restored.\n\nWARNING: This volume header backup may be used to restore the header ONLY of this particular volume. If you use this header backup to restore a header of a different volume, you will be able to mount the volume, but you will NOT be able to decrypt any data stored in the volume (because you will change its master key).</string>
|
||||||
<string lang="en" key="VOL_HEADER_RESTORED">The volume header has been successfully restored.\n\nIMPORTANT: Please note that an old password may have been restored as well. Moreover, if keyfile(s) were/was necessary to mount the volume when the backup was created, the same keyfile(s) are now necessary to mount the volume again.</string>
|
<string lang="en" key="VOL_HEADER_RESTORED">The volume header has been successfully restored.\n\nIMPORTANT: Please note that an old password may have been restored as well. Moreover, if keyfile(s) were/was necessary to mount the volume when the backup was created, the same keyfile(s) are now necessary to mount the volume again.</string>
|
||||||
@@ -1049,6 +1057,7 @@
|
|||||||
<string lang="en" key="WIPE_MODE_3_DOD_5220">3-pass (US DoD 5220.22-M)</string>
|
<string lang="en" key="WIPE_MODE_3_DOD_5220">3-pass (US DoD 5220.22-M)</string>
|
||||||
<string lang="en" key="WIPE_MODE_7_DOD_5220">7-pass (US DoD 5220.22-M)</string>
|
<string lang="en" key="WIPE_MODE_7_DOD_5220">7-pass (US DoD 5220.22-M)</string>
|
||||||
<string lang="en" key="WIPE_MODE_35_GUTMANN">35-pass ("Gutmann")</string>
|
<string lang="en" key="WIPE_MODE_35_GUTMANN">35-pass ("Gutmann")</string>
|
||||||
|
<string lang="en" key="WIPE_MODE_256">256-pass</string>
|
||||||
<string lang="en" key="SYS_MULTI_BOOT_MODE_TITLE">Number of Operating Systems</string>
|
<string lang="en" key="SYS_MULTI_BOOT_MODE_TITLE">Number of Operating Systems</string>
|
||||||
<string lang="en" key="MULTI_BOOT_FOR_ADVANCED_ONLY">WARNING: Inexperienced users should never attempt to encrypt Windows in multi-boot configurations.\n\nContinue?</string>
|
<string lang="en" key="MULTI_BOOT_FOR_ADVANCED_ONLY">WARNING: Inexperienced users should never attempt to encrypt Windows in multi-boot configurations.\n\nContinue?</string>
|
||||||
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
<string lang="en" key="HIDDEN_OS_MULTI_BOOT">When creating/using a hidden operating system, VeraCrypt supports multi-boot configurations only when the following conditions are met:\n\n- The currently running operating system must be installed on the boot drive, which must not contain any other operating systems.\n\n- Operating systems installed on other drives must not use any boot loader residing on the drive on which the currently running operating system is installed.\n\nAre the above conditions met?</string>
|
||||||
|
|||||||
+32
-13
@@ -66,15 +66,20 @@ BOOL CheckPasswordCharEncoding (HWND hPassword, Password *ptrPw)
|
|||||||
|
|
||||||
if (hPassword == NULL)
|
if (hPassword == NULL)
|
||||||
{
|
{
|
||||||
unsigned char *pw;
|
if (ptrPw)
|
||||||
len = ptrPw->Length;
|
|
||||||
pw = (unsigned char *) ptrPw->Text;
|
|
||||||
|
|
||||||
for (i = 0; i < len; i++)
|
|
||||||
{
|
{
|
||||||
if (pw[i] >= 0x7f || pw[i] < 0x20) // A non-ASCII or non-printable character?
|
unsigned char *pw;
|
||||||
return FALSE;
|
len = ptrPw->Length;
|
||||||
|
pw = (unsigned char *) ptrPw->Text;
|
||||||
|
|
||||||
|
for (i = 0; i < len; i++)
|
||||||
|
{
|
||||||
|
if (pw[i] >= 0x7f || pw[i] < 0x20) // A non-ASCII or non-printable character?
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
return FALSE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -114,7 +119,7 @@ BOOL CheckPasswordLength (HWND hwndDlg, HWND hwndItem)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ChangePwd (char *lpszVolume, Password *oldPassword, Password *newPassword, int pkcs5, HWND hwndDlg)
|
int ChangePwd (const char *lpszVolume, Password *oldPassword, Password *newPassword, int pkcs5, int wipePassCount, HWND hwndDlg)
|
||||||
{
|
{
|
||||||
int nDosLinkCreated = 1, nStatus = ERR_OS_ERROR;
|
int nDosLinkCreated = 1, nStatus = ERR_OS_ERROR;
|
||||||
char szDiskFile[TC_MAX_PATH], szCFDevice[TC_MAX_PATH];
|
char szDiskFile[TC_MAX_PATH], szCFDevice[TC_MAX_PATH];
|
||||||
@@ -138,9 +143,23 @@ int ChangePwd (char *lpszVolume, Password *oldPassword, Password *newPassword, i
|
|||||||
|
|
||||||
if (oldPassword->Length == 0 || newPassword->Length == 0) return -1;
|
if (oldPassword->Length == 0 || newPassword->Length == 0) return -1;
|
||||||
|
|
||||||
|
if (wipePassCount <= 0)
|
||||||
|
{
|
||||||
|
nStatus = ERR_PARAMETER_INCORRECT;
|
||||||
|
handleError (hwndDlg, nStatus);
|
||||||
|
return nStatus;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!lpszVolume)
|
||||||
|
{
|
||||||
|
nStatus = ERR_OUTOFMEMORY;
|
||||||
|
handleError (hwndDlg, nStatus);
|
||||||
|
return nStatus;
|
||||||
|
}
|
||||||
|
|
||||||
WaitCursor ();
|
WaitCursor ();
|
||||||
|
|
||||||
CreateFullVolumePath (szDiskFile, lpszVolume, &bDevice);
|
CreateFullVolumePath (szDiskFile, sizeof(szDiskFile), lpszVolume, &bDevice);
|
||||||
|
|
||||||
if (bDevice == FALSE)
|
if (bDevice == FALSE)
|
||||||
{
|
{
|
||||||
@@ -148,7 +167,7 @@ int ChangePwd (char *lpszVolume, Password *oldPassword, Password *newPassword, i
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
nDosLinkCreated = FakeDosNameForDevice (szDiskFile, szDosDevice, szCFDevice, FALSE);
|
nDosLinkCreated = FakeDosNameForDevice (szDiskFile, szDosDevice, sizeof(szDosDevice), szCFDevice, sizeof(szCFDevice),FALSE);
|
||||||
|
|
||||||
if (nDosLinkCreated != 0)
|
if (nDosLinkCreated != 0)
|
||||||
goto error;
|
goto error;
|
||||||
@@ -311,7 +330,7 @@ int ChangePwd (char *lpszVolume, Password *oldPassword, Password *newPassword, i
|
|||||||
|
|
||||||
while (TRUE)
|
while (TRUE)
|
||||||
{
|
{
|
||||||
/* The header will be re-encrypted PRAND_DISK_WIPE_PASSES times to prevent adversaries from using
|
/* The header will be re-encrypted wipePassCount times to prevent adversaries from using
|
||||||
techniques such as magnetic force microscopy or magnetic force scanning tunnelling microscopy
|
techniques such as magnetic force microscopy or magnetic force scanning tunnelling microscopy
|
||||||
to recover the overwritten header. According to Peter Gutmann, data should be overwritten 22
|
to recover the overwritten header. According to Peter Gutmann, data should be overwritten 22
|
||||||
times (ideally, 35 times) using non-random patterns and pseudorandom data. However, as users might
|
times (ideally, 35 times) using non-random patterns and pseudorandom data. However, as users might
|
||||||
@@ -323,7 +342,7 @@ int ChangePwd (char *lpszVolume, Password *oldPassword, Password *newPassword, i
|
|||||||
of the header to differ substantially and in a random manner from the versions written during the
|
of the header to differ substantially and in a random manner from the versions written during the
|
||||||
other passes. */
|
other passes. */
|
||||||
|
|
||||||
for (wipePass = 0; wipePass < PRAND_DISK_WIPE_PASSES; wipePass++)
|
for (wipePass = 0; wipePass < wipePassCount; wipePass++)
|
||||||
{
|
{
|
||||||
// Prepare new volume header
|
// Prepare new volume header
|
||||||
nStatus = CreateVolumeHeaderInMemory (FALSE,
|
nStatus = CreateVolumeHeaderInMemory (FALSE,
|
||||||
@@ -341,7 +360,7 @@ int ChangePwd (char *lpszVolume, Password *oldPassword, Password *newPassword, i
|
|||||||
cryptoInfo->RequiredProgramVersion,
|
cryptoInfo->RequiredProgramVersion,
|
||||||
cryptoInfo->HeaderFlags,
|
cryptoInfo->HeaderFlags,
|
||||||
cryptoInfo->SectorSize,
|
cryptoInfo->SectorSize,
|
||||||
wipePass < PRAND_DISK_WIPE_PASSES - 1);
|
wipePass < wipePassCount - 1);
|
||||||
|
|
||||||
if (ci != NULL)
|
if (ci != NULL)
|
||||||
crypto_close (ci);
|
crypto_close (ci);
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ typedef struct
|
|||||||
void VerifyPasswordAndUpdate ( HWND hwndDlg , HWND hButton , HWND hPassword , HWND hVerify , unsigned char *szPassword , char *szVerify, BOOL keyFilesEnabled );
|
void VerifyPasswordAndUpdate ( HWND hwndDlg , HWND hButton , HWND hPassword , HWND hVerify , unsigned char *szPassword , char *szVerify, BOOL keyFilesEnabled );
|
||||||
BOOL CheckPasswordLength (HWND hwndDlg, HWND hwndItem);
|
BOOL CheckPasswordLength (HWND hwndDlg, HWND hwndItem);
|
||||||
BOOL CheckPasswordCharEncoding (HWND hPassword, Password *ptrPw);
|
BOOL CheckPasswordCharEncoding (HWND hPassword, Password *ptrPw);
|
||||||
int ChangePwd (char *lpszVolume, Password *oldPassword, Password *newPassword, int pkcs5, HWND hwndDlg);
|
int ChangePwd (const char *lpszVolume, Password *oldPassword, Password *newPassword, int pkcs5, int wipePassCount, HWND hwndDlg);
|
||||||
|
|
||||||
#endif // defined(_WIN32) && !defined(TC_WINDOWS_DRIVER)
|
#endif // defined(_WIN32) && !defined(TC_WINDOWS_DRIVER)
|
||||||
|
|
||||||
|
|||||||
+216
-187
@@ -14,9 +14,10 @@
|
|||||||
#include <memory.h>
|
#include <memory.h>
|
||||||
#include "Rmd160.h"
|
#include "Rmd160.h"
|
||||||
#ifndef TC_WINDOWS_BOOT
|
#ifndef TC_WINDOWS_BOOT
|
||||||
#include "Sha1.h"
|
|
||||||
#include "Sha2.h"
|
#include "Sha2.h"
|
||||||
#include "Whirlpool.h"
|
#include "Whirlpool.h"
|
||||||
|
#else
|
||||||
|
#include "Sha2Small.h"
|
||||||
#endif
|
#endif
|
||||||
#include "Pkcs5.h"
|
#include "Pkcs5.h"
|
||||||
#include "Crypto.h"
|
#include "Crypto.h"
|
||||||
@@ -33,6 +34,167 @@ void hmac_truncate
|
|||||||
d2[i] = d1[i];
|
d2[i] = d1[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if !defined(TC_WINDOWS_BOOT) || defined(TC_WINDOWS_BOOT_SHA2)
|
||||||
|
|
||||||
|
void hmac_sha256
|
||||||
|
(
|
||||||
|
char *k, /* secret key */
|
||||||
|
int lk, /* length of the key in bytes */
|
||||||
|
char *d, /* data */
|
||||||
|
int ld, /* length of data in bytes */
|
||||||
|
char *out /* output buffer, at least "t" bytes */
|
||||||
|
)
|
||||||
|
{
|
||||||
|
sha256_ctx ictx, octx;
|
||||||
|
char isha[SHA256_DIGESTSIZE], osha[SHA256_DIGESTSIZE];
|
||||||
|
#ifndef TC_WINDOWS_BOOT
|
||||||
|
char key[SHA256_DIGESTSIZE];
|
||||||
|
#endif
|
||||||
|
char buf[SHA256_BLOCKSIZE];
|
||||||
|
int i;
|
||||||
|
|
||||||
|
#ifndef TC_WINDOWS_BOOT
|
||||||
|
/* If the key is longer than the hash algorithm block size,
|
||||||
|
let key = sha256(key), as per HMAC specifications. */
|
||||||
|
if (lk > SHA256_BLOCKSIZE)
|
||||||
|
{
|
||||||
|
sha256_ctx tctx;
|
||||||
|
|
||||||
|
sha256_begin (&tctx);
|
||||||
|
sha256_hash ((unsigned char *) k, lk, &tctx);
|
||||||
|
sha256_end ((unsigned char *) key, &tctx);
|
||||||
|
|
||||||
|
k = key;
|
||||||
|
lk = SHA256_DIGESTSIZE;
|
||||||
|
|
||||||
|
burn (&tctx, sizeof(tctx)); // Prevent leaks
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
/**** Inner Digest ****/
|
||||||
|
|
||||||
|
sha256_begin (&ictx);
|
||||||
|
|
||||||
|
/* Pad the key for inner digest */
|
||||||
|
for (i = 0; i < lk; ++i)
|
||||||
|
buf[i] = (char) (k[i] ^ 0x36);
|
||||||
|
for (i = lk; i < SHA256_BLOCKSIZE; ++i)
|
||||||
|
buf[i] = 0x36;
|
||||||
|
|
||||||
|
sha256_hash ((unsigned char *) buf, SHA256_BLOCKSIZE, &ictx);
|
||||||
|
sha256_hash ((unsigned char *) d, ld, &ictx);
|
||||||
|
|
||||||
|
sha256_end ((unsigned char *) isha, &ictx);
|
||||||
|
|
||||||
|
/**** Outer Digest ****/
|
||||||
|
|
||||||
|
sha256_begin (&octx);
|
||||||
|
|
||||||
|
for (i = 0; i < lk; ++i)
|
||||||
|
buf[i] = (char) (k[i] ^ 0x5C);
|
||||||
|
for (i = lk; i < SHA256_BLOCKSIZE; ++i)
|
||||||
|
buf[i] = 0x5C;
|
||||||
|
|
||||||
|
sha256_hash ((unsigned char *) buf, SHA256_BLOCKSIZE, &octx);
|
||||||
|
sha256_hash ((unsigned char *) isha, SHA256_DIGESTSIZE, &octx);
|
||||||
|
|
||||||
|
sha256_end ((unsigned char *) osha, &octx);
|
||||||
|
|
||||||
|
/* truncate and print the results */
|
||||||
|
hmac_truncate (osha, out, SHA256_DIGESTSIZE);
|
||||||
|
|
||||||
|
/* Prevent leaks */
|
||||||
|
burn (&ictx, sizeof(ictx));
|
||||||
|
burn (&octx, sizeof(octx));
|
||||||
|
burn (isha, sizeof(isha));
|
||||||
|
burn (osha, sizeof(osha));
|
||||||
|
burn (buf, sizeof(buf));
|
||||||
|
#ifndef TC_WINDOWS_BOOT
|
||||||
|
burn (key, sizeof(key));
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void derive_u_sha256 (char *pwd, int pwd_len, char *salt, int salt_len, int iterations, char *u, int b)
|
||||||
|
{
|
||||||
|
char j[SHA256_DIGESTSIZE], k[SHA256_DIGESTSIZE];
|
||||||
|
char init[128];
|
||||||
|
char counter[4];
|
||||||
|
uint32 c;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
#ifdef TC_WINDOWS_BOOT
|
||||||
|
/* In bootloader, iterations is a boolean : TRUE for boot derivation mode, FALSE otherwise
|
||||||
|
* This enables us to save code space needed for implementing other features.
|
||||||
|
*/
|
||||||
|
if (iterations)
|
||||||
|
c = 200000;
|
||||||
|
else
|
||||||
|
c = 500000;
|
||||||
|
#else
|
||||||
|
c = iterations;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* iteration 1 */
|
||||||
|
memset (counter, 0, 4);
|
||||||
|
counter[3] = (char) b;
|
||||||
|
memcpy (init, salt, salt_len); /* salt */
|
||||||
|
memcpy (&init[salt_len], counter, 4); /* big-endian block number */
|
||||||
|
hmac_sha256 (pwd, pwd_len, init, salt_len + 4, j);
|
||||||
|
memcpy (u, j, SHA256_DIGESTSIZE);
|
||||||
|
|
||||||
|
/* remaining iterations */
|
||||||
|
while (c > 1)
|
||||||
|
{
|
||||||
|
hmac_sha256 (pwd, pwd_len, j, SHA256_DIGESTSIZE, k);
|
||||||
|
for (i = 0; i < SHA256_DIGESTSIZE; i++)
|
||||||
|
{
|
||||||
|
u[i] ^= k[i];
|
||||||
|
j[i] = k[i];
|
||||||
|
}
|
||||||
|
c--;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Prevent possible leaks. */
|
||||||
|
burn (j, sizeof(j));
|
||||||
|
burn (k, sizeof(k));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void derive_key_sha256 (char *pwd, int pwd_len, char *salt, int salt_len, int iterations, char *dk, int dklen)
|
||||||
|
{
|
||||||
|
char u[SHA256_DIGESTSIZE];
|
||||||
|
int b, l, r;
|
||||||
|
|
||||||
|
if (dklen % SHA256_DIGESTSIZE)
|
||||||
|
{
|
||||||
|
l = 1 + dklen / SHA256_DIGESTSIZE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
l = dklen / SHA256_DIGESTSIZE;
|
||||||
|
}
|
||||||
|
|
||||||
|
r = dklen - (l - 1) * SHA256_DIGESTSIZE;
|
||||||
|
|
||||||
|
/* first l - 1 blocks */
|
||||||
|
for (b = 1; b < l; b++)
|
||||||
|
{
|
||||||
|
derive_u_sha256 (pwd, pwd_len, salt, salt_len, iterations, u, b);
|
||||||
|
memcpy (dk, u, SHA256_DIGESTSIZE);
|
||||||
|
dk += SHA256_DIGESTSIZE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* last block */
|
||||||
|
derive_u_sha256 (pwd, pwd_len, salt, salt_len, iterations, u, b);
|
||||||
|
memcpy (dk, u, r);
|
||||||
|
|
||||||
|
|
||||||
|
/* Prevent possible leaks. */
|
||||||
|
burn (u, sizeof(u));
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef TC_WINDOWS_BOOT
|
#ifndef TC_WINDOWS_BOOT
|
||||||
|
|
||||||
void hmac_sha512
|
void hmac_sha512
|
||||||
@@ -47,10 +209,13 @@ void hmac_sha512
|
|||||||
{
|
{
|
||||||
sha512_ctx ictx, octx;
|
sha512_ctx ictx, octx;
|
||||||
char isha[SHA512_DIGESTSIZE], osha[SHA512_DIGESTSIZE];
|
char isha[SHA512_DIGESTSIZE], osha[SHA512_DIGESTSIZE];
|
||||||
|
#ifndef TC_WINDOWS_BOOT
|
||||||
char key[SHA512_DIGESTSIZE];
|
char key[SHA512_DIGESTSIZE];
|
||||||
|
#endif
|
||||||
char buf[SHA512_BLOCKSIZE];
|
char buf[SHA512_BLOCKSIZE];
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
#ifndef TC_WINDOWS_BOOT
|
||||||
/* If the key is longer than the hash algorithm block size,
|
/* If the key is longer than the hash algorithm block size,
|
||||||
let key = sha512(key), as per HMAC specifications. */
|
let key = sha512(key), as per HMAC specifications. */
|
||||||
if (lk > SHA512_BLOCKSIZE)
|
if (lk > SHA512_BLOCKSIZE)
|
||||||
@@ -66,7 +231,7 @@ void hmac_sha512
|
|||||||
|
|
||||||
burn (&tctx, sizeof(tctx)); // Prevent leaks
|
burn (&tctx, sizeof(tctx)); // Prevent leaks
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
/**** Inner Digest ****/
|
/**** Inner Digest ****/
|
||||||
|
|
||||||
sha512_begin (&ictx);
|
sha512_begin (&ictx);
|
||||||
@@ -106,7 +271,9 @@ void hmac_sha512
|
|||||||
burn (isha, sizeof(isha));
|
burn (isha, sizeof(isha));
|
||||||
burn (osha, sizeof(osha));
|
burn (osha, sizeof(osha));
|
||||||
burn (buf, sizeof(buf));
|
burn (buf, sizeof(buf));
|
||||||
|
#ifndef TC_WINDOWS_BOOT
|
||||||
burn (key, sizeof(key));
|
burn (key, sizeof(key));
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -175,160 +342,21 @@ void derive_key_sha512 (char *pwd, int pwd_len, char *salt, int salt_len, int it
|
|||||||
burn (u, sizeof(u));
|
burn (u, sizeof(u));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Deprecated/legacy */
|
|
||||||
void hmac_sha1
|
|
||||||
(
|
|
||||||
char *k, /* secret key */
|
|
||||||
int lk, /* length of the key in bytes */
|
|
||||||
char *d, /* data */
|
|
||||||
int ld, /* length of data in bytes */
|
|
||||||
char *out, /* output buffer, at least "t" bytes */
|
|
||||||
int t
|
|
||||||
)
|
|
||||||
{
|
|
||||||
sha1_ctx ictx, octx;
|
|
||||||
char isha[SHA1_DIGESTSIZE], osha[SHA1_DIGESTSIZE];
|
|
||||||
char key[SHA1_DIGESTSIZE];
|
|
||||||
char buf[SHA1_BLOCKSIZE];
|
|
||||||
int i;
|
|
||||||
|
|
||||||
/* If the key is longer than the hash algorithm block size,
|
|
||||||
let key = sha1(key), as per HMAC specifications. */
|
|
||||||
if (lk > SHA1_BLOCKSIZE)
|
|
||||||
{
|
|
||||||
sha1_ctx tctx;
|
|
||||||
|
|
||||||
sha1_begin (&tctx);
|
|
||||||
sha1_hash ((unsigned char *) k, lk, &tctx);
|
|
||||||
sha1_end ((unsigned char *) key, &tctx);
|
|
||||||
|
|
||||||
k = key;
|
|
||||||
lk = SHA1_DIGESTSIZE;
|
|
||||||
|
|
||||||
burn (&tctx, sizeof(tctx)); // Prevent leaks
|
|
||||||
}
|
|
||||||
|
|
||||||
/**** Inner Digest ****/
|
|
||||||
|
|
||||||
sha1_begin (&ictx);
|
|
||||||
|
|
||||||
/* Pad the key for inner digest */
|
|
||||||
for (i = 0; i < lk; ++i)
|
|
||||||
buf[i] = (char) (k[i] ^ 0x36);
|
|
||||||
for (i = lk; i < SHA1_BLOCKSIZE; ++i)
|
|
||||||
buf[i] = 0x36;
|
|
||||||
|
|
||||||
sha1_hash ((unsigned char *) buf, SHA1_BLOCKSIZE, &ictx);
|
|
||||||
sha1_hash ((unsigned char *) d, ld, &ictx);
|
|
||||||
|
|
||||||
sha1_end ((unsigned char *) isha, &ictx);
|
|
||||||
|
|
||||||
/**** Outer Digest ****/
|
|
||||||
|
|
||||||
sha1_begin (&octx);
|
|
||||||
|
|
||||||
for (i = 0; i < lk; ++i)
|
|
||||||
buf[i] = (char) (k[i] ^ 0x5C);
|
|
||||||
for (i = lk; i < SHA1_BLOCKSIZE; ++i)
|
|
||||||
buf[i] = 0x5C;
|
|
||||||
|
|
||||||
sha1_hash ((unsigned char *) buf, SHA1_BLOCKSIZE, &octx);
|
|
||||||
sha1_hash ((unsigned char *) isha, SHA1_DIGESTSIZE, &octx);
|
|
||||||
|
|
||||||
sha1_end ((unsigned char *) osha, &octx);
|
|
||||||
|
|
||||||
/* truncate and print the results */
|
|
||||||
t = t > SHA1_DIGESTSIZE ? SHA1_DIGESTSIZE : t;
|
|
||||||
hmac_truncate (osha, out, t);
|
|
||||||
|
|
||||||
/* Prevent leaks */
|
|
||||||
burn (&ictx, sizeof(ictx));
|
|
||||||
burn (&octx, sizeof(octx));
|
|
||||||
burn (isha, sizeof(isha));
|
|
||||||
burn (osha, sizeof(osha));
|
|
||||||
burn (buf, sizeof(buf));
|
|
||||||
burn (key, sizeof(key));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Deprecated/legacy */
|
|
||||||
void derive_u_sha1 (char *pwd, int pwd_len, char *salt, int salt_len, int iterations, char *u, int b)
|
|
||||||
{
|
|
||||||
char j[SHA1_DIGESTSIZE], k[SHA1_DIGESTSIZE];
|
|
||||||
char init[128];
|
|
||||||
char counter[4];
|
|
||||||
int c, i;
|
|
||||||
|
|
||||||
/* iteration 1 */
|
|
||||||
memset (counter, 0, 4);
|
|
||||||
counter[3] = (char) b;
|
|
||||||
memcpy (init, salt, salt_len); /* salt */
|
|
||||||
memcpy (&init[salt_len], counter, 4); /* big-endian block number */
|
|
||||||
hmac_sha1 (pwd, pwd_len, init, salt_len + 4, j, SHA1_DIGESTSIZE);
|
|
||||||
memcpy (u, j, SHA1_DIGESTSIZE);
|
|
||||||
|
|
||||||
/* remaining iterations */
|
|
||||||
for (c = 1; c < iterations; c++)
|
|
||||||
{
|
|
||||||
hmac_sha1 (pwd, pwd_len, j, SHA1_DIGESTSIZE, k, SHA1_DIGESTSIZE);
|
|
||||||
for (i = 0; i < SHA1_DIGESTSIZE; i++)
|
|
||||||
{
|
|
||||||
u[i] ^= k[i];
|
|
||||||
j[i] = k[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Prevent possible leaks. */
|
|
||||||
burn (j, sizeof(j));
|
|
||||||
burn (k, sizeof(k));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Deprecated/legacy */
|
|
||||||
void derive_key_sha1 (char *pwd, int pwd_len, char *salt, int salt_len, int iterations, char *dk, int dklen)
|
|
||||||
{
|
|
||||||
char u[SHA1_DIGESTSIZE];
|
|
||||||
int b, l, r;
|
|
||||||
|
|
||||||
if (dklen % SHA1_DIGESTSIZE)
|
|
||||||
{
|
|
||||||
l = 1 + dklen / SHA1_DIGESTSIZE;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
l = dklen / SHA1_DIGESTSIZE;
|
|
||||||
}
|
|
||||||
|
|
||||||
r = dklen - (l - 1) * SHA1_DIGESTSIZE;
|
|
||||||
|
|
||||||
/* first l - 1 blocks */
|
|
||||||
for (b = 1; b < l; b++)
|
|
||||||
{
|
|
||||||
derive_u_sha1 (pwd, pwd_len, salt, salt_len, iterations, u, b);
|
|
||||||
memcpy (dk, u, SHA1_DIGESTSIZE);
|
|
||||||
dk += SHA1_DIGESTSIZE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* last block */
|
|
||||||
derive_u_sha1 (pwd, pwd_len, salt, salt_len, iterations, u, b);
|
|
||||||
memcpy (dk, u, r);
|
|
||||||
|
|
||||||
|
|
||||||
/* Prevent possible leaks. */
|
|
||||||
burn (u, sizeof(u));
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // TC_WINDOWS_BOOT
|
#endif // TC_WINDOWS_BOOT
|
||||||
|
|
||||||
|
#if !defined(TC_WINDOWS_BOOT) || defined(TC_WINDOWS_BOOT_RIPEMD160)
|
||||||
|
|
||||||
void hmac_ripemd160 (char *key, int keylen, char *input, int len, char *digest)
|
void hmac_ripemd160 (char *key, int keylen, char *input, int len, char *digest)
|
||||||
{
|
{
|
||||||
RMD160_CTX context;
|
RMD160_CTX context;
|
||||||
unsigned char k_ipad[65]; /* inner padding - key XORd with ipad */
|
unsigned char k_ipad[65]; /* inner padding - key XORd with ipad */
|
||||||
unsigned char k_opad[65]; /* outer padding - key XORd with opad */
|
unsigned char k_opad[65]; /* outer padding - key XORd with opad */
|
||||||
|
#ifndef TC_WINDOWS_BOOT
|
||||||
unsigned char tk[RIPEMD160_DIGESTSIZE];
|
unsigned char tk[RIPEMD160_DIGESTSIZE];
|
||||||
|
#endif
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
#ifndef TC_WINDOWS_BOOT
|
||||||
/* If the key is longer than the hash algorithm block size,
|
/* If the key is longer than the hash algorithm block size,
|
||||||
let key = ripemd160(key), as per HMAC specifications. */
|
let key = ripemd160(key), as per HMAC specifications. */
|
||||||
if (keylen > RIPEMD160_BLOCKSIZE)
|
if (keylen > RIPEMD160_BLOCKSIZE)
|
||||||
@@ -344,7 +372,7 @@ void hmac_ripemd160 (char *key, int keylen, char *input, int len, char *digest)
|
|||||||
|
|
||||||
burn (&tctx, sizeof(tctx)); // Prevent leaks
|
burn (&tctx, sizeof(tctx)); // Prevent leaks
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
/*
|
/*
|
||||||
|
|
||||||
RMD160(K XOR opad, RMD160(K XOR ipad, text))
|
RMD160(K XOR opad, RMD160(K XOR ipad, text))
|
||||||
@@ -383,17 +411,31 @@ void hmac_ripemd160 (char *key, int keylen, char *input, int len, char *digest)
|
|||||||
/* Prevent possible leaks. */
|
/* Prevent possible leaks. */
|
||||||
burn (k_ipad, sizeof(k_ipad));
|
burn (k_ipad, sizeof(k_ipad));
|
||||||
burn (k_opad, sizeof(k_opad));
|
burn (k_opad, sizeof(k_opad));
|
||||||
|
#ifndef TC_WINDOWS_BOOT
|
||||||
burn (tk, sizeof(tk));
|
burn (tk, sizeof(tk));
|
||||||
|
#endif
|
||||||
burn (&context, sizeof(context));
|
burn (&context, sizeof(context));
|
||||||
}
|
}
|
||||||
|
|
||||||
void derive_u_ripemd160 (BOOL bNotTest, char *pwd, int pwd_len, char *salt, int salt_len, int iterations, char *u, int b)
|
void derive_u_ripemd160 (char *pwd, int pwd_len, char *salt, int salt_len, int iterations, char *u, int b)
|
||||||
{
|
{
|
||||||
char j[RIPEMD160_DIGESTSIZE], k[RIPEMD160_DIGESTSIZE];
|
char j[RIPEMD160_DIGESTSIZE], k[RIPEMD160_DIGESTSIZE];
|
||||||
char init[128];
|
char init[128];
|
||||||
char counter[4];
|
char counter[4];
|
||||||
int c, i, l;
|
uint32 c;
|
||||||
int EnhanceSecurityLoops = (bNotTest)? 20 : 1;
|
int i;
|
||||||
|
|
||||||
|
#ifdef TC_WINDOWS_BOOT
|
||||||
|
/* In bootloader, iterations is a boolean : TRUE for boot derivation mode, FALSE otherwise
|
||||||
|
* This enables us to save code space needed for implementing other features.
|
||||||
|
*/
|
||||||
|
if (iterations)
|
||||||
|
c = 327661;
|
||||||
|
else
|
||||||
|
c = 655331;
|
||||||
|
#else
|
||||||
|
c = iterations;
|
||||||
|
#endif
|
||||||
|
|
||||||
/* iteration 1 */
|
/* iteration 1 */
|
||||||
memset (counter, 0, 4);
|
memset (counter, 0, 4);
|
||||||
@@ -404,40 +446,23 @@ void derive_u_ripemd160 (BOOL bNotTest, char *pwd, int pwd_len, char *salt, int
|
|||||||
memcpy (u, j, RIPEMD160_DIGESTSIZE);
|
memcpy (u, j, RIPEMD160_DIGESTSIZE);
|
||||||
|
|
||||||
/* remaining iterations */
|
/* remaining iterations */
|
||||||
for (l = 0; l < EnhanceSecurityLoops; l++)
|
while ( c > 1)
|
||||||
{
|
{
|
||||||
for (c = 1; c < iterations; c++)
|
hmac_ripemd160 (pwd, pwd_len, j, RIPEMD160_DIGESTSIZE, k);
|
||||||
|
for (i = 0; i < RIPEMD160_DIGESTSIZE; i++)
|
||||||
{
|
{
|
||||||
hmac_ripemd160 (pwd, pwd_len, j, RIPEMD160_DIGESTSIZE, k);
|
u[i] ^= k[i];
|
||||||
for (i = 0; i < RIPEMD160_DIGESTSIZE; i++)
|
j[i] = k[i];
|
||||||
{
|
|
||||||
u[i] ^= k[i];
|
|
||||||
j[i] = k[i];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
c--;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* add extra 10 loops to ensure backward compatibilty with the previous count (327661 for boot, 655331 for normal) */
|
|
||||||
if (iterations == 32767)
|
|
||||||
{
|
|
||||||
/* case of normal partition : add 10 iterations to have a total of 655331 = (32767 - 1)*20 + 1 + 10 */
|
|
||||||
for (c = 0; c < 10; c++)
|
|
||||||
{
|
|
||||||
hmac_ripemd160 (pwd, pwd_len, j, RIPEMD160_DIGESTSIZE, k);
|
|
||||||
for (i = 0; i < RIPEMD160_DIGESTSIZE; i++)
|
|
||||||
{
|
|
||||||
u[i] ^= k[i];
|
|
||||||
j[i] = k[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Prevent possible leaks. */
|
/* Prevent possible leaks. */
|
||||||
burn (j, sizeof(j));
|
burn (j, sizeof(j));
|
||||||
burn (k, sizeof(k));
|
burn (k, sizeof(k));
|
||||||
}
|
}
|
||||||
|
|
||||||
void derive_key_ripemd160 (BOOL bNotTest, char *pwd, int pwd_len, char *salt, int salt_len, int iterations, char *dk, int dklen)
|
void derive_key_ripemd160 (char *pwd, int pwd_len, char *salt, int salt_len, int iterations, char *dk, int dklen)
|
||||||
{
|
{
|
||||||
char u[RIPEMD160_DIGESTSIZE];
|
char u[RIPEMD160_DIGESTSIZE];
|
||||||
int b, l, r;
|
int b, l, r;
|
||||||
@@ -456,19 +481,20 @@ void derive_key_ripemd160 (BOOL bNotTest, char *pwd, int pwd_len, char *salt, in
|
|||||||
/* first l - 1 blocks */
|
/* first l - 1 blocks */
|
||||||
for (b = 1; b < l; b++)
|
for (b = 1; b < l; b++)
|
||||||
{
|
{
|
||||||
derive_u_ripemd160 (bNotTest, pwd, pwd_len, salt, salt_len, iterations, u, b);
|
derive_u_ripemd160 (pwd, pwd_len, salt, salt_len, iterations, u, b);
|
||||||
memcpy (dk, u, RIPEMD160_DIGESTSIZE);
|
memcpy (dk, u, RIPEMD160_DIGESTSIZE);
|
||||||
dk += RIPEMD160_DIGESTSIZE;
|
dk += RIPEMD160_DIGESTSIZE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* last block */
|
/* last block */
|
||||||
derive_u_ripemd160 (bNotTest, pwd, pwd_len, salt, salt_len, iterations, u, b);
|
derive_u_ripemd160 (pwd, pwd_len, salt, salt_len, iterations, u, b);
|
||||||
memcpy (dk, u, r);
|
memcpy (dk, u, r);
|
||||||
|
|
||||||
|
|
||||||
/* Prevent possible leaks. */
|
/* Prevent possible leaks. */
|
||||||
burn (u, sizeof(u));
|
burn (u, sizeof(u));
|
||||||
}
|
}
|
||||||
|
#endif // TC_WINDOWS_BOOT
|
||||||
|
|
||||||
#ifndef TC_WINDOWS_BOOT
|
#ifndef TC_WINDOWS_BOOT
|
||||||
|
|
||||||
@@ -484,10 +510,13 @@ void hmac_whirlpool
|
|||||||
{
|
{
|
||||||
WHIRLPOOL_CTX ictx, octx;
|
WHIRLPOOL_CTX ictx, octx;
|
||||||
char iwhi[WHIRLPOOL_DIGESTSIZE], owhi[WHIRLPOOL_DIGESTSIZE];
|
char iwhi[WHIRLPOOL_DIGESTSIZE], owhi[WHIRLPOOL_DIGESTSIZE];
|
||||||
|
#ifndef TC_WINDOWS_BOOT
|
||||||
char key[WHIRLPOOL_DIGESTSIZE];
|
char key[WHIRLPOOL_DIGESTSIZE];
|
||||||
|
#endif
|
||||||
char buf[WHIRLPOOL_BLOCKSIZE];
|
char buf[WHIRLPOOL_BLOCKSIZE];
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
#ifndef TC_WINDOWS_BOOT
|
||||||
/* If the key is longer than the hash algorithm block size,
|
/* If the key is longer than the hash algorithm block size,
|
||||||
let key = whirlpool(key), as per HMAC specifications. */
|
let key = whirlpool(key), as per HMAC specifications. */
|
||||||
if (lk > WHIRLPOOL_BLOCKSIZE)
|
if (lk > WHIRLPOOL_BLOCKSIZE)
|
||||||
@@ -503,7 +532,7 @@ void hmac_whirlpool
|
|||||||
|
|
||||||
burn (&tctx, sizeof(tctx)); // Prevent leaks
|
burn (&tctx, sizeof(tctx)); // Prevent leaks
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
/**** Inner Digest ****/
|
/**** Inner Digest ****/
|
||||||
|
|
||||||
WHIRLPOOL_init (&ictx);
|
WHIRLPOOL_init (&ictx);
|
||||||
@@ -543,7 +572,9 @@ void hmac_whirlpool
|
|||||||
burn (owhi, sizeof(owhi));
|
burn (owhi, sizeof(owhi));
|
||||||
burn (iwhi, sizeof(iwhi));
|
burn (iwhi, sizeof(iwhi));
|
||||||
burn (buf, sizeof(buf));
|
burn (buf, sizeof(buf));
|
||||||
|
#ifndef TC_WINDOWS_BOOT
|
||||||
burn (key, sizeof(key));
|
burn (key, sizeof(key));
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void derive_u_whirlpool (char *pwd, int pwd_len, char *salt, int salt_len, int iterations, char *u, int b)
|
void derive_u_whirlpool (char *pwd, int pwd_len, char *salt, int salt_len, int iterations, char *u, int b)
|
||||||
@@ -618,8 +649,8 @@ char *get_pkcs5_prf_name (int pkcs5_prf_id)
|
|||||||
case SHA512:
|
case SHA512:
|
||||||
return "HMAC-SHA-512";
|
return "HMAC-SHA-512";
|
||||||
|
|
||||||
case SHA1: // Deprecated/legacy
|
case SHA256:
|
||||||
return "HMAC-SHA-1";
|
return "HMAC-SHA-256";
|
||||||
|
|
||||||
case RIPEMD160:
|
case RIPEMD160:
|
||||||
return "HMAC-RIPEMD-160";
|
return "HMAC-RIPEMD-160";
|
||||||
@@ -632,7 +663,6 @@ char *get_pkcs5_prf_name (int pkcs5_prf_id)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif //!TC_WINDOWS_BOOT
|
|
||||||
|
|
||||||
|
|
||||||
int get_pkcs5_iteration_count (int pkcs5_prf_id, BOOL bBoot)
|
int get_pkcs5_iteration_count (int pkcs5_prf_id, BOOL bBoot)
|
||||||
@@ -641,22 +671,21 @@ int get_pkcs5_iteration_count (int pkcs5_prf_id, BOOL bBoot)
|
|||||||
{
|
{
|
||||||
|
|
||||||
case RIPEMD160:
|
case RIPEMD160:
|
||||||
return bBoot? 16384 : 32767; /* we multiply this number by 10 inside derive_u_ripemd160 */
|
return bBoot? 327661 : 655331;
|
||||||
|
|
||||||
#ifndef TC_WINDOWS_BOOT
|
|
||||||
|
|
||||||
case SHA512:
|
case SHA512:
|
||||||
return 500000;
|
return 500000;
|
||||||
|
|
||||||
case SHA1: // Deprecated/legacy
|
|
||||||
return 1000000;
|
|
||||||
|
|
||||||
case WHIRLPOOL:
|
case WHIRLPOOL:
|
||||||
return 500000;
|
return 500000;
|
||||||
#endif
|
|
||||||
|
case SHA256:
|
||||||
|
return bBoot? 200000 : 500000;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
TC_THROW_FATAL_EXCEPTION; // Unknown/wrong ID
|
TC_THROW_FATAL_EXCEPTION; // Unknown/wrong ID
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif //!TC_WINDOWS_BOOT
|
||||||
|
|||||||
+5
-5
@@ -18,16 +18,16 @@
|
|||||||
extern "C"
|
extern "C"
|
||||||
{
|
{
|
||||||
#endif
|
#endif
|
||||||
|
void hmac_sha256 (char *k, int lk, char *d, int ld, char *out);
|
||||||
|
void derive_u_sha256 (char *pwd, int pwd_len, char *salt, int salt_len, int iterations, char *u, int b);
|
||||||
|
void derive_key_sha256 (char *pwd, int pwd_len, char *salt, int salt_len, int iterations, char *dk, int dklen);
|
||||||
|
|
||||||
void hmac_sha512 (char *k, int lk, char *d, int ld, char *out, int t);
|
void hmac_sha512 (char *k, int lk, char *d, int ld, char *out, int t);
|
||||||
void derive_u_sha512 (char *pwd, int pwd_len, char *salt, int salt_len, int iterations, char *u, int b);
|
void derive_u_sha512 (char *pwd, int pwd_len, char *salt, int salt_len, int iterations, char *u, int b);
|
||||||
void derive_key_sha512 (char *pwd, int pwd_len, char *salt, int salt_len, int iterations, char *dk, int dklen);
|
void derive_key_sha512 (char *pwd, int pwd_len, char *salt, int salt_len, int iterations, char *dk, int dklen);
|
||||||
void hmac_sha1 (char *k, int lk, char *d, int ld, char *out, int t);
|
|
||||||
void derive_u_sha1 (char *pwd, int pwd_len, char *salt, int salt_len, int iterations, char *u, int b);
|
|
||||||
void derive_key_sha1 (char *pwd, int pwd_len, char *salt, int salt_len, int iterations, char *dk, int dklen);
|
|
||||||
void hmac_ripemd160 (char *key, int keylen, char *input, int len, char *digest);
|
void hmac_ripemd160 (char *key, int keylen, char *input, int len, char *digest);
|
||||||
void derive_u_ripemd160 (BOOL bNotTest, char *pwd, int pwd_len, char *salt, int salt_len, int iterations, char *u, int b);
|
void derive_u_ripemd160 (char *pwd, int pwd_len, char *salt, int salt_len, int iterations, char *u, int b);
|
||||||
void derive_key_ripemd160 (BOOL bNotTest, char *pwd, int pwd_len, char *salt, int salt_len, int iterations, char *dk, int dklen);
|
void derive_key_ripemd160 (char *pwd, int pwd_len, char *salt, int salt_len, int iterations, char *dk, int dklen);
|
||||||
void hmac_whirlpool (char *k, int lk, char *d, int ld, char *out, int t);
|
void hmac_whirlpool (char *k, int lk, char *d, int ld, char *out, int t);
|
||||||
void derive_u_whirlpool (char *pwd, int pwd_len, char *salt, int salt_len, int iterations, char *u, int b);
|
void derive_u_whirlpool (char *pwd, int pwd_len, char *salt, int salt_len, int iterations, char *u, int b);
|
||||||
void derive_key_whirlpool (char *pwd, int pwd_len, char *salt, int salt_len, int iterations, char *dk, int dklen);
|
void derive_key_whirlpool (char *pwd, int pwd_len, char *salt, int salt_len, int iterations, char *dk, int dklen);
|
||||||
|
|||||||
+17
-15
@@ -17,6 +17,8 @@
|
|||||||
#include "../Format/FormatCom.h"
|
#include "../Format/FormatCom.h"
|
||||||
#include "../Format/resource.h"
|
#include "../Format/resource.h"
|
||||||
|
|
||||||
|
#include <Strsafe.h>
|
||||||
|
|
||||||
static ULONG prevTime, startTime;
|
static ULONG prevTime, startTime;
|
||||||
static __int64 TotalSize;
|
static __int64 TotalSize;
|
||||||
static __int64 resumedPointBytesDone;
|
static __int64 resumedPointBytesDone;
|
||||||
@@ -74,31 +76,31 @@ BOOL UpdateProgressBarProc (__int64 byteOffset)
|
|||||||
double perc = (double) (100.0 * (bProgressBarReverse ? ((double) (TotalSize - byteOffset)) : ((double) byteOffset)) / (TotalSize == 0 ? 0.0001 : ((double) TotalSize)));
|
double perc = (double) (100.0 * (bProgressBarReverse ? ((double) (TotalSize - byteOffset)) : ((double) byteOffset)) / (TotalSize == 0 ? 0.0001 : ((double) TotalSize)));
|
||||||
|
|
||||||
if (perc > 99.999999999)
|
if (perc > 99.999999999)
|
||||||
wcscpy (text, GetString ("PROCESSED_PORTION_100_PERCENT"));
|
StringCbCopyW (text,sizeof(text), GetString ("PROCESSED_PORTION_100_PERCENT"));
|
||||||
else
|
else
|
||||||
_snwprintf (text, sizeof text/2, GetString ("PROCESSED_PORTION_X_PERCENT"), perc);
|
StringCbPrintfW (text, sizeof text, GetString ("PROCESSED_PORTION_X_PERCENT"), perc);
|
||||||
|
|
||||||
wcscat (speed, L" ");
|
StringCbCatW (speed, sizeof(speed), L" ");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
GetSizeString (bytesDone, text);
|
GetSizeString (bytesDone, text, sizeof(text));
|
||||||
if (bytesDone < (unsigned __int64) BYTES_PER_MB * 1000000)
|
if (bytesDone < (unsigned __int64) BYTES_PER_MB * 1000000)
|
||||||
swprintf(text, L"%I64d %s ", bytesDone / BYTES_PER_MB, GetString ("MB"));
|
StringCbPrintfW(text, sizeof(text), L"%I64d %s ", bytesDone / BYTES_PER_MB, GetString ("MB"));
|
||||||
else if (bytesDone < (unsigned __int64) BYTES_PER_GB * 1000000)
|
else if (bytesDone < (unsigned __int64) BYTES_PER_GB * 1000000)
|
||||||
swprintf(text, L"%I64d %s ", bytesDone / BYTES_PER_GB, GetString ("GB"));
|
StringCbPrintfW(text, sizeof(text), L"%I64d %s ", bytesDone / BYTES_PER_GB, GetString ("GB"));
|
||||||
else if (bytesDone < (unsigned __int64) BYTES_PER_TB * 1000000)
|
else if (bytesDone < (unsigned __int64) BYTES_PER_TB * 1000000)
|
||||||
swprintf(text, L"%I64d %s ", bytesDone / BYTES_PER_TB, GetString ("TB"));
|
StringCbPrintfW(text, sizeof(text), L"%I64d %s ", bytesDone / BYTES_PER_TB, GetString ("TB"));
|
||||||
else
|
else
|
||||||
swprintf(text, L"%I64d %s ", bytesDone / BYTES_PER_PB, GetString ("PB"));
|
StringCbPrintfW(text, sizeof(text), L"%I64d %s ", bytesDone / BYTES_PER_PB, GetString ("PB"));
|
||||||
}
|
}
|
||||||
|
|
||||||
SetWindowTextW (GetDlgItem (hCurPage, IDC_BYTESWRITTEN), text);
|
SetWindowTextW (GetDlgItem (hCurPage, IDC_BYTESWRITTEN), text);
|
||||||
|
|
||||||
if (!bShowStatus)
|
if (!bShowStatus)
|
||||||
{
|
{
|
||||||
GetSpeedString (bRWThroughput ? bytesPerSec*2 : bytesPerSec, speed);
|
GetSpeedString (bRWThroughput ? bytesPerSec*2 : bytesPerSec, speed, sizeof(speed));
|
||||||
wcscat (speed, L" ");
|
StringCbCatW (speed, sizeof(speed), L" ");
|
||||||
SetWindowTextW (GetDlgItem (hCurPage, IDC_WRITESPEED), speed);
|
SetWindowTextW (GetDlgItem (hCurPage, IDC_WRITESPEED), speed);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -107,15 +109,15 @@ BOOL UpdateProgressBarProc (__int64 byteOffset)
|
|||||||
int64 sec = (int64) ((bProgressBarReverse ? byteOffset : (TotalSize - byteOffset)) / (bytesPerSec == 0 ? 0.001 : bytesPerSec));
|
int64 sec = (int64) ((bProgressBarReverse ? byteOffset : (TotalSize - byteOffset)) / (bytesPerSec == 0 ? 0.001 : bytesPerSec));
|
||||||
|
|
||||||
if (bytesPerSec == 0 || sec > 60 * 60 * 24 * 999)
|
if (bytesPerSec == 0 || sec > 60 * 60 * 24 * 999)
|
||||||
swprintf (text, L"%s ", GetString ("NOT_APPLICABLE_OR_NOT_AVAILABLE"));
|
StringCbPrintfW (text, sizeof(text), L"%s ", GetString ("NOT_APPLICABLE_OR_NOT_AVAILABLE"));
|
||||||
else if (sec >= 60 * 60 * 24 * 2)
|
else if (sec >= 60 * 60 * 24 * 2)
|
||||||
swprintf (text, L"%I64d %s ", sec / (60 * 24 * 60), days);
|
StringCbPrintfW (text, sizeof(text), L"%I64d %s ", sec / (60 * 24 * 60), days);
|
||||||
else if (sec >= 120 * 60)
|
else if (sec >= 120 * 60)
|
||||||
swprintf (text, L"%I64d %s ", sec / (60 * 60), hours);
|
StringCbPrintfW (text, sizeof(text), L"%I64d %s ", sec / (60 * 60), hours);
|
||||||
else if (sec >= 120)
|
else if (sec >= 120)
|
||||||
swprintf (text, L"%I64d %s ", sec / 60, minutes);
|
StringCbPrintfW (text, sizeof(text), L"%I64d %s ", sec / 60, minutes);
|
||||||
else
|
else
|
||||||
swprintf (text, L"%I64d %s ", sec, seconds);
|
StringCbPrintfW (text, sizeof(text), L"%I64d %s ", sec, seconds);
|
||||||
|
|
||||||
SetWindowTextW (GetDlgItem (hCurPage, IDC_TIMEREMAIN), text);
|
SetWindowTextW (GetDlgItem (hCurPage, IDC_TIMEREMAIN), text);
|
||||||
}
|
}
|
||||||
|
|||||||
+26
-2
@@ -12,6 +12,7 @@
|
|||||||
#include "Tcdefs.h"
|
#include "Tcdefs.h"
|
||||||
#include "Crc.h"
|
#include "Crc.h"
|
||||||
#include "Random.h"
|
#include "Random.h"
|
||||||
|
#include <Strsafe.h>
|
||||||
|
|
||||||
static unsigned __int8 buffer[RNG_POOL_SIZE];
|
static unsigned __int8 buffer[RNG_POOL_SIZE];
|
||||||
static unsigned char *pRandPool = NULL;
|
static unsigned char *pRandPool = NULL;
|
||||||
@@ -209,6 +210,7 @@ BOOL Randmix ()
|
|||||||
WHIRLPOOL_CTX wctx;
|
WHIRLPOOL_CTX wctx;
|
||||||
RMD160_CTX rctx;
|
RMD160_CTX rctx;
|
||||||
sha512_ctx sctx;
|
sha512_ctx sctx;
|
||||||
|
sha256_ctx s256ctx;
|
||||||
int poolIndex, digestIndex, digestSize;
|
int poolIndex, digestIndex, digestSize;
|
||||||
|
|
||||||
switch (HashFunction)
|
switch (HashFunction)
|
||||||
@@ -221,6 +223,10 @@ BOOL Randmix ()
|
|||||||
digestSize = SHA512_DIGESTSIZE;
|
digestSize = SHA512_DIGESTSIZE;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case SHA256:
|
||||||
|
digestSize = SHA256_DIGESTSIZE;
|
||||||
|
break;
|
||||||
|
|
||||||
case WHIRLPOOL:
|
case WHIRLPOOL:
|
||||||
digestSize = WHIRLPOOL_DIGESTSIZE;
|
digestSize = WHIRLPOOL_DIGESTSIZE;
|
||||||
break;
|
break;
|
||||||
@@ -249,6 +255,12 @@ BOOL Randmix ()
|
|||||||
sha512_end (hashOutputBuffer, &sctx);
|
sha512_end (hashOutputBuffer, &sctx);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case SHA256:
|
||||||
|
sha256_begin (&s256ctx);
|
||||||
|
sha256_hash (pRandPool, RNG_POOL_SIZE, &s256ctx);
|
||||||
|
sha256_end (hashOutputBuffer, &s256ctx);
|
||||||
|
break;
|
||||||
|
|
||||||
case WHIRLPOOL:
|
case WHIRLPOOL:
|
||||||
WHIRLPOOL_init (&wctx);
|
WHIRLPOOL_init (&wctx);
|
||||||
WHIRLPOOL_add (pRandPool, RNG_POOL_SIZE * 8, &wctx);
|
WHIRLPOOL_add (pRandPool, RNG_POOL_SIZE * 8, &wctx);
|
||||||
@@ -279,6 +291,10 @@ BOOL Randmix ()
|
|||||||
burn (&sctx, sizeof(sctx));
|
burn (&sctx, sizeof(sctx));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case SHA256:
|
||||||
|
burn (&s256ctx, sizeof(s256ctx));
|
||||||
|
break;
|
||||||
|
|
||||||
case WHIRLPOOL:
|
case WHIRLPOOL:
|
||||||
burn (&wctx, sizeof(wctx));
|
burn (&wctx, sizeof(wctx));
|
||||||
break;
|
break;
|
||||||
@@ -573,7 +589,15 @@ BOOL SlowPoll (void)
|
|||||||
{
|
{
|
||||||
/* Obtain a handle to the module containing the Lan Manager
|
/* Obtain a handle to the module containing the Lan Manager
|
||||||
functions */
|
functions */
|
||||||
hNetAPI32 = LoadLibrary ("NETAPI32.DLL");
|
char dllPath[MAX_PATH];
|
||||||
|
if (GetSystemDirectory (dllPath, MAX_PATH))
|
||||||
|
{
|
||||||
|
StringCbCatA(dllPath, sizeof(dllPath), "\\NETAPI32.DLL");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
StringCbCopyA(dllPath, sizeof(dllPath), "C:\\Windows\\System32\\NETAPI32.DLL");
|
||||||
|
|
||||||
|
hNetAPI32 = LoadLibrary (dllPath);
|
||||||
if (hNetAPI32 != NULL)
|
if (hNetAPI32 != NULL)
|
||||||
{
|
{
|
||||||
/* Now get pointers to the functions */
|
/* Now get pointers to the functions */
|
||||||
@@ -622,7 +646,7 @@ BOOL SlowPoll (void)
|
|||||||
char szDevice[24];
|
char szDevice[24];
|
||||||
|
|
||||||
/* Check whether we can access this device */
|
/* Check whether we can access this device */
|
||||||
sprintf (szDevice, "\\\\.\\PhysicalDrive%d", nDrive);
|
StringCbPrintfA (szDevice, sizeof(szDevice), "\\\\.\\PhysicalDrive%d", nDrive);
|
||||||
hDevice = CreateFile (szDevice, 0, FILE_SHARE_READ | FILE_SHARE_WRITE,
|
hDevice = CreateFile (szDevice, 0, FILE_SHARE_READ | FILE_SHARE_WRITE,
|
||||||
NULL, OPEN_EXISTING, 0, NULL);
|
NULL, OPEN_EXISTING, 0, NULL);
|
||||||
if (hDevice == INVALID_HANDLE_VALUE)
|
if (hDevice == INVALID_HANDLE_VALUE)
|
||||||
|
|||||||
+31
-5
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
#include "Tcdefs.h"
|
#include "Tcdefs.h"
|
||||||
#include "Registry.h"
|
#include "Registry.h"
|
||||||
|
#include <Strsafe.h>
|
||||||
|
|
||||||
BOOL ReadLocalMachineRegistryDword (char *subKey, char *name, DWORD *value)
|
BOOL ReadLocalMachineRegistryDword (char *subKey, char *name, DWORD *value)
|
||||||
{
|
{
|
||||||
@@ -105,15 +106,16 @@ char *ReadRegistryString (char *subKey, char *name, char *defaultValue, char *st
|
|||||||
DWORD size = sizeof (value);
|
DWORD size = sizeof (value);
|
||||||
|
|
||||||
str[maxLen-1] = 0;
|
str[maxLen-1] = 0;
|
||||||
strncpy (str, defaultValue, maxLen-1);
|
StringCbCopyA (str, maxLen, defaultValue);
|
||||||
|
|
||||||
ZeroMemory (value, sizeof value);
|
ZeroMemory (value, sizeof value);
|
||||||
if (RegOpenKeyEx (HKEY_CURRENT_USER, subKey,
|
if (RegOpenKeyEx (HKEY_CURRENT_USER, subKey,
|
||||||
0, KEY_READ, &hkey) == ERROR_SUCCESS)
|
0, KEY_READ, &hkey) == ERROR_SUCCESS)
|
||||||
if (RegQueryValueEx (hkey, name, 0, 0, (LPBYTE) value, &size) == ERROR_SUCCESS)
|
if (RegQueryValueEx (hkey, name, 0, 0, (LPBYTE) value, &size) == ERROR_SUCCESS)
|
||||||
strncpy (str, value, maxLen-1);
|
StringCbCopyA (str, maxLen,value);
|
||||||
|
|
||||||
RegCloseKey (hkey);
|
if (hkey)
|
||||||
|
RegCloseKey (hkey);
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -169,6 +171,30 @@ BOOL WriteLocalMachineRegistryDword (char *subKey, char *name, DWORD value)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BOOL WriteLocalMachineRegistryDwordW (WCHAR *subKey, WCHAR *name, DWORD value)
|
||||||
|
{
|
||||||
|
HKEY hkey = 0;
|
||||||
|
DWORD disp;
|
||||||
|
LONG status;
|
||||||
|
|
||||||
|
if ((status = RegCreateKeyExW (HKEY_LOCAL_MACHINE, subKey,
|
||||||
|
0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hkey, &disp)) != ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
SetLastError (status);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((status = RegSetValueExW (hkey, name, 0, REG_DWORD, (BYTE *) &value, sizeof value)) != ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
RegCloseKey (hkey);
|
||||||
|
SetLastError (status);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
RegCloseKey (hkey);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
BOOL WriteLocalMachineRegistryMultiString (char *subKey, char *name, char *multiString, DWORD size)
|
BOOL WriteLocalMachineRegistryMultiString (char *subKey, char *name, char *multiString, DWORD size)
|
||||||
{
|
{
|
||||||
HKEY hkey = 0;
|
HKEY hkey = 0;
|
||||||
@@ -279,9 +305,9 @@ void DeleteRegistryValue (char *subKey, char *name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void GetStartupRegKeyName (char *regk)
|
void GetStartupRegKeyName (char *regk, size_t cbRegk)
|
||||||
{
|
{
|
||||||
// The string is split in order to prevent some antivirus packages from falsely reporting
|
// The string is split in order to prevent some antivirus packages from falsely reporting
|
||||||
// TrueCrypt.exe to contain a possible Trojan horse because of this string (heuristic scan).
|
// TrueCrypt.exe to contain a possible Trojan horse because of this string (heuristic scan).
|
||||||
sprintf (regk, "%s%s", "Software\\Microsoft\\Windows\\Curren", "tVersion\\Run");
|
StringCbPrintfA (regk, cbRegk,"%s%s", "Software\\Microsoft\\Windows\\Curren", "tVersion\\Run");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,13 +19,14 @@ char *ReadRegistryString (char *subKey, char *name, char *defaultValue, char *st
|
|||||||
DWORD ReadRegistryBytes (char *path, char *name, char *value, int maxLen);
|
DWORD ReadRegistryBytes (char *path, char *name, char *value, int maxLen);
|
||||||
void WriteRegistryInt (char *subKey, char *name, int value);
|
void WriteRegistryInt (char *subKey, char *name, int value);
|
||||||
BOOL WriteLocalMachineRegistryDword (char *subKey, char *name, DWORD value);
|
BOOL WriteLocalMachineRegistryDword (char *subKey, char *name, DWORD value);
|
||||||
|
BOOL WriteLocalMachineRegistryDwordW (WCHAR *subKey, WCHAR *name, DWORD value);
|
||||||
BOOL WriteLocalMachineRegistryMultiString (char *subKey, char *name, char *multiString, DWORD size);
|
BOOL WriteLocalMachineRegistryMultiString (char *subKey, char *name, char *multiString, DWORD size);
|
||||||
BOOL WriteLocalMachineRegistryString (char *subKey, char *name, char *str, BOOL expandable);
|
BOOL WriteLocalMachineRegistryString (char *subKey, char *name, char *str, BOOL expandable);
|
||||||
void WriteRegistryString (char *subKey, char *name, char *str);
|
void WriteRegistryString (char *subKey, char *name, char *str);
|
||||||
BOOL WriteRegistryBytes (char *path, char *name, char *str, DWORD size);
|
BOOL WriteRegistryBytes (char *path, char *name, char *str, DWORD size);
|
||||||
BOOL DeleteLocalMachineRegistryKey (char *parentKey, char *subKeyToDelete);
|
BOOL DeleteLocalMachineRegistryKey (char *parentKey, char *subKeyToDelete);
|
||||||
void DeleteRegistryValue (char *subKey, char *name);
|
void DeleteRegistryValue (char *subKey, char *name);
|
||||||
void GetStartupRegKeyName (char *regk);
|
void GetStartupRegKeyName (char *regk, size_t cbRegk);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|||||||
+21
-1
@@ -43,6 +43,22 @@
|
|||||||
#define IDD_NEW_TOKEN_KEYFILE 539
|
#define IDD_NEW_TOKEN_KEYFILE 539
|
||||||
#define IDD_RANDOM_POOL_ENRICHMENT 540
|
#define IDD_RANDOM_POOL_ENRICHMENT 540
|
||||||
#define IDI_TRUECRYPT_MOUNTED_ICON 541
|
#define IDI_TRUECRYPT_MOUNTED_ICON 541
|
||||||
|
#define IDR_BOOT_SECTOR_SHA2 542
|
||||||
|
#define IDR_BOOT_SECTOR_AES_SHA2 543
|
||||||
|
#define IDR_BOOT_SECTOR_SERPENT_SHA2 544
|
||||||
|
#define IDR_BOOT_SECTOR_TWOFISH_SHA2 545
|
||||||
|
#define IDR_BOOT_LOADER_SHA2 546
|
||||||
|
#define IDR_BOOT_LOADER_AES_SHA2 547
|
||||||
|
#define IDR_BOOT_LOADER_SERPENT_SHA2 548
|
||||||
|
#define IDR_BOOT_LOADER_TWOFISH_SHA2 549
|
||||||
|
#define IDR_RESCUE_BOOT_SECTOR_SHA2 550
|
||||||
|
#define IDR_RESCUE_BOOT_SECTOR_AES_SHA2 551
|
||||||
|
#define IDR_RESCUE_BOOT_SECTOR_SERPENT_SHA2 552
|
||||||
|
#define IDR_RESCUE_BOOT_SECTOR_TWOFISH_SHA2 553
|
||||||
|
#define IDR_RESCUE_LOADER_SHA2 554
|
||||||
|
#define IDR_RESCUE_LOADER_AES_SHA2 555
|
||||||
|
#define IDR_RESCUE_LOADER_SERPENT_SHA2 556
|
||||||
|
#define IDR_RESCUE_LOADER_TWOFISH_SHA2 557
|
||||||
#define IDC_HW_AES_LABEL_LINK 5000
|
#define IDC_HW_AES_LABEL_LINK 5000
|
||||||
#define IDC_HW_AES 5001
|
#define IDC_HW_AES 5001
|
||||||
#define IDC_PARALLELIZATION_LABEL_LINK 5002
|
#define IDC_PARALLELIZATION_LABEL_LINK 5002
|
||||||
@@ -160,6 +176,10 @@
|
|||||||
#define IDC_CONTINUE 5114
|
#define IDC_CONTINUE 5114
|
||||||
#define IDT_ABOUT_RELEASE 5115
|
#define IDT_ABOUT_RELEASE 5115
|
||||||
#define IDT_STATIC_MODELESS_WAIT_DLG_INFO 5116
|
#define IDT_STATIC_MODELESS_WAIT_DLG_INFO 5116
|
||||||
|
#define IDT_NUMBER_KEYFILES 5117
|
||||||
|
#define IDC_NUMBER_KEYFILES 5118
|
||||||
|
#define IDT_KEYFILES_BASE_NAME 5119
|
||||||
|
#define IDC_KEYFILES_BASE_NAME 5120
|
||||||
|
|
||||||
// Next default values for new objects
|
// Next default values for new objects
|
||||||
//
|
//
|
||||||
@@ -168,7 +188,7 @@
|
|||||||
#define _APS_NO_MFC 1
|
#define _APS_NO_MFC 1
|
||||||
#define _APS_NEXT_RESOURCE_VALUE 542
|
#define _APS_NEXT_RESOURCE_VALUE 542
|
||||||
#define _APS_NEXT_COMMAND_VALUE 40001
|
#define _APS_NEXT_COMMAND_VALUE 40001
|
||||||
#define _APS_NEXT_CONTROL_VALUE 5117
|
#define _APS_NEXT_CONTROL_VALUE 5121
|
||||||
#define _APS_NEXT_SYMED_VALUE 101
|
#define _APS_NEXT_SYMED_VALUE 101
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ namespace VeraCrypt
|
|||||||
|
|
||||||
struct SecurityTokenKeyfile
|
struct SecurityTokenKeyfile
|
||||||
{
|
{
|
||||||
SecurityTokenKeyfile () { }
|
SecurityTokenKeyfile () : Handle(CK_INVALID_HANDLE), SlotId(CK_UNAVAILABLE_INFORMATION) { Token.SlotId = CK_UNAVAILABLE_INFORMATION; Token.Flags = 0; }
|
||||||
SecurityTokenKeyfile (const SecurityTokenKeyfilePath &path);
|
SecurityTokenKeyfile (const SecurityTokenKeyfilePath &path);
|
||||||
|
|
||||||
operator SecurityTokenKeyfilePath () const;
|
operator SecurityTokenKeyfilePath () const;
|
||||||
@@ -85,7 +85,8 @@ namespace VeraCrypt
|
|||||||
{
|
{
|
||||||
Pkcs11Exception (CK_RV errorCode = (CK_RV) -1)
|
Pkcs11Exception (CK_RV errorCode = (CK_RV) -1)
|
||||||
: ErrorCode (errorCode),
|
: ErrorCode (errorCode),
|
||||||
SubjectErrorCodeValid (false)
|
SubjectErrorCodeValid (false),
|
||||||
|
SubjectErrorCode( (uint64) -1)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -155,7 +156,7 @@ namespace VeraCrypt
|
|||||||
|
|
||||||
struct Pkcs11Session
|
struct Pkcs11Session
|
||||||
{
|
{
|
||||||
Pkcs11Session () : UserLoggedIn (false) { }
|
Pkcs11Session () : Handle (CK_UNAVAILABLE_INFORMATION), UserLoggedIn (false) { }
|
||||||
|
|
||||||
CK_SESSION_HANDLE Handle;
|
CK_SESSION_HANDLE Handle;
|
||||||
bool UserLoggedIn;
|
bool UserLoggedIn;
|
||||||
|
|||||||
+7
-7
@@ -15,15 +15,15 @@
|
|||||||
#define TC_APP_NAME "VeraCrypt"
|
#define TC_APP_NAME "VeraCrypt"
|
||||||
|
|
||||||
// Version displayed to user
|
// Version displayed to user
|
||||||
#define VERSION_STRING "1.0d"
|
#define VERSION_STRING "1.0e"
|
||||||
|
|
||||||
// Version number to compare against driver
|
// Version number to compare against driver
|
||||||
#define VERSION_NUM 0x010d
|
#define VERSION_NUM 0x010e
|
||||||
|
|
||||||
// Release date
|
// Release date
|
||||||
#define TC_STR_RELEASE_DATE "June 3, 2014"
|
#define TC_STR_RELEASE_DATE "August 26, 2014"
|
||||||
#define TC_RELEASE_DATE_YEAR 2014
|
#define TC_RELEASE_DATE_YEAR 2014
|
||||||
#define TC_RELEASE_DATE_MONTH 06
|
#define TC_RELEASE_DATE_MONTH 8
|
||||||
|
|
||||||
#define BYTES_PER_KB 1024LL
|
#define BYTES_PER_KB 1024LL
|
||||||
#define BYTES_PER_MB 1048576LL
|
#define BYTES_PER_MB 1048576LL
|
||||||
@@ -197,7 +197,7 @@ typedef int BOOL;
|
|||||||
# ifdef DEVICE_DRIVER
|
# ifdef DEVICE_DRIVER
|
||||||
# define trace_msg Dump
|
# define trace_msg Dump
|
||||||
# elif defined (_WIN32)
|
# elif defined (_WIN32)
|
||||||
# define trace_msg(...) do { char msg[2048]; _snprintf (msg, sizeof (msg), __VA_ARGS__); OutputDebugString (msg); } while (0)
|
# define trace_msg(...) do { char msg[2048]; StringCbPrintfA (msg, sizeof (msg), __VA_ARGS__); OutputDebugString (msg); } while (0)
|
||||||
# endif
|
# endif
|
||||||
# define trace_point trace_msg (__FUNCTION__ ":" TC_TO_STRING(__LINE__) "\n")
|
# define trace_point trace_msg (__FUNCTION__ ":" TC_TO_STRING(__LINE__) "\n")
|
||||||
# else
|
# else
|
||||||
@@ -252,8 +252,8 @@ void EraseMemory (void *memory, int size);
|
|||||||
#define MAX_URL_LENGTH 2084 /* Internet Explorer limit. Includes the terminating null character. */
|
#define MAX_URL_LENGTH 2084 /* Internet Explorer limit. Includes the terminating null character. */
|
||||||
|
|
||||||
#define TC_HOMEPAGE "http://www.idrix.fr/"
|
#define TC_HOMEPAGE "http://www.idrix.fr/"
|
||||||
#define TC_APPLINK "http://sourceforge.net/projects/veracrypt/"
|
#define TC_APPLINK "https://veracrypt.codeplex.com"
|
||||||
#define TC_APPLINK_SECURE "https://sourceforge.net/projects/veracrypt/"
|
#define TC_APPLINK_SECURE "https://veracrypt.codeplex.com"
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
|
|||||||
+74
-647
@@ -290,91 +290,6 @@ BOOL XTSAesTest (PCRYPTO_INFO ci)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Blowfish Test Vectors (deprecated/legacy) */
|
|
||||||
|
|
||||||
/* Blowfish test vectors from www.counterpane.com/blowfish.html */
|
|
||||||
|
|
||||||
#define BF_TEST_COUNT 34
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
unsigned char key[8];
|
|
||||||
unsigned char plaintext[8];
|
|
||||||
unsigned char ciphertext[8];
|
|
||||||
} BF_TEST;
|
|
||||||
|
|
||||||
#pragma warning(disable:4295)
|
|
||||||
|
|
||||||
BF_TEST bf_ecb_vectors[BF_TEST_COUNT] = {
|
|
||||||
"\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00","\x4E\xF9\x97\x45\x61\x98\xDD\x78",
|
|
||||||
"\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF","\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF","\x51\x86\x6F\xD5\xB8\x5E\xCB\x8A",
|
|
||||||
"\x30\x00\x00\x00\x00\x00\x00\x00","\x10\x00\x00\x00\x00\x00\x00\x01","\x7D\x85\x6F\x9A\x61\x30\x63\xF2",
|
|
||||||
"\x11\x11\x11\x11\x11\x11\x11\x11","\x11\x11\x11\x11\x11\x11\x11\x11","\x24\x66\xDD\x87\x8B\x96\x3C\x9D",
|
|
||||||
"\x01\x23\x45\x67\x89\xAB\xCD\xEF","\x11\x11\x11\x11\x11\x11\x11\x11","\x61\xF9\xC3\x80\x22\x81\xB0\x96",
|
|
||||||
"\x11\x11\x11\x11\x11\x11\x11\x11","\x01\x23\x45\x67\x89\xAB\xCD\xEF","\x7D\x0C\xC6\x30\xAF\xDA\x1E\xC7",
|
|
||||||
"\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00","\x4E\xF9\x97\x45\x61\x98\xDD\x78",
|
|
||||||
"\xFE\xDC\xBA\x98\x76\x54\x32\x10","\x01\x23\x45\x67\x89\xAB\xCD\xEF","\x0A\xCE\xAB\x0F\xC6\xA0\xA2\x8D",
|
|
||||||
"\x7C\xA1\x10\x45\x4A\x1A\x6E\x57","\x01\xA1\xD6\xD0\x39\x77\x67\x42","\x59\xC6\x82\x45\xEB\x05\x28\x2B",
|
|
||||||
"\x01\x31\xD9\x61\x9D\xC1\x37\x6E","\x5C\xD5\x4C\xA8\x3D\xEF\x57\xDA","\xB1\xB8\xCC\x0B\x25\x0F\x09\xA0",
|
|
||||||
"\x07\xA1\x13\x3E\x4A\x0B\x26\x86","\x02\x48\xD4\x38\x06\xF6\x71\x72","\x17\x30\xE5\x77\x8B\xEA\x1D\xA4",
|
|
||||||
"\x38\x49\x67\x4C\x26\x02\x31\x9E","\x51\x45\x4B\x58\x2D\xDF\x44\x0A","\xA2\x5E\x78\x56\xCF\x26\x51\xEB",
|
|
||||||
"\x04\xB9\x15\xBA\x43\xFE\xB5\xB6","\x42\xFD\x44\x30\x59\x57\x7F\xA2","\x35\x38\x82\xB1\x09\xCE\x8F\x1A",
|
|
||||||
"\x01\x13\xB9\x70\xFD\x34\xF2\xCE","\x05\x9B\x5E\x08\x51\xCF\x14\x3A","\x48\xF4\xD0\x88\x4C\x37\x99\x18",
|
|
||||||
"\x01\x70\xF1\x75\x46\x8F\xB5\xE6","\x07\x56\xD8\xE0\x77\x47\x61\xD2","\x43\x21\x93\xB7\x89\x51\xFC\x98",
|
|
||||||
"\x43\x29\x7F\xAD\x38\xE3\x73\xFE","\x76\x25\x14\xB8\x29\xBF\x48\x6A","\x13\xF0\x41\x54\xD6\x9D\x1A\xE5",
|
|
||||||
"\x07\xA7\x13\x70\x45\xDA\x2A\x16","\x3B\xDD\x11\x90\x49\x37\x28\x02","\x2E\xED\xDA\x93\xFF\xD3\x9C\x79",
|
|
||||||
"\x04\x68\x91\x04\xC2\xFD\x3B\x2F","\x26\x95\x5F\x68\x35\xAF\x60\x9A","\xD8\x87\xE0\x39\x3C\x2D\xA6\xE3",
|
|
||||||
"\x37\xD0\x6B\xB5\x16\xCB\x75\x46","\x16\x4D\x5E\x40\x4F\x27\x52\x32","\x5F\x99\xD0\x4F\x5B\x16\x39\x69",
|
|
||||||
"\x1F\x08\x26\x0D\x1A\xC2\x46\x5E","\x6B\x05\x6E\x18\x75\x9F\x5C\xCA","\x4A\x05\x7A\x3B\x24\xD3\x97\x7B",
|
|
||||||
"\x58\x40\x23\x64\x1A\xBA\x61\x76","\x00\x4B\xD6\xEF\x09\x17\x60\x62","\x45\x20\x31\xC1\xE4\xFA\xDA\x8E",
|
|
||||||
"\x02\x58\x16\x16\x46\x29\xB0\x07","\x48\x0D\x39\x00\x6E\xE7\x62\xF2","\x75\x55\xAE\x39\xF5\x9B\x87\xBD",
|
|
||||||
"\x49\x79\x3E\xBC\x79\xB3\x25\x8F","\x43\x75\x40\xC8\x69\x8F\x3C\xFA","\x53\xC5\x5F\x9C\xB4\x9F\xC0\x19",
|
|
||||||
"\x4F\xB0\x5E\x15\x15\xAB\x73\xA7","\x07\x2D\x43\xA0\x77\x07\x52\x92","\x7A\x8E\x7B\xFA\x93\x7E\x89\xA3",
|
|
||||||
"\x49\xE9\x5D\x6D\x4C\xA2\x29\xBF","\x02\xFE\x55\x77\x81\x17\xF1\x2A","\xCF\x9C\x5D\x7A\x49\x86\xAD\xB5",
|
|
||||||
"\x01\x83\x10\xDC\x40\x9B\x26\xD6","\x1D\x9D\x5C\x50\x18\xF7\x28\xC2","\xD1\xAB\xB2\x90\x65\x8B\xC7\x78",
|
|
||||||
"\x1C\x58\x7F\x1C\x13\x92\x4F\xEF","\x30\x55\x32\x28\x6D\x6F\x29\x5A","\x55\xCB\x37\x74\xD1\x3E\xF2\x01",
|
|
||||||
"\x01\x01\x01\x01\x01\x01\x01\x01","\x01\x23\x45\x67\x89\xAB\xCD\xEF","\xFA\x34\xEC\x48\x47\xB2\x68\xB2",
|
|
||||||
"\x1F\x1F\x1F\x1F\x0E\x0E\x0E\x0E","\x01\x23\x45\x67\x89\xAB\xCD\xEF","\xA7\x90\x79\x51\x08\xEA\x3C\xAE",
|
|
||||||
"\xE0\xFE\xE0\xFE\xF1\xFE\xF1\xFE","\x01\x23\x45\x67\x89\xAB\xCD\xEF","\xC3\x9E\x07\x2D\x9F\xAC\x63\x1D",
|
|
||||||
"\x00\x00\x00\x00\x00\x00\x00\x00","\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF","\x01\x49\x33\xE0\xCD\xAF\xF6\xE4",
|
|
||||||
"\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF","\x00\x00\x00\x00\x00\x00\x00\x00","\xF2\x1E\x9A\x77\xB7\x1C\x49\xBC",
|
|
||||||
"\x01\x23\x45\x67\x89\xAB\xCD\xEF","\x00\x00\x00\x00\x00\x00\x00\x00","\x24\x59\x46\x88\x57\x54\x36\x9A",
|
|
||||||
"\xFE\xDC\xBA\x98\x76\x54\x32\x10","\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF","\x6B\x5C\x5A\x9C\x5D\x9E\x0A\x5A"
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
#define TRIPLEDES_TEST_COUNT 1
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
unsigned char key[24];
|
|
||||||
unsigned char plaintext[8];
|
|
||||||
unsigned char ciphertext[8];
|
|
||||||
} TRIPLEDES_TEST;
|
|
||||||
|
|
||||||
TRIPLEDES_TEST tripledes_vectors[TRIPLEDES_TEST_COUNT] = {
|
|
||||||
0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0xfe, 0xdc, 0xba, 0x98,
|
|
||||||
0x76, 0x54, 0x32, 0x10, 0x89, 0xab, 0xcd, 0xef, 0x01, 0x23, 0x45, 0x67,
|
|
||||||
|
|
||||||
0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7,
|
|
||||||
|
|
||||||
0xde, 0x0b, 0x7c, 0x06, 0xae, 0x5e, 0x0e, 0xd5
|
|
||||||
};
|
|
||||||
|
|
||||||
/* CAST-128 Test Vectors from RFC2144 (deprecated/legacy) */
|
|
||||||
|
|
||||||
#define CAST_TEST_COUNT 1
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
unsigned char key[16];
|
|
||||||
unsigned char plaintext[8];
|
|
||||||
unsigned char ciphertext[8];
|
|
||||||
} CAST_TEST;
|
|
||||||
|
|
||||||
|
|
||||||
CAST_TEST cast_ecb_vectors[CAST_TEST_COUNT] = {
|
|
||||||
"\x01\x23\x45\x67\x12\x34\x56\x78\x23\x45\x67\x89\x34\x56\x78\x9A",
|
|
||||||
"\x01\x23\x45\x67\x89\xAB\xCD\xEF",
|
|
||||||
"\x23\x8B\x4F\xE5\x84\x7E\x44\xB2"
|
|
||||||
};
|
|
||||||
|
|
||||||
// AES ECB test vectors FIPS-197
|
// AES ECB test vectors FIPS-197
|
||||||
|
|
||||||
@@ -433,6 +348,36 @@ TWOFISH_TEST twofish_vectors[TWOFISH_TEST_COUNT] = {
|
|||||||
|
|
||||||
/* Test vectors from FIPS 198a, RFC 4231, RFC 2104, RFC 2202, and other sources. */
|
/* Test vectors from FIPS 198a, RFC 4231, RFC 2104, RFC 2202, and other sources. */
|
||||||
|
|
||||||
|
char *hmac_sha256_test_keys[] =
|
||||||
|
{
|
||||||
|
"\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
|
||||||
|
"Jefe",
|
||||||
|
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
|
||||||
|
"\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19",
|
||||||
|
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
|
||||||
|
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
|
||||||
|
};
|
||||||
|
|
||||||
|
char *hmac_sha256_test_data[] =
|
||||||
|
{
|
||||||
|
"Hi There",
|
||||||
|
"what do ya want for nothing?",
|
||||||
|
"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd",
|
||||||
|
"\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd",
|
||||||
|
"Test Using Larger Than Block-Size Key - Hash Key First",
|
||||||
|
"This is a test using a larger than block-size key and a larger than block-size data. The key needs to be hashed before being used by the HMAC algorithm.",
|
||||||
|
};
|
||||||
|
|
||||||
|
char *hmac_sha256_test_vectors[] =
|
||||||
|
{
|
||||||
|
"\xb0\x34\x4c\x61\xd8\xdb\x38\x53\x5c\xa8\xaf\xce\xaf\x0b\xf1\x2b\x88\x1d\xc2\x00\xc9\x83\x3d\xa7\x26\xe9\x37\x6c\x2e\x32\xcf\xf7",
|
||||||
|
"\x5b\xdc\xc1\x46\xbf\x60\x75\x4e\x6a\x04\x24\x26\x08\x95\x75\xc7\x5a\x00\x3f\x08\x9d\x27\x39\x83\x9d\xec\x58\xb9\x64\xec\x38\x43",
|
||||||
|
"\x77\x3e\xa9\x1e\x36\x80\x0e\x46\x85\x4d\xb8\xeb\xd0\x91\x81\xa7\x29\x59\x09\x8b\x3e\xf8\xc1\x22\xd9\x63\x55\x14\xce\xd5\x65\xfe",
|
||||||
|
"\x82\x55\x8a\x38\x9a\x44\x3c\x0e\xa4\xcc\x81\x98\x99\xf2\x08\x3a\x85\xf0\xfa\xa3\xe5\x78\xf8\x07\x7a\x2e\x3f\xf4\x67\x29\x66\x5b",
|
||||||
|
"\x60\xe4\x31\x59\x1e\xe0\xb6\x7f\x0d\x8a\x26\xaa\xcb\xf5\xb7\x7f\x8e\x0b\xc6\x21\x37\x28\xc5\x14\x05\x46\x04\x0f\x0e\xe3\x7f\x54",
|
||||||
|
"\x9b\x09\xff\xa7\x1b\x94\x2f\xcb\x27\x63\x5f\xbc\xd5\xb0\xe9\x44\xbf\xdc\x63\x64\x4f\x07\x13\x93\x8a\x7f\x51\x53\x5c\x3a\x35\xe2",
|
||||||
|
};
|
||||||
|
|
||||||
char *hmac_sha512_test_keys[] =
|
char *hmac_sha512_test_keys[] =
|
||||||
{
|
{
|
||||||
"\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
|
"\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
|
||||||
@@ -463,35 +408,6 @@ char *hmac_sha512_test_vectors[] =
|
|||||||
"\xe3\x7b\x6a\x77\x5d\xc8\x7d\xba\xa4\xdf\xa9\xf9\x6e\x5e\x3f\xfd\xde\xbd\x71\xf8\x86\x72\x89\x86\x5d\xf5\xa3\x2d\x20\xcd\xc9\x44\xb6\x02\x2c\xac\x3c\x49\x82\xb1\x0d\x5e\xeb\x55\xc3\xe4\xde\x15\x13\x46\x76\xfb\x6d\xe0\x44\x60\x65\xc9\x74\x40\xfa\x8c\x6a\x58",
|
"\xe3\x7b\x6a\x77\x5d\xc8\x7d\xba\xa4\xdf\xa9\xf9\x6e\x5e\x3f\xfd\xde\xbd\x71\xf8\x86\x72\x89\x86\x5d\xf5\xa3\x2d\x20\xcd\xc9\x44\xb6\x02\x2c\xac\x3c\x49\x82\xb1\x0d\x5e\xeb\x55\xc3\xe4\xde\x15\x13\x46\x76\xfb\x6d\xe0\x44\x60\x65\xc9\x74\x40\xfa\x8c\x6a\x58",
|
||||||
};
|
};
|
||||||
|
|
||||||
char *hmac_sha1_test_keys[] =
|
|
||||||
{
|
|
||||||
// Deprecated/legacy
|
|
||||||
"\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3",
|
|
||||||
"\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
|
|
||||||
"Jefe",
|
|
||||||
"\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA"
|
|
||||||
};
|
|
||||||
|
|
||||||
char *hmac_sha1_test_data[] =
|
|
||||||
{
|
|
||||||
// Deprecated/legacy
|
|
||||||
"Sample #3",
|
|
||||||
"Hi There",
|
|
||||||
"what do ya want for nothing?",
|
|
||||||
"\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
|
|
||||||
"\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
|
|
||||||
"\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
|
|
||||||
};
|
|
||||||
|
|
||||||
char *hmac_sha1_test_vectors[] =
|
|
||||||
{
|
|
||||||
// Deprecated/legacy
|
|
||||||
"\xbc\xf4\x1e\xab\x8b\xb2\xd8\x02\xf3\xd0\x5c\xaf\x7c\xb0\x92\xec\xf8\xd1\xa3\xaa",
|
|
||||||
"\xb6\x17\x31\x86\x55\x05\x72\x64\xe2\x8b\xc0\xb6\xfb\x37\x8c\x8e\xf1\x46\xbe\x00",
|
|
||||||
"\xef\xfc\xdf\x6a\xe5\xeb\x2f\xa2\xd2\x74\x16\xd5\xf1\x84\xdf\x9c\x25\x9a\x7c\x79",
|
|
||||||
"\x12\x5d\x73\x42\xb9\xac\x11\xcd\x91\xa3\x9a\xf4\x8a\xa1\x7b\x4f\x63\xf1\x75\xd3"
|
|
||||||
};
|
|
||||||
|
|
||||||
char *hmac_ripemd160_test_keys[] =
|
char *hmac_ripemd160_test_keys[] =
|
||||||
{
|
{
|
||||||
"\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xdd\xee\xff\x01\x23\x45\x67",
|
"\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xdd\xee\xff\x01\x23\x45\x67",
|
||||||
@@ -534,29 +450,15 @@ void CipherInit2(int cipher, void* key, void* ks, int key_len)
|
|||||||
{
|
{
|
||||||
switch (cipher)
|
switch (cipher)
|
||||||
{
|
{
|
||||||
case BLOWFISH:
|
|
||||||
/* Deprecated/legacy */
|
|
||||||
BlowfishSetKey (ks, key_len, key);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case AES:
|
case AES:
|
||||||
CipherInit(cipher,key,ks);
|
CipherInit(cipher,key,ks);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CAST:
|
|
||||||
/* Deprecated/legacy */
|
|
||||||
CipherInit(cipher,key,ks);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SERPENT:
|
case SERPENT:
|
||||||
CipherInit(cipher,key,ks);
|
CipherInit(cipher,key,ks);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TRIPLEDES:
|
|
||||||
/* Deprecated/legacy */
|
|
||||||
CipherInit(cipher,key,ks);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case TWOFISH:
|
case TWOFISH:
|
||||||
CipherInit(cipher,key,ks);
|
CipherInit(cipher,key,ks);
|
||||||
break;
|
break;
|
||||||
@@ -568,72 +470,6 @@ void CipherInit2(int cipher, void* key, void* ks, int key_len)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Deprecated/legacy */
|
|
||||||
typedef struct {
|
|
||||||
unsigned __int8 key1[32];
|
|
||||||
unsigned __int8 key2[16];
|
|
||||||
unsigned __int8 index[16];
|
|
||||||
unsigned __int8 plaintext[16];
|
|
||||||
unsigned __int8 ciphertext[16];
|
|
||||||
} LRW_TEST;
|
|
||||||
|
|
||||||
#define LRW_TEST_COUNT 2
|
|
||||||
|
|
||||||
/* Deprecated/legacy */
|
|
||||||
LRW_TEST lrw_vectors[LRW_TEST_COUNT] = {
|
|
||||||
{
|
|
||||||
{ 0xf8, 0xd4, 0x76, 0xff, 0xd6, 0x46, 0xee, 0x6c, 0x23, 0x84, 0xcb, 0x1c, 0x77, 0xd6, 0x19, 0x5d,
|
|
||||||
0xfe, 0xf1, 0xa9, 0xf3, 0x7b, 0xbc, 0x8d, 0x21, 0xa7, 0x9c, 0x21, 0xf8, 0xcb, 0x90, 0x02, 0x89 },
|
|
||||||
{ 0xa8, 0x45, 0x34, 0x8e, 0xc8, 0xc5, 0xb5, 0xf1, 0x26, 0xf5, 0x0e, 0x76, 0xfe, 0xfd, 0x1b, 0x1e },
|
|
||||||
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 },
|
|
||||||
{ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 },
|
|
||||||
{ 0xbd, 0x06, 0xb8, 0xe1, 0xdb, 0x98, 0x89, 0x9e, 0xc4, 0x98, 0xe4, 0x91, 0xcf, 0x1c, 0x70, 0x2b }
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{ 0xfb, 0x76, 0x15, 0xb2, 0x3d, 0x80, 0x89, 0x1d, 0xd4, 0x70, 0x98, 0x0b, 0xc7, 0x95, 0x84, 0xc8,
|
|
||||||
0xb2, 0xfb, 0x64, 0xce, 0x60, 0x97, 0x87, 0x8d, 0x17, 0xfc, 0xe4, 0x5a, 0x49, 0xe8, 0x30, 0xb7 },
|
|
||||||
{ 0x6e, 0x78, 0x17, 0xe7, 0x2d, 0x5e, 0x12, 0xd4, 0x60, 0x64, 0x04, 0x7a, 0xf1, 0x2f, 0x9e, 0x0c },
|
|
||||||
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00 },
|
|
||||||
{ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 },
|
|
||||||
{ 0x5b, 0x90, 0x8e, 0xc1, 0xab, 0xdd, 0x67, 0x5f, 0x3d, 0x69, 0x8a, 0x95, 0x53, 0xc8, 0x9c, 0xe5 }
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
BOOL LRWAesTest (PCRYPTO_INFO ci)
|
|
||||||
{
|
|
||||||
/* Deprecated/legacy */
|
|
||||||
|
|
||||||
unsigned __int8 p[16];
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0; i < LRW_TEST_COUNT; i++)
|
|
||||||
{
|
|
||||||
ci->ea = EAGetByName ("AES");
|
|
||||||
if (ci->ea == 0)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
ci->mode = LRW;
|
|
||||||
|
|
||||||
if (EAInit (ci->ea, lrw_vectors[i].key1, ci->ks) != ERR_SUCCESS)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
memcpy (&ci->k2, lrw_vectors[i].key2, sizeof (lrw_vectors[i].key2));
|
|
||||||
if (!EAInitMode (ci))
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
memcpy (p, lrw_vectors[i].plaintext, sizeof (p));
|
|
||||||
|
|
||||||
EncryptBufferLRW128 (p, sizeof (p), BE64(((unsigned __int64 *)(lrw_vectors[i].index))[1]), ci);
|
|
||||||
|
|
||||||
if (memcmp (lrw_vectors[i].ciphertext, p, sizeof (p)) != 0)
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
BOOL TestSectorBufEncryption (PCRYPTO_INFO ci)
|
BOOL TestSectorBufEncryption (PCRYPTO_INFO ci)
|
||||||
{
|
{
|
||||||
unsigned char buf [ENCRYPTION_DATA_UNIT_SIZE * 4];
|
unsigned char buf [ENCRYPTION_DATA_UNIT_SIZE * 4];
|
||||||
@@ -653,15 +489,12 @@ BOOL TestSectorBufEncryption (PCRYPTO_INFO ci)
|
|||||||
0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13
|
0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!TestLegacySectorBufEncryption (ci))
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
|
|
||||||
/* Encryption/decryption of data units (typically, volume data sectors) */
|
/* Encryption/decryption of data units (typically, volume data sectors) */
|
||||||
|
|
||||||
nbrUnits = sizeof (buf) / ENCRYPTION_DATA_UNIT_SIZE;
|
nbrUnits = sizeof (buf) / ENCRYPTION_DATA_UNIT_SIZE;
|
||||||
|
|
||||||
ci->mode = XTS; // Other modes of operation are tested in TestLegacySectorBufEncryption()
|
ci->mode = XTS; // we only implement XTS
|
||||||
|
|
||||||
/* The buffer can accommodate 4 data units and we'll test 4 cases by "scrolling". The data unit 0xFFFFFFFFFF
|
/* The buffer can accommodate 4 data units and we'll test 4 cases by "scrolling". The data unit 0xFFFFFFFFFF
|
||||||
will "move" from the start of the buffer to its end. For a 512-byte data unit, the byte offset 562949953420800
|
will "move" from the start of the buffer to its end. For a 512-byte data unit, the byte offset 562949953420800
|
||||||
@@ -1029,340 +862,6 @@ BOOL TestSectorBufEncryption (PCRYPTO_INFO ci)
|
|||||||
return (nTestsPerformed == 80);
|
return (nTestsPerformed == 80);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
BOOL TestLegacySectorBufEncryption (PCRYPTO_INFO ci)
|
|
||||||
{
|
|
||||||
unsigned char buf [ENCRYPTION_DATA_UNIT_SIZE * 2];
|
|
||||||
unsigned int i;
|
|
||||||
char name[64];
|
|
||||||
unsigned __int32 crc;
|
|
||||||
UINT64_STRUCT unitNo;
|
|
||||||
uint32 nbrUnits;
|
|
||||||
int blockSize;
|
|
||||||
BOOL lrw64InitDone = FALSE;
|
|
||||||
BOOL lrw128InitDone = FALSE;
|
|
||||||
int nTestsPerformed = 0;
|
|
||||||
|
|
||||||
unitNo.Value = 0x0234567890ABCDEFull;
|
|
||||||
nbrUnits = sizeof (buf) / ENCRYPTION_DATA_UNIT_SIZE;
|
|
||||||
|
|
||||||
for (i = 0; i < sizeof (buf); i++)
|
|
||||||
buf[i] = (unsigned char) i;
|
|
||||||
|
|
||||||
for (i = 0; i < sizeof (ci->k2); i++)
|
|
||||||
ci->k2[i] = (unsigned char) i;
|
|
||||||
|
|
||||||
// Test all EAs
|
|
||||||
for (ci->ea = EAGetFirst (); ci->ea != 0; ci->ea = EAGetNext (ci->ea))
|
|
||||||
{
|
|
||||||
EAGetName (name, ci->ea);
|
|
||||||
blockSize = CipherGetBlockSize (EAGetFirstCipher (ci->ea));
|
|
||||||
|
|
||||||
if (EAInit (ci->ea, (unsigned char *)buf, ci->ks) == ERR_CIPHER_INIT_FAILURE)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
// Test all deprecated modes of operation
|
|
||||||
for (ci->mode = EAGetFirstMode (ci->ea);
|
|
||||||
ci->mode != 0;
|
|
||||||
ci->mode = EAGetNextMode (ci->ea, ci->mode))
|
|
||||||
{
|
|
||||||
// Skip modes that are not deprecated
|
|
||||||
if (ci->mode == XTS)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (ci->mode == LRW
|
|
||||||
&& (blockSize == 8 && !lrw64InitDone || blockSize == 16 && !lrw128InitDone ))
|
|
||||||
{
|
|
||||||
if (!EAInitMode (ci))
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
if (blockSize == 8)
|
|
||||||
lrw64InitDone = TRUE;
|
|
||||||
else if (blockSize == 16)
|
|
||||||
lrw128InitDone = TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
EncryptDataUnits (buf, &unitNo, nbrUnits, ci);
|
|
||||||
crc = GetCrc32 (buf, sizeof (buf));
|
|
||||||
|
|
||||||
switch (ci->mode)
|
|
||||||
{
|
|
||||||
case LRW: // Deprecated/legacy
|
|
||||||
if (strcmp (name, "AES") == 0)
|
|
||||||
{
|
|
||||||
if (crc != 0x5237acf9)
|
|
||||||
return FALSE;
|
|
||||||
nTestsPerformed++;
|
|
||||||
}
|
|
||||||
else if (strcmp (name, "Blowfish") == 0) // Deprecated/legacy
|
|
||||||
{
|
|
||||||
if (crc != 0xf94d5300)
|
|
||||||
return FALSE;
|
|
||||||
nTestsPerformed++;
|
|
||||||
}
|
|
||||||
else if (strcmp (name, "CAST5") == 0) // Deprecated/legacy
|
|
||||||
{
|
|
||||||
if (crc != 0x33971e82)
|
|
||||||
return FALSE;
|
|
||||||
nTestsPerformed++;
|
|
||||||
}
|
|
||||||
else if (strcmp (name, "Serpent") == 0)
|
|
||||||
{
|
|
||||||
if (crc != 0x7fb86805)
|
|
||||||
return FALSE;
|
|
||||||
nTestsPerformed++;
|
|
||||||
}
|
|
||||||
else if (strcmp (name, "Triple DES") == 0) // Deprecated/legacy
|
|
||||||
{
|
|
||||||
if (crc != 0x2b20bb84)
|
|
||||||
return FALSE;
|
|
||||||
nTestsPerformed++;
|
|
||||||
}
|
|
||||||
else if (strcmp (name, "Twofish") == 0)
|
|
||||||
{
|
|
||||||
if (crc != 0xa9de0f0b)
|
|
||||||
return FALSE;
|
|
||||||
nTestsPerformed++;
|
|
||||||
}
|
|
||||||
else if (strcmp (name, "AES-Twofish") == 0)
|
|
||||||
{
|
|
||||||
if (crc != 0x4ed0fd80)
|
|
||||||
return FALSE;
|
|
||||||
nTestsPerformed++;
|
|
||||||
}
|
|
||||||
else if (strcmp (name, "AES-Twofish-Serpent") == 0)
|
|
||||||
{
|
|
||||||
if (crc != 0xea04b3cf)
|
|
||||||
return FALSE;
|
|
||||||
nTestsPerformed++;
|
|
||||||
}
|
|
||||||
else if (strcmp (name, "Serpent-AES") == 0)
|
|
||||||
{
|
|
||||||
if (crc != 0x0d33596a)
|
|
||||||
return FALSE;
|
|
||||||
nTestsPerformed++;
|
|
||||||
}
|
|
||||||
else if (strcmp (name, "Serpent-Twofish-AES") == 0)
|
|
||||||
{
|
|
||||||
if (crc != 0x2845d0e3)
|
|
||||||
return FALSE;
|
|
||||||
nTestsPerformed++;
|
|
||||||
}
|
|
||||||
else if (strcmp (name, "Twofish-Serpent") == 0)
|
|
||||||
{
|
|
||||||
if (crc != 0xca65c5cd)
|
|
||||||
return FALSE;
|
|
||||||
nTestsPerformed++;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case CBC: // Deprecated/legacy
|
|
||||||
case INNER_CBC: // Deprecated/legacy
|
|
||||||
case OUTER_CBC: // Deprecated/legacy
|
|
||||||
if (strcmp (name, "AES") == 0)
|
|
||||||
{
|
|
||||||
if (crc != 0x2274f53d)
|
|
||||||
return FALSE;
|
|
||||||
nTestsPerformed++;
|
|
||||||
}
|
|
||||||
else if (strcmp (name, "Blowfish") == 0) // Deprecated/legacy
|
|
||||||
{
|
|
||||||
if (crc != 0x033899a1)
|
|
||||||
return FALSE;
|
|
||||||
nTestsPerformed++;
|
|
||||||
}
|
|
||||||
else if (strcmp (name, "CAST5") == 0) // Deprecated/legacy
|
|
||||||
{
|
|
||||||
if (crc != 0x331cecc7)
|
|
||||||
return FALSE;
|
|
||||||
nTestsPerformed++;
|
|
||||||
}
|
|
||||||
else if (strcmp (name, "Serpent") == 0)
|
|
||||||
{
|
|
||||||
if (crc != 0x42dff3d4)
|
|
||||||
return FALSE;
|
|
||||||
nTestsPerformed++;
|
|
||||||
}
|
|
||||||
else if (strcmp (name, "Triple DES") == 0) // Deprecated/legacy
|
|
||||||
{
|
|
||||||
if (crc != 0xfe497d0c)
|
|
||||||
return FALSE;
|
|
||||||
nTestsPerformed++;
|
|
||||||
}
|
|
||||||
else if (strcmp (name, "AES-Blowfish") == 0) // Deprecated/legacy
|
|
||||||
{
|
|
||||||
if (crc != 0xa7a80c84)
|
|
||||||
return FALSE;
|
|
||||||
nTestsPerformed++;
|
|
||||||
}
|
|
||||||
else if (strcmp (name, "AES-Blowfish-Serpent") == 0) // Deprecated/legacy
|
|
||||||
{
|
|
||||||
if (crc != 0xa0584562)
|
|
||||||
return FALSE;
|
|
||||||
nTestsPerformed++;
|
|
||||||
}
|
|
||||||
else if (strcmp (name, "AES-Twofish") == 0)
|
|
||||||
{
|
|
||||||
if (crc != 0x3c226444)
|
|
||||||
return FALSE;
|
|
||||||
nTestsPerformed++;
|
|
||||||
}
|
|
||||||
else if (strcmp (name, "AES-Twofish-Serpent") == 0)
|
|
||||||
{
|
|
||||||
if (crc != 0x5e5e77fd)
|
|
||||||
return FALSE;
|
|
||||||
nTestsPerformed++;
|
|
||||||
}
|
|
||||||
else if (strcmp (name, "Serpent-AES") == 0)
|
|
||||||
{
|
|
||||||
if (crc != 0x57c612d5)
|
|
||||||
return FALSE;
|
|
||||||
nTestsPerformed++;
|
|
||||||
}
|
|
||||||
else if (strcmp (name, "Serpent-Twofish-AES") == 0)
|
|
||||||
{
|
|
||||||
if (crc != 0x081e045a)
|
|
||||||
return FALSE;
|
|
||||||
nTestsPerformed++;
|
|
||||||
}
|
|
||||||
else if (strcmp (name, "Twofish-Serpent") == 0)
|
|
||||||
{
|
|
||||||
if (crc != 0xa7b659f3)
|
|
||||||
return FALSE;
|
|
||||||
nTestsPerformed++;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (crc == 0xb70b4c26)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
DecryptDataUnits (buf, &unitNo, nbrUnits, ci);
|
|
||||||
|
|
||||||
if (GetCrc32 (buf, sizeof (buf)) != 0xb70b4c26)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
nTestsPerformed++;
|
|
||||||
|
|
||||||
EncryptBuffer (buf, sizeof (buf), ci);
|
|
||||||
crc = GetCrc32 (buf, sizeof (buf));
|
|
||||||
|
|
||||||
switch (ci->mode)
|
|
||||||
{
|
|
||||||
case LRW: // Deprecated/legacy
|
|
||||||
if (strcmp (name, "AES") == 0)
|
|
||||||
{
|
|
||||||
if (crc != 0x5ae1e3d8)
|
|
||||||
return FALSE;
|
|
||||||
nTestsPerformed++;
|
|
||||||
}
|
|
||||||
else if (strcmp (name, "Blowfish") == 0) // Deprecated/legacy
|
|
||||||
{
|
|
||||||
if (crc != 0x2738426f)
|
|
||||||
return FALSE;
|
|
||||||
nTestsPerformed++;
|
|
||||||
}
|
|
||||||
else if (strcmp (name, "AES-Twofish-Serpent") == 0)
|
|
||||||
{
|
|
||||||
if (crc != 0x14f2948a)
|
|
||||||
return FALSE;
|
|
||||||
nTestsPerformed++;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case CBC: // Deprecated/legacy
|
|
||||||
case INNER_CBC: // Deprecated/legacy
|
|
||||||
case OUTER_CBC: // Deprecated/legacy
|
|
||||||
if (strcmp (name, "AES") == 0)
|
|
||||||
{
|
|
||||||
if (crc != 0x960f740e)
|
|
||||||
return FALSE;
|
|
||||||
nTestsPerformed++;
|
|
||||||
}
|
|
||||||
else if (strcmp (name, "Blowfish") == 0) // Deprecated/legacy
|
|
||||||
{
|
|
||||||
if (crc != 0x7e1cfabb)
|
|
||||||
return FALSE;
|
|
||||||
nTestsPerformed++;
|
|
||||||
}
|
|
||||||
else if (strcmp (name, "CAST5") == 0) // Deprecated/legacy
|
|
||||||
{
|
|
||||||
if (crc != 0xeaae21c8)
|
|
||||||
return FALSE;
|
|
||||||
nTestsPerformed++;
|
|
||||||
}
|
|
||||||
else if (strcmp (name, "Serpent") == 0)
|
|
||||||
{
|
|
||||||
if (crc != 0xa8139d62)
|
|
||||||
return FALSE;
|
|
||||||
nTestsPerformed++;
|
|
||||||
}
|
|
||||||
else if (strcmp (name, "Triple DES") == 0) // Deprecated/legacy
|
|
||||||
{
|
|
||||||
if (crc != 0xecf5d7d0)
|
|
||||||
return FALSE;
|
|
||||||
nTestsPerformed++;
|
|
||||||
}
|
|
||||||
else if (strcmp (name, "AES-Blowfish") == 0) // Deprecated/legacy
|
|
||||||
{
|
|
||||||
if (crc != 0xb70171b6)
|
|
||||||
return FALSE;
|
|
||||||
nTestsPerformed++;
|
|
||||||
}
|
|
||||||
else if (strcmp (name, "AES-Blowfish-Serpent") == 0) // Deprecated/legacy
|
|
||||||
{
|
|
||||||
if (crc != 0x1e749a87)
|
|
||||||
return FALSE;
|
|
||||||
nTestsPerformed++;
|
|
||||||
}
|
|
||||||
else if (strcmp (name, "AES-Twofish") == 0)
|
|
||||||
{
|
|
||||||
if (crc != 0xb4b8bb9b)
|
|
||||||
return FALSE;
|
|
||||||
nTestsPerformed++;
|
|
||||||
}
|
|
||||||
else if (strcmp (name, "AES-Twofish-Serpent") == 0)
|
|
||||||
{
|
|
||||||
if (crc != 0x76b6c1cb)
|
|
||||||
return FALSE;
|
|
||||||
nTestsPerformed++;
|
|
||||||
}
|
|
||||||
else if (strcmp (name, "Serpent-AES") == 0)
|
|
||||||
{
|
|
||||||
if (crc != 0x634f12ed)
|
|
||||||
return FALSE;
|
|
||||||
nTestsPerformed++;
|
|
||||||
}
|
|
||||||
else if (strcmp (name, "Serpent-Twofish-AES") == 0)
|
|
||||||
{
|
|
||||||
if (crc != 0xe54bc1b9)
|
|
||||||
return FALSE;
|
|
||||||
nTestsPerformed++;
|
|
||||||
}
|
|
||||||
else if (strcmp (name, "Twofish-Serpent") == 0)
|
|
||||||
{
|
|
||||||
if (crc != 0x21cdb382)
|
|
||||||
return FALSE;
|
|
||||||
nTestsPerformed++;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (crc == 0xb70b4c26)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
DecryptBuffer (buf, sizeof (buf), ci);
|
|
||||||
|
|
||||||
if (GetCrc32 (buf, sizeof (buf)) != 0xb70b4c26)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
nTestsPerformed++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return (nTestsPerformed == 86);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static BOOL DoAutoTestAlgorithms (void)
|
static BOOL DoAutoTestAlgorithms (void)
|
||||||
{
|
{
|
||||||
PCRYPTO_INFO ci;
|
PCRYPTO_INFO ci;
|
||||||
@@ -1377,74 +876,6 @@ static BOOL DoAutoTestAlgorithms (void)
|
|||||||
|
|
||||||
memset (ci, 0, sizeof (*ci));
|
memset (ci, 0, sizeof (*ci));
|
||||||
|
|
||||||
/* Blowfish (deprecated/legacy) */
|
|
||||||
|
|
||||||
for (i=0;i<BF_TEST_COUNT;i++)
|
|
||||||
{
|
|
||||||
memcpy(key, bf_ecb_vectors[i].key, 8);
|
|
||||||
memcpy(tmp, bf_ecb_vectors[i].plaintext, 8);
|
|
||||||
CipherInit2(BLOWFISH, key, ks_tmp, 8);
|
|
||||||
|
|
||||||
((uint32 *)tmp)[0] = BE32 (((uint32 *)tmp)[0]);
|
|
||||||
((uint32 *)tmp)[1] = BE32 (((uint32 *)tmp)[1]);
|
|
||||||
|
|
||||||
BlowfishEncryptLE (tmp,tmp,(BF_KEY *)ks_tmp,1);
|
|
||||||
BlowfishEncryptLE (tmp,tmp,(BF_KEY *)ks_tmp,0);
|
|
||||||
BlowfishEncryptLE (tmp,tmp,(BF_KEY *)ks_tmp,1);
|
|
||||||
|
|
||||||
((uint32 *)tmp)[0] = BE32 (((uint32 *)tmp)[0]);
|
|
||||||
((uint32 *)tmp)[1] = BE32 (((uint32 *)tmp)[1]);
|
|
||||||
|
|
||||||
if (memcmp(bf_ecb_vectors[i].ciphertext,tmp,8)!=0)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (i != BF_TEST_COUNT)
|
|
||||||
bFailed = TRUE;
|
|
||||||
|
|
||||||
/* CAST5 (deprecated/legacy) */
|
|
||||||
|
|
||||||
for (i=0;i<CAST_TEST_COUNT;i++)
|
|
||||||
{
|
|
||||||
int cipher = CAST;
|
|
||||||
memcpy(key, cast_ecb_vectors[i].key, 16);
|
|
||||||
memcpy(tmp, cast_ecb_vectors[i].plaintext, 8);
|
|
||||||
CipherInit2(cipher, key, ks_tmp, 16);
|
|
||||||
|
|
||||||
EncipherBlock(cipher, tmp, ks_tmp);
|
|
||||||
DecipherBlock(cipher, tmp, ks_tmp);
|
|
||||||
EncipherBlock(cipher, tmp, ks_tmp);
|
|
||||||
|
|
||||||
if (memcmp(cast_ecb_vectors[i].ciphertext, tmp,8)!=0)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (i!=CAST_TEST_COUNT)
|
|
||||||
bFailed = TRUE;
|
|
||||||
|
|
||||||
|
|
||||||
/* Triple DES (TECB, EDE) - deprecated/legacy */
|
|
||||||
|
|
||||||
for (i = 0; i < TRIPLEDES_TEST_COUNT; i++)
|
|
||||||
{
|
|
||||||
int cipher = TRIPLEDES;
|
|
||||||
memcpy(key, tripledes_vectors[i].key, sizeof(tripledes_vectors->key));
|
|
||||||
memcpy(tmp, tripledes_vectors[i].plaintext, sizeof(tripledes_vectors->plaintext));
|
|
||||||
|
|
||||||
CipherInit(cipher, key, ks_tmp);
|
|
||||||
|
|
||||||
EncipherBlock(cipher, tmp, ks_tmp);
|
|
||||||
if (memcmp(tripledes_vectors[i].ciphertext, tmp, sizeof(tripledes_vectors->ciphertext)) != 0)
|
|
||||||
break;
|
|
||||||
|
|
||||||
DecipherBlock(cipher, tmp, ks_tmp);
|
|
||||||
if (memcmp(tripledes_vectors[i].plaintext, tmp, sizeof(tripledes_vectors->plaintext)) != 0)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (i != TRIPLEDES_TEST_COUNT)
|
|
||||||
bFailed = TRUE;
|
|
||||||
|
|
||||||
|
|
||||||
/* AES */
|
/* AES */
|
||||||
|
|
||||||
for (i = 0; i < AES_TEST_COUNT; i++)
|
for (i = 0; i < AES_TEST_COUNT; i++)
|
||||||
@@ -1550,10 +981,6 @@ static BOOL DoAutoTestAlgorithms (void)
|
|||||||
if (!XTSAesTest (ci))
|
if (!XTSAesTest (ci))
|
||||||
bFailed = TRUE;
|
bFailed = TRUE;
|
||||||
|
|
||||||
/* LRW-AES (deprecated/legacy) */
|
|
||||||
if (!LRWAesTest (ci))
|
|
||||||
bFailed = TRUE;
|
|
||||||
|
|
||||||
/* Sector and buffer related algorithms */
|
/* Sector and buffer related algorithms */
|
||||||
if (!TestSectorBufEncryption (ci))
|
if (!TestSectorBufEncryption (ci))
|
||||||
bFailed = TRUE;
|
bFailed = TRUE;
|
||||||
@@ -1582,6 +1009,23 @@ BOOL AutoTestAlgorithms (void)
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BOOL test_hmac_sha256 ()
|
||||||
|
{
|
||||||
|
unsigned int i;
|
||||||
|
int nTestsPerformed = 0;
|
||||||
|
|
||||||
|
for (i = 0; i < sizeof (hmac_sha256_test_data) / sizeof(char *); i++)
|
||||||
|
{
|
||||||
|
char digest[SHA256_DIGESTSIZE];
|
||||||
|
hmac_sha256 (hmac_sha256_test_keys[i], (int) strlen (hmac_sha256_test_keys[i]), hmac_sha256_test_data[i], (int) strlen (hmac_sha256_test_data[i]), digest);
|
||||||
|
if (memcmp (digest, hmac_sha256_test_vectors[i], SHA256_DIGESTSIZE) != 0)
|
||||||
|
return FALSE;
|
||||||
|
else
|
||||||
|
nTestsPerformed++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (nTestsPerformed == 6);
|
||||||
|
}
|
||||||
|
|
||||||
BOOL test_hmac_sha512 ()
|
BOOL test_hmac_sha512 ()
|
||||||
{
|
{
|
||||||
@@ -1601,26 +1045,6 @@ BOOL test_hmac_sha512 ()
|
|||||||
return (nTestsPerformed == 6);
|
return (nTestsPerformed == 6);
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL test_hmac_sha1 ()
|
|
||||||
{
|
|
||||||
// Deprecated/legacy
|
|
||||||
|
|
||||||
int nTestsPerformed = 0;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0; i < 3; i++)
|
|
||||||
{
|
|
||||||
char digest[SHA1_DIGESTSIZE];
|
|
||||||
hmac_sha1 (hmac_sha1_test_keys[i], (int) strlen (hmac_sha1_test_keys[i]), hmac_sha1_test_data[i], (int) strlen (hmac_sha1_test_data[i]), digest, SHA1_DIGESTSIZE);
|
|
||||||
if (memcmp (digest, hmac_sha1_test_vectors[i], SHA1_DIGESTSIZE) != 0)
|
|
||||||
return FALSE;
|
|
||||||
else
|
|
||||||
nTestsPerformed++;
|
|
||||||
}
|
|
||||||
|
|
||||||
return (nTestsPerformed == 3);
|
|
||||||
}
|
|
||||||
|
|
||||||
BOOL test_hmac_ripemd160 ()
|
BOOL test_hmac_ripemd160 ()
|
||||||
{
|
{
|
||||||
int nTestsPerformed = 0;
|
int nTestsPerformed = 0;
|
||||||
@@ -1654,12 +1078,12 @@ BOOL test_pkcs5 ()
|
|||||||
{
|
{
|
||||||
char dk[144];
|
char dk[144];
|
||||||
|
|
||||||
/* HMAC-SHA-512 tests */
|
/* HMAC-SHA-256 tests */
|
||||||
if (!test_hmac_sha512())
|
if (!test_hmac_sha256())
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
/* HMAC-SHA-1 tests (deprecated/legacy) */
|
/* HMAC-SHA-512 tests */
|
||||||
if (test_hmac_sha1() == FALSE)
|
if (!test_hmac_sha512())
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
/* HMAC-RIPEMD-160 tests */
|
/* HMAC-RIPEMD-160 tests */
|
||||||
@@ -1670,6 +1094,26 @@ BOOL test_pkcs5 ()
|
|||||||
if (test_hmac_whirlpool() == FALSE)
|
if (test_hmac_whirlpool() == FALSE)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
|
/* PKCS-5 test 1 with HMAC-SHA-256 used as the PRF (https://tools.ietf.org/html/draft-josefsson-scrypt-kdf-00) */
|
||||||
|
derive_key_sha256 ("passwd", 6, "\x73\x61\x6C\x74", 4, 1, dk, 64);
|
||||||
|
if (memcmp (dk, "\x55\xac\x04\x6e\x56\xe3\x08\x9f\xec\x16\x91\xc2\x25\x44\xb6\x05\xf9\x41\x85\x21\x6d\xde\x04\x65\xe6\x8b\x9d\x57\xc2\x0d\xac\xbc\x49\xca\x9c\xcc\xf1\x79\xb6\x45\x99\x16\x64\xb3\x9d\x77\xef\x31\x7c\x71\xb8\x45\xb1\xe3\x0b\xd5\x09\x11\x20\x41\xd3\xa1\x97\x83", 64) != 0)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
/* PKCS-5 test 2 with HMAC-SHA-256 used as the PRF (https://stackoverflow.com/questions/5130513/pbkdf2-hmac-sha2-test-vectors) */
|
||||||
|
derive_key_sha256 ("password", 8, "\x73\x61\x6C\x74", 4, 2, dk, 32);
|
||||||
|
if (memcmp (dk, "\xae\x4d\x0c\x95\xaf\x6b\x46\xd3\x2d\x0a\xdf\xf9\x28\xf0\x6d\xd0\x2a\x30\x3f\x8e\xf3\xc2\x51\xdf\xd6\xe2\xd8\x5a\x95\x47\x4c\x43", 32) != 0)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
/* PKCS-5 test 3 with HMAC-SHA-256 used as the PRF (MS CryptoAPI) */
|
||||||
|
derive_key_sha256 ("password", 8, "\x12\x34\x56\x78", 4, 5, dk, 4);
|
||||||
|
if (memcmp (dk, "\xf2\xa0\x4f\xb2", 4) != 0)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
/* PKCS-5 test 4 with HMAC-SHA-256 used as the PRF (MS CryptoAPI) */
|
||||||
|
derive_key_sha256 ("password", 8, "\x12\x34\x56\x78", 4, 5, dk, 144);
|
||||||
|
if (memcmp (dk, "\xf2\xa0\x4f\xb2\xd3\xe9\xa5\xd8\x51\x0b\x5c\x06\xdf\x70\x8e\x24\xe9\xc7\xd9\x15\x3d\x22\xcd\xde\xb8\xa6\xdb\xfd\x71\x85\xc6\x99\x32\xc0\xee\x37\x27\xf7\x24\xcf\xea\xa6\xac\x73\xa1\x4c\x4e\x52\x9b\x94\xf3\x54\x06\xfc\x04\x65\xa1\x0a\x24\xfe\xf0\x98\x1d\xa6\x22\x28\xeb\x24\x55\x74\xce\x6a\x3a\x28\xe2\x04\x3a\x59\x13\xec\x3f\xf2\xdb\xcf\x58\xdd\x53\xd9\xf9\x17\xf6\xda\x74\x06\x3c\x0b\x66\xf5\x0f\xf5\x58\xa3\x27\x52\x8c\x5b\x07\x91\xd0\x81\xeb\xb6\xbc\x30\x69\x42\x71\xf2\xd7\x18\x42\xbe\xe8\x02\x93\x70\x66\xad\x35\x65\xbc\xf7\x96\x8e\x64\xf1\xc6\x92\xda\xe0\xdc\x1f\xb5\xf4", 144) != 0)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
/* PKCS-5 test 1 with HMAC-SHA-512 used as the PRF */
|
/* PKCS-5 test 1 with HMAC-SHA-512 used as the PRF */
|
||||||
derive_key_sha512 ("password", 8, "\x12\x34\x56\x78", 4, 5, dk, 4);
|
derive_key_sha512 ("password", 8, "\x12\x34\x56\x78", 4, 5, dk, 4);
|
||||||
if (memcmp (dk, "\x13\x64\xae\xf8", 4) != 0)
|
if (memcmp (dk, "\x13\x64\xae\xf8", 4) != 0)
|
||||||
@@ -1681,30 +1125,13 @@ BOOL test_pkcs5 ()
|
|||||||
if (memcmp (dk, "\x13\x64\xae\xf8\x0d\xf5\x57\x6c\x30\xd5\x71\x4c\xa7\x75\x3f\xfd\x00\xe5\x25\x8b\x39\xc7\x44\x7f\xce\x23\x3d\x08\x75\xe0\x2f\x48\xd6\x30\xd7\x00\xb6\x24\xdb\xe0\x5a\xd7\x47\xef\x52\xca\xa6\x34\x83\x47\xe5\xcb\xe9\x87\xf1\x20\x59\x6a\xe6\xa9\xcf\x51\x78\xc6\xb6\x23\xa6\x74\x0d\xe8\x91\xbe\x1a\xd0\x28\xcc\xce\x16\x98\x9a\xbe\xfb\xdc\x78\xc9\xe1\x7d\x72\x67\xce\xe1\x61\x56\x5f\x96\x68\xe6\xe1\xdd\xf4\xbf\x1b\x80\xe0\x19\x1c\xf4\xc4\xd3\xdd\xd5\xd5\x57\x2d\x83\xc7\xa3\x37\x87\xf4\x4e\xe0\xf6\xd8\x6d\x65\xdc\xa0\x52\xa3\x13\xbe\x81\xfc\x30\xbe\x7d\x69\x58\x34\xb6\xdd\x41\xc6", 144) != 0)
|
if (memcmp (dk, "\x13\x64\xae\xf8\x0d\xf5\x57\x6c\x30\xd5\x71\x4c\xa7\x75\x3f\xfd\x00\xe5\x25\x8b\x39\xc7\x44\x7f\xce\x23\x3d\x08\x75\xe0\x2f\x48\xd6\x30\xd7\x00\xb6\x24\xdb\xe0\x5a\xd7\x47\xef\x52\xca\xa6\x34\x83\x47\xe5\xcb\xe9\x87\xf1\x20\x59\x6a\xe6\xa9\xcf\x51\x78\xc6\xb6\x23\xa6\x74\x0d\xe8\x91\xbe\x1a\xd0\x28\xcc\xce\x16\x98\x9a\xbe\xfb\xdc\x78\xc9\xe1\x7d\x72\x67\xce\xe1\x61\x56\x5f\x96\x68\xe6\xe1\xdd\xf4\xbf\x1b\x80\xe0\x19\x1c\xf4\xc4\xd3\xdd\xd5\xd5\x57\x2d\x83\xc7\xa3\x37\x87\xf4\x4e\xe0\xf6\xd8\x6d\x65\xdc\xa0\x52\xa3\x13\xbe\x81\xfc\x30\xbe\x7d\x69\x58\x34\xb6\xdd\x41\xc6", 144) != 0)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
/* PKCS-5 test 1 with HMAC-SHA-1 (deprecated/legacy) used as the PRF (derives a key longer than the underlying hash) */
|
|
||||||
derive_key_sha1 ("password", 8, "\x12\x34\x56\x78", 4, 5, dk, 48);
|
|
||||||
if (memcmp (dk, "\x5c\x75\xce\xf0\x1a\x96\x0d\xf7\x4c\xb6\xb4\x9b\x9e\x38\xe6\xb5\x3b\x11\x80\xe3\x2f\xf7\xe0\xdd\xaa\xca\x8f\x81\x27\xf6\x9f\x4f\x1d\xc8\x2f\x48\x2d\xdb\x1a\x0a\xca\x90\xcb\x80\xb9\x2e\x90\x9e", 48) != 0)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
/* PKCS-5 test 2 with HMAC-SHA-1 (deprecated/legacy) used as the PRF */
|
|
||||||
derive_key_sha1 ("password", 8, "\x12\x34\x56\x78", 4, 5, dk, 4);
|
|
||||||
if (memcmp (dk, "\x5c\x75\xce\xf0", 4) != 0)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
#if 0 // This test is disabled because it uses 1200 iterations (to prevent startup slowdown)
|
|
||||||
/* PKCS-5 test 3 with HMAC-SHA-1 (deprecated/legacy) used as the PRF */
|
|
||||||
derive_key_sha1 ("password", 8, "ATHENA.MIT.EDUraeburn", 21, 1200, dk, 16);
|
|
||||||
if (memcmp (dk, "\x5c\x08\xeb\x61\xfd\xf7\x1e\x4e\x4e\xc3\xcf\x6b\xa1\xf5\x51\x2b", 16) != 0)
|
|
||||||
return FALSE;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* PKCS-5 test 1 with HMAC-RIPEMD-160 used as the PRF */
|
/* PKCS-5 test 1 with HMAC-RIPEMD-160 used as the PRF */
|
||||||
derive_key_ripemd160 (FALSE, "password", 8, "\x12\x34\x56\x78", 4, 5, dk, 4);
|
derive_key_ripemd160 ("password", 8, "\x12\x34\x56\x78", 4, 5, dk, 4);
|
||||||
if (memcmp (dk, "\x7a\x3d\x7c\x03", 4) != 0)
|
if (memcmp (dk, "\x7a\x3d\x7c\x03", 4) != 0)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
/* PKCS-5 test 2 with HMAC-RIPEMD-160 used as the PRF (derives a key longer than the underlying hash) */
|
/* PKCS-5 test 2 with HMAC-RIPEMD-160 used as the PRF (derives a key longer than the underlying hash) */
|
||||||
derive_key_ripemd160 (FALSE, "password", 8, "\x12\x34\x56\x78", 4, 5, dk, 48);
|
derive_key_ripemd160 ("password", 8, "\x12\x34\x56\x78", 4, 5, dk, 48);
|
||||||
if (memcmp (dk, "\x7a\x3d\x7c\x03\xe7\x26\x6b\xf8\x3d\x78\xfb\x29\xd2\x64\x1f\x56\xea\xf0\xe5\xf5\xcc\xc4\x3a\x31\xa8\x84\x70\xbf\xbd\x6f\x8e\x78\x24\x5a\xc0\x0a\xf6\xfa\xf0\xf6\xe9\x00\x47\x5f\x73\xce\xe1\x43", 48) != 0)
|
if (memcmp (dk, "\x7a\x3d\x7c\x03\xe7\x26\x6b\xf8\x3d\x78\xfb\x29\xd2\x64\x1f\x56\xea\xf0\xe5\xf5\xcc\xc4\x3a\x31\xa8\x84\x70\xbf\xbd\x6f\x8e\x78\x24\x5a\xc0\x0a\xf6\xfa\xf0\xf6\xe9\x00\x47\x5f\x73\xce\xe1\x43", 48) != 0)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ extern unsigned char ks_tmp[MAX_EXPANDED_KEY];
|
|||||||
|
|
||||||
void CipherInit2(int cipher, void* key, void* ks, int key_len);
|
void CipherInit2(int cipher, void* key, void* ks, int key_len);
|
||||||
BOOL test_hmac_sha512 (void);
|
BOOL test_hmac_sha512 (void);
|
||||||
BOOL test_hmac_sha1 (void);
|
|
||||||
BOOL test_hmac_ripemd160 (void);
|
BOOL test_hmac_ripemd160 (void);
|
||||||
BOOL test_hmac_whirlpool (void);
|
BOOL test_hmac_whirlpool (void);
|
||||||
BOOL test_pkcs5 (void);
|
BOOL test_pkcs5 (void);
|
||||||
|
|||||||
+93
-91
@@ -33,6 +33,9 @@
|
|||||||
#include "Volumes.h"
|
#include "Volumes.h"
|
||||||
#include "Pkcs5.h"
|
#include "Pkcs5.h"
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
#include <Strsafe.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Volume header v5 structure (used since TrueCrypt 7.0): */
|
/* Volume header v5 structure (used since TrueCrypt 7.0): */
|
||||||
//
|
//
|
||||||
@@ -187,6 +190,9 @@ int ReadVolumeHeader (BOOL bBoot, char *encryptedHeader, Password *password, PCR
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
if (!retInfo)
|
||||||
|
return ERR_PARAMETER_INCORRECT;
|
||||||
|
|
||||||
cryptoInfo = *retInfo = crypto_open ();
|
cryptoInfo = *retInfo = crypto_open ();
|
||||||
if (cryptoInfo == NULL)
|
if (cryptoInfo == NULL)
|
||||||
return ERR_OUTOFMEMORY;
|
return ERR_OUTOFMEMORY;
|
||||||
@@ -235,9 +241,6 @@ int ReadVolumeHeader (BOOL bBoot, char *encryptedHeader, Password *password, PCR
|
|||||||
// Test all available PKCS5 PRFs
|
// Test all available PKCS5 PRFs
|
||||||
for (enqPkcs5Prf = FIRST_PRF_ID; enqPkcs5Prf <= LAST_PRF_ID || queuedWorkItems > 0; ++enqPkcs5Prf)
|
for (enqPkcs5Prf = FIRST_PRF_ID; enqPkcs5Prf <= LAST_PRF_ID || queuedWorkItems > 0; ++enqPkcs5Prf)
|
||||||
{
|
{
|
||||||
BOOL lrw64InitDone = FALSE; // Deprecated/legacy
|
|
||||||
BOOL lrw128InitDone = FALSE; // Deprecated/legacy
|
|
||||||
|
|
||||||
if (encryptionThreadCount > 1)
|
if (encryptionThreadCount > 1)
|
||||||
{
|
{
|
||||||
// Enqueue key derivation on thread pool
|
// Enqueue key derivation on thread pool
|
||||||
@@ -299,7 +302,7 @@ KeyReady: ;
|
|||||||
switch (pkcs5_prf)
|
switch (pkcs5_prf)
|
||||||
{
|
{
|
||||||
case RIPEMD160:
|
case RIPEMD160:
|
||||||
derive_key_ripemd160 (TRUE, keyInfo.userKey, keyInfo.keyLength, keyInfo.salt,
|
derive_key_ripemd160 (keyInfo.userKey, keyInfo.keyLength, keyInfo.salt,
|
||||||
PKCS5_SALT_SIZE, keyInfo.noIterations, dk, GetMaxPkcs5OutSize());
|
PKCS5_SALT_SIZE, keyInfo.noIterations, dk, GetMaxPkcs5OutSize());
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -308,14 +311,13 @@ KeyReady: ;
|
|||||||
PKCS5_SALT_SIZE, keyInfo.noIterations, dk, GetMaxPkcs5OutSize());
|
PKCS5_SALT_SIZE, keyInfo.noIterations, dk, GetMaxPkcs5OutSize());
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SHA1:
|
case WHIRLPOOL:
|
||||||
// Deprecated/legacy
|
derive_key_whirlpool (keyInfo.userKey, keyInfo.keyLength, keyInfo.salt,
|
||||||
derive_key_sha1 (keyInfo.userKey, keyInfo.keyLength, keyInfo.salt,
|
|
||||||
PKCS5_SALT_SIZE, keyInfo.noIterations, dk, GetMaxPkcs5OutSize());
|
PKCS5_SALT_SIZE, keyInfo.noIterations, dk, GetMaxPkcs5OutSize());
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WHIRLPOOL:
|
case SHA256:
|
||||||
derive_key_whirlpool (keyInfo.userKey, keyInfo.keyLength, keyInfo.salt,
|
derive_key_sha256 (keyInfo.userKey, keyInfo.keyLength, keyInfo.salt,
|
||||||
PKCS5_SALT_SIZE, keyInfo.noIterations, dk, GetMaxPkcs5OutSize());
|
PKCS5_SALT_SIZE, keyInfo.noIterations, dk, GetMaxPkcs5OutSize());
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -332,16 +334,6 @@ KeyReady: ;
|
|||||||
{
|
{
|
||||||
switch (cryptoInfo->mode)
|
switch (cryptoInfo->mode)
|
||||||
{
|
{
|
||||||
case LRW:
|
|
||||||
case CBC:
|
|
||||||
case INNER_CBC:
|
|
||||||
case OUTER_CBC:
|
|
||||||
|
|
||||||
// For LRW (deprecated/legacy), copy the tweak key
|
|
||||||
// For CBC (deprecated/legacy), copy the IV/whitening seed
|
|
||||||
memcpy (cryptoInfo->k2, dk, LEGACY_VOL_IV_SIZE);
|
|
||||||
primaryKeyOffset = LEGACY_VOL_IV_SIZE;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
primaryKeyOffset = 0;
|
primaryKeyOffset = 0;
|
||||||
@@ -377,21 +369,9 @@ KeyReady: ;
|
|||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (cryptoInfo->mode == LRW
|
else
|
||||||
&& (blockSize == 8 && !lrw64InitDone || blockSize == 16 && !lrw128InitDone))
|
|
||||||
{
|
{
|
||||||
// Deprecated/legacy
|
continue;
|
||||||
|
|
||||||
if (!EAInitMode (cryptoInfo))
|
|
||||||
{
|
|
||||||
status = ERR_MODE_INIT_FAILED;
|
|
||||||
goto err;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (blockSize == 8)
|
|
||||||
lrw64InitDone = TRUE;
|
|
||||||
else if (blockSize == 16)
|
|
||||||
lrw128InitDone = TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Copy the header for decryption
|
// Copy the header for decryption
|
||||||
@@ -513,15 +493,6 @@ KeyReady: ;
|
|||||||
|
|
||||||
switch (cryptoInfo->mode)
|
switch (cryptoInfo->mode)
|
||||||
{
|
{
|
||||||
case LRW:
|
|
||||||
case CBC:
|
|
||||||
case INNER_CBC:
|
|
||||||
case OUTER_CBC:
|
|
||||||
|
|
||||||
// For LRW (deprecated/legacy), the tweak key
|
|
||||||
// For CBC (deprecated/legacy), the IV/whitening seed
|
|
||||||
memcpy (cryptoInfo->k2, keyInfo.master_keydata, LEGACY_VOL_IV_SIZE);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
// The secondary master key (if cascade, multiple concatenated)
|
// The secondary master key (if cascade, multiple concatenated)
|
||||||
@@ -580,14 +551,12 @@ int ReadVolumeHeader (BOOL bBoot, char *header, Password *password, PCRYPTO_INFO
|
|||||||
{
|
{
|
||||||
#ifdef TC_WINDOWS_BOOT_SINGLE_CIPHER_MODE
|
#ifdef TC_WINDOWS_BOOT_SINGLE_CIPHER_MODE
|
||||||
char dk[32 * 2]; // 2 * 256-bit key
|
char dk[32 * 2]; // 2 * 256-bit key
|
||||||
char masterKey[32 * 2];
|
|
||||||
#else
|
#else
|
||||||
char dk[32 * 2 * 3]; // 6 * 256-bit key
|
char dk[32 * 2 * 3]; // 6 * 256-bit key
|
||||||
char masterKey[32 * 2 * 3];
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
PCRYPTO_INFO cryptoInfo;
|
PCRYPTO_INFO cryptoInfo;
|
||||||
int status;
|
int status = ERR_SUCCESS;
|
||||||
|
|
||||||
if (retHeaderCryptoInfo != NULL)
|
if (retHeaderCryptoInfo != NULL)
|
||||||
cryptoInfo = retHeaderCryptoInfo;
|
cryptoInfo = retHeaderCryptoInfo;
|
||||||
@@ -595,21 +564,51 @@ int ReadVolumeHeader (BOOL bBoot, char *header, Password *password, PCRYPTO_INFO
|
|||||||
cryptoInfo = *retInfo = crypto_open ();
|
cryptoInfo = *retInfo = crypto_open ();
|
||||||
|
|
||||||
// PKCS5 PRF
|
// PKCS5 PRF
|
||||||
derive_key_ripemd160 (TRUE, password->Text, (int) password->Length, header + HEADER_SALT_OFFSET,
|
#ifdef TC_WINDOWS_BOOT_SHA2
|
||||||
PKCS5_SALT_SIZE, bBoot ? 16384 : 32767, dk, sizeof (dk));
|
derive_key_sha256 (password->Text, (int) password->Length, header + HEADER_SALT_OFFSET,
|
||||||
|
PKCS5_SALT_SIZE, bBoot, dk, sizeof (dk));
|
||||||
|
#else
|
||||||
|
derive_key_ripemd160 (password->Text, (int) password->Length, header + HEADER_SALT_OFFSET,
|
||||||
|
PKCS5_SALT_SIZE, bBoot, dk, sizeof (dk));
|
||||||
|
#endif
|
||||||
|
|
||||||
// Mode of operation
|
// Mode of operation
|
||||||
cryptoInfo->mode = FIRST_MODE_OF_OPERATION_ID;
|
cryptoInfo->mode = FIRST_MODE_OF_OPERATION_ID;
|
||||||
|
|
||||||
|
#ifdef TC_WINDOWS_BOOT_SINGLE_CIPHER_MODE
|
||||||
|
cryptoInfo->ea = 1;
|
||||||
|
#else
|
||||||
// Test all available encryption algorithms
|
// Test all available encryption algorithms
|
||||||
for (cryptoInfo->ea = EAGetFirst (); cryptoInfo->ea != 0; cryptoInfo->ea = EAGetNext (cryptoInfo->ea))
|
for (cryptoInfo->ea = EAGetFirst (); cryptoInfo->ea != 0; cryptoInfo->ea = EAGetNext (cryptoInfo->ea))
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
|
#ifdef TC_WINDOWS_BOOT_SINGLE_CIPHER_MODE
|
||||||
|
#if defined (TC_WINDOWS_BOOT_SERPENT)
|
||||||
|
serpent_set_key (dk, cryptoInfo->ks);
|
||||||
|
#elif defined (TC_WINDOWS_BOOT_TWOFISH)
|
||||||
|
twofish_set_key ((TwofishInstance *) cryptoInfo->ks, (const u4byte *) dk);
|
||||||
|
#else
|
||||||
|
status = EAInit (dk, cryptoInfo->ks);
|
||||||
|
if (status == ERR_CIPHER_INIT_FAILURE)
|
||||||
|
goto err;
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
status = EAInit (cryptoInfo->ea, dk, cryptoInfo->ks);
|
status = EAInit (cryptoInfo->ea, dk, cryptoInfo->ks);
|
||||||
if (status == ERR_CIPHER_INIT_FAILURE)
|
if (status == ERR_CIPHER_INIT_FAILURE)
|
||||||
goto err;
|
goto err;
|
||||||
|
#endif
|
||||||
// Secondary key schedule
|
// Secondary key schedule
|
||||||
|
#ifdef TC_WINDOWS_BOOT_SINGLE_CIPHER_MODE
|
||||||
|
#if defined (TC_WINDOWS_BOOT_SERPENT)
|
||||||
|
serpent_set_key (dk + 32, cryptoInfo->ks2);
|
||||||
|
#elif defined (TC_WINDOWS_BOOT_TWOFISH)
|
||||||
|
twofish_set_key ((TwofishInstance *)cryptoInfo->ks2, (const u4byte *) (dk + 32));
|
||||||
|
#else
|
||||||
|
EAInit (dk + 32, cryptoInfo->ks2);
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
EAInit (cryptoInfo->ea, dk + EAGetKeySize (cryptoInfo->ea), cryptoInfo->ks2);
|
EAInit (cryptoInfo->ea, dk + EAGetKeySize (cryptoInfo->ea), cryptoInfo->ks2);
|
||||||
|
#endif
|
||||||
|
|
||||||
// Try to decrypt header
|
// Try to decrypt header
|
||||||
DecryptBuffer (header + HEADER_ENCRYPTED_DATA_OFFSET, HEADER_ENCRYPTED_DATA_SIZE, cryptoInfo);
|
DecryptBuffer (header + HEADER_ENCRYPTED_DATA_OFFSET, HEADER_ENCRYPTED_DATA_SIZE, cryptoInfo);
|
||||||
@@ -620,7 +619,12 @@ int ReadVolumeHeader (BOOL bBoot, char *header, Password *password, PCRYPTO_INFO
|
|||||||
|| GetHeaderField32 (header, TC_HEADER_OFFSET_KEY_AREA_CRC) != GetCrc32 (header + HEADER_MASTER_KEYDATA_OFFSET, MASTER_KEYDATA_SIZE))
|
|| GetHeaderField32 (header, TC_HEADER_OFFSET_KEY_AREA_CRC) != GetCrc32 (header + HEADER_MASTER_KEYDATA_OFFSET, MASTER_KEYDATA_SIZE))
|
||||||
{
|
{
|
||||||
EncryptBuffer (header + HEADER_ENCRYPTED_DATA_OFFSET, HEADER_ENCRYPTED_DATA_SIZE, cryptoInfo);
|
EncryptBuffer (header + HEADER_ENCRYPTED_DATA_OFFSET, HEADER_ENCRYPTED_DATA_SIZE, cryptoInfo);
|
||||||
|
#ifdef TC_WINDOWS_BOOT_SINGLE_CIPHER_MODE
|
||||||
|
status = ERR_PASSWORD_WRONG;
|
||||||
|
goto err;
|
||||||
|
#else
|
||||||
continue;
|
continue;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
// Header decrypted
|
// Header decrypted
|
||||||
@@ -640,19 +644,47 @@ int ReadVolumeHeader (BOOL bBoot, char *header, Password *password, PCRYPTO_INFO
|
|||||||
// Flags
|
// Flags
|
||||||
cryptoInfo->HeaderFlags = GetHeaderField32 (header, TC_HEADER_OFFSET_FLAGS);
|
cryptoInfo->HeaderFlags = GetHeaderField32 (header, TC_HEADER_OFFSET_FLAGS);
|
||||||
|
|
||||||
memcpy (masterKey, header + HEADER_MASTER_KEYDATA_OFFSET, sizeof (masterKey));
|
#ifdef TC_WINDOWS_BOOT_SHA2
|
||||||
|
cryptoInfo->pkcs5 = SHA256;
|
||||||
|
#else
|
||||||
|
cryptoInfo->pkcs5 = RIPEMD160;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
memcpy (dk, header + HEADER_MASTER_KEYDATA_OFFSET, sizeof (dk));
|
||||||
EncryptBuffer (header + HEADER_ENCRYPTED_DATA_OFFSET, HEADER_ENCRYPTED_DATA_SIZE, cryptoInfo);
|
EncryptBuffer (header + HEADER_ENCRYPTED_DATA_OFFSET, HEADER_ENCRYPTED_DATA_SIZE, cryptoInfo);
|
||||||
|
|
||||||
if (retHeaderCryptoInfo)
|
if (retHeaderCryptoInfo)
|
||||||
goto ret;
|
goto ret;
|
||||||
|
|
||||||
// Init the encryption algorithm with the decrypted master key
|
// Init the encryption algorithm with the decrypted master key
|
||||||
status = EAInit (cryptoInfo->ea, masterKey, cryptoInfo->ks);
|
#ifdef TC_WINDOWS_BOOT_SINGLE_CIPHER_MODE
|
||||||
|
#if defined (TC_WINDOWS_BOOT_SERPENT)
|
||||||
|
serpent_set_key (dk, cryptoInfo->ks);
|
||||||
|
#elif defined (TC_WINDOWS_BOOT_TWOFISH)
|
||||||
|
twofish_set_key ((TwofishInstance *) cryptoInfo->ks, (const u4byte *) dk);
|
||||||
|
#else
|
||||||
|
status = EAInit (dk, cryptoInfo->ks);
|
||||||
if (status == ERR_CIPHER_INIT_FAILURE)
|
if (status == ERR_CIPHER_INIT_FAILURE)
|
||||||
goto err;
|
goto err;
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
status = EAInit (cryptoInfo->ea, dk, cryptoInfo->ks);
|
||||||
|
if (status == ERR_CIPHER_INIT_FAILURE)
|
||||||
|
goto err;
|
||||||
|
#endif
|
||||||
|
|
||||||
// The secondary master key (if cascade, multiple concatenated)
|
// The secondary master key (if cascade, multiple concatenated)
|
||||||
EAInit (cryptoInfo->ea, masterKey + EAGetKeySize (cryptoInfo->ea), cryptoInfo->ks2);
|
#ifdef TC_WINDOWS_BOOT_SINGLE_CIPHER_MODE
|
||||||
|
#if defined (TC_WINDOWS_BOOT_SERPENT)
|
||||||
|
serpent_set_key (dk + 32, cryptoInfo->ks2);
|
||||||
|
#elif defined (TC_WINDOWS_BOOT_TWOFISH)
|
||||||
|
twofish_set_key ((TwofishInstance *)cryptoInfo->ks2, (const u4byte *) (dk + 32));
|
||||||
|
#else
|
||||||
|
EAInit (dk + 32, cryptoInfo->ks2);
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
EAInit (cryptoInfo->ea, dk + EAGetKeySize (cryptoInfo->ea), cryptoInfo->ks2);
|
||||||
|
#endif
|
||||||
goto ret;
|
goto ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -667,7 +699,6 @@ err:
|
|||||||
|
|
||||||
ret:
|
ret:
|
||||||
burn (dk, sizeof(dk));
|
burn (dk, sizeof(dk));
|
||||||
burn (masterKey, sizeof(masterKey));
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -715,18 +746,6 @@ int CreateVolumeHeaderInMemory (BOOL bBoot, char *header, int ea, int mode, Pass
|
|||||||
|
|
||||||
switch (mode)
|
switch (mode)
|
||||||
{
|
{
|
||||||
case LRW:
|
|
||||||
case CBC:
|
|
||||||
case INNER_CBC:
|
|
||||||
case OUTER_CBC:
|
|
||||||
|
|
||||||
// Deprecated/legacy modes of operation
|
|
||||||
bytesNeeded = LEGACY_VOL_IV_SIZE + EAGetKeySize (ea);
|
|
||||||
|
|
||||||
// In fact, this should never be the case since volumes being newly created are not
|
|
||||||
// supposed to use any deprecated mode of operation.
|
|
||||||
TC_THROW_FATAL_EXCEPTION;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
bytesNeeded = EAGetKeySize (ea) * 2; // Size of primary + secondary key(s)
|
bytesNeeded = EAGetKeySize (ea) * 2; // Size of primary + secondary key(s)
|
||||||
@@ -749,6 +768,9 @@ int CreateVolumeHeaderInMemory (BOOL bBoot, char *header, int ea, int mode, Pass
|
|||||||
// User selected encryption algorithm
|
// User selected encryption algorithm
|
||||||
cryptoInfo->ea = ea;
|
cryptoInfo->ea = ea;
|
||||||
|
|
||||||
|
// User selected PRF
|
||||||
|
cryptoInfo->pkcs5 = pkcs5_prf;
|
||||||
|
|
||||||
// Mode of operation
|
// Mode of operation
|
||||||
cryptoInfo->mode = mode;
|
cryptoInfo->mode = mode;
|
||||||
|
|
||||||
@@ -764,14 +786,13 @@ int CreateVolumeHeaderInMemory (BOOL bBoot, char *header, int ea, int mode, Pass
|
|||||||
PKCS5_SALT_SIZE, keyInfo.noIterations, dk, GetMaxPkcs5OutSize());
|
PKCS5_SALT_SIZE, keyInfo.noIterations, dk, GetMaxPkcs5OutSize());
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SHA1:
|
case SHA256:
|
||||||
// Deprecated/legacy
|
derive_key_sha256 (keyInfo.userKey, keyInfo.keyLength, keyInfo.salt,
|
||||||
derive_key_sha1 (keyInfo.userKey, keyInfo.keyLength, keyInfo.salt,
|
|
||||||
PKCS5_SALT_SIZE, keyInfo.noIterations, dk, GetMaxPkcs5OutSize());
|
PKCS5_SALT_SIZE, keyInfo.noIterations, dk, GetMaxPkcs5OutSize());
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RIPEMD160:
|
case RIPEMD160:
|
||||||
derive_key_ripemd160 (TRUE, keyInfo.userKey, keyInfo.keyLength, keyInfo.salt,
|
derive_key_ripemd160 (keyInfo.userKey, keyInfo.keyLength, keyInfo.salt,
|
||||||
PKCS5_SALT_SIZE, keyInfo.noIterations, dk, GetMaxPkcs5OutSize());
|
PKCS5_SALT_SIZE, keyInfo.noIterations, dk, GetMaxPkcs5OutSize());
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -853,16 +874,6 @@ int CreateVolumeHeaderInMemory (BOOL bBoot, char *header, int ea, int mode, Pass
|
|||||||
|
|
||||||
switch (mode)
|
switch (mode)
|
||||||
{
|
{
|
||||||
case LRW:
|
|
||||||
case CBC:
|
|
||||||
case INNER_CBC:
|
|
||||||
case OUTER_CBC:
|
|
||||||
|
|
||||||
// For LRW (deprecated/legacy), the tweak key
|
|
||||||
// For CBC (deprecated/legacy), the IV/whitening seed
|
|
||||||
memcpy (cryptoInfo->k2, dk, LEGACY_VOL_IV_SIZE);
|
|
||||||
primaryKeyOffset = LEGACY_VOL_IV_SIZE;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
// The secondary key (if cascade, multiple concatenated)
|
// The secondary key (if cascade, multiple concatenated)
|
||||||
@@ -896,15 +907,6 @@ int CreateVolumeHeaderInMemory (BOOL bBoot, char *header, int ea, int mode, Pass
|
|||||||
|
|
||||||
switch (cryptoInfo->mode)
|
switch (cryptoInfo->mode)
|
||||||
{
|
{
|
||||||
case LRW:
|
|
||||||
case CBC:
|
|
||||||
case INNER_CBC:
|
|
||||||
case OUTER_CBC:
|
|
||||||
|
|
||||||
// For LRW (deprecated/legacy), the tweak key
|
|
||||||
// For CBC (deprecated/legacy), the IV/whitening seed
|
|
||||||
memcpy (cryptoInfo->k2, keyInfo.master_keydata, LEGACY_VOL_IV_SIZE);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
// The secondary master key (if cascade, multiple concatenated)
|
// The secondary master key (if cascade, multiple concatenated)
|
||||||
@@ -934,16 +936,16 @@ int CreateVolumeHeaderInMemory (BOOL bBoot, char *header, int ea, int mode, Pass
|
|||||||
for (i = 0; i < j; i++)
|
for (i = 0; i < j; i++)
|
||||||
{
|
{
|
||||||
char tmp2[8] = {0};
|
char tmp2[8] = {0};
|
||||||
sprintf (tmp2, "%02X", (int) (unsigned char) keyInfo.master_keydata[i + primaryKeyOffset]);
|
StringCbPrintfA (tmp2, sizeof(tmp2), "%02X", (int) (unsigned char) keyInfo.master_keydata[i + primaryKeyOffset]);
|
||||||
strcat (MasterKeyGUIView, tmp2);
|
StringCbCatA (MasterKeyGUIView, sizeof(MasterKeyGUIView), tmp2);
|
||||||
}
|
}
|
||||||
|
|
||||||
HeaderKeyGUIView[0] = 0;
|
HeaderKeyGUIView[0] = 0;
|
||||||
for (i = 0; i < NBR_KEY_BYTES_TO_DISPLAY; i++)
|
for (i = 0; i < NBR_KEY_BYTES_TO_DISPLAY; i++)
|
||||||
{
|
{
|
||||||
char tmp2[8];
|
char tmp2[8];
|
||||||
sprintf (tmp2, "%02X", (int) (unsigned char) dk[primaryKeyOffset + i]);
|
StringCbPrintfA (tmp2, sizeof(tmp2), "%02X", (int) (unsigned char) dk[primaryKeyOffset + i]);
|
||||||
strcat (HeaderKeyGUIView, tmp2);
|
StringCbCatA (HeaderKeyGUIView, sizeof(HeaderKeyGUIView), tmp2);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dots3)
|
if (dots3)
|
||||||
|
|||||||
+11
-4
@@ -155,11 +155,11 @@ int GetWipePassCount (WipeAlgorithmId algorithm)
|
|||||||
case TC_WIPE_35_GUTMANN:
|
case TC_WIPE_35_GUTMANN:
|
||||||
return 35;
|
return 35;
|
||||||
|
|
||||||
default:
|
case TC_WIPE_256:
|
||||||
TC_THROW_FATAL_EXCEPTION;
|
return 256;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0; // Prevent compiler warnings
|
return -1; // Prevent compiler warnings
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -168,6 +168,7 @@ BOOL WipeBuffer (WipeAlgorithmId algorithm, byte randChars[TC_WIPE_RAND_CHAR_COU
|
|||||||
switch (algorithm)
|
switch (algorithm)
|
||||||
{
|
{
|
||||||
case TC_WIPE_1_RAND:
|
case TC_WIPE_1_RAND:
|
||||||
|
case TC_WIPE_256:
|
||||||
return Wipe1PseudoRandom (pass, buffer, size);
|
return Wipe1PseudoRandom (pass, buffer, size);
|
||||||
|
|
||||||
case TC_WIPE_3_DOD_5220:
|
case TC_WIPE_3_DOD_5220:
|
||||||
@@ -179,8 +180,14 @@ BOOL WipeBuffer (WipeAlgorithmId algorithm, byte randChars[TC_WIPE_RAND_CHAR_COU
|
|||||||
case TC_WIPE_35_GUTMANN:
|
case TC_WIPE_35_GUTMANN:
|
||||||
return Wipe35Gutmann (pass, buffer, size);
|
return Wipe35Gutmann (pass, buffer, size);
|
||||||
|
|
||||||
|
/* we will never reach here because all calls to WipeBuffer are preceeded
|
||||||
|
* by a call to GetWipePassCount that already checks the same algorithm
|
||||||
|
* parameters and in case of unsupported value an error is returned before
|
||||||
|
* calling WipeBuffer
|
||||||
|
*/
|
||||||
|
/*
|
||||||
default:
|
default:
|
||||||
TC_THROW_FATAL_EXCEPTION;
|
TC_THROW_FATAL_EXCEPTION;*/
|
||||||
}
|
}
|
||||||
|
|
||||||
return FALSE; // Prevent compiler warnings
|
return FALSE; // Prevent compiler warnings
|
||||||
|
|||||||
+2
-1
@@ -24,7 +24,8 @@ typedef enum
|
|||||||
TC_WIPE_1_RAND = 100,
|
TC_WIPE_1_RAND = 100,
|
||||||
TC_WIPE_3_DOD_5220 = 300,
|
TC_WIPE_3_DOD_5220 = 300,
|
||||||
TC_WIPE_7_DOD_5220 = 700,
|
TC_WIPE_7_DOD_5220 = 700,
|
||||||
TC_WIPE_35_GUTMANN = 3500
|
TC_WIPE_35_GUTMANN = 3500,
|
||||||
|
TC_WIPE_256 = 25600
|
||||||
|
|
||||||
} WipeAlgorithmId;
|
} WipeAlgorithmId;
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ namespace VeraCrypt
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void CoreBase::ChangePassword (shared_ptr <Volume> openVolume, shared_ptr <VolumePassword> newPassword, shared_ptr <KeyfileList> newKeyfiles, shared_ptr <Pkcs5Kdf> newPkcs5Kdf) const
|
void CoreBase::ChangePassword (shared_ptr <Volume> openVolume, shared_ptr <VolumePassword> newPassword, shared_ptr <KeyfileList> newKeyfiles, shared_ptr <Pkcs5Kdf> newPkcs5Kdf, int wipeCount) const
|
||||||
{
|
{
|
||||||
if ((!newPassword || newPassword->Size() < 1) && (!newKeyfiles || newKeyfiles->empty()))
|
if ((!newPassword || newPassword->Size() < 1) && (!newKeyfiles || newKeyfiles->empty()))
|
||||||
throw PasswordEmpty (SRC_POS);
|
throw PasswordEmpty (SRC_POS);
|
||||||
@@ -48,9 +48,9 @@ namespace VeraCrypt
|
|||||||
bool backupHeader = false;
|
bool backupHeader = false;
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
for (int i = 1; i <= SecureWipePassCount; i++)
|
for (int i = 1; i <= wipeCount; i++)
|
||||||
{
|
{
|
||||||
if (i == SecureWipePassCount)
|
if (i == wipeCount)
|
||||||
RandomNumberGenerator::GetData (newSalt);
|
RandomNumberGenerator::GetData (newSalt);
|
||||||
else
|
else
|
||||||
RandomNumberGenerator::GetDataFast (newSalt);
|
RandomNumberGenerator::GetDataFast (newSalt);
|
||||||
@@ -68,10 +68,10 @@ namespace VeraCrypt
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CoreBase::ChangePassword (shared_ptr <VolumePath> volumePath, bool preserveTimestamps, shared_ptr <VolumePassword> password, shared_ptr <KeyfileList> keyfiles, shared_ptr <VolumePassword> newPassword, shared_ptr <KeyfileList> newKeyfiles, shared_ptr <Pkcs5Kdf> newPkcs5Kdf) const
|
void CoreBase::ChangePassword (shared_ptr <VolumePath> volumePath, bool preserveTimestamps, shared_ptr <VolumePassword> password, shared_ptr <KeyfileList> keyfiles, shared_ptr <VolumePassword> newPassword, shared_ptr <KeyfileList> newKeyfiles, shared_ptr <Pkcs5Kdf> newPkcs5Kdf, int wipeCount) const
|
||||||
{
|
{
|
||||||
shared_ptr <Volume> volume = OpenVolume (volumePath, preserveTimestamps, password, keyfiles);
|
shared_ptr <Volume> volume = OpenVolume (volumePath, preserveTimestamps, password, keyfiles);
|
||||||
ChangePassword (volume, newPassword, newKeyfiles, newPkcs5Kdf);
|
ChangePassword (volume, newPassword, newKeyfiles, newPkcs5Kdf, wipeCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CoreBase::CoalesceSlotNumberAndMountPoint (MountOptions &options) const
|
void CoreBase::CoalesceSlotNumberAndMountPoint (MountOptions &options) const
|
||||||
|
|||||||
+2
-3
@@ -28,8 +28,8 @@ namespace VeraCrypt
|
|||||||
public:
|
public:
|
||||||
virtual ~CoreBase ();
|
virtual ~CoreBase ();
|
||||||
|
|
||||||
virtual void ChangePassword (shared_ptr <Volume> openVolume, shared_ptr <VolumePassword> newPassword, shared_ptr <KeyfileList> newKeyfiles, shared_ptr <Pkcs5Kdf> newPkcs5Kdf = shared_ptr <Pkcs5Kdf> ()) const;
|
virtual void ChangePassword (shared_ptr <Volume> openVolume, shared_ptr <VolumePassword> newPassword, shared_ptr <KeyfileList> newKeyfiles, shared_ptr <Pkcs5Kdf> newPkcs5Kdf = shared_ptr <Pkcs5Kdf> (), int wipeCount = PRAND_HEADER_WIPE_PASSES) const;
|
||||||
virtual void ChangePassword (shared_ptr <VolumePath> volumePath, bool preserveTimestamps, shared_ptr <VolumePassword> password, shared_ptr <KeyfileList> keyfiles, shared_ptr <VolumePassword> newPassword, shared_ptr <KeyfileList> newKeyfiles, shared_ptr <Pkcs5Kdf> newPkcs5Kdf = shared_ptr <Pkcs5Kdf> ()) const;
|
virtual void ChangePassword (shared_ptr <VolumePath> volumePath, bool preserveTimestamps, shared_ptr <VolumePassword> password, shared_ptr <KeyfileList> keyfiles, shared_ptr <VolumePassword> newPassword, shared_ptr <KeyfileList> newKeyfiles, shared_ptr <Pkcs5Kdf> newPkcs5Kdf = shared_ptr <Pkcs5Kdf> (), int wipeCount = PRAND_HEADER_WIPE_PASSES) const;
|
||||||
virtual void CheckFilesystem (shared_ptr <VolumeInfo> mountedVolume, bool repair = false) const = 0;
|
virtual void CheckFilesystem (shared_ptr <VolumeInfo> mountedVolume, bool repair = false) const = 0;
|
||||||
virtual void CoalesceSlotNumberAndMountPoint (MountOptions &options) const;
|
virtual void CoalesceSlotNumberAndMountPoint (MountOptions &options) const;
|
||||||
virtual void CreateKeyfile (const FilePath &keyfilePath) const;
|
virtual void CreateKeyfile (const FilePath &keyfilePath) const;
|
||||||
@@ -80,7 +80,6 @@ namespace VeraCrypt
|
|||||||
protected:
|
protected:
|
||||||
CoreBase ();
|
CoreBase ();
|
||||||
|
|
||||||
static const int SecureWipePassCount = PRAND_DISK_WIPE_PASSES;
|
|
||||||
bool DeviceChangeInProgress;
|
bool DeviceChangeInProgress;
|
||||||
FilePath ApplicationExecutablePath;
|
FilePath ApplicationExecutablePath;
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,6 @@
|
|||||||
#include "CoreLinux.h"
|
#include "CoreLinux.h"
|
||||||
#include "Platform/SystemInfo.h"
|
#include "Platform/SystemInfo.h"
|
||||||
#include "Platform/TextReader.h"
|
#include "Platform/TextReader.h"
|
||||||
#include "Volume/EncryptionModeLRW.h"
|
|
||||||
#include "Volume/EncryptionModeXTS.h"
|
#include "Volume/EncryptionModeXTS.h"
|
||||||
#include "Driver/Fuse/FuseService.h"
|
#include "Driver/Fuse/FuseService.h"
|
||||||
#include "Core/Unix/CoreServiceProxy.h"
|
#include "Core/Unix/CoreServiceProxy.h"
|
||||||
@@ -290,10 +289,9 @@ namespace VeraCrypt
|
|||||||
void CoreLinux::MountVolumeNative (shared_ptr <Volume> volume, MountOptions &options, const DirectoryPath &auxMountPoint) const
|
void CoreLinux::MountVolumeNative (shared_ptr <Volume> volume, MountOptions &options, const DirectoryPath &auxMountPoint) const
|
||||||
{
|
{
|
||||||
bool xts = (typeid (*volume->GetEncryptionMode()) == typeid (EncryptionModeXTS));
|
bool xts = (typeid (*volume->GetEncryptionMode()) == typeid (EncryptionModeXTS));
|
||||||
bool lrw = (typeid (*volume->GetEncryptionMode()) == typeid (EncryptionModeLRW));
|
|
||||||
|
|
||||||
if (options.NoKernelCrypto
|
if (options.NoKernelCrypto
|
||||||
|| (!xts && (!lrw || volume->GetEncryptionAlgorithm()->GetCiphers().size() > 1 || volume->GetEncryptionAlgorithm()->GetMinBlockSize() != 16))
|
|| !xts
|
||||||
|| volume->GetProtectionType() == VolumeProtection::HiddenVolumeReadOnly)
|
|| volume->GetProtectionType() == VolumeProtection::HiddenVolumeReadOnly)
|
||||||
{
|
{
|
||||||
throw NotApplicable (SRC_POS);
|
throw NotApplicable (SRC_POS);
|
||||||
@@ -372,9 +370,6 @@ namespace VeraCrypt
|
|||||||
sprintf ((char *) hexStr.Ptr(), "%02x", (int) cipherKey[i]);
|
sprintf ((char *) hexStr.Ptr(), "%02x", (int) cipherKey[i]);
|
||||||
dmCreateArgsBuf.GetRange (keyArgOffset + i * 2, 2).CopyFrom (hexStr.GetRange (0, 2));
|
dmCreateArgsBuf.GetRange (keyArgOffset + i * 2, 2).CopyFrom (hexStr.GetRange (0, 2));
|
||||||
|
|
||||||
if (lrw && i >= 16)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
sprintf ((char *) hexStr.Ptr(), "%02x", (int) secondaryKey[i]);
|
sprintf ((char *) hexStr.Ptr(), "%02x", (int) secondaryKey[i]);
|
||||||
dmCreateArgsBuf.GetRange (keyArgOffset + cipherKey.Size() * 2 + i * 2, 2).CopyFrom (hexStr.GetRange (0, 2));
|
dmCreateArgsBuf.GetRange (keyArgOffset + cipherKey.Size() * 2 + i * 2, 2).CopyFrom (hexStr.GetRange (0, 2));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,7 @@
|
|||||||
#include <sys/sysctl.h>
|
#include <sys/sysctl.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/wait.h>
|
#include <sys/wait.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
#include "CoreMacOSX.h"
|
#include "CoreMacOSX.h"
|
||||||
#include "Driver/Fuse/FuseService.h"
|
#include "Driver/Fuse/FuseService.h"
|
||||||
#include "Core/Unix/CoreServiceProxy.h"
|
#include "Core/Unix/CoreServiceProxy.h"
|
||||||
@@ -111,9 +112,29 @@ namespace VeraCrypt
|
|||||||
// Check FUSE version
|
// Check FUSE version
|
||||||
char fuseVersionString[MAXHOSTNAMELEN + 1] = { 0 };
|
char fuseVersionString[MAXHOSTNAMELEN + 1] = { 0 };
|
||||||
size_t fuseVersionStringLength = MAXHOSTNAMELEN;
|
size_t fuseVersionStringLength = MAXHOSTNAMELEN;
|
||||||
|
int status;
|
||||||
|
bool bIsOSXFuse = false;
|
||||||
|
|
||||||
if (sysctlbyname ("macfuse.version.number", fuseVersionString, &fuseVersionStringLength, NULL, 0) != 0)
|
if ((status = sysctlbyname ("macfuse.version.number", fuseVersionString, &fuseVersionStringLength, NULL, 0)) != 0)
|
||||||
throw HigherFuseVersionRequired (SRC_POS);
|
{
|
||||||
|
fuseVersionStringLength = MAXHOSTNAMELEN;
|
||||||
|
if ((status = sysctlbyname ("osxfuse.version.number", fuseVersionString, &fuseVersionStringLength, NULL, 0)) != 0)
|
||||||
|
{
|
||||||
|
throw HigherFuseVersionRequired (SRC_POS);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// look for compatibility mode
|
||||||
|
struct stat sb;
|
||||||
|
if ((0 == stat("/usr/local/lib/libfuse.dylib", &sb)) && (0 == stat("/Library/Frameworks/MacFUSE.framework/MacFUSE", &sb)))
|
||||||
|
{
|
||||||
|
bIsOSXFuse = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
throw HigherFuseVersionRequired (SRC_POS);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
vector <string> fuseVersion = StringConverter::Split (string (fuseVersionString), ".");
|
vector <string> fuseVersion = StringConverter::Split (string (fuseVersionString), ".");
|
||||||
if (fuseVersion.size() < 2)
|
if (fuseVersion.size() < 2)
|
||||||
@@ -122,7 +143,12 @@ namespace VeraCrypt
|
|||||||
uint32 fuseVersionMajor = StringConverter::ToUInt32 (fuseVersion[0]);
|
uint32 fuseVersionMajor = StringConverter::ToUInt32 (fuseVersion[0]);
|
||||||
uint32 fuseVersionMinor = StringConverter::ToUInt32 (fuseVersion[1]);
|
uint32 fuseVersionMinor = StringConverter::ToUInt32 (fuseVersion[1]);
|
||||||
|
|
||||||
if (fuseVersionMajor < 1 || (fuseVersionMajor == 1 && fuseVersionMinor < 3))
|
if (bIsOSXFuse)
|
||||||
|
{
|
||||||
|
if (fuseVersionMajor < 2 || (fuseVersionMajor == 2 && fuseVersionMinor < 5))
|
||||||
|
throw HigherFuseVersionRequired (SRC_POS);
|
||||||
|
}
|
||||||
|
else if (fuseVersionMajor < 1 || (fuseVersionMajor == 1 && fuseVersionMinor < 3))
|
||||||
throw HigherFuseVersionRequired (SRC_POS);
|
throw HigherFuseVersionRequired (SRC_POS);
|
||||||
|
|
||||||
// Mount volume image
|
// Mount volume image
|
||||||
|
|||||||
@@ -213,7 +213,7 @@ namespace VeraCrypt
|
|||||||
|
|
||||||
if (options->SectorSize < TC_MIN_VOLUME_SECTOR_SIZE
|
if (options->SectorSize < TC_MIN_VOLUME_SECTOR_SIZE
|
||||||
|| options->SectorSize > TC_MAX_VOLUME_SECTOR_SIZE
|
|| options->SectorSize > TC_MAX_VOLUME_SECTOR_SIZE
|
||||||
#if !defined (TC_LINUX)
|
#if !defined (TC_LINUX) && !defined (TC_MACOSX)
|
||||||
|| options->SectorSize != TC_SECTOR_SIZE_LEGACY
|
|| options->SectorSize != TC_SECTOR_SIZE_LEGACY
|
||||||
#endif
|
#endif
|
||||||
|| options->SectorSize % ENCRYPTION_DATA_UNIT_SIZE != 0)
|
|| options->SectorSize % ENCRYPTION_DATA_UNIT_SIZE != 0)
|
||||||
|
|||||||
@@ -1,382 +0,0 @@
|
|||||||
/* Deprecated/legacy */
|
|
||||||
|
|
||||||
|
|
||||||
// blowfish.cpp - written and placed in the public domain by Wei Dai
|
|
||||||
|
|
||||||
/* Adapted for TrueCrypt */
|
|
||||||
|
|
||||||
#include <memory.h>
|
|
||||||
#include "Common/Tcdefs.h"
|
|
||||||
#include "Common/Endian.h"
|
|
||||||
#include "Blowfish.h"
|
|
||||||
|
|
||||||
#define word32 unsigned __int32
|
|
||||||
#define byte unsigned __int8
|
|
||||||
#define GETBYTE(x, y) (unsigned int)(byte)((x)>>(8*(y)))
|
|
||||||
#define ROUNDS 16
|
|
||||||
|
|
||||||
static const unsigned __int32 p_init[16+2] =
|
|
||||||
{
|
|
||||||
608135816U, 2242054355U, 320440878U, 57701188U,
|
|
||||||
2752067618U, 698298832U, 137296536U, 3964562569U,
|
|
||||||
1160258022U, 953160567U, 3193202383U, 887688300U,
|
|
||||||
3232508343U, 3380367581U, 1065670069U, 3041331479U,
|
|
||||||
2450970073U, 2306472731U
|
|
||||||
} ;
|
|
||||||
|
|
||||||
static const unsigned __int32 s_init[4*256] = {
|
|
||||||
3509652390U, 2564797868U, 805139163U, 3491422135U,
|
|
||||||
3101798381U, 1780907670U, 3128725573U, 4046225305U,
|
|
||||||
614570311U, 3012652279U, 134345442U, 2240740374U,
|
|
||||||
1667834072U, 1901547113U, 2757295779U, 4103290238U,
|
|
||||||
227898511U, 1921955416U, 1904987480U, 2182433518U,
|
|
||||||
2069144605U, 3260701109U, 2620446009U, 720527379U,
|
|
||||||
3318853667U, 677414384U, 3393288472U, 3101374703U,
|
|
||||||
2390351024U, 1614419982U, 1822297739U, 2954791486U,
|
|
||||||
3608508353U, 3174124327U, 2024746970U, 1432378464U,
|
|
||||||
3864339955U, 2857741204U, 1464375394U, 1676153920U,
|
|
||||||
1439316330U, 715854006U, 3033291828U, 289532110U,
|
|
||||||
2706671279U, 2087905683U, 3018724369U, 1668267050U,
|
|
||||||
732546397U, 1947742710U, 3462151702U, 2609353502U,
|
|
||||||
2950085171U, 1814351708U, 2050118529U, 680887927U,
|
|
||||||
999245976U, 1800124847U, 3300911131U, 1713906067U,
|
|
||||||
1641548236U, 4213287313U, 1216130144U, 1575780402U,
|
|
||||||
4018429277U, 3917837745U, 3693486850U, 3949271944U,
|
|
||||||
596196993U, 3549867205U, 258830323U, 2213823033U,
|
|
||||||
772490370U, 2760122372U, 1774776394U, 2652871518U,
|
|
||||||
566650946U, 4142492826U, 1728879713U, 2882767088U,
|
|
||||||
1783734482U, 3629395816U, 2517608232U, 2874225571U,
|
|
||||||
1861159788U, 326777828U, 3124490320U, 2130389656U,
|
|
||||||
2716951837U, 967770486U, 1724537150U, 2185432712U,
|
|
||||||
2364442137U, 1164943284U, 2105845187U, 998989502U,
|
|
||||||
3765401048U, 2244026483U, 1075463327U, 1455516326U,
|
|
||||||
1322494562U, 910128902U, 469688178U, 1117454909U,
|
|
||||||
936433444U, 3490320968U, 3675253459U, 1240580251U,
|
|
||||||
122909385U, 2157517691U, 634681816U, 4142456567U,
|
|
||||||
3825094682U, 3061402683U, 2540495037U, 79693498U,
|
|
||||||
3249098678U, 1084186820U, 1583128258U, 426386531U,
|
|
||||||
1761308591U, 1047286709U, 322548459U, 995290223U,
|
|
||||||
1845252383U, 2603652396U, 3431023940U, 2942221577U,
|
|
||||||
3202600964U, 3727903485U, 1712269319U, 422464435U,
|
|
||||||
3234572375U, 1170764815U, 3523960633U, 3117677531U,
|
|
||||||
1434042557U, 442511882U, 3600875718U, 1076654713U,
|
|
||||||
1738483198U, 4213154764U, 2393238008U, 3677496056U,
|
|
||||||
1014306527U, 4251020053U, 793779912U, 2902807211U,
|
|
||||||
842905082U, 4246964064U, 1395751752U, 1040244610U,
|
|
||||||
2656851899U, 3396308128U, 445077038U, 3742853595U,
|
|
||||||
3577915638U, 679411651U, 2892444358U, 2354009459U,
|
|
||||||
1767581616U, 3150600392U, 3791627101U, 3102740896U,
|
|
||||||
284835224U, 4246832056U, 1258075500U, 768725851U,
|
|
||||||
2589189241U, 3069724005U, 3532540348U, 1274779536U,
|
|
||||||
3789419226U, 2764799539U, 1660621633U, 3471099624U,
|
|
||||||
4011903706U, 913787905U, 3497959166U, 737222580U,
|
|
||||||
2514213453U, 2928710040U, 3937242737U, 1804850592U,
|
|
||||||
3499020752U, 2949064160U, 2386320175U, 2390070455U,
|
|
||||||
2415321851U, 4061277028U, 2290661394U, 2416832540U,
|
|
||||||
1336762016U, 1754252060U, 3520065937U, 3014181293U,
|
|
||||||
791618072U, 3188594551U, 3933548030U, 2332172193U,
|
|
||||||
3852520463U, 3043980520U, 413987798U, 3465142937U,
|
|
||||||
3030929376U, 4245938359U, 2093235073U, 3534596313U,
|
|
||||||
375366246U, 2157278981U, 2479649556U, 555357303U,
|
|
||||||
3870105701U, 2008414854U, 3344188149U, 4221384143U,
|
|
||||||
3956125452U, 2067696032U, 3594591187U, 2921233993U,
|
|
||||||
2428461U, 544322398U, 577241275U, 1471733935U,
|
|
||||||
610547355U, 4027169054U, 1432588573U, 1507829418U,
|
|
||||||
2025931657U, 3646575487U, 545086370U, 48609733U,
|
|
||||||
2200306550U, 1653985193U, 298326376U, 1316178497U,
|
|
||||||
3007786442U, 2064951626U, 458293330U, 2589141269U,
|
|
||||||
3591329599U, 3164325604U, 727753846U, 2179363840U,
|
|
||||||
146436021U, 1461446943U, 4069977195U, 705550613U,
|
|
||||||
3059967265U, 3887724982U, 4281599278U, 3313849956U,
|
|
||||||
1404054877U, 2845806497U, 146425753U, 1854211946U,
|
|
||||||
|
|
||||||
1266315497U, 3048417604U, 3681880366U, 3289982499U,
|
|
||||||
2909710000U, 1235738493U, 2632868024U, 2414719590U,
|
|
||||||
3970600049U, 1771706367U, 1449415276U, 3266420449U,
|
|
||||||
422970021U, 1963543593U, 2690192192U, 3826793022U,
|
|
||||||
1062508698U, 1531092325U, 1804592342U, 2583117782U,
|
|
||||||
2714934279U, 4024971509U, 1294809318U, 4028980673U,
|
|
||||||
1289560198U, 2221992742U, 1669523910U, 35572830U,
|
|
||||||
157838143U, 1052438473U, 1016535060U, 1802137761U,
|
|
||||||
1753167236U, 1386275462U, 3080475397U, 2857371447U,
|
|
||||||
1040679964U, 2145300060U, 2390574316U, 1461121720U,
|
|
||||||
2956646967U, 4031777805U, 4028374788U, 33600511U,
|
|
||||||
2920084762U, 1018524850U, 629373528U, 3691585981U,
|
|
||||||
3515945977U, 2091462646U, 2486323059U, 586499841U,
|
|
||||||
988145025U, 935516892U, 3367335476U, 2599673255U,
|
|
||||||
2839830854U, 265290510U, 3972581182U, 2759138881U,
|
|
||||||
3795373465U, 1005194799U, 847297441U, 406762289U,
|
|
||||||
1314163512U, 1332590856U, 1866599683U, 4127851711U,
|
|
||||||
750260880U, 613907577U, 1450815602U, 3165620655U,
|
|
||||||
3734664991U, 3650291728U, 3012275730U, 3704569646U,
|
|
||||||
1427272223U, 778793252U, 1343938022U, 2676280711U,
|
|
||||||
2052605720U, 1946737175U, 3164576444U, 3914038668U,
|
|
||||||
3967478842U, 3682934266U, 1661551462U, 3294938066U,
|
|
||||||
4011595847U, 840292616U, 3712170807U, 616741398U,
|
|
||||||
312560963U, 711312465U, 1351876610U, 322626781U,
|
|
||||||
1910503582U, 271666773U, 2175563734U, 1594956187U,
|
|
||||||
70604529U, 3617834859U, 1007753275U, 1495573769U,
|
|
||||||
4069517037U, 2549218298U, 2663038764U, 504708206U,
|
|
||||||
2263041392U, 3941167025U, 2249088522U, 1514023603U,
|
|
||||||
1998579484U, 1312622330U, 694541497U, 2582060303U,
|
|
||||||
2151582166U, 1382467621U, 776784248U, 2618340202U,
|
|
||||||
3323268794U, 2497899128U, 2784771155U, 503983604U,
|
|
||||||
4076293799U, 907881277U, 423175695U, 432175456U,
|
|
||||||
1378068232U, 4145222326U, 3954048622U, 3938656102U,
|
|
||||||
3820766613U, 2793130115U, 2977904593U, 26017576U,
|
|
||||||
3274890735U, 3194772133U, 1700274565U, 1756076034U,
|
|
||||||
4006520079U, 3677328699U, 720338349U, 1533947780U,
|
|
||||||
354530856U, 688349552U, 3973924725U, 1637815568U,
|
|
||||||
332179504U, 3949051286U, 53804574U, 2852348879U,
|
|
||||||
3044236432U, 1282449977U, 3583942155U, 3416972820U,
|
|
||||||
4006381244U, 1617046695U, 2628476075U, 3002303598U,
|
|
||||||
1686838959U, 431878346U, 2686675385U, 1700445008U,
|
|
||||||
1080580658U, 1009431731U, 832498133U, 3223435511U,
|
|
||||||
2605976345U, 2271191193U, 2516031870U, 1648197032U,
|
|
||||||
4164389018U, 2548247927U, 300782431U, 375919233U,
|
|
||||||
238389289U, 3353747414U, 2531188641U, 2019080857U,
|
|
||||||
1475708069U, 455242339U, 2609103871U, 448939670U,
|
|
||||||
3451063019U, 1395535956U, 2413381860U, 1841049896U,
|
|
||||||
1491858159U, 885456874U, 4264095073U, 4001119347U,
|
|
||||||
1565136089U, 3898914787U, 1108368660U, 540939232U,
|
|
||||||
1173283510U, 2745871338U, 3681308437U, 4207628240U,
|
|
||||||
3343053890U, 4016749493U, 1699691293U, 1103962373U,
|
|
||||||
3625875870U, 2256883143U, 3830138730U, 1031889488U,
|
|
||||||
3479347698U, 1535977030U, 4236805024U, 3251091107U,
|
|
||||||
2132092099U, 1774941330U, 1199868427U, 1452454533U,
|
|
||||||
157007616U, 2904115357U, 342012276U, 595725824U,
|
|
||||||
1480756522U, 206960106U, 497939518U, 591360097U,
|
|
||||||
863170706U, 2375253569U, 3596610801U, 1814182875U,
|
|
||||||
2094937945U, 3421402208U, 1082520231U, 3463918190U,
|
|
||||||
2785509508U, 435703966U, 3908032597U, 1641649973U,
|
|
||||||
2842273706U, 3305899714U, 1510255612U, 2148256476U,
|
|
||||||
2655287854U, 3276092548U, 4258621189U, 236887753U,
|
|
||||||
3681803219U, 274041037U, 1734335097U, 3815195456U,
|
|
||||||
3317970021U, 1899903192U, 1026095262U, 4050517792U,
|
|
||||||
356393447U, 2410691914U, 3873677099U, 3682840055U,
|
|
||||||
|
|
||||||
3913112168U, 2491498743U, 4132185628U, 2489919796U,
|
|
||||||
1091903735U, 1979897079U, 3170134830U, 3567386728U,
|
|
||||||
3557303409U, 857797738U, 1136121015U, 1342202287U,
|
|
||||||
507115054U, 2535736646U, 337727348U, 3213592640U,
|
|
||||||
1301675037U, 2528481711U, 1895095763U, 1721773893U,
|
|
||||||
3216771564U, 62756741U, 2142006736U, 835421444U,
|
|
||||||
2531993523U, 1442658625U, 3659876326U, 2882144922U,
|
|
||||||
676362277U, 1392781812U, 170690266U, 3921047035U,
|
|
||||||
1759253602U, 3611846912U, 1745797284U, 664899054U,
|
|
||||||
1329594018U, 3901205900U, 3045908486U, 2062866102U,
|
|
||||||
2865634940U, 3543621612U, 3464012697U, 1080764994U,
|
|
||||||
553557557U, 3656615353U, 3996768171U, 991055499U,
|
|
||||||
499776247U, 1265440854U, 648242737U, 3940784050U,
|
|
||||||
980351604U, 3713745714U, 1749149687U, 3396870395U,
|
|
||||||
4211799374U, 3640570775U, 1161844396U, 3125318951U,
|
|
||||||
1431517754U, 545492359U, 4268468663U, 3499529547U,
|
|
||||||
1437099964U, 2702547544U, 3433638243U, 2581715763U,
|
|
||||||
2787789398U, 1060185593U, 1593081372U, 2418618748U,
|
|
||||||
4260947970U, 69676912U, 2159744348U, 86519011U,
|
|
||||||
2512459080U, 3838209314U, 1220612927U, 3339683548U,
|
|
||||||
133810670U, 1090789135U, 1078426020U, 1569222167U,
|
|
||||||
845107691U, 3583754449U, 4072456591U, 1091646820U,
|
|
||||||
628848692U, 1613405280U, 3757631651U, 526609435U,
|
|
||||||
236106946U, 48312990U, 2942717905U, 3402727701U,
|
|
||||||
1797494240U, 859738849U, 992217954U, 4005476642U,
|
|
||||||
2243076622U, 3870952857U, 3732016268U, 765654824U,
|
|
||||||
3490871365U, 2511836413U, 1685915746U, 3888969200U,
|
|
||||||
1414112111U, 2273134842U, 3281911079U, 4080962846U,
|
|
||||||
172450625U, 2569994100U, 980381355U, 4109958455U,
|
|
||||||
2819808352U, 2716589560U, 2568741196U, 3681446669U,
|
|
||||||
3329971472U, 1835478071U, 660984891U, 3704678404U,
|
|
||||||
4045999559U, 3422617507U, 3040415634U, 1762651403U,
|
|
||||||
1719377915U, 3470491036U, 2693910283U, 3642056355U,
|
|
||||||
3138596744U, 1364962596U, 2073328063U, 1983633131U,
|
|
||||||
926494387U, 3423689081U, 2150032023U, 4096667949U,
|
|
||||||
1749200295U, 3328846651U, 309677260U, 2016342300U,
|
|
||||||
1779581495U, 3079819751U, 111262694U, 1274766160U,
|
|
||||||
443224088U, 298511866U, 1025883608U, 3806446537U,
|
|
||||||
1145181785U, 168956806U, 3641502830U, 3584813610U,
|
|
||||||
1689216846U, 3666258015U, 3200248200U, 1692713982U,
|
|
||||||
2646376535U, 4042768518U, 1618508792U, 1610833997U,
|
|
||||||
3523052358U, 4130873264U, 2001055236U, 3610705100U,
|
|
||||||
2202168115U, 4028541809U, 2961195399U, 1006657119U,
|
|
||||||
2006996926U, 3186142756U, 1430667929U, 3210227297U,
|
|
||||||
1314452623U, 4074634658U, 4101304120U, 2273951170U,
|
|
||||||
1399257539U, 3367210612U, 3027628629U, 1190975929U,
|
|
||||||
2062231137U, 2333990788U, 2221543033U, 2438960610U,
|
|
||||||
1181637006U, 548689776U, 2362791313U, 3372408396U,
|
|
||||||
3104550113U, 3145860560U, 296247880U, 1970579870U,
|
|
||||||
3078560182U, 3769228297U, 1714227617U, 3291629107U,
|
|
||||||
3898220290U, 166772364U, 1251581989U, 493813264U,
|
|
||||||
448347421U, 195405023U, 2709975567U, 677966185U,
|
|
||||||
3703036547U, 1463355134U, 2715995803U, 1338867538U,
|
|
||||||
1343315457U, 2802222074U, 2684532164U, 233230375U,
|
|
||||||
2599980071U, 2000651841U, 3277868038U, 1638401717U,
|
|
||||||
4028070440U, 3237316320U, 6314154U, 819756386U,
|
|
||||||
300326615U, 590932579U, 1405279636U, 3267499572U,
|
|
||||||
3150704214U, 2428286686U, 3959192993U, 3461946742U,
|
|
||||||
1862657033U, 1266418056U, 963775037U, 2089974820U,
|
|
||||||
2263052895U, 1917689273U, 448879540U, 3550394620U,
|
|
||||||
3981727096U, 150775221U, 3627908307U, 1303187396U,
|
|
||||||
508620638U, 2975983352U, 2726630617U, 1817252668U,
|
|
||||||
1876281319U, 1457606340U, 908771278U, 3720792119U,
|
|
||||||
3617206836U, 2455994898U, 1729034894U, 1080033504U,
|
|
||||||
|
|
||||||
976866871U, 3556439503U, 2881648439U, 1522871579U,
|
|
||||||
1555064734U, 1336096578U, 3548522304U, 2579274686U,
|
|
||||||
3574697629U, 3205460757U, 3593280638U, 3338716283U,
|
|
||||||
3079412587U, 564236357U, 2993598910U, 1781952180U,
|
|
||||||
1464380207U, 3163844217U, 3332601554U, 1699332808U,
|
|
||||||
1393555694U, 1183702653U, 3581086237U, 1288719814U,
|
|
||||||
691649499U, 2847557200U, 2895455976U, 3193889540U,
|
|
||||||
2717570544U, 1781354906U, 1676643554U, 2592534050U,
|
|
||||||
3230253752U, 1126444790U, 2770207658U, 2633158820U,
|
|
||||||
2210423226U, 2615765581U, 2414155088U, 3127139286U,
|
|
||||||
673620729U, 2805611233U, 1269405062U, 4015350505U,
|
|
||||||
3341807571U, 4149409754U, 1057255273U, 2012875353U,
|
|
||||||
2162469141U, 2276492801U, 2601117357U, 993977747U,
|
|
||||||
3918593370U, 2654263191U, 753973209U, 36408145U,
|
|
||||||
2530585658U, 25011837U, 3520020182U, 2088578344U,
|
|
||||||
530523599U, 2918365339U, 1524020338U, 1518925132U,
|
|
||||||
3760827505U, 3759777254U, 1202760957U, 3985898139U,
|
|
||||||
3906192525U, 674977740U, 4174734889U, 2031300136U,
|
|
||||||
2019492241U, 3983892565U, 4153806404U, 3822280332U,
|
|
||||||
352677332U, 2297720250U, 60907813U, 90501309U,
|
|
||||||
3286998549U, 1016092578U, 2535922412U, 2839152426U,
|
|
||||||
457141659U, 509813237U, 4120667899U, 652014361U,
|
|
||||||
1966332200U, 2975202805U, 55981186U, 2327461051U,
|
|
||||||
676427537U, 3255491064U, 2882294119U, 3433927263U,
|
|
||||||
1307055953U, 942726286U, 933058658U, 2468411793U,
|
|
||||||
3933900994U, 4215176142U, 1361170020U, 2001714738U,
|
|
||||||
2830558078U, 3274259782U, 1222529897U, 1679025792U,
|
|
||||||
2729314320U, 3714953764U, 1770335741U, 151462246U,
|
|
||||||
3013232138U, 1682292957U, 1483529935U, 471910574U,
|
|
||||||
1539241949U, 458788160U, 3436315007U, 1807016891U,
|
|
||||||
3718408830U, 978976581U, 1043663428U, 3165965781U,
|
|
||||||
1927990952U, 4200891579U, 2372276910U, 3208408903U,
|
|
||||||
3533431907U, 1412390302U, 2931980059U, 4132332400U,
|
|
||||||
1947078029U, 3881505623U, 4168226417U, 2941484381U,
|
|
||||||
1077988104U, 1320477388U, 886195818U, 18198404U,
|
|
||||||
3786409000U, 2509781533U, 112762804U, 3463356488U,
|
|
||||||
1866414978U, 891333506U, 18488651U, 661792760U,
|
|
||||||
1628790961U, 3885187036U, 3141171499U, 876946877U,
|
|
||||||
2693282273U, 1372485963U, 791857591U, 2686433993U,
|
|
||||||
3759982718U, 3167212022U, 3472953795U, 2716379847U,
|
|
||||||
445679433U, 3561995674U, 3504004811U, 3574258232U,
|
|
||||||
54117162U, 3331405415U, 2381918588U, 3769707343U,
|
|
||||||
4154350007U, 1140177722U, 4074052095U, 668550556U,
|
|
||||||
3214352940U, 367459370U, 261225585U, 2610173221U,
|
|
||||||
4209349473U, 3468074219U, 3265815641U, 314222801U,
|
|
||||||
3066103646U, 3808782860U, 282218597U, 3406013506U,
|
|
||||||
3773591054U, 379116347U, 1285071038U, 846784868U,
|
|
||||||
2669647154U, 3771962079U, 3550491691U, 2305946142U,
|
|
||||||
453669953U, 1268987020U, 3317592352U, 3279303384U,
|
|
||||||
3744833421U, 2610507566U, 3859509063U, 266596637U,
|
|
||||||
3847019092U, 517658769U, 3462560207U, 3443424879U,
|
|
||||||
370717030U, 4247526661U, 2224018117U, 4143653529U,
|
|
||||||
4112773975U, 2788324899U, 2477274417U, 1456262402U,
|
|
||||||
2901442914U, 1517677493U, 1846949527U, 2295493580U,
|
|
||||||
3734397586U, 2176403920U, 1280348187U, 1908823572U,
|
|
||||||
3871786941U, 846861322U, 1172426758U, 3287448474U,
|
|
||||||
3383383037U, 1655181056U, 3139813346U, 901632758U,
|
|
||||||
1897031941U, 2986607138U, 3066810236U, 3447102507U,
|
|
||||||
1393639104U, 373351379U, 950779232U, 625454576U,
|
|
||||||
3124240540U, 4148612726U, 2007998917U, 544563296U,
|
|
||||||
2244738638U, 2330496472U, 2058025392U, 1291430526U,
|
|
||||||
424198748U, 50039436U, 29584100U, 3605783033U,
|
|
||||||
2429876329U, 2791104160U, 1057563949U, 3255363231U,
|
|
||||||
3075367218U, 3463963227U, 1469046755U, 985887462U
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
// this version is only used to make pbox and sbox
|
|
||||||
static void crypt_block(BF_KEY *key, const word32 in[2], word32 out[2])
|
|
||||||
{
|
|
||||||
word32 left = in[0];
|
|
||||||
word32 right = in[1];
|
|
||||||
|
|
||||||
const word32 *const s=key->sbox;
|
|
||||||
const word32 *p=key->pbox;
|
|
||||||
|
|
||||||
unsigned i;
|
|
||||||
|
|
||||||
left ^= p[0];
|
|
||||||
|
|
||||||
for (i=0; i<ROUNDS/2; i++)
|
|
||||||
{
|
|
||||||
right ^= (((s[GETBYTE(left,3)] + s[256+GETBYTE(left,2)])
|
|
||||||
^ s[2*256+GETBYTE(left,1)]) + s[3*256+GETBYTE(left,0)])
|
|
||||||
^ p[2*i+1];
|
|
||||||
|
|
||||||
left ^= (((s[GETBYTE(right,3)] + s[256+GETBYTE(right,2)])
|
|
||||||
^ s[2*256+GETBYTE(right,1)]) + s[3*256+GETBYTE(right,0)])
|
|
||||||
^ p[2*i+2];
|
|
||||||
}
|
|
||||||
|
|
||||||
right ^= p[ROUNDS+1];
|
|
||||||
|
|
||||||
out[0] = right;
|
|
||||||
out[1] = left;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void BlowfishSetKey (BF_KEY *key, int keylength, unsigned char *key_string)
|
|
||||||
{
|
|
||||||
unsigned i, j=0, k;
|
|
||||||
word32 data, dspace[2] = {0, 0};
|
|
||||||
word32 *sbox = key->sbox;
|
|
||||||
word32 *pbox = key->pbox;
|
|
||||||
|
|
||||||
memcpy(pbox, p_init, sizeof(p_init));
|
|
||||||
memcpy(sbox, s_init, sizeof(s_init));
|
|
||||||
|
|
||||||
// Xor key string into encryption key vector
|
|
||||||
for (i=0 ; i<ROUNDS+2 ; ++i)
|
|
||||||
{
|
|
||||||
data = 0 ;
|
|
||||||
for (k=0 ; k<4 ; ++k )
|
|
||||||
data = (data << 8) | key_string[j++ % keylength];
|
|
||||||
pbox[i] ^= data;
|
|
||||||
}
|
|
||||||
|
|
||||||
crypt_block(key, dspace, pbox);
|
|
||||||
|
|
||||||
for (i=0; i<ROUNDS; i+=2)
|
|
||||||
crypt_block(key, pbox+i, pbox+i+2);
|
|
||||||
|
|
||||||
crypt_block(key, pbox+ROUNDS, sbox);
|
|
||||||
|
|
||||||
for (i=0; i<4*256-2; i+=2)
|
|
||||||
crypt_block(key, sbox+i, sbox+i+2);
|
|
||||||
|
|
||||||
for (i=0; i < ROUNDS+2; i++)
|
|
||||||
key->pbox_dec[ROUNDS+1-i] = pbox[i];
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void BlowfishEncryptLE (unsigned char *inBlock, unsigned char *outBlock, BF_KEY *key, int encrypt)
|
|
||||||
{
|
|
||||||
word32 left = LE32 (((word32 *) inBlock)[0]);
|
|
||||||
word32 right = LE32 (((word32 *) inBlock)[1]);
|
|
||||||
|
|
||||||
const word32 *const s = key->sbox;
|
|
||||||
const word32 * p = encrypt ? key->pbox : key->pbox_dec;
|
|
||||||
|
|
||||||
unsigned i;
|
|
||||||
|
|
||||||
left ^= p[0];
|
|
||||||
|
|
||||||
for (i=0; i<ROUNDS/2; i++)
|
|
||||||
{
|
|
||||||
right ^= (((s[GETBYTE(left,3)] + s[256+GETBYTE(left,2)])
|
|
||||||
^ s[2*256+GETBYTE(left,1)]) + s[3*256+GETBYTE(left,0)])
|
|
||||||
^ p[2*i+1];
|
|
||||||
|
|
||||||
left ^= (((s[GETBYTE(right,3)] + s[256+GETBYTE(right,2)])
|
|
||||||
^ s[2*256+GETBYTE(right,1)]) + s[3*256+GETBYTE(right,0)])
|
|
||||||
^ p[2*i+2];
|
|
||||||
}
|
|
||||||
|
|
||||||
right ^= p[ROUNDS+1];
|
|
||||||
|
|
||||||
((word32 *) outBlock)[0] = LE32 (right);
|
|
||||||
((word32 *) outBlock)[1] = LE32 (left);
|
|
||||||
}
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
/* Deprecated/legacy */
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef TC_HEADER_Crypto_Blowfish
|
|
||||||
#define TC_HEADER_Crypto_Blowfish
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef struct BF_KEY_STRUCT
|
|
||||||
{
|
|
||||||
unsigned __int32 pbox[18];
|
|
||||||
unsigned __int32 pbox_dec[18];
|
|
||||||
unsigned __int32 sbox[4*256];
|
|
||||||
} BF_KEY;
|
|
||||||
|
|
||||||
void BlowfishSetKey (BF_KEY *key, int keylength, unsigned char *key_string);
|
|
||||||
void BlowfishEncryptLE (unsigned char *in, unsigned char *out, BF_KEY *ks, int encrypt);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif // TC_HEADER_Crypto_Blowfish
|
|
||||||
@@ -1,703 +0,0 @@
|
|||||||
/* Deprecated/legacy */
|
|
||||||
|
|
||||||
|
|
||||||
// cast.cpp - written and placed in the public domain by Wei Dai and Leonard Janke
|
|
||||||
// based on Steve Reid's public domain cast.c
|
|
||||||
|
|
||||||
/* Adapted for TrueCrypt */
|
|
||||||
|
|
||||||
#include <memory.h>
|
|
||||||
#include "Common/Tcdefs.h"
|
|
||||||
#include "Common/Endian.h"
|
|
||||||
#include "Cast.h"
|
|
||||||
|
|
||||||
#define word32 unsigned __int32
|
|
||||||
#define byte unsigned __int8
|
|
||||||
#define GETBYTE(x, y) (unsigned int)(byte)((x)>>(8*(y)))
|
|
||||||
|
|
||||||
/* Macros to access 8-bit bytes out of a 32-bit word */
|
|
||||||
#define U8a(x) GETBYTE(x,3)
|
|
||||||
#define U8b(x) GETBYTE(x,2)
|
|
||||||
#define U8c(x) GETBYTE(x,1)
|
|
||||||
#define U8d(x) GETBYTE(x,0)
|
|
||||||
|
|
||||||
static word32 rotlVariable (word32 x, unsigned int y)
|
|
||||||
{
|
|
||||||
return (word32)((x<<y) | (x>>(sizeof(word32)*8-y)));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// CAST S-boxes
|
|
||||||
|
|
||||||
static const word32 S[8][256] = {
|
|
||||||
{
|
|
||||||
0x30FB40D4UL, 0x9FA0FF0BUL, 0x6BECCD2FUL, 0x3F258C7AUL,
|
|
||||||
0x1E213F2FUL, 0x9C004DD3UL, 0x6003E540UL, 0xCF9FC949UL,
|
|
||||||
0xBFD4AF27UL, 0x88BBBDB5UL, 0xE2034090UL, 0x98D09675UL,
|
|
||||||
0x6E63A0E0UL, 0x15C361D2UL, 0xC2E7661DUL, 0x22D4FF8EUL,
|
|
||||||
0x28683B6FUL, 0xC07FD059UL, 0xFF2379C8UL, 0x775F50E2UL,
|
|
||||||
0x43C340D3UL, 0xDF2F8656UL, 0x887CA41AUL, 0xA2D2BD2DUL,
|
|
||||||
0xA1C9E0D6UL, 0x346C4819UL, 0x61B76D87UL, 0x22540F2FUL,
|
|
||||||
0x2ABE32E1UL, 0xAA54166BUL, 0x22568E3AUL, 0xA2D341D0UL,
|
|
||||||
0x66DB40C8UL, 0xA784392FUL, 0x004DFF2FUL, 0x2DB9D2DEUL,
|
|
||||||
0x97943FACUL, 0x4A97C1D8UL, 0x527644B7UL, 0xB5F437A7UL,
|
|
||||||
0xB82CBAEFUL, 0xD751D159UL, 0x6FF7F0EDUL, 0x5A097A1FUL,
|
|
||||||
0x827B68D0UL, 0x90ECF52EUL, 0x22B0C054UL, 0xBC8E5935UL,
|
|
||||||
0x4B6D2F7FUL, 0x50BB64A2UL, 0xD2664910UL, 0xBEE5812DUL,
|
|
||||||
0xB7332290UL, 0xE93B159FUL, 0xB48EE411UL, 0x4BFF345DUL,
|
|
||||||
0xFD45C240UL, 0xAD31973FUL, 0xC4F6D02EUL, 0x55FC8165UL,
|
|
||||||
0xD5B1CAADUL, 0xA1AC2DAEUL, 0xA2D4B76DUL, 0xC19B0C50UL,
|
|
||||||
0x882240F2UL, 0x0C6E4F38UL, 0xA4E4BFD7UL, 0x4F5BA272UL,
|
|
||||||
0x564C1D2FUL, 0xC59C5319UL, 0xB949E354UL, 0xB04669FEUL,
|
|
||||||
0xB1B6AB8AUL, 0xC71358DDUL, 0x6385C545UL, 0x110F935DUL,
|
|
||||||
0x57538AD5UL, 0x6A390493UL, 0xE63D37E0UL, 0x2A54F6B3UL,
|
|
||||||
0x3A787D5FUL, 0x6276A0B5UL, 0x19A6FCDFUL, 0x7A42206AUL,
|
|
||||||
0x29F9D4D5UL, 0xF61B1891UL, 0xBB72275EUL, 0xAA508167UL,
|
|
||||||
0x38901091UL, 0xC6B505EBUL, 0x84C7CB8CUL, 0x2AD75A0FUL,
|
|
||||||
0x874A1427UL, 0xA2D1936BUL, 0x2AD286AFUL, 0xAA56D291UL,
|
|
||||||
0xD7894360UL, 0x425C750DUL, 0x93B39E26UL, 0x187184C9UL,
|
|
||||||
0x6C00B32DUL, 0x73E2BB14UL, 0xA0BEBC3CUL, 0x54623779UL,
|
|
||||||
0x64459EABUL, 0x3F328B82UL, 0x7718CF82UL, 0x59A2CEA6UL,
|
|
||||||
0x04EE002EUL, 0x89FE78E6UL, 0x3FAB0950UL, 0x325FF6C2UL,
|
|
||||||
0x81383F05UL, 0x6963C5C8UL, 0x76CB5AD6UL, 0xD49974C9UL,
|
|
||||||
0xCA180DCFUL, 0x380782D5UL, 0xC7FA5CF6UL, 0x8AC31511UL,
|
|
||||||
0x35E79E13UL, 0x47DA91D0UL, 0xF40F9086UL, 0xA7E2419EUL,
|
|
||||||
0x31366241UL, 0x051EF495UL, 0xAA573B04UL, 0x4A805D8DUL,
|
|
||||||
0x548300D0UL, 0x00322A3CUL, 0xBF64CDDFUL, 0xBA57A68EUL,
|
|
||||||
0x75C6372BUL, 0x50AFD341UL, 0xA7C13275UL, 0x915A0BF5UL,
|
|
||||||
0x6B54BFABUL, 0x2B0B1426UL, 0xAB4CC9D7UL, 0x449CCD82UL,
|
|
||||||
0xF7FBF265UL, 0xAB85C5F3UL, 0x1B55DB94UL, 0xAAD4E324UL,
|
|
||||||
0xCFA4BD3FUL, 0x2DEAA3E2UL, 0x9E204D02UL, 0xC8BD25ACUL,
|
|
||||||
0xEADF55B3UL, 0xD5BD9E98UL, 0xE31231B2UL, 0x2AD5AD6CUL,
|
|
||||||
0x954329DEUL, 0xADBE4528UL, 0xD8710F69UL, 0xAA51C90FUL,
|
|
||||||
0xAA786BF6UL, 0x22513F1EUL, 0xAA51A79BUL, 0x2AD344CCUL,
|
|
||||||
0x7B5A41F0UL, 0xD37CFBADUL, 0x1B069505UL, 0x41ECE491UL,
|
|
||||||
0xB4C332E6UL, 0x032268D4UL, 0xC9600ACCUL, 0xCE387E6DUL,
|
|
||||||
0xBF6BB16CUL, 0x6A70FB78UL, 0x0D03D9C9UL, 0xD4DF39DEUL,
|
|
||||||
0xE01063DAUL, 0x4736F464UL, 0x5AD328D8UL, 0xB347CC96UL,
|
|
||||||
0x75BB0FC3UL, 0x98511BFBUL, 0x4FFBCC35UL, 0xB58BCF6AUL,
|
|
||||||
0xE11F0ABCUL, 0xBFC5FE4AUL, 0xA70AEC10UL, 0xAC39570AUL,
|
|
||||||
0x3F04442FUL, 0x6188B153UL, 0xE0397A2EUL, 0x5727CB79UL,
|
|
||||||
0x9CEB418FUL, 0x1CACD68DUL, 0x2AD37C96UL, 0x0175CB9DUL,
|
|
||||||
0xC69DFF09UL, 0xC75B65F0UL, 0xD9DB40D8UL, 0xEC0E7779UL,
|
|
||||||
0x4744EAD4UL, 0xB11C3274UL, 0xDD24CB9EUL, 0x7E1C54BDUL,
|
|
||||||
0xF01144F9UL, 0xD2240EB1UL, 0x9675B3FDUL, 0xA3AC3755UL,
|
|
||||||
0xD47C27AFUL, 0x51C85F4DUL, 0x56907596UL, 0xA5BB15E6UL,
|
|
||||||
0x580304F0UL, 0xCA042CF1UL, 0x011A37EAUL, 0x8DBFAADBUL,
|
|
||||||
0x35BA3E4AUL, 0x3526FFA0UL, 0xC37B4D09UL, 0xBC306ED9UL,
|
|
||||||
0x98A52666UL, 0x5648F725UL, 0xFF5E569DUL, 0x0CED63D0UL,
|
|
||||||
0x7C63B2CFUL, 0x700B45E1UL, 0xD5EA50F1UL, 0x85A92872UL,
|
|
||||||
0xAF1FBDA7UL, 0xD4234870UL, 0xA7870BF3UL, 0x2D3B4D79UL,
|
|
||||||
0x42E04198UL, 0x0CD0EDE7UL, 0x26470DB8UL, 0xF881814CUL,
|
|
||||||
0x474D6AD7UL, 0x7C0C5E5CUL, 0xD1231959UL, 0x381B7298UL,
|
|
||||||
0xF5D2F4DBUL, 0xAB838653UL, 0x6E2F1E23UL, 0x83719C9EUL,
|
|
||||||
0xBD91E046UL, 0x9A56456EUL, 0xDC39200CUL, 0x20C8C571UL,
|
|
||||||
0x962BDA1CUL, 0xE1E696FFUL, 0xB141AB08UL, 0x7CCA89B9UL,
|
|
||||||
0x1A69E783UL, 0x02CC4843UL, 0xA2F7C579UL, 0x429EF47DUL,
|
|
||||||
0x427B169CUL, 0x5AC9F049UL, 0xDD8F0F00UL, 0x5C8165BFUL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
0x1F201094UL, 0xEF0BA75BUL, 0x69E3CF7EUL, 0x393F4380UL,
|
|
||||||
0xFE61CF7AUL, 0xEEC5207AUL, 0x55889C94UL, 0x72FC0651UL,
|
|
||||||
0xADA7EF79UL, 0x4E1D7235UL, 0xD55A63CEUL, 0xDE0436BAUL,
|
|
||||||
0x99C430EFUL, 0x5F0C0794UL, 0x18DCDB7DUL, 0xA1D6EFF3UL,
|
|
||||||
0xA0B52F7BUL, 0x59E83605UL, 0xEE15B094UL, 0xE9FFD909UL,
|
|
||||||
0xDC440086UL, 0xEF944459UL, 0xBA83CCB3UL, 0xE0C3CDFBUL,
|
|
||||||
0xD1DA4181UL, 0x3B092AB1UL, 0xF997F1C1UL, 0xA5E6CF7BUL,
|
|
||||||
0x01420DDBUL, 0xE4E7EF5BUL, 0x25A1FF41UL, 0xE180F806UL,
|
|
||||||
0x1FC41080UL, 0x179BEE7AUL, 0xD37AC6A9UL, 0xFE5830A4UL,
|
|
||||||
0x98DE8B7FUL, 0x77E83F4EUL, 0x79929269UL, 0x24FA9F7BUL,
|
|
||||||
0xE113C85BUL, 0xACC40083UL, 0xD7503525UL, 0xF7EA615FUL,
|
|
||||||
0x62143154UL, 0x0D554B63UL, 0x5D681121UL, 0xC866C359UL,
|
|
||||||
0x3D63CF73UL, 0xCEE234C0UL, 0xD4D87E87UL, 0x5C672B21UL,
|
|
||||||
0x071F6181UL, 0x39F7627FUL, 0x361E3084UL, 0xE4EB573BUL,
|
|
||||||
0x602F64A4UL, 0xD63ACD9CUL, 0x1BBC4635UL, 0x9E81032DUL,
|
|
||||||
0x2701F50CUL, 0x99847AB4UL, 0xA0E3DF79UL, 0xBA6CF38CUL,
|
|
||||||
0x10843094UL, 0x2537A95EUL, 0xF46F6FFEUL, 0xA1FF3B1FUL,
|
|
||||||
0x208CFB6AUL, 0x8F458C74UL, 0xD9E0A227UL, 0x4EC73A34UL,
|
|
||||||
0xFC884F69UL, 0x3E4DE8DFUL, 0xEF0E0088UL, 0x3559648DUL,
|
|
||||||
0x8A45388CUL, 0x1D804366UL, 0x721D9BFDUL, 0xA58684BBUL,
|
|
||||||
0xE8256333UL, 0x844E8212UL, 0x128D8098UL, 0xFED33FB4UL,
|
|
||||||
0xCE280AE1UL, 0x27E19BA5UL, 0xD5A6C252UL, 0xE49754BDUL,
|
|
||||||
0xC5D655DDUL, 0xEB667064UL, 0x77840B4DUL, 0xA1B6A801UL,
|
|
||||||
0x84DB26A9UL, 0xE0B56714UL, 0x21F043B7UL, 0xE5D05860UL,
|
|
||||||
0x54F03084UL, 0x066FF472UL, 0xA31AA153UL, 0xDADC4755UL,
|
|
||||||
0xB5625DBFUL, 0x68561BE6UL, 0x83CA6B94UL, 0x2D6ED23BUL,
|
|
||||||
0xECCF01DBUL, 0xA6D3D0BAUL, 0xB6803D5CUL, 0xAF77A709UL,
|
|
||||||
0x33B4A34CUL, 0x397BC8D6UL, 0x5EE22B95UL, 0x5F0E5304UL,
|
|
||||||
0x81ED6F61UL, 0x20E74364UL, 0xB45E1378UL, 0xDE18639BUL,
|
|
||||||
0x881CA122UL, 0xB96726D1UL, 0x8049A7E8UL, 0x22B7DA7BUL,
|
|
||||||
0x5E552D25UL, 0x5272D237UL, 0x79D2951CUL, 0xC60D894CUL,
|
|
||||||
0x488CB402UL, 0x1BA4FE5BUL, 0xA4B09F6BUL, 0x1CA815CFUL,
|
|
||||||
0xA20C3005UL, 0x8871DF63UL, 0xB9DE2FCBUL, 0x0CC6C9E9UL,
|
|
||||||
0x0BEEFF53UL, 0xE3214517UL, 0xB4542835UL, 0x9F63293CUL,
|
|
||||||
0xEE41E729UL, 0x6E1D2D7CUL, 0x50045286UL, 0x1E6685F3UL,
|
|
||||||
0xF33401C6UL, 0x30A22C95UL, 0x31A70850UL, 0x60930F13UL,
|
|
||||||
0x73F98417UL, 0xA1269859UL, 0xEC645C44UL, 0x52C877A9UL,
|
|
||||||
0xCDFF33A6UL, 0xA02B1741UL, 0x7CBAD9A2UL, 0x2180036FUL,
|
|
||||||
0x50D99C08UL, 0xCB3F4861UL, 0xC26BD765UL, 0x64A3F6ABUL,
|
|
||||||
0x80342676UL, 0x25A75E7BUL, 0xE4E6D1FCUL, 0x20C710E6UL,
|
|
||||||
0xCDF0B680UL, 0x17844D3BUL, 0x31EEF84DUL, 0x7E0824E4UL,
|
|
||||||
0x2CCB49EBUL, 0x846A3BAEUL, 0x8FF77888UL, 0xEE5D60F6UL,
|
|
||||||
0x7AF75673UL, 0x2FDD5CDBUL, 0xA11631C1UL, 0x30F66F43UL,
|
|
||||||
0xB3FAEC54UL, 0x157FD7FAUL, 0xEF8579CCUL, 0xD152DE58UL,
|
|
||||||
0xDB2FFD5EUL, 0x8F32CE19UL, 0x306AF97AUL, 0x02F03EF8UL,
|
|
||||||
0x99319AD5UL, 0xC242FA0FUL, 0xA7E3EBB0UL, 0xC68E4906UL,
|
|
||||||
0xB8DA230CUL, 0x80823028UL, 0xDCDEF3C8UL, 0xD35FB171UL,
|
|
||||||
0x088A1BC8UL, 0xBEC0C560UL, 0x61A3C9E8UL, 0xBCA8F54DUL,
|
|
||||||
0xC72FEFFAUL, 0x22822E99UL, 0x82C570B4UL, 0xD8D94E89UL,
|
|
||||||
0x8B1C34BCUL, 0x301E16E6UL, 0x273BE979UL, 0xB0FFEAA6UL,
|
|
||||||
0x61D9B8C6UL, 0x00B24869UL, 0xB7FFCE3FUL, 0x08DC283BUL,
|
|
||||||
0x43DAF65AUL, 0xF7E19798UL, 0x7619B72FUL, 0x8F1C9BA4UL,
|
|
||||||
0xDC8637A0UL, 0x16A7D3B1UL, 0x9FC393B7UL, 0xA7136EEBUL,
|
|
||||||
0xC6BCC63EUL, 0x1A513742UL, 0xEF6828BCUL, 0x520365D6UL,
|
|
||||||
0x2D6A77ABUL, 0x3527ED4BUL, 0x821FD216UL, 0x095C6E2EUL,
|
|
||||||
0xDB92F2FBUL, 0x5EEA29CBUL, 0x145892F5UL, 0x91584F7FUL,
|
|
||||||
0x5483697BUL, 0x2667A8CCUL, 0x85196048UL, 0x8C4BACEAUL,
|
|
||||||
0x833860D4UL, 0x0D23E0F9UL, 0x6C387E8AUL, 0x0AE6D249UL,
|
|
||||||
0xB284600CUL, 0xD835731DUL, 0xDCB1C647UL, 0xAC4C56EAUL,
|
|
||||||
0x3EBD81B3UL, 0x230EABB0UL, 0x6438BC87UL, 0xF0B5B1FAUL,
|
|
||||||
0x8F5EA2B3UL, 0xFC184642UL, 0x0A036B7AUL, 0x4FB089BDUL,
|
|
||||||
0x649DA589UL, 0xA345415EUL, 0x5C038323UL, 0x3E5D3BB9UL,
|
|
||||||
0x43D79572UL, 0x7E6DD07CUL, 0x06DFDF1EUL, 0x6C6CC4EFUL,
|
|
||||||
0x7160A539UL, 0x73BFBE70UL, 0x83877605UL, 0x4523ECF1UL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
0x8DEFC240UL, 0x25FA5D9FUL, 0xEB903DBFUL, 0xE810C907UL,
|
|
||||||
0x47607FFFUL, 0x369FE44BUL, 0x8C1FC644UL, 0xAECECA90UL,
|
|
||||||
0xBEB1F9BFUL, 0xEEFBCAEAUL, 0xE8CF1950UL, 0x51DF07AEUL,
|
|
||||||
0x920E8806UL, 0xF0AD0548UL, 0xE13C8D83UL, 0x927010D5UL,
|
|
||||||
0x11107D9FUL, 0x07647DB9UL, 0xB2E3E4D4UL, 0x3D4F285EUL,
|
|
||||||
0xB9AFA820UL, 0xFADE82E0UL, 0xA067268BUL, 0x8272792EUL,
|
|
||||||
0x553FB2C0UL, 0x489AE22BUL, 0xD4EF9794UL, 0x125E3FBCUL,
|
|
||||||
0x21FFFCEEUL, 0x825B1BFDUL, 0x9255C5EDUL, 0x1257A240UL,
|
|
||||||
0x4E1A8302UL, 0xBAE07FFFUL, 0x528246E7UL, 0x8E57140EUL,
|
|
||||||
0x3373F7BFUL, 0x8C9F8188UL, 0xA6FC4EE8UL, 0xC982B5A5UL,
|
|
||||||
0xA8C01DB7UL, 0x579FC264UL, 0x67094F31UL, 0xF2BD3F5FUL,
|
|
||||||
0x40FFF7C1UL, 0x1FB78DFCUL, 0x8E6BD2C1UL, 0x437BE59BUL,
|
|
||||||
0x99B03DBFUL, 0xB5DBC64BUL, 0x638DC0E6UL, 0x55819D99UL,
|
|
||||||
0xA197C81CUL, 0x4A012D6EUL, 0xC5884A28UL, 0xCCC36F71UL,
|
|
||||||
0xB843C213UL, 0x6C0743F1UL, 0x8309893CUL, 0x0FEDDD5FUL,
|
|
||||||
0x2F7FE850UL, 0xD7C07F7EUL, 0x02507FBFUL, 0x5AFB9A04UL,
|
|
||||||
0xA747D2D0UL, 0x1651192EUL, 0xAF70BF3EUL, 0x58C31380UL,
|
|
||||||
0x5F98302EUL, 0x727CC3C4UL, 0x0A0FB402UL, 0x0F7FEF82UL,
|
|
||||||
0x8C96FDADUL, 0x5D2C2AAEUL, 0x8EE99A49UL, 0x50DA88B8UL,
|
|
||||||
0x8427F4A0UL, 0x1EAC5790UL, 0x796FB449UL, 0x8252DC15UL,
|
|
||||||
0xEFBD7D9BUL, 0xA672597DUL, 0xADA840D8UL, 0x45F54504UL,
|
|
||||||
0xFA5D7403UL, 0xE83EC305UL, 0x4F91751AUL, 0x925669C2UL,
|
|
||||||
0x23EFE941UL, 0xA903F12EUL, 0x60270DF2UL, 0x0276E4B6UL,
|
|
||||||
0x94FD6574UL, 0x927985B2UL, 0x8276DBCBUL, 0x02778176UL,
|
|
||||||
0xF8AF918DUL, 0x4E48F79EUL, 0x8F616DDFUL, 0xE29D840EUL,
|
|
||||||
0x842F7D83UL, 0x340CE5C8UL, 0x96BBB682UL, 0x93B4B148UL,
|
|
||||||
0xEF303CABUL, 0x984FAF28UL, 0x779FAF9BUL, 0x92DC560DUL,
|
|
||||||
0x224D1E20UL, 0x8437AA88UL, 0x7D29DC96UL, 0x2756D3DCUL,
|
|
||||||
0x8B907CEEUL, 0xB51FD240UL, 0xE7C07CE3UL, 0xE566B4A1UL,
|
|
||||||
0xC3E9615EUL, 0x3CF8209DUL, 0x6094D1E3UL, 0xCD9CA341UL,
|
|
||||||
0x5C76460EUL, 0x00EA983BUL, 0xD4D67881UL, 0xFD47572CUL,
|
|
||||||
0xF76CEDD9UL, 0xBDA8229CUL, 0x127DADAAUL, 0x438A074EUL,
|
|
||||||
0x1F97C090UL, 0x081BDB8AUL, 0x93A07EBEUL, 0xB938CA15UL,
|
|
||||||
0x97B03CFFUL, 0x3DC2C0F8UL, 0x8D1AB2ECUL, 0x64380E51UL,
|
|
||||||
0x68CC7BFBUL, 0xD90F2788UL, 0x12490181UL, 0x5DE5FFD4UL,
|
|
||||||
0xDD7EF86AUL, 0x76A2E214UL, 0xB9A40368UL, 0x925D958FUL,
|
|
||||||
0x4B39FFFAUL, 0xBA39AEE9UL, 0xA4FFD30BUL, 0xFAF7933BUL,
|
|
||||||
0x6D498623UL, 0x193CBCFAUL, 0x27627545UL, 0x825CF47AUL,
|
|
||||||
0x61BD8BA0UL, 0xD11E42D1UL, 0xCEAD04F4UL, 0x127EA392UL,
|
|
||||||
0x10428DB7UL, 0x8272A972UL, 0x9270C4A8UL, 0x127DE50BUL,
|
|
||||||
0x285BA1C8UL, 0x3C62F44FUL, 0x35C0EAA5UL, 0xE805D231UL,
|
|
||||||
0x428929FBUL, 0xB4FCDF82UL, 0x4FB66A53UL, 0x0E7DC15BUL,
|
|
||||||
0x1F081FABUL, 0x108618AEUL, 0xFCFD086DUL, 0xF9FF2889UL,
|
|
||||||
0x694BCC11UL, 0x236A5CAEUL, 0x12DECA4DUL, 0x2C3F8CC5UL,
|
|
||||||
0xD2D02DFEUL, 0xF8EF5896UL, 0xE4CF52DAUL, 0x95155B67UL,
|
|
||||||
0x494A488CUL, 0xB9B6A80CUL, 0x5C8F82BCUL, 0x89D36B45UL,
|
|
||||||
0x3A609437UL, 0xEC00C9A9UL, 0x44715253UL, 0x0A874B49UL,
|
|
||||||
0xD773BC40UL, 0x7C34671CUL, 0x02717EF6UL, 0x4FEB5536UL,
|
|
||||||
0xA2D02FFFUL, 0xD2BF60C4UL, 0xD43F03C0UL, 0x50B4EF6DUL,
|
|
||||||
0x07478CD1UL, 0x006E1888UL, 0xA2E53F55UL, 0xB9E6D4BCUL,
|
|
||||||
0xA2048016UL, 0x97573833UL, 0xD7207D67UL, 0xDE0F8F3DUL,
|
|
||||||
0x72F87B33UL, 0xABCC4F33UL, 0x7688C55DUL, 0x7B00A6B0UL,
|
|
||||||
0x947B0001UL, 0x570075D2UL, 0xF9BB88F8UL, 0x8942019EUL,
|
|
||||||
0x4264A5FFUL, 0x856302E0UL, 0x72DBD92BUL, 0xEE971B69UL,
|
|
||||||
0x6EA22FDEUL, 0x5F08AE2BUL, 0xAF7A616DUL, 0xE5C98767UL,
|
|
||||||
0xCF1FEBD2UL, 0x61EFC8C2UL, 0xF1AC2571UL, 0xCC8239C2UL,
|
|
||||||
0x67214CB8UL, 0xB1E583D1UL, 0xB7DC3E62UL, 0x7F10BDCEUL,
|
|
||||||
0xF90A5C38UL, 0x0FF0443DUL, 0x606E6DC6UL, 0x60543A49UL,
|
|
||||||
0x5727C148UL, 0x2BE98A1DUL, 0x8AB41738UL, 0x20E1BE24UL,
|
|
||||||
0xAF96DA0FUL, 0x68458425UL, 0x99833BE5UL, 0x600D457DUL,
|
|
||||||
0x282F9350UL, 0x8334B362UL, 0xD91D1120UL, 0x2B6D8DA0UL,
|
|
||||||
0x642B1E31UL, 0x9C305A00UL, 0x52BCE688UL, 0x1B03588AUL,
|
|
||||||
0xF7BAEFD5UL, 0x4142ED9CUL, 0xA4315C11UL, 0x83323EC5UL,
|
|
||||||
0xDFEF4636UL, 0xA133C501UL, 0xE9D3531CUL, 0xEE353783UL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
0x9DB30420UL, 0x1FB6E9DEUL, 0xA7BE7BEFUL, 0xD273A298UL,
|
|
||||||
0x4A4F7BDBUL, 0x64AD8C57UL, 0x85510443UL, 0xFA020ED1UL,
|
|
||||||
0x7E287AFFUL, 0xE60FB663UL, 0x095F35A1UL, 0x79EBF120UL,
|
|
||||||
0xFD059D43UL, 0x6497B7B1UL, 0xF3641F63UL, 0x241E4ADFUL,
|
|
||||||
0x28147F5FUL, 0x4FA2B8CDUL, 0xC9430040UL, 0x0CC32220UL,
|
|
||||||
0xFDD30B30UL, 0xC0A5374FUL, 0x1D2D00D9UL, 0x24147B15UL,
|
|
||||||
0xEE4D111AUL, 0x0FCA5167UL, 0x71FF904CUL, 0x2D195FFEUL,
|
|
||||||
0x1A05645FUL, 0x0C13FEFEUL, 0x081B08CAUL, 0x05170121UL,
|
|
||||||
0x80530100UL, 0xE83E5EFEUL, 0xAC9AF4F8UL, 0x7FE72701UL,
|
|
||||||
0xD2B8EE5FUL, 0x06DF4261UL, 0xBB9E9B8AUL, 0x7293EA25UL,
|
|
||||||
0xCE84FFDFUL, 0xF5718801UL, 0x3DD64B04UL, 0xA26F263BUL,
|
|
||||||
0x7ED48400UL, 0x547EEBE6UL, 0x446D4CA0UL, 0x6CF3D6F5UL,
|
|
||||||
0x2649ABDFUL, 0xAEA0C7F5UL, 0x36338CC1UL, 0x503F7E93UL,
|
|
||||||
0xD3772061UL, 0x11B638E1UL, 0x72500E03UL, 0xF80EB2BBUL,
|
|
||||||
0xABE0502EUL, 0xEC8D77DEUL, 0x57971E81UL, 0xE14F6746UL,
|
|
||||||
0xC9335400UL, 0x6920318FUL, 0x081DBB99UL, 0xFFC304A5UL,
|
|
||||||
0x4D351805UL, 0x7F3D5CE3UL, 0xA6C866C6UL, 0x5D5BCCA9UL,
|
|
||||||
0xDAEC6FEAUL, 0x9F926F91UL, 0x9F46222FUL, 0x3991467DUL,
|
|
||||||
0xA5BF6D8EUL, 0x1143C44FUL, 0x43958302UL, 0xD0214EEBUL,
|
|
||||||
0x022083B8UL, 0x3FB6180CUL, 0x18F8931EUL, 0x281658E6UL,
|
|
||||||
0x26486E3EUL, 0x8BD78A70UL, 0x7477E4C1UL, 0xB506E07CUL,
|
|
||||||
0xF32D0A25UL, 0x79098B02UL, 0xE4EABB81UL, 0x28123B23UL,
|
|
||||||
0x69DEAD38UL, 0x1574CA16UL, 0xDF871B62UL, 0x211C40B7UL,
|
|
||||||
0xA51A9EF9UL, 0x0014377BUL, 0x041E8AC8UL, 0x09114003UL,
|
|
||||||
0xBD59E4D2UL, 0xE3D156D5UL, 0x4FE876D5UL, 0x2F91A340UL,
|
|
||||||
0x557BE8DEUL, 0x00EAE4A7UL, 0x0CE5C2ECUL, 0x4DB4BBA6UL,
|
|
||||||
0xE756BDFFUL, 0xDD3369ACUL, 0xEC17B035UL, 0x06572327UL,
|
|
||||||
0x99AFC8B0UL, 0x56C8C391UL, 0x6B65811CUL, 0x5E146119UL,
|
|
||||||
0x6E85CB75UL, 0xBE07C002UL, 0xC2325577UL, 0x893FF4ECUL,
|
|
||||||
0x5BBFC92DUL, 0xD0EC3B25UL, 0xB7801AB7UL, 0x8D6D3B24UL,
|
|
||||||
0x20C763EFUL, 0xC366A5FCUL, 0x9C382880UL, 0x0ACE3205UL,
|
|
||||||
0xAAC9548AUL, 0xECA1D7C7UL, 0x041AFA32UL, 0x1D16625AUL,
|
|
||||||
0x6701902CUL, 0x9B757A54UL, 0x31D477F7UL, 0x9126B031UL,
|
|
||||||
0x36CC6FDBUL, 0xC70B8B46UL, 0xD9E66A48UL, 0x56E55A79UL,
|
|
||||||
0x026A4CEBUL, 0x52437EFFUL, 0x2F8F76B4UL, 0x0DF980A5UL,
|
|
||||||
0x8674CDE3UL, 0xEDDA04EBUL, 0x17A9BE04UL, 0x2C18F4DFUL,
|
|
||||||
0xB7747F9DUL, 0xAB2AF7B4UL, 0xEFC34D20UL, 0x2E096B7CUL,
|
|
||||||
0x1741A254UL, 0xE5B6A035UL, 0x213D42F6UL, 0x2C1C7C26UL,
|
|
||||||
0x61C2F50FUL, 0x6552DAF9UL, 0xD2C231F8UL, 0x25130F69UL,
|
|
||||||
0xD8167FA2UL, 0x0418F2C8UL, 0x001A96A6UL, 0x0D1526ABUL,
|
|
||||||
0x63315C21UL, 0x5E0A72ECUL, 0x49BAFEFDUL, 0x187908D9UL,
|
|
||||||
0x8D0DBD86UL, 0x311170A7UL, 0x3E9B640CUL, 0xCC3E10D7UL,
|
|
||||||
0xD5CAD3B6UL, 0x0CAEC388UL, 0xF73001E1UL, 0x6C728AFFUL,
|
|
||||||
0x71EAE2A1UL, 0x1F9AF36EUL, 0xCFCBD12FUL, 0xC1DE8417UL,
|
|
||||||
0xAC07BE6BUL, 0xCB44A1D8UL, 0x8B9B0F56UL, 0x013988C3UL,
|
|
||||||
0xB1C52FCAUL, 0xB4BE31CDUL, 0xD8782806UL, 0x12A3A4E2UL,
|
|
||||||
0x6F7DE532UL, 0x58FD7EB6UL, 0xD01EE900UL, 0x24ADFFC2UL,
|
|
||||||
0xF4990FC5UL, 0x9711AAC5UL, 0x001D7B95UL, 0x82E5E7D2UL,
|
|
||||||
0x109873F6UL, 0x00613096UL, 0xC32D9521UL, 0xADA121FFUL,
|
|
||||||
0x29908415UL, 0x7FBB977FUL, 0xAF9EB3DBUL, 0x29C9ED2AUL,
|
|
||||||
0x5CE2A465UL, 0xA730F32CUL, 0xD0AA3FE8UL, 0x8A5CC091UL,
|
|
||||||
0xD49E2CE7UL, 0x0CE454A9UL, 0xD60ACD86UL, 0x015F1919UL,
|
|
||||||
0x77079103UL, 0xDEA03AF6UL, 0x78A8565EUL, 0xDEE356DFUL,
|
|
||||||
0x21F05CBEUL, 0x8B75E387UL, 0xB3C50651UL, 0xB8A5C3EFUL,
|
|
||||||
0xD8EEB6D2UL, 0xE523BE77UL, 0xC2154529UL, 0x2F69EFDFUL,
|
|
||||||
0xAFE67AFBUL, 0xF470C4B2UL, 0xF3E0EB5BUL, 0xD6CC9876UL,
|
|
||||||
0x39E4460CUL, 0x1FDA8538UL, 0x1987832FUL, 0xCA007367UL,
|
|
||||||
0xA99144F8UL, 0x296B299EUL, 0x492FC295UL, 0x9266BEABUL,
|
|
||||||
0xB5676E69UL, 0x9BD3DDDAUL, 0xDF7E052FUL, 0xDB25701CUL,
|
|
||||||
0x1B5E51EEUL, 0xF65324E6UL, 0x6AFCE36CUL, 0x0316CC04UL,
|
|
||||||
0x8644213EUL, 0xB7DC59D0UL, 0x7965291FUL, 0xCCD6FD43UL,
|
|
||||||
0x41823979UL, 0x932BCDF6UL, 0xB657C34DUL, 0x4EDFD282UL,
|
|
||||||
0x7AE5290CUL, 0x3CB9536BUL, 0x851E20FEUL, 0x9833557EUL,
|
|
||||||
0x13ECF0B0UL, 0xD3FFB372UL, 0x3F85C5C1UL, 0x0AEF7ED2UL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
0x7EC90C04UL, 0x2C6E74B9UL, 0x9B0E66DFUL, 0xA6337911UL,
|
|
||||||
0xB86A7FFFUL, 0x1DD358F5UL, 0x44DD9D44UL, 0x1731167FUL,
|
|
||||||
0x08FBF1FAUL, 0xE7F511CCUL, 0xD2051B00UL, 0x735ABA00UL,
|
|
||||||
0x2AB722D8UL, 0x386381CBUL, 0xACF6243AUL, 0x69BEFD7AUL,
|
|
||||||
0xE6A2E77FUL, 0xF0C720CDUL, 0xC4494816UL, 0xCCF5C180UL,
|
|
||||||
0x38851640UL, 0x15B0A848UL, 0xE68B18CBUL, 0x4CAADEFFUL,
|
|
||||||
0x5F480A01UL, 0x0412B2AAUL, 0x259814FCUL, 0x41D0EFE2UL,
|
|
||||||
0x4E40B48DUL, 0x248EB6FBUL, 0x8DBA1CFEUL, 0x41A99B02UL,
|
|
||||||
0x1A550A04UL, 0xBA8F65CBUL, 0x7251F4E7UL, 0x95A51725UL,
|
|
||||||
0xC106ECD7UL, 0x97A5980AUL, 0xC539B9AAUL, 0x4D79FE6AUL,
|
|
||||||
0xF2F3F763UL, 0x68AF8040UL, 0xED0C9E56UL, 0x11B4958BUL,
|
|
||||||
0xE1EB5A88UL, 0x8709E6B0UL, 0xD7E07156UL, 0x4E29FEA7UL,
|
|
||||||
0x6366E52DUL, 0x02D1C000UL, 0xC4AC8E05UL, 0x9377F571UL,
|
|
||||||
0x0C05372AUL, 0x578535F2UL, 0x2261BE02UL, 0xD642A0C9UL,
|
|
||||||
0xDF13A280UL, 0x74B55BD2UL, 0x682199C0UL, 0xD421E5ECUL,
|
|
||||||
0x53FB3CE8UL, 0xC8ADEDB3UL, 0x28A87FC9UL, 0x3D959981UL,
|
|
||||||
0x5C1FF900UL, 0xFE38D399UL, 0x0C4EFF0BUL, 0x062407EAUL,
|
|
||||||
0xAA2F4FB1UL, 0x4FB96976UL, 0x90C79505UL, 0xB0A8A774UL,
|
|
||||||
0xEF55A1FFUL, 0xE59CA2C2UL, 0xA6B62D27UL, 0xE66A4263UL,
|
|
||||||
0xDF65001FUL, 0x0EC50966UL, 0xDFDD55BCUL, 0x29DE0655UL,
|
|
||||||
0x911E739AUL, 0x17AF8975UL, 0x32C7911CUL, 0x89F89468UL,
|
|
||||||
0x0D01E980UL, 0x524755F4UL, 0x03B63CC9UL, 0x0CC844B2UL,
|
|
||||||
0xBCF3F0AAUL, 0x87AC36E9UL, 0xE53A7426UL, 0x01B3D82BUL,
|
|
||||||
0x1A9E7449UL, 0x64EE2D7EUL, 0xCDDBB1DAUL, 0x01C94910UL,
|
|
||||||
0xB868BF80UL, 0x0D26F3FDUL, 0x9342EDE7UL, 0x04A5C284UL,
|
|
||||||
0x636737B6UL, 0x50F5B616UL, 0xF24766E3UL, 0x8ECA36C1UL,
|
|
||||||
0x136E05DBUL, 0xFEF18391UL, 0xFB887A37UL, 0xD6E7F7D4UL,
|
|
||||||
0xC7FB7DC9UL, 0x3063FCDFUL, 0xB6F589DEUL, 0xEC2941DAUL,
|
|
||||||
0x26E46695UL, 0xB7566419UL, 0xF654EFC5UL, 0xD08D58B7UL,
|
|
||||||
0x48925401UL, 0xC1BACB7FUL, 0xE5FF550FUL, 0xB6083049UL,
|
|
||||||
0x5BB5D0E8UL, 0x87D72E5AUL, 0xAB6A6EE1UL, 0x223A66CEUL,
|
|
||||||
0xC62BF3CDUL, 0x9E0885F9UL, 0x68CB3E47UL, 0x086C010FUL,
|
|
||||||
0xA21DE820UL, 0xD18B69DEUL, 0xF3F65777UL, 0xFA02C3F6UL,
|
|
||||||
0x407EDAC3UL, 0xCBB3D550UL, 0x1793084DUL, 0xB0D70EBAUL,
|
|
||||||
0x0AB378D5UL, 0xD951FB0CUL, 0xDED7DA56UL, 0x4124BBE4UL,
|
|
||||||
0x94CA0B56UL, 0x0F5755D1UL, 0xE0E1E56EUL, 0x6184B5BEUL,
|
|
||||||
0x580A249FUL, 0x94F74BC0UL, 0xE327888EUL, 0x9F7B5561UL,
|
|
||||||
0xC3DC0280UL, 0x05687715UL, 0x646C6BD7UL, 0x44904DB3UL,
|
|
||||||
0x66B4F0A3UL, 0xC0F1648AUL, 0x697ED5AFUL, 0x49E92FF6UL,
|
|
||||||
0x309E374FUL, 0x2CB6356AUL, 0x85808573UL, 0x4991F840UL,
|
|
||||||
0x76F0AE02UL, 0x083BE84DUL, 0x28421C9AUL, 0x44489406UL,
|
|
||||||
0x736E4CB8UL, 0xC1092910UL, 0x8BC95FC6UL, 0x7D869CF4UL,
|
|
||||||
0x134F616FUL, 0x2E77118DUL, 0xB31B2BE1UL, 0xAA90B472UL,
|
|
||||||
0x3CA5D717UL, 0x7D161BBAUL, 0x9CAD9010UL, 0xAF462BA2UL,
|
|
||||||
0x9FE459D2UL, 0x45D34559UL, 0xD9F2DA13UL, 0xDBC65487UL,
|
|
||||||
0xF3E4F94EUL, 0x176D486FUL, 0x097C13EAUL, 0x631DA5C7UL,
|
|
||||||
0x445F7382UL, 0x175683F4UL, 0xCDC66A97UL, 0x70BE0288UL,
|
|
||||||
0xB3CDCF72UL, 0x6E5DD2F3UL, 0x20936079UL, 0x459B80A5UL,
|
|
||||||
0xBE60E2DBUL, 0xA9C23101UL, 0xEBA5315CUL, 0x224E42F2UL,
|
|
||||||
0x1C5C1572UL, 0xF6721B2CUL, 0x1AD2FFF3UL, 0x8C25404EUL,
|
|
||||||
0x324ED72FUL, 0x4067B7FDUL, 0x0523138EUL, 0x5CA3BC78UL,
|
|
||||||
0xDC0FD66EUL, 0x75922283UL, 0x784D6B17UL, 0x58EBB16EUL,
|
|
||||||
0x44094F85UL, 0x3F481D87UL, 0xFCFEAE7BUL, 0x77B5FF76UL,
|
|
||||||
0x8C2302BFUL, 0xAAF47556UL, 0x5F46B02AUL, 0x2B092801UL,
|
|
||||||
0x3D38F5F7UL, 0x0CA81F36UL, 0x52AF4A8AUL, 0x66D5E7C0UL,
|
|
||||||
0xDF3B0874UL, 0x95055110UL, 0x1B5AD7A8UL, 0xF61ED5ADUL,
|
|
||||||
0x6CF6E479UL, 0x20758184UL, 0xD0CEFA65UL, 0x88F7BE58UL,
|
|
||||||
0x4A046826UL, 0x0FF6F8F3UL, 0xA09C7F70UL, 0x5346ABA0UL,
|
|
||||||
0x5CE96C28UL, 0xE176EDA3UL, 0x6BAC307FUL, 0x376829D2UL,
|
|
||||||
0x85360FA9UL, 0x17E3FE2AUL, 0x24B79767UL, 0xF5A96B20UL,
|
|
||||||
0xD6CD2595UL, 0x68FF1EBFUL, 0x7555442CUL, 0xF19F06BEUL,
|
|
||||||
0xF9E0659AUL, 0xEEB9491DUL, 0x34010718UL, 0xBB30CAB8UL,
|
|
||||||
0xE822FE15UL, 0x88570983UL, 0x750E6249UL, 0xDA627E55UL,
|
|
||||||
0x5E76FFA8UL, 0xB1534546UL, 0x6D47DE08UL, 0xEFE9E7D4UL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
0xF6FA8F9DUL, 0x2CAC6CE1UL, 0x4CA34867UL, 0xE2337F7CUL,
|
|
||||||
0x95DB08E7UL, 0x016843B4UL, 0xECED5CBCUL, 0x325553ACUL,
|
|
||||||
0xBF9F0960UL, 0xDFA1E2EDUL, 0x83F0579DUL, 0x63ED86B9UL,
|
|
||||||
0x1AB6A6B8UL, 0xDE5EBE39UL, 0xF38FF732UL, 0x8989B138UL,
|
|
||||||
0x33F14961UL, 0xC01937BDUL, 0xF506C6DAUL, 0xE4625E7EUL,
|
|
||||||
0xA308EA99UL, 0x4E23E33CUL, 0x79CBD7CCUL, 0x48A14367UL,
|
|
||||||
0xA3149619UL, 0xFEC94BD5UL, 0xA114174AUL, 0xEAA01866UL,
|
|
||||||
0xA084DB2DUL, 0x09A8486FUL, 0xA888614AUL, 0x2900AF98UL,
|
|
||||||
0x01665991UL, 0xE1992863UL, 0xC8F30C60UL, 0x2E78EF3CUL,
|
|
||||||
0xD0D51932UL, 0xCF0FEC14UL, 0xF7CA07D2UL, 0xD0A82072UL,
|
|
||||||
0xFD41197EUL, 0x9305A6B0UL, 0xE86BE3DAUL, 0x74BED3CDUL,
|
|
||||||
0x372DA53CUL, 0x4C7F4448UL, 0xDAB5D440UL, 0x6DBA0EC3UL,
|
|
||||||
0x083919A7UL, 0x9FBAEED9UL, 0x49DBCFB0UL, 0x4E670C53UL,
|
|
||||||
0x5C3D9C01UL, 0x64BDB941UL, 0x2C0E636AUL, 0xBA7DD9CDUL,
|
|
||||||
0xEA6F7388UL, 0xE70BC762UL, 0x35F29ADBUL, 0x5C4CDD8DUL,
|
|
||||||
0xF0D48D8CUL, 0xB88153E2UL, 0x08A19866UL, 0x1AE2EAC8UL,
|
|
||||||
0x284CAF89UL, 0xAA928223UL, 0x9334BE53UL, 0x3B3A21BFUL,
|
|
||||||
0x16434BE3UL, 0x9AEA3906UL, 0xEFE8C36EUL, 0xF890CDD9UL,
|
|
||||||
0x80226DAEUL, 0xC340A4A3UL, 0xDF7E9C09UL, 0xA694A807UL,
|
|
||||||
0x5B7C5ECCUL, 0x221DB3A6UL, 0x9A69A02FUL, 0x68818A54UL,
|
|
||||||
0xCEB2296FUL, 0x53C0843AUL, 0xFE893655UL, 0x25BFE68AUL,
|
|
||||||
0xB4628ABCUL, 0xCF222EBFUL, 0x25AC6F48UL, 0xA9A99387UL,
|
|
||||||
0x53BDDB65UL, 0xE76FFBE7UL, 0xE967FD78UL, 0x0BA93563UL,
|
|
||||||
0x8E342BC1UL, 0xE8A11BE9UL, 0x4980740DUL, 0xC8087DFCUL,
|
|
||||||
0x8DE4BF99UL, 0xA11101A0UL, 0x7FD37975UL, 0xDA5A26C0UL,
|
|
||||||
0xE81F994FUL, 0x9528CD89UL, 0xFD339FEDUL, 0xB87834BFUL,
|
|
||||||
0x5F04456DUL, 0x22258698UL, 0xC9C4C83BUL, 0x2DC156BEUL,
|
|
||||||
0x4F628DAAUL, 0x57F55EC5UL, 0xE2220ABEUL, 0xD2916EBFUL,
|
|
||||||
0x4EC75B95UL, 0x24F2C3C0UL, 0x42D15D99UL, 0xCD0D7FA0UL,
|
|
||||||
0x7B6E27FFUL, 0xA8DC8AF0UL, 0x7345C106UL, 0xF41E232FUL,
|
|
||||||
0x35162386UL, 0xE6EA8926UL, 0x3333B094UL, 0x157EC6F2UL,
|
|
||||||
0x372B74AFUL, 0x692573E4UL, 0xE9A9D848UL, 0xF3160289UL,
|
|
||||||
0x3A62EF1DUL, 0xA787E238UL, 0xF3A5F676UL, 0x74364853UL,
|
|
||||||
0x20951063UL, 0x4576698DUL, 0xB6FAD407UL, 0x592AF950UL,
|
|
||||||
0x36F73523UL, 0x4CFB6E87UL, 0x7DA4CEC0UL, 0x6C152DAAUL,
|
|
||||||
0xCB0396A8UL, 0xC50DFE5DUL, 0xFCD707ABUL, 0x0921C42FUL,
|
|
||||||
0x89DFF0BBUL, 0x5FE2BE78UL, 0x448F4F33UL, 0x754613C9UL,
|
|
||||||
0x2B05D08DUL, 0x48B9D585UL, 0xDC049441UL, 0xC8098F9BUL,
|
|
||||||
0x7DEDE786UL, 0xC39A3373UL, 0x42410005UL, 0x6A091751UL,
|
|
||||||
0x0EF3C8A6UL, 0x890072D6UL, 0x28207682UL, 0xA9A9F7BEUL,
|
|
||||||
0xBF32679DUL, 0xD45B5B75UL, 0xB353FD00UL, 0xCBB0E358UL,
|
|
||||||
0x830F220AUL, 0x1F8FB214UL, 0xD372CF08UL, 0xCC3C4A13UL,
|
|
||||||
0x8CF63166UL, 0x061C87BEUL, 0x88C98F88UL, 0x6062E397UL,
|
|
||||||
0x47CF8E7AUL, 0xB6C85283UL, 0x3CC2ACFBUL, 0x3FC06976UL,
|
|
||||||
0x4E8F0252UL, 0x64D8314DUL, 0xDA3870E3UL, 0x1E665459UL,
|
|
||||||
0xC10908F0UL, 0x513021A5UL, 0x6C5B68B7UL, 0x822F8AA0UL,
|
|
||||||
0x3007CD3EUL, 0x74719EEFUL, 0xDC872681UL, 0x073340D4UL,
|
|
||||||
0x7E432FD9UL, 0x0C5EC241UL, 0x8809286CUL, 0xF592D891UL,
|
|
||||||
0x08A930F6UL, 0x957EF305UL, 0xB7FBFFBDUL, 0xC266E96FUL,
|
|
||||||
0x6FE4AC98UL, 0xB173ECC0UL, 0xBC60B42AUL, 0x953498DAUL,
|
|
||||||
0xFBA1AE12UL, 0x2D4BD736UL, 0x0F25FAABUL, 0xA4F3FCEBUL,
|
|
||||||
0xE2969123UL, 0x257F0C3DUL, 0x9348AF49UL, 0x361400BCUL,
|
|
||||||
0xE8816F4AUL, 0x3814F200UL, 0xA3F94043UL, 0x9C7A54C2UL,
|
|
||||||
0xBC704F57UL, 0xDA41E7F9UL, 0xC25AD33AUL, 0x54F4A084UL,
|
|
||||||
0xB17F5505UL, 0x59357CBEUL, 0xEDBD15C8UL, 0x7F97C5ABUL,
|
|
||||||
0xBA5AC7B5UL, 0xB6F6DEAFUL, 0x3A479C3AUL, 0x5302DA25UL,
|
|
||||||
0x653D7E6AUL, 0x54268D49UL, 0x51A477EAUL, 0x5017D55BUL,
|
|
||||||
0xD7D25D88UL, 0x44136C76UL, 0x0404A8C8UL, 0xB8E5A121UL,
|
|
||||||
0xB81A928AUL, 0x60ED5869UL, 0x97C55B96UL, 0xEAEC991BUL,
|
|
||||||
0x29935913UL, 0x01FDB7F1UL, 0x088E8DFAUL, 0x9AB6F6F5UL,
|
|
||||||
0x3B4CBF9FUL, 0x4A5DE3ABUL, 0xE6051D35UL, 0xA0E1D855UL,
|
|
||||||
0xD36B4CF1UL, 0xF544EDEBUL, 0xB0E93524UL, 0xBEBB8FBDUL,
|
|
||||||
0xA2D762CFUL, 0x49C92F54UL, 0x38B5F331UL, 0x7128A454UL,
|
|
||||||
0x48392905UL, 0xA65B1DB8UL, 0x851C97BDUL, 0xD675CF2FUL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
0x85E04019UL, 0x332BF567UL, 0x662DBFFFUL, 0xCFC65693UL,
|
|
||||||
0x2A8D7F6FUL, 0xAB9BC912UL, 0xDE6008A1UL, 0x2028DA1FUL,
|
|
||||||
0x0227BCE7UL, 0x4D642916UL, 0x18FAC300UL, 0x50F18B82UL,
|
|
||||||
0x2CB2CB11UL, 0xB232E75CUL, 0x4B3695F2UL, 0xB28707DEUL,
|
|
||||||
0xA05FBCF6UL, 0xCD4181E9UL, 0xE150210CUL, 0xE24EF1BDUL,
|
|
||||||
0xB168C381UL, 0xFDE4E789UL, 0x5C79B0D8UL, 0x1E8BFD43UL,
|
|
||||||
0x4D495001UL, 0x38BE4341UL, 0x913CEE1DUL, 0x92A79C3FUL,
|
|
||||||
0x089766BEUL, 0xBAEEADF4UL, 0x1286BECFUL, 0xB6EACB19UL,
|
|
||||||
0x2660C200UL, 0x7565BDE4UL, 0x64241F7AUL, 0x8248DCA9UL,
|
|
||||||
0xC3B3AD66UL, 0x28136086UL, 0x0BD8DFA8UL, 0x356D1CF2UL,
|
|
||||||
0x107789BEUL, 0xB3B2E9CEUL, 0x0502AA8FUL, 0x0BC0351EUL,
|
|
||||||
0x166BF52AUL, 0xEB12FF82UL, 0xE3486911UL, 0xD34D7516UL,
|
|
||||||
0x4E7B3AFFUL, 0x5F43671BUL, 0x9CF6E037UL, 0x4981AC83UL,
|
|
||||||
0x334266CEUL, 0x8C9341B7UL, 0xD0D854C0UL, 0xCB3A6C88UL,
|
|
||||||
0x47BC2829UL, 0x4725BA37UL, 0xA66AD22BUL, 0x7AD61F1EUL,
|
|
||||||
0x0C5CBAFAUL, 0x4437F107UL, 0xB6E79962UL, 0x42D2D816UL,
|
|
||||||
0x0A961288UL, 0xE1A5C06EUL, 0x13749E67UL, 0x72FC081AUL,
|
|
||||||
0xB1D139F7UL, 0xF9583745UL, 0xCF19DF58UL, 0xBEC3F756UL,
|
|
||||||
0xC06EBA30UL, 0x07211B24UL, 0x45C28829UL, 0xC95E317FUL,
|
|
||||||
0xBC8EC511UL, 0x38BC46E9UL, 0xC6E6FA14UL, 0xBAE8584AUL,
|
|
||||||
0xAD4EBC46UL, 0x468F508BUL, 0x7829435FUL, 0xF124183BUL,
|
|
||||||
0x821DBA9FUL, 0xAFF60FF4UL, 0xEA2C4E6DUL, 0x16E39264UL,
|
|
||||||
0x92544A8BUL, 0x009B4FC3UL, 0xABA68CEDUL, 0x9AC96F78UL,
|
|
||||||
0x06A5B79AUL, 0xB2856E6EUL, 0x1AEC3CA9UL, 0xBE838688UL,
|
|
||||||
0x0E0804E9UL, 0x55F1BE56UL, 0xE7E5363BUL, 0xB3A1F25DUL,
|
|
||||||
0xF7DEBB85UL, 0x61FE033CUL, 0x16746233UL, 0x3C034C28UL,
|
|
||||||
0xDA6D0C74UL, 0x79AAC56CUL, 0x3CE4E1ADUL, 0x51F0C802UL,
|
|
||||||
0x98F8F35AUL, 0x1626A49FUL, 0xEED82B29UL, 0x1D382FE3UL,
|
|
||||||
0x0C4FB99AUL, 0xBB325778UL, 0x3EC6D97BUL, 0x6E77A6A9UL,
|
|
||||||
0xCB658B5CUL, 0xD45230C7UL, 0x2BD1408BUL, 0x60C03EB7UL,
|
|
||||||
0xB9068D78UL, 0xA33754F4UL, 0xF430C87DUL, 0xC8A71302UL,
|
|
||||||
0xB96D8C32UL, 0xEBD4E7BEUL, 0xBE8B9D2DUL, 0x7979FB06UL,
|
|
||||||
0xE7225308UL, 0x8B75CF77UL, 0x11EF8DA4UL, 0xE083C858UL,
|
|
||||||
0x8D6B786FUL, 0x5A6317A6UL, 0xFA5CF7A0UL, 0x5DDA0033UL,
|
|
||||||
0xF28EBFB0UL, 0xF5B9C310UL, 0xA0EAC280UL, 0x08B9767AUL,
|
|
||||||
0xA3D9D2B0UL, 0x79D34217UL, 0x021A718DUL, 0x9AC6336AUL,
|
|
||||||
0x2711FD60UL, 0x438050E3UL, 0x069908A8UL, 0x3D7FEDC4UL,
|
|
||||||
0x826D2BEFUL, 0x4EEB8476UL, 0x488DCF25UL, 0x36C9D566UL,
|
|
||||||
0x28E74E41UL, 0xC2610ACAUL, 0x3D49A9CFUL, 0xBAE3B9DFUL,
|
|
||||||
0xB65F8DE6UL, 0x92AEAF64UL, 0x3AC7D5E6UL, 0x9EA80509UL,
|
|
||||||
0xF22B017DUL, 0xA4173F70UL, 0xDD1E16C3UL, 0x15E0D7F9UL,
|
|
||||||
0x50B1B887UL, 0x2B9F4FD5UL, 0x625ABA82UL, 0x6A017962UL,
|
|
||||||
0x2EC01B9CUL, 0x15488AA9UL, 0xD716E740UL, 0x40055A2CUL,
|
|
||||||
0x93D29A22UL, 0xE32DBF9AUL, 0x058745B9UL, 0x3453DC1EUL,
|
|
||||||
0xD699296EUL, 0x496CFF6FUL, 0x1C9F4986UL, 0xDFE2ED07UL,
|
|
||||||
0xB87242D1UL, 0x19DE7EAEUL, 0x053E561AUL, 0x15AD6F8CUL,
|
|
||||||
0x66626C1CUL, 0x7154C24CUL, 0xEA082B2AUL, 0x93EB2939UL,
|
|
||||||
0x17DCB0F0UL, 0x58D4F2AEUL, 0x9EA294FBUL, 0x52CF564CUL,
|
|
||||||
0x9883FE66UL, 0x2EC40581UL, 0x763953C3UL, 0x01D6692EUL,
|
|
||||||
0xD3A0C108UL, 0xA1E7160EUL, 0xE4F2DFA6UL, 0x693ED285UL,
|
|
||||||
0x74904698UL, 0x4C2B0EDDUL, 0x4F757656UL, 0x5D393378UL,
|
|
||||||
0xA132234FUL, 0x3D321C5DUL, 0xC3F5E194UL, 0x4B269301UL,
|
|
||||||
0xC79F022FUL, 0x3C997E7EUL, 0x5E4F9504UL, 0x3FFAFBBDUL,
|
|
||||||
0x76F7AD0EUL, 0x296693F4UL, 0x3D1FCE6FUL, 0xC61E45BEUL,
|
|
||||||
0xD3B5AB34UL, 0xF72BF9B7UL, 0x1B0434C0UL, 0x4E72B567UL,
|
|
||||||
0x5592A33DUL, 0xB5229301UL, 0xCFD2A87FUL, 0x60AEB767UL,
|
|
||||||
0x1814386BUL, 0x30BCC33DUL, 0x38A0C07DUL, 0xFD1606F2UL,
|
|
||||||
0xC363519BUL, 0x589DD390UL, 0x5479F8E6UL, 0x1CB8D647UL,
|
|
||||||
0x97FD61A9UL, 0xEA7759F4UL, 0x2D57539DUL, 0x569A58CFUL,
|
|
||||||
0xE84E63ADUL, 0x462E1B78UL, 0x6580F87EUL, 0xF3817914UL,
|
|
||||||
0x91DA55F4UL, 0x40A230F3UL, 0xD1988F35UL, 0xB6E318D2UL,
|
|
||||||
0x3FFA50BCUL, 0x3D40F021UL, 0xC3C0BDAEUL, 0x4958C24CUL,
|
|
||||||
0x518F36B2UL, 0x84B1D370UL, 0x0FEDCE83UL, 0x878DDADAUL,
|
|
||||||
0xF2A279C7UL, 0x94E01BE8UL, 0x90716F4BUL, 0x954B8AA3UL
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
0xE216300DUL, 0xBBDDFFFCUL, 0xA7EBDABDUL, 0x35648095UL,
|
|
||||||
0x7789F8B7UL, 0xE6C1121BUL, 0x0E241600UL, 0x052CE8B5UL,
|
|
||||||
0x11A9CFB0UL, 0xE5952F11UL, 0xECE7990AUL, 0x9386D174UL,
|
|
||||||
0x2A42931CUL, 0x76E38111UL, 0xB12DEF3AUL, 0x37DDDDFCUL,
|
|
||||||
0xDE9ADEB1UL, 0x0A0CC32CUL, 0xBE197029UL, 0x84A00940UL,
|
|
||||||
0xBB243A0FUL, 0xB4D137CFUL, 0xB44E79F0UL, 0x049EEDFDUL,
|
|
||||||
0x0B15A15DUL, 0x480D3168UL, 0x8BBBDE5AUL, 0x669DED42UL,
|
|
||||||
0xC7ECE831UL, 0x3F8F95E7UL, 0x72DF191BUL, 0x7580330DUL,
|
|
||||||
0x94074251UL, 0x5C7DCDFAUL, 0xABBE6D63UL, 0xAA402164UL,
|
|
||||||
0xB301D40AUL, 0x02E7D1CAUL, 0x53571DAEUL, 0x7A3182A2UL,
|
|
||||||
0x12A8DDECUL, 0xFDAA335DUL, 0x176F43E8UL, 0x71FB46D4UL,
|
|
||||||
0x38129022UL, 0xCE949AD4UL, 0xB84769ADUL, 0x965BD862UL,
|
|
||||||
0x82F3D055UL, 0x66FB9767UL, 0x15B80B4EUL, 0x1D5B47A0UL,
|
|
||||||
0x4CFDE06FUL, 0xC28EC4B8UL, 0x57E8726EUL, 0x647A78FCUL,
|
|
||||||
0x99865D44UL, 0x608BD593UL, 0x6C200E03UL, 0x39DC5FF6UL,
|
|
||||||
0x5D0B00A3UL, 0xAE63AFF2UL, 0x7E8BD632UL, 0x70108C0CUL,
|
|
||||||
0xBBD35049UL, 0x2998DF04UL, 0x980CF42AUL, 0x9B6DF491UL,
|
|
||||||
0x9E7EDD53UL, 0x06918548UL, 0x58CB7E07UL, 0x3B74EF2EUL,
|
|
||||||
0x522FFFB1UL, 0xD24708CCUL, 0x1C7E27CDUL, 0xA4EB215BUL,
|
|
||||||
0x3CF1D2E2UL, 0x19B47A38UL, 0x424F7618UL, 0x35856039UL,
|
|
||||||
0x9D17DEE7UL, 0x27EB35E6UL, 0xC9AFF67BUL, 0x36BAF5B8UL,
|
|
||||||
0x09C467CDUL, 0xC18910B1UL, 0xE11DBF7BUL, 0x06CD1AF8UL,
|
|
||||||
0x7170C608UL, 0x2D5E3354UL, 0xD4DE495AUL, 0x64C6D006UL,
|
|
||||||
0xBCC0C62CUL, 0x3DD00DB3UL, 0x708F8F34UL, 0x77D51B42UL,
|
|
||||||
0x264F620FUL, 0x24B8D2BFUL, 0x15C1B79EUL, 0x46A52564UL,
|
|
||||||
0xF8D7E54EUL, 0x3E378160UL, 0x7895CDA5UL, 0x859C15A5UL,
|
|
||||||
0xE6459788UL, 0xC37BC75FUL, 0xDB07BA0CUL, 0x0676A3ABUL,
|
|
||||||
0x7F229B1EUL, 0x31842E7BUL, 0x24259FD7UL, 0xF8BEF472UL,
|
|
||||||
0x835FFCB8UL, 0x6DF4C1F2UL, 0x96F5B195UL, 0xFD0AF0FCUL,
|
|
||||||
0xB0FE134CUL, 0xE2506D3DUL, 0x4F9B12EAUL, 0xF215F225UL,
|
|
||||||
0xA223736FUL, 0x9FB4C428UL, 0x25D04979UL, 0x34C713F8UL,
|
|
||||||
0xC4618187UL, 0xEA7A6E98UL, 0x7CD16EFCUL, 0x1436876CUL,
|
|
||||||
0xF1544107UL, 0xBEDEEE14UL, 0x56E9AF27UL, 0xA04AA441UL,
|
|
||||||
0x3CF7C899UL, 0x92ECBAE6UL, 0xDD67016DUL, 0x151682EBUL,
|
|
||||||
0xA842EEDFUL, 0xFDBA60B4UL, 0xF1907B75UL, 0x20E3030FUL,
|
|
||||||
0x24D8C29EUL, 0xE139673BUL, 0xEFA63FB8UL, 0x71873054UL,
|
|
||||||
0xB6F2CF3BUL, 0x9F326442UL, 0xCB15A4CCUL, 0xB01A4504UL,
|
|
||||||
0xF1E47D8DUL, 0x844A1BE5UL, 0xBAE7DFDCUL, 0x42CBDA70UL,
|
|
||||||
0xCD7DAE0AUL, 0x57E85B7AUL, 0xD53F5AF6UL, 0x20CF4D8CUL,
|
|
||||||
0xCEA4D428UL, 0x79D130A4UL, 0x3486EBFBUL, 0x33D3CDDCUL,
|
|
||||||
0x77853B53UL, 0x37EFFCB5UL, 0xC5068778UL, 0xE580B3E6UL,
|
|
||||||
0x4E68B8F4UL, 0xC5C8B37EUL, 0x0D809EA2UL, 0x398FEB7CUL,
|
|
||||||
0x132A4F94UL, 0x43B7950EUL, 0x2FEE7D1CUL, 0x223613BDUL,
|
|
||||||
0xDD06CAA2UL, 0x37DF932BUL, 0xC4248289UL, 0xACF3EBC3UL,
|
|
||||||
0x5715F6B7UL, 0xEF3478DDUL, 0xF267616FUL, 0xC148CBE4UL,
|
|
||||||
0x9052815EUL, 0x5E410FABUL, 0xB48A2465UL, 0x2EDA7FA4UL,
|
|
||||||
0xE87B40E4UL, 0xE98EA084UL, 0x5889E9E1UL, 0xEFD390FCUL,
|
|
||||||
0xDD07D35BUL, 0xDB485694UL, 0x38D7E5B2UL, 0x57720101UL,
|
|
||||||
0x730EDEBCUL, 0x5B643113UL, 0x94917E4FUL, 0x503C2FBAUL,
|
|
||||||
0x646F1282UL, 0x7523D24AUL, 0xE0779695UL, 0xF9C17A8FUL,
|
|
||||||
0x7A5B2121UL, 0xD187B896UL, 0x29263A4DUL, 0xBA510CDFUL,
|
|
||||||
0x81F47C9FUL, 0xAD1163EDUL, 0xEA7B5965UL, 0x1A00726EUL,
|
|
||||||
0x11403092UL, 0x00DA6D77UL, 0x4A0CDD61UL, 0xAD1F4603UL,
|
|
||||||
0x605BDFB0UL, 0x9EEDC364UL, 0x22EBE6A8UL, 0xCEE7D28AUL,
|
|
||||||
0xA0E736A0UL, 0x5564A6B9UL, 0x10853209UL, 0xC7EB8F37UL,
|
|
||||||
0x2DE705CAUL, 0x8951570FUL, 0xDF09822BUL, 0xBD691A6CUL,
|
|
||||||
0xAA12E4F2UL, 0x87451C0FUL, 0xE0F6A27AUL, 0x3ADA4819UL,
|
|
||||||
0x4CF1764FUL, 0x0D771C2BUL, 0x67CDB156UL, 0x350D8384UL,
|
|
||||||
0x5938FA0FUL, 0x42399EF3UL, 0x36997B07UL, 0x0E84093DUL,
|
|
||||||
0x4AA93E61UL, 0x8360D87BUL, 0x1FA98B0CUL, 0x1149382CUL,
|
|
||||||
0xE97625A5UL, 0x0614D1B7UL, 0x0E25244BUL, 0x0C768347UL,
|
|
||||||
0x589E8D82UL, 0x0D2059D1UL, 0xA466BB1EUL, 0xF8DA0A82UL,
|
|
||||||
0x04F19130UL, 0xBA6E4EC0UL, 0x99265164UL, 0x1EE7230DUL,
|
|
||||||
0x50B2AD80UL, 0xEAEE6801UL, 0x8DB2A283UL, 0xEA8BF59EUL
|
|
||||||
}};
|
|
||||||
|
|
||||||
/* CAST uses three different round functions */
|
|
||||||
#define f1(l, r, km, kr) \
|
|
||||||
t = rotlVariable(km + r, kr); \
|
|
||||||
l ^= ((S[0][U8a(t)] ^ S[1][U8b(t)]) - \
|
|
||||||
S[2][U8c(t)]) + S[3][U8d(t)];
|
|
||||||
#define f2(l, r, km, kr) \
|
|
||||||
t = rotlVariable(km ^ r, kr); \
|
|
||||||
l ^= ((S[0][U8a(t)] - S[1][U8b(t)]) + \
|
|
||||||
S[2][U8c(t)]) ^ S[3][U8d(t)];
|
|
||||||
#define f3(l, r, km, kr) \
|
|
||||||
t = rotlVariable(km - r, kr); \
|
|
||||||
l ^= ((S[0][U8a(t)] + S[1][U8b(t)]) ^ \
|
|
||||||
S[2][U8c(t)]) - S[3][U8d(t)];
|
|
||||||
|
|
||||||
#define F1(l, r, i, j) f1(l, r, K[i], K[i+j])
|
|
||||||
#define F2(l, r, i, j) f2(l, r, K[i], K[i+j])
|
|
||||||
#define F3(l, r, i, j) f3(l, r, K[i], K[i+j])
|
|
||||||
|
|
||||||
|
|
||||||
void Cast5Encrypt (const byte *inBlock, byte *outBlock, CAST_KEY *key)
|
|
||||||
{
|
|
||||||
word32 l = BE32 (((word32 *)inBlock)[0]);
|
|
||||||
word32 r = BE32 (((word32 *)inBlock)[1]);
|
|
||||||
word32 *K = key->K;
|
|
||||||
word32 t;
|
|
||||||
|
|
||||||
/* Do the work */
|
|
||||||
F1(l, r, 0, 16);
|
|
||||||
F2(r, l, 1, 16);
|
|
||||||
F3(l, r, 2, 16);
|
|
||||||
F1(r, l, 3, 16);
|
|
||||||
F2(l, r, 4, 16);
|
|
||||||
F3(r, l, 5, 16);
|
|
||||||
F1(l, r, 6, 16);
|
|
||||||
F2(r, l, 7, 16);
|
|
||||||
F3(l, r, 8, 16);
|
|
||||||
F1(r, l, 9, 16);
|
|
||||||
F2(l, r, 10, 16);
|
|
||||||
F3(r, l, 11, 16);
|
|
||||||
F1(l, r, 12, 16);
|
|
||||||
F2(r, l, 13, 16);
|
|
||||||
F3(l, r, 14, 16);
|
|
||||||
F1(r, l, 15, 16);
|
|
||||||
|
|
||||||
/* Put l,r into outblock */
|
|
||||||
((word32 *)outBlock)[0] = BE32 (r);
|
|
||||||
((word32 *)outBlock)[1] = BE32 (l);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Cast5Decrypt (const byte *inBlock, byte *outBlock, CAST_KEY *key)
|
|
||||||
{
|
|
||||||
word32 r = BE32 (((word32 *)inBlock)[0]);
|
|
||||||
word32 l = BE32 (((word32 *)inBlock)[1]);
|
|
||||||
word32 *K = key->K;
|
|
||||||
word32 t;
|
|
||||||
|
|
||||||
/* Only do full 16 rounds if key length > 80 bits */
|
|
||||||
F1(r, l, 15, 16);
|
|
||||||
F3(l, r, 14, 16);
|
|
||||||
F2(r, l, 13, 16);
|
|
||||||
F1(l, r, 12, 16);
|
|
||||||
F3(r, l, 11, 16);
|
|
||||||
F2(l, r, 10, 16);
|
|
||||||
F1(r, l, 9, 16);
|
|
||||||
F3(l, r, 8, 16);
|
|
||||||
F2(r, l, 7, 16);
|
|
||||||
F1(l, r, 6, 16);
|
|
||||||
F3(r, l, 5, 16);
|
|
||||||
F2(l, r, 4, 16);
|
|
||||||
F1(r, l, 3, 16);
|
|
||||||
F3(l, r, 2, 16);
|
|
||||||
F2(r, l, 1, 16);
|
|
||||||
F1(l, r, 0, 16);
|
|
||||||
/* Put l,r into outblock */
|
|
||||||
((word32 *)outBlock)[0] = BE32 (l);
|
|
||||||
((word32 *)outBlock)[1] = BE32 (r);
|
|
||||||
/* Wipe clean */
|
|
||||||
t = l = r = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Cast5SetKey (CAST_KEY *key, unsigned int keylength, const byte *userKey)
|
|
||||||
{
|
|
||||||
unsigned int i;
|
|
||||||
word32 *K = key->K;
|
|
||||||
word32 X[4], Z[4];
|
|
||||||
|
|
||||||
X[0] = BE32 (((word32 *)userKey)[0]);
|
|
||||||
X[1] = BE32 (((word32 *)userKey)[1]);
|
|
||||||
X[2] = BE32 (((word32 *)userKey)[2]);
|
|
||||||
X[3] = BE32 (((word32 *)userKey)[3]);
|
|
||||||
|
|
||||||
#define x(i) GETBYTE(X[i/4], 3-i%4)
|
|
||||||
#define z(i) GETBYTE(Z[i/4], 3-i%4)
|
|
||||||
|
|
||||||
for (i=0; i<=16; i+=16)
|
|
||||||
{
|
|
||||||
// this part is copied directly from RFC 2144 (with some search and replace) by Wei Dai
|
|
||||||
Z[0] = X[0] ^ S[4][x(0xD)] ^ S[5][x(0xF)] ^ S[6][x(0xC)] ^ S[7][x(0xE)] ^ S[6][x(0x8)];
|
|
||||||
Z[1] = X[2] ^ S[4][z(0x0)] ^ S[5][z(0x2)] ^ S[6][z(0x1)] ^ S[7][z(0x3)] ^ S[7][x(0xA)];
|
|
||||||
Z[2] = X[3] ^ S[4][z(0x7)] ^ S[5][z(0x6)] ^ S[6][z(0x5)] ^ S[7][z(0x4)] ^ S[4][x(0x9)];
|
|
||||||
Z[3] = X[1] ^ S[4][z(0xA)] ^ S[5][z(0x9)] ^ S[6][z(0xB)] ^ S[7][z(0x8)] ^ S[5][x(0xB)];
|
|
||||||
K[i+0] = S[4][z(0x8)] ^ S[5][z(0x9)] ^ S[6][z(0x7)] ^ S[7][z(0x6)] ^ S[4][z(0x2)];
|
|
||||||
K[i+1] = S[4][z(0xA)] ^ S[5][z(0xB)] ^ S[6][z(0x5)] ^ S[7][z(0x4)] ^ S[5][z(0x6)];
|
|
||||||
K[i+2] = S[4][z(0xC)] ^ S[5][z(0xD)] ^ S[6][z(0x3)] ^ S[7][z(0x2)] ^ S[6][z(0x9)];
|
|
||||||
K[i+3] = S[4][z(0xE)] ^ S[5][z(0xF)] ^ S[6][z(0x1)] ^ S[7][z(0x0)] ^ S[7][z(0xC)];
|
|
||||||
X[0] = Z[2] ^ S[4][z(0x5)] ^ S[5][z(0x7)] ^ S[6][z(0x4)] ^ S[7][z(0x6)] ^ S[6][z(0x0)];
|
|
||||||
X[1] = Z[0] ^ S[4][x(0x0)] ^ S[5][x(0x2)] ^ S[6][x(0x1)] ^ S[7][x(0x3)] ^ S[7][z(0x2)];
|
|
||||||
X[2] = Z[1] ^ S[4][x(0x7)] ^ S[5][x(0x6)] ^ S[6][x(0x5)] ^ S[7][x(0x4)] ^ S[4][z(0x1)];
|
|
||||||
X[3] = Z[3] ^ S[4][x(0xA)] ^ S[5][x(0x9)] ^ S[6][x(0xB)] ^ S[7][x(0x8)] ^ S[5][z(0x3)];
|
|
||||||
K[i+4] = S[4][x(0x3)] ^ S[5][x(0x2)] ^ S[6][x(0xC)] ^ S[7][x(0xD)] ^ S[4][x(0x8)];
|
|
||||||
K[i+5] = S[4][x(0x1)] ^ S[5][x(0x0)] ^ S[6][x(0xE)] ^ S[7][x(0xF)] ^ S[5][x(0xD)];
|
|
||||||
K[i+6] = S[4][x(0x7)] ^ S[5][x(0x6)] ^ S[6][x(0x8)] ^ S[7][x(0x9)] ^ S[6][x(0x3)];
|
|
||||||
K[i+7] = S[4][x(0x5)] ^ S[5][x(0x4)] ^ S[6][x(0xA)] ^ S[7][x(0xB)] ^ S[7][x(0x7)];
|
|
||||||
Z[0] = X[0] ^ S[4][x(0xD)] ^ S[5][x(0xF)] ^ S[6][x(0xC)] ^ S[7][x(0xE)] ^ S[6][x(0x8)];
|
|
||||||
Z[1] = X[2] ^ S[4][z(0x0)] ^ S[5][z(0x2)] ^ S[6][z(0x1)] ^ S[7][z(0x3)] ^ S[7][x(0xA)];
|
|
||||||
Z[2] = X[3] ^ S[4][z(0x7)] ^ S[5][z(0x6)] ^ S[6][z(0x5)] ^ S[7][z(0x4)] ^ S[4][x(0x9)];
|
|
||||||
Z[3] = X[1] ^ S[4][z(0xA)] ^ S[5][z(0x9)] ^ S[6][z(0xB)] ^ S[7][z(0x8)] ^ S[5][x(0xB)];
|
|
||||||
K[i+8] = S[4][z(0x3)] ^ S[5][z(0x2)] ^ S[6][z(0xC)] ^ S[7][z(0xD)] ^ S[4][z(0x9)];
|
|
||||||
K[i+9] = S[4][z(0x1)] ^ S[5][z(0x0)] ^ S[6][z(0xE)] ^ S[7][z(0xF)] ^ S[5][z(0xC)];
|
|
||||||
K[i+10] = S[4][z(0x7)] ^ S[5][z(0x6)] ^ S[6][z(0x8)] ^ S[7][z(0x9)] ^ S[6][z(0x2)];
|
|
||||||
K[i+11] = S[4][z(0x5)] ^ S[5][z(0x4)] ^ S[6][z(0xA)] ^ S[7][z(0xB)] ^ S[7][z(0x6)];
|
|
||||||
X[0] = Z[2] ^ S[4][z(0x5)] ^ S[5][z(0x7)] ^ S[6][z(0x4)] ^ S[7][z(0x6)] ^ S[6][z(0x0)];
|
|
||||||
X[1] = Z[0] ^ S[4][x(0x0)] ^ S[5][x(0x2)] ^ S[6][x(0x1)] ^ S[7][x(0x3)] ^ S[7][z(0x2)];
|
|
||||||
X[2] = Z[1] ^ S[4][x(0x7)] ^ S[5][x(0x6)] ^ S[6][x(0x5)] ^ S[7][x(0x4)] ^ S[4][z(0x1)];
|
|
||||||
X[3] = Z[3] ^ S[4][x(0xA)] ^ S[5][x(0x9)] ^ S[6][x(0xB)] ^ S[7][x(0x8)] ^ S[5][z(0x3)];
|
|
||||||
K[i+12] = S[4][x(0x8)] ^ S[5][x(0x9)] ^ S[6][x(0x7)] ^ S[7][x(0x6)] ^ S[4][x(0x3)];
|
|
||||||
K[i+13] = S[4][x(0xA)] ^ S[5][x(0xB)] ^ S[6][x(0x5)] ^ S[7][x(0x4)] ^ S[5][x(0x7)];
|
|
||||||
K[i+14] = S[4][x(0xC)] ^ S[5][x(0xD)] ^ S[6][x(0x3)] ^ S[7][x(0x2)] ^ S[6][x(0x8)];
|
|
||||||
K[i+15] = S[4][x(0xE)] ^ S[5][x(0xF)] ^ S[6][x(0x1)] ^ S[7][x(0x0)] ^ S[7][x(0xD)];
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i=16; i<32; i++)
|
|
||||||
K[i] &= 0x1f;
|
|
||||||
}
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
/* Deprecated/legacy */
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef HEADER_CAST_H
|
|
||||||
#define HEADER_CAST_H
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef struct CAST_KEY_STRUCT
|
|
||||||
{
|
|
||||||
unsigned __int32 K[32];
|
|
||||||
} CAST_KEY;
|
|
||||||
|
|
||||||
void Cast5Decrypt (const byte *inBlock, byte *outBlock, CAST_KEY *key);
|
|
||||||
void Cast5Encrypt (const byte *inBlock, byte *outBlock, CAST_KEY *key);
|
|
||||||
void Cast5SetKey (CAST_KEY *key, unsigned int keylength, const byte *userKey);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -211,18 +211,6 @@
|
|||||||
RelativePath=".\Aestab.c"
|
RelativePath=".\Aestab.c"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
|
||||||
RelativePath=".\Blowfish.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath=".\Cast.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath=".\Des.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
<File
|
||||||
RelativePath=".\Rmd160.c"
|
RelativePath=".\Rmd160.c"
|
||||||
>
|
>
|
||||||
@@ -231,10 +219,6 @@
|
|||||||
RelativePath=".\Serpent.c"
|
RelativePath=".\Serpent.c"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
|
||||||
RelativePath=".\Sha1.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
<File
|
||||||
RelativePath=".\Sha2.c"
|
RelativePath=".\Sha2.c"
|
||||||
>
|
>
|
||||||
@@ -269,18 +253,6 @@
|
|||||||
RelativePath=".\Aestab.h"
|
RelativePath=".\Aestab.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
|
||||||
RelativePath=".\Blowfish.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath=".\Cast.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath=".\Des.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
<File
|
||||||
RelativePath=".\Rmd160.h"
|
RelativePath=".\Rmd160.h"
|
||||||
>
|
>
|
||||||
@@ -289,10 +261,6 @@
|
|||||||
RelativePath=".\Serpent.h"
|
RelativePath=".\Serpent.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
|
||||||
RelativePath=".\Sha1.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
<File
|
||||||
RelativePath=".\Sha2.h"
|
RelativePath=".\Sha2.h"
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -1,406 +0,0 @@
|
|||||||
/* Deprecated/legacy */
|
|
||||||
|
|
||||||
|
|
||||||
// des.cpp - modified by Wei Dai from Phil Karn's des.c
|
|
||||||
// The original code and all modifications are in the public domain.
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This is a major rewrite of my old public domain DES code written
|
|
||||||
* circa 1987, which in turn borrowed heavily from Jim Gillogly's 1977
|
|
||||||
* public domain code. I pretty much kept my key scheduling code, but
|
|
||||||
* the actual encrypt/decrypt routines are taken from from Richard
|
|
||||||
* Outerbridge's DES code as printed in Schneier's "Applied Cryptography."
|
|
||||||
*
|
|
||||||
* This code is in the public domain. I would appreciate bug reports and
|
|
||||||
* enhancements.
|
|
||||||
*
|
|
||||||
* Phil Karn KA9Q, karn@unix.ka9q.ampr.org, August 1994.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Adapted for TrueCrypt */
|
|
||||||
|
|
||||||
#include <memory.h>
|
|
||||||
#include "Common/Tcdefs.h"
|
|
||||||
#include "Common/Endian.h"
|
|
||||||
#include "Des.h"
|
|
||||||
|
|
||||||
#define word32 unsigned __int32
|
|
||||||
#define byte unsigned __int8
|
|
||||||
|
|
||||||
static word32 rotlFixed (word32 x, unsigned int y)
|
|
||||||
{
|
|
||||||
return (word32)((x<<y) | (x>>(sizeof(word32)*8-y)));
|
|
||||||
}
|
|
||||||
|
|
||||||
static word32 rotrFixed (word32 x, unsigned int y)
|
|
||||||
{
|
|
||||||
return (word32)((x>>y) | (x<<(sizeof(word32)*8-y)));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Tables defined in the Data Encryption Standard documents
|
|
||||||
* Three of these tables, the initial permutation, the final
|
|
||||||
* permutation and the expansion operator, are regular enough that
|
|
||||||
* for speed, we hard-code them. They're here for reference only.
|
|
||||||
* Also, the S and P boxes are used by a separate program, gensp.c,
|
|
||||||
* to build the combined SP box, Spbox[]. They're also here just
|
|
||||||
* for reference.
|
|
||||||
*/
|
|
||||||
#ifdef notdef
|
|
||||||
/* initial permutation IP */
|
|
||||||
static byte ip[] = {
|
|
||||||
58, 50, 42, 34, 26, 18, 10, 2,
|
|
||||||
60, 52, 44, 36, 28, 20, 12, 4,
|
|
||||||
62, 54, 46, 38, 30, 22, 14, 6,
|
|
||||||
64, 56, 48, 40, 32, 24, 16, 8,
|
|
||||||
57, 49, 41, 33, 25, 17, 9, 1,
|
|
||||||
59, 51, 43, 35, 27, 19, 11, 3,
|
|
||||||
61, 53, 45, 37, 29, 21, 13, 5,
|
|
||||||
63, 55, 47, 39, 31, 23, 15, 7
|
|
||||||
};
|
|
||||||
|
|
||||||
/* final permutation IP^-1 */
|
|
||||||
static byte fp[] = {
|
|
||||||
40, 8, 48, 16, 56, 24, 64, 32,
|
|
||||||
39, 7, 47, 15, 55, 23, 63, 31,
|
|
||||||
38, 6, 46, 14, 54, 22, 62, 30,
|
|
||||||
37, 5, 45, 13, 53, 21, 61, 29,
|
|
||||||
36, 4, 44, 12, 52, 20, 60, 28,
|
|
||||||
35, 3, 43, 11, 51, 19, 59, 27,
|
|
||||||
34, 2, 42, 10, 50, 18, 58, 26,
|
|
||||||
33, 1, 41, 9, 49, 17, 57, 25
|
|
||||||
};
|
|
||||||
/* expansion operation matrix */
|
|
||||||
static byte ei[] = {
|
|
||||||
32, 1, 2, 3, 4, 5,
|
|
||||||
4, 5, 6, 7, 8, 9,
|
|
||||||
8, 9, 10, 11, 12, 13,
|
|
||||||
12, 13, 14, 15, 16, 17,
|
|
||||||
16, 17, 18, 19, 20, 21,
|
|
||||||
20, 21, 22, 23, 24, 25,
|
|
||||||
24, 25, 26, 27, 28, 29,
|
|
||||||
28, 29, 30, 31, 32, 1
|
|
||||||
};
|
|
||||||
/* The (in)famous S-boxes */
|
|
||||||
static byte sbox[8][64] = {
|
|
||||||
/* S1 */
|
|
||||||
14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7,
|
|
||||||
0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8,
|
|
||||||
4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0,
|
|
||||||
15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13,
|
|
||||||
|
|
||||||
/* S2 */
|
|
||||||
15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10,
|
|
||||||
3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5,
|
|
||||||
0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15,
|
|
||||||
13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9,
|
|
||||||
|
|
||||||
/* S3 */
|
|
||||||
10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8,
|
|
||||||
13, 7, 0, 9, 3, 4, 6, 10, 2, 8, 5, 14, 12, 11, 15, 1,
|
|
||||||
13, 6, 4, 9, 8, 15, 3, 0, 11, 1, 2, 12, 5, 10, 14, 7,
|
|
||||||
1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12,
|
|
||||||
|
|
||||||
/* S4 */
|
|
||||||
7, 13, 14, 3, 0, 6, 9, 10, 1, 2, 8, 5, 11, 12, 4, 15,
|
|
||||||
13, 8, 11, 5, 6, 15, 0, 3, 4, 7, 2, 12, 1, 10, 14, 9,
|
|
||||||
10, 6, 9, 0, 12, 11, 7, 13, 15, 1, 3, 14, 5, 2, 8, 4,
|
|
||||||
3, 15, 0, 6, 10, 1, 13, 8, 9, 4, 5, 11, 12, 7, 2, 14,
|
|
||||||
|
|
||||||
/* S5 */
|
|
||||||
2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9,
|
|
||||||
14, 11, 2, 12, 4, 7, 13, 1, 5, 0, 15, 10, 3, 9, 8, 6,
|
|
||||||
4, 2, 1, 11, 10, 13, 7, 8, 15, 9, 12, 5, 6, 3, 0, 14,
|
|
||||||
11, 8, 12, 7, 1, 14, 2, 13, 6, 15, 0, 9, 10, 4, 5, 3,
|
|
||||||
|
|
||||||
/* S6 */
|
|
||||||
12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11,
|
|
||||||
10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8,
|
|
||||||
9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6,
|
|
||||||
4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13,
|
|
||||||
|
|
||||||
/* S7 */
|
|
||||||
4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1,
|
|
||||||
13, 0, 11, 7, 4, 9, 1, 10, 14, 3, 5, 12, 2, 15, 8, 6,
|
|
||||||
1, 4, 11, 13, 12, 3, 7, 14, 10, 15, 6, 8, 0, 5, 9, 2,
|
|
||||||
6, 11, 13, 8, 1, 4, 10, 7, 9, 5, 0, 15, 14, 2, 3, 12,
|
|
||||||
|
|
||||||
/* S8 */
|
|
||||||
13, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7,
|
|
||||||
1, 15, 13, 8, 10, 3, 7, 4, 12, 5, 6, 11, 0, 14, 9, 2,
|
|
||||||
7, 11, 4, 1, 9, 12, 14, 2, 0, 6, 10, 13, 15, 3, 5, 8,
|
|
||||||
2, 1, 14, 7, 4, 10, 8, 13, 15, 12, 9, 0, 3, 5, 6, 11
|
|
||||||
};
|
|
||||||
|
|
||||||
/* 32-bit permutation function P used on the output of the S-boxes */
|
|
||||||
static byte p32i[] = {
|
|
||||||
16, 7, 20, 21,
|
|
||||||
29, 12, 28, 17,
|
|
||||||
1, 15, 23, 26,
|
|
||||||
5, 18, 31, 10,
|
|
||||||
2, 8, 24, 14,
|
|
||||||
32, 27, 3, 9,
|
|
||||||
19, 13, 30, 6,
|
|
||||||
22, 11, 4, 25
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* permuted choice table (key) */
|
|
||||||
static const byte pc1[] = {
|
|
||||||
57, 49, 41, 33, 25, 17, 9,
|
|
||||||
1, 58, 50, 42, 34, 26, 18,
|
|
||||||
10, 2, 59, 51, 43, 35, 27,
|
|
||||||
19, 11, 3, 60, 52, 44, 36,
|
|
||||||
|
|
||||||
63, 55, 47, 39, 31, 23, 15,
|
|
||||||
7, 62, 54, 46, 38, 30, 22,
|
|
||||||
14, 6, 61, 53, 45, 37, 29,
|
|
||||||
21, 13, 5, 28, 20, 12, 4
|
|
||||||
};
|
|
||||||
|
|
||||||
/* number left rotations of pc1 */
|
|
||||||
static const byte totrot[] = {
|
|
||||||
1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28
|
|
||||||
};
|
|
||||||
|
|
||||||
/* permuted choice key (table) */
|
|
||||||
static const byte pc2[] = {
|
|
||||||
14, 17, 11, 24, 1, 5,
|
|
||||||
3, 28, 15, 6, 21, 10,
|
|
||||||
23, 19, 12, 4, 26, 8,
|
|
||||||
16, 7, 27, 20, 13, 2,
|
|
||||||
41, 52, 31, 37, 47, 55,
|
|
||||||
30, 40, 51, 45, 33, 48,
|
|
||||||
44, 49, 39, 56, 34, 53,
|
|
||||||
46, 42, 50, 36, 29, 32
|
|
||||||
};
|
|
||||||
|
|
||||||
/* End of DES-defined tables */
|
|
||||||
|
|
||||||
/* bit 0 is left-most in byte */
|
|
||||||
static const int bytebit[] = {
|
|
||||||
0200,0100,040,020,010,04,02,01
|
|
||||||
};
|
|
||||||
|
|
||||||
static const word32 Spbox[8][64] = {
|
|
||||||
{
|
|
||||||
0x01010400,0x00000000,0x00010000,0x01010404, 0x01010004,0x00010404,0x00000004,0x00010000,
|
|
||||||
0x00000400,0x01010400,0x01010404,0x00000400, 0x01000404,0x01010004,0x01000000,0x00000004,
|
|
||||||
0x00000404,0x01000400,0x01000400,0x00010400, 0x00010400,0x01010000,0x01010000,0x01000404,
|
|
||||||
0x00010004,0x01000004,0x01000004,0x00010004, 0x00000000,0x00000404,0x00010404,0x01000000,
|
|
||||||
0x00010000,0x01010404,0x00000004,0x01010000, 0x01010400,0x01000000,0x01000000,0x00000400,
|
|
||||||
0x01010004,0x00010000,0x00010400,0x01000004, 0x00000400,0x00000004,0x01000404,0x00010404,
|
|
||||||
0x01010404,0x00010004,0x01010000,0x01000404, 0x01000004,0x00000404,0x00010404,0x01010400,
|
|
||||||
0x00000404,0x01000400,0x01000400,0x00000000, 0x00010004,0x00010400,0x00000000,0x01010004},
|
|
||||||
{
|
|
||||||
0x80108020,0x80008000,0x00008000,0x00108020, 0x00100000,0x00000020,0x80100020,0x80008020,
|
|
||||||
0x80000020,0x80108020,0x80108000,0x80000000, 0x80008000,0x00100000,0x00000020,0x80100020,
|
|
||||||
0x00108000,0x00100020,0x80008020,0x00000000, 0x80000000,0x00008000,0x00108020,0x80100000,
|
|
||||||
0x00100020,0x80000020,0x00000000,0x00108000, 0x00008020,0x80108000,0x80100000,0x00008020,
|
|
||||||
0x00000000,0x00108020,0x80100020,0x00100000, 0x80008020,0x80100000,0x80108000,0x00008000,
|
|
||||||
0x80100000,0x80008000,0x00000020,0x80108020, 0x00108020,0x00000020,0x00008000,0x80000000,
|
|
||||||
0x00008020,0x80108000,0x00100000,0x80000020, 0x00100020,0x80008020,0x80000020,0x00100020,
|
|
||||||
0x00108000,0x00000000,0x80008000,0x00008020, 0x80000000,0x80100020,0x80108020,0x00108000},
|
|
||||||
{
|
|
||||||
0x00000208,0x08020200,0x00000000,0x08020008, 0x08000200,0x00000000,0x00020208,0x08000200,
|
|
||||||
0x00020008,0x08000008,0x08000008,0x00020000, 0x08020208,0x00020008,0x08020000,0x00000208,
|
|
||||||
0x08000000,0x00000008,0x08020200,0x00000200, 0x00020200,0x08020000,0x08020008,0x00020208,
|
|
||||||
0x08000208,0x00020200,0x00020000,0x08000208, 0x00000008,0x08020208,0x00000200,0x08000000,
|
|
||||||
0x08020200,0x08000000,0x00020008,0x00000208, 0x00020000,0x08020200,0x08000200,0x00000000,
|
|
||||||
0x00000200,0x00020008,0x08020208,0x08000200, 0x08000008,0x00000200,0x00000000,0x08020008,
|
|
||||||
0x08000208,0x00020000,0x08000000,0x08020208, 0x00000008,0x00020208,0x00020200,0x08000008,
|
|
||||||
0x08020000,0x08000208,0x00000208,0x08020000, 0x00020208,0x00000008,0x08020008,0x00020200},
|
|
||||||
{
|
|
||||||
0x00802001,0x00002081,0x00002081,0x00000080, 0x00802080,0x00800081,0x00800001,0x00002001,
|
|
||||||
0x00000000,0x00802000,0x00802000,0x00802081, 0x00000081,0x00000000,0x00800080,0x00800001,
|
|
||||||
0x00000001,0x00002000,0x00800000,0x00802001, 0x00000080,0x00800000,0x00002001,0x00002080,
|
|
||||||
0x00800081,0x00000001,0x00002080,0x00800080, 0x00002000,0x00802080,0x00802081,0x00000081,
|
|
||||||
0x00800080,0x00800001,0x00802000,0x00802081, 0x00000081,0x00000000,0x00000000,0x00802000,
|
|
||||||
0x00002080,0x00800080,0x00800081,0x00000001, 0x00802001,0x00002081,0x00002081,0x00000080,
|
|
||||||
0x00802081,0x00000081,0x00000001,0x00002000, 0x00800001,0x00002001,0x00802080,0x00800081,
|
|
||||||
0x00002001,0x00002080,0x00800000,0x00802001, 0x00000080,0x00800000,0x00002000,0x00802080},
|
|
||||||
{
|
|
||||||
0x00000100,0x02080100,0x02080000,0x42000100, 0x00080000,0x00000100,0x40000000,0x02080000,
|
|
||||||
0x40080100,0x00080000,0x02000100,0x40080100, 0x42000100,0x42080000,0x00080100,0x40000000,
|
|
||||||
0x02000000,0x40080000,0x40080000,0x00000000, 0x40000100,0x42080100,0x42080100,0x02000100,
|
|
||||||
0x42080000,0x40000100,0x00000000,0x42000000, 0x02080100,0x02000000,0x42000000,0x00080100,
|
|
||||||
0x00080000,0x42000100,0x00000100,0x02000000, 0x40000000,0x02080000,0x42000100,0x40080100,
|
|
||||||
0x02000100,0x40000000,0x42080000,0x02080100, 0x40080100,0x00000100,0x02000000,0x42080000,
|
|
||||||
0x42080100,0x00080100,0x42000000,0x42080100, 0x02080000,0x00000000,0x40080000,0x42000000,
|
|
||||||
0x00080100,0x02000100,0x40000100,0x00080000, 0x00000000,0x40080000,0x02080100,0x40000100},
|
|
||||||
{
|
|
||||||
0x20000010,0x20400000,0x00004000,0x20404010, 0x20400000,0x00000010,0x20404010,0x00400000,
|
|
||||||
0x20004000,0x00404010,0x00400000,0x20000010, 0x00400010,0x20004000,0x20000000,0x00004010,
|
|
||||||
0x00000000,0x00400010,0x20004010,0x00004000, 0x00404000,0x20004010,0x00000010,0x20400010,
|
|
||||||
0x20400010,0x00000000,0x00404010,0x20404000, 0x00004010,0x00404000,0x20404000,0x20000000,
|
|
||||||
0x20004000,0x00000010,0x20400010,0x00404000, 0x20404010,0x00400000,0x00004010,0x20000010,
|
|
||||||
0x00400000,0x20004000,0x20000000,0x00004010, 0x20000010,0x20404010,0x00404000,0x20400000,
|
|
||||||
0x00404010,0x20404000,0x00000000,0x20400010, 0x00000010,0x00004000,0x20400000,0x00404010,
|
|
||||||
0x00004000,0x00400010,0x20004010,0x00000000, 0x20404000,0x20000000,0x00400010,0x20004010},
|
|
||||||
{
|
|
||||||
0x00200000,0x04200002,0x04000802,0x00000000, 0x00000800,0x04000802,0x00200802,0x04200800,
|
|
||||||
0x04200802,0x00200000,0x00000000,0x04000002, 0x00000002,0x04000000,0x04200002,0x00000802,
|
|
||||||
0x04000800,0x00200802,0x00200002,0x04000800, 0x04000002,0x04200000,0x04200800,0x00200002,
|
|
||||||
0x04200000,0x00000800,0x00000802,0x04200802, 0x00200800,0x00000002,0x04000000,0x00200800,
|
|
||||||
0x04000000,0x00200800,0x00200000,0x04000802, 0x04000802,0x04200002,0x04200002,0x00000002,
|
|
||||||
0x00200002,0x04000000,0x04000800,0x00200000, 0x04200800,0x00000802,0x00200802,0x04200800,
|
|
||||||
0x00000802,0x04000002,0x04200802,0x04200000, 0x00200800,0x00000000,0x00000002,0x04200802,
|
|
||||||
0x00000000,0x00200802,0x04200000,0x00000800, 0x04000002,0x04000800,0x00000800,0x00200002},
|
|
||||||
{
|
|
||||||
0x10001040,0x00001000,0x00040000,0x10041040, 0x10000000,0x10001040,0x00000040,0x10000000,
|
|
||||||
0x00040040,0x10040000,0x10041040,0x00041000, 0x10041000,0x00041040,0x00001000,0x00000040,
|
|
||||||
0x10040000,0x10000040,0x10001000,0x00001040, 0x00041000,0x00040040,0x10040040,0x10041000,
|
|
||||||
0x00001040,0x00000000,0x00000000,0x10040040, 0x10000040,0x10001000,0x00041040,0x00040000,
|
|
||||||
0x00041040,0x00040000,0x10041000,0x00001000, 0x00000040,0x10040040,0x00001000,0x00041040,
|
|
||||||
0x10001000,0x00000040,0x10000040,0x10040000, 0x10040040,0x10000000,0x00040000,0x10001040,
|
|
||||||
0x00000000,0x10041040,0x00040040,0x10000040, 0x10040000,0x10001000,0x10001040,0x00000000,
|
|
||||||
0x10041040,0x00041000,0x00041000,0x00001040, 0x00001040,0x00040040,0x10000000,0x10041000}
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Set key (initialize key schedule array) */
|
|
||||||
static void RawSetKey (int encryption, const byte *key, word32 *scheduledKey)
|
|
||||||
{
|
|
||||||
byte buffer[56+56+8];
|
|
||||||
byte *const pc1m=buffer; /* place to modify pc1 into */
|
|
||||||
byte *const pcr=pc1m+56; /* place to rotate pc1 into */
|
|
||||||
byte *const ks=pcr+56;
|
|
||||||
register int i,j,l;
|
|
||||||
int m;
|
|
||||||
|
|
||||||
for (j=0; j<56; j++) { /* convert pc1 to bits of key */
|
|
||||||
l=pc1[j]-1; /* integer bit location */
|
|
||||||
m = l & 07; /* find bit */
|
|
||||||
pc1m[j]=(key[l>>3] & /* find which key byte l is in */
|
|
||||||
bytebit[m]) /* and which bit of that byte */
|
|
||||||
? 1 : 0; /* and store 1-bit result */
|
|
||||||
}
|
|
||||||
for (i=0; i<16; i++) { /* key chunk for each iteration */
|
|
||||||
memset(ks,0,8); /* Clear key schedule */
|
|
||||||
for (j=0; j<56; j++) /* rotate pc1 the right amount */
|
|
||||||
pcr[j] = pc1m[(l=j+totrot[i])<(j<28? 28 : 56) ? l: l-28];
|
|
||||||
/* rotate left and right halves independently */
|
|
||||||
for (j=0; j<48; j++){ /* select bits individually */
|
|
||||||
/* check bit that goes to ks[j] */
|
|
||||||
if (pcr[pc2[j]-1]){
|
|
||||||
/* mask it in if it's there */
|
|
||||||
l= j % 6;
|
|
||||||
ks[j/6] |= bytebit[l] >> 2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/* Now convert to odd/even interleaved form for use in F */
|
|
||||||
scheduledKey[2*i] = ((word32)ks[0] << 24)
|
|
||||||
| ((word32)ks[2] << 16)
|
|
||||||
| ((word32)ks[4] << 8)
|
|
||||||
| ((word32)ks[6]);
|
|
||||||
scheduledKey[2*i+1] = ((word32)ks[1] << 24)
|
|
||||||
| ((word32)ks[3] << 16)
|
|
||||||
| ((word32)ks[5] << 8)
|
|
||||||
| ((word32)ks[7]);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!encryption) // reverse key schedule order
|
|
||||||
for (i=0; i<16; i+=2)
|
|
||||||
{
|
|
||||||
word32 b = scheduledKey[i];
|
|
||||||
scheduledKey[i] = scheduledKey[32-2-i];
|
|
||||||
scheduledKey[32-2-i] = b;
|
|
||||||
|
|
||||||
b = scheduledKey[i+1];
|
|
||||||
scheduledKey[i+1] = scheduledKey[32-1-i];
|
|
||||||
scheduledKey[32-1-i] = b;
|
|
||||||
}
|
|
||||||
|
|
||||||
burn (buffer, sizeof (buffer));
|
|
||||||
}
|
|
||||||
|
|
||||||
static void RawProcessBlock(word32 *l_, word32 *r_, const word32 *k)
|
|
||||||
{
|
|
||||||
word32 l = *l_, r = *r_;
|
|
||||||
const word32 *kptr=k;
|
|
||||||
unsigned i;
|
|
||||||
|
|
||||||
for (i=0; i<8; i++)
|
|
||||||
{
|
|
||||||
word32 work = rotrFixed(r, 4U) ^ kptr[4*i+0];
|
|
||||||
l ^= Spbox[6][(work) & 0x3f]
|
|
||||||
^ Spbox[4][(work >> 8) & 0x3f]
|
|
||||||
^ Spbox[2][(work >> 16) & 0x3f]
|
|
||||||
^ Spbox[0][(work >> 24) & 0x3f];
|
|
||||||
work = r ^ kptr[4*i+1];
|
|
||||||
l ^= Spbox[7][(work) & 0x3f]
|
|
||||||
^ Spbox[5][(work >> 8) & 0x3f]
|
|
||||||
^ Spbox[3][(work >> 16) & 0x3f]
|
|
||||||
^ Spbox[1][(work >> 24) & 0x3f];
|
|
||||||
|
|
||||||
work = rotrFixed(l, 4U) ^ kptr[4*i+2];
|
|
||||||
r ^= Spbox[6][(work) & 0x3f]
|
|
||||||
^ Spbox[4][(work >> 8) & 0x3f]
|
|
||||||
^ Spbox[2][(work >> 16) & 0x3f]
|
|
||||||
^ Spbox[0][(work >> 24) & 0x3f];
|
|
||||||
work = l ^ kptr[4*i+3];
|
|
||||||
r ^= Spbox[7][(work) & 0x3f]
|
|
||||||
^ Spbox[5][(work >> 8) & 0x3f]
|
|
||||||
^ Spbox[3][(work >> 16) & 0x3f]
|
|
||||||
^ Spbox[1][(work >> 24) & 0x3f];
|
|
||||||
}
|
|
||||||
|
|
||||||
*l_ = l; *r_ = r;
|
|
||||||
}
|
|
||||||
|
|
||||||
void TripleDesSetKey (const byte *userKey, unsigned int length, TDES_KEY *ks)
|
|
||||||
{
|
|
||||||
RawSetKey (1, userKey + 0, ks->k1);
|
|
||||||
RawSetKey (1, userKey + 8, ks->k2);
|
|
||||||
RawSetKey (1, userKey + 16, ks->k3);
|
|
||||||
RawSetKey (0, userKey + 16, ks->k1d);
|
|
||||||
RawSetKey (0, userKey + 8, ks->k2d);
|
|
||||||
RawSetKey (0, userKey + 0, ks->k3d);
|
|
||||||
}
|
|
||||||
|
|
||||||
void TripleDesEncrypt (byte *inBlock, byte *outBlock, TDES_KEY *key, int encrypt)
|
|
||||||
{
|
|
||||||
word32 left = BE32 (((word32 *)inBlock)[0]);
|
|
||||||
word32 right = BE32 (((word32 *)inBlock)[1]);
|
|
||||||
word32 work;
|
|
||||||
|
|
||||||
right = rotlFixed(right, 4U);
|
|
||||||
work = (left ^ right) & 0xf0f0f0f0;
|
|
||||||
left ^= work;
|
|
||||||
right = rotrFixed(right^work, 20U);
|
|
||||||
work = (left ^ right) & 0xffff0000;
|
|
||||||
left ^= work;
|
|
||||||
right = rotrFixed(right^work, 18U);
|
|
||||||
work = (left ^ right) & 0x33333333;
|
|
||||||
left ^= work;
|
|
||||||
right = rotrFixed(right^work, 6U);
|
|
||||||
work = (left ^ right) & 0x00ff00ff;
|
|
||||||
left ^= work;
|
|
||||||
right = rotlFixed(right^work, 9U);
|
|
||||||
work = (left ^ right) & 0xaaaaaaaa;
|
|
||||||
left = rotlFixed(left^work, 1U);
|
|
||||||
right ^= work;
|
|
||||||
|
|
||||||
RawProcessBlock (&left, &right, encrypt ? key->k1 : key->k1d);
|
|
||||||
RawProcessBlock (&right, &left, !encrypt ? key->k2 : key->k2d);
|
|
||||||
RawProcessBlock (&left, &right, encrypt ? key->k3 : key->k3d);
|
|
||||||
|
|
||||||
right = rotrFixed(right, 1U);
|
|
||||||
work = (left ^ right) & 0xaaaaaaaa;
|
|
||||||
right ^= work;
|
|
||||||
left = rotrFixed(left^work, 9U);
|
|
||||||
work = (left ^ right) & 0x00ff00ff;
|
|
||||||
right ^= work;
|
|
||||||
left = rotlFixed(left^work, 6U);
|
|
||||||
work = (left ^ right) & 0x33333333;
|
|
||||||
right ^= work;
|
|
||||||
left = rotlFixed(left^work, 18U);
|
|
||||||
work = (left ^ right) & 0xffff0000;
|
|
||||||
right ^= work;
|
|
||||||
left = rotlFixed(left^work, 20U);
|
|
||||||
work = (left ^ right) & 0xf0f0f0f0;
|
|
||||||
right ^= work;
|
|
||||||
left = rotrFixed(left^work, 4U);
|
|
||||||
|
|
||||||
((word32 *)outBlock)[0] = BE32 (right);
|
|
||||||
((word32 *)outBlock)[1] = BE32 (left);
|
|
||||||
}
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
/* Deprecated/legacy */
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef HEADER_Crypto_DES
|
|
||||||
#define HEADER_Crypto_DES
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef struct TRIPLE_DES_KEY_STRUCT
|
|
||||||
{
|
|
||||||
unsigned __int32 k1[32];
|
|
||||||
unsigned __int32 k2[32];
|
|
||||||
unsigned __int32 k3[32];
|
|
||||||
unsigned __int32 k1d[32];
|
|
||||||
unsigned __int32 k2d[32];
|
|
||||||
unsigned __int32 k3d[32];
|
|
||||||
} TDES_KEY;
|
|
||||||
|
|
||||||
void TripleDesEncrypt (byte *inBlock, byte *outBlock, TDES_KEY *key, int encrypt);
|
|
||||||
void TripleDesSetKey (const byte *userKey, unsigned int length, TDES_KEY *ks);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif // HEADER_Crypto_DES
|
|
||||||
+11
-7
@@ -68,17 +68,18 @@ void RMD160Init (RMD160_CTX *ctx)
|
|||||||
void RMD160Update (RMD160_CTX *ctx, const unsigned char *input, unsigned __int32 lenArg)
|
void RMD160Update (RMD160_CTX *ctx, const unsigned char *input, unsigned __int32 lenArg)
|
||||||
{
|
{
|
||||||
#ifndef TC_WINDOWS_BOOT
|
#ifndef TC_WINDOWS_BOOT
|
||||||
uint64 len = lenArg, have, need;
|
uint64 len = lenArg;
|
||||||
#else
|
#else
|
||||||
uint32 len = lenArg, have, need;
|
uint32 len = lenArg;
|
||||||
#endif
|
#endif
|
||||||
|
unsigned int have, need;
|
||||||
|
|
||||||
/* Check how many bytes we already have and how many more we need. */
|
/* Check how many bytes we already have and how many more we need. */
|
||||||
have = ((ctx->count >> 3) & (RIPEMD160_BLOCK_LENGTH - 1));
|
have = (unsigned int) ((ctx->count) & (RIPEMD160_BLOCK_LENGTH - 1));
|
||||||
need = RIPEMD160_BLOCK_LENGTH - have;
|
need = RIPEMD160_BLOCK_LENGTH - have;
|
||||||
|
|
||||||
/* Update bitcount */
|
/* Update bitcount */
|
||||||
ctx->count += len << 3;
|
ctx->count += len;
|
||||||
|
|
||||||
if (len >= need) {
|
if (len >= need) {
|
||||||
if (have != 0) {
|
if (have != 0) {
|
||||||
@@ -114,15 +115,16 @@ static void RMD160Pad(RMD160_CTX *ctx)
|
|||||||
/* Convert count to 8 bytes in little endian order. */
|
/* Convert count to 8 bytes in little endian order. */
|
||||||
|
|
||||||
#ifndef TC_WINDOWS_BOOT
|
#ifndef TC_WINDOWS_BOOT
|
||||||
PUT_64BIT_LE(count, ctx->count);
|
uint64 bitcount = ctx->count << 3;
|
||||||
|
PUT_64BIT_LE(count, bitcount);
|
||||||
#else
|
#else
|
||||||
*(uint32 *) (count + 4) = 0;
|
*(uint32 *) (count + 4) = 0;
|
||||||
*(uint32 *) (count + 0) = ctx->count;
|
*(uint32 *) (count + 0) = ctx->count << 3;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Pad out to 56 mod 64. */
|
/* Pad out to 56 mod 64. */
|
||||||
padlen = RIPEMD160_BLOCK_LENGTH -
|
padlen = RIPEMD160_BLOCK_LENGTH -
|
||||||
(uint32)((ctx->count >> 3) & (RIPEMD160_BLOCK_LENGTH - 1));
|
(uint32)((ctx->count) & (RIPEMD160_BLOCK_LENGTH - 1));
|
||||||
if (padlen < 1 + 8)
|
if (padlen < 1 + 8)
|
||||||
padlen += RIPEMD160_BLOCK_LENGTH;
|
padlen += RIPEMD160_BLOCK_LENGTH;
|
||||||
RMD160Update(ctx, PADDING, padlen - 8); /* padlen - 8 <= 64 */
|
RMD160Update(ctx, PADDING, padlen - 8); /* padlen - 8 <= 64 */
|
||||||
@@ -140,7 +142,9 @@ void RMD160Final(unsigned char *digest, RMD160_CTX *ctx)
|
|||||||
if (digest) {
|
if (digest) {
|
||||||
for (i = 0; i < 5; i++)
|
for (i = 0; i < 5; i++)
|
||||||
PUT_32BIT_LE(digest + i * 4, ctx->state[i]);
|
PUT_32BIT_LE(digest + i * 4, ctx->state[i]);
|
||||||
|
#ifndef TC_WINDOWS_BOOT
|
||||||
burn (ctx, sizeof(*ctx));
|
burn (ctx, sizeof(*ctx));
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+7
-13
@@ -630,19 +630,16 @@ static void KXf (const unsigned __int32 *k, unsigned int r, unsigned __int32 *a,
|
|||||||
|
|
||||||
#ifndef TC_MINIMIZE_CODE_SIZE
|
#ifndef TC_MINIMIZE_CODE_SIZE
|
||||||
|
|
||||||
void serpent_set_key(const unsigned __int8 userKey[], int keylen, unsigned __int8 *ks)
|
void serpent_set_key(const unsigned __int8 userKey[],unsigned __int8 *ks)
|
||||||
{
|
{
|
||||||
unsigned __int32 a,b,c,d,e;
|
unsigned __int32 a,b,c,d,e;
|
||||||
unsigned __int32 *k = (unsigned __int32 *)ks;
|
unsigned __int32 *k = (unsigned __int32 *)ks;
|
||||||
unsigned __int32 t;
|
unsigned __int32 t;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < keylen / (int)sizeof(__int32); i++)
|
for (i = 0; i < 8; i++)
|
||||||
k[i] = LE32(((unsigned __int32*)userKey)[i]);
|
k[i] = LE32(((unsigned __int32*)userKey)[i]);
|
||||||
|
|
||||||
if (keylen < 32)
|
|
||||||
k[keylen/4] |= (unsigned __int32)1 << ((keylen%4)*8);
|
|
||||||
|
|
||||||
k += 8;
|
k += 8;
|
||||||
t = k[-1];
|
t = k[-1];
|
||||||
for (i = 0; i < 132; ++i)
|
for (i = 0; i < 132; ++i)
|
||||||
@@ -694,19 +691,16 @@ static void SKf (unsigned __int32 *k, unsigned int r, unsigned __int32 *a, unsig
|
|||||||
k[r + 7] = *d;
|
k[r + 7] = *d;
|
||||||
}
|
}
|
||||||
|
|
||||||
void serpent_set_key(const unsigned __int8 userKey[], int keylen, unsigned __int8 *ks)
|
void serpent_set_key(const unsigned __int8 userKey[], unsigned __int8 *ks)
|
||||||
{
|
{
|
||||||
unsigned __int32 a,b,c,d,e;
|
unsigned __int32 a,b,c,d,e;
|
||||||
unsigned __int32 *k = (unsigned __int32 *)ks;
|
unsigned __int32 *k = (unsigned __int32 *)ks;
|
||||||
unsigned __int32 t;
|
unsigned __int32 t;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < keylen / (int)sizeof(__int32); i++)
|
for (i = 0; i < 8; i++)
|
||||||
k[i] = LE32(((unsigned __int32*)userKey)[i]);
|
k[i] = LE32(((unsigned __int32*)userKey)[i]);
|
||||||
|
|
||||||
if (keylen < 32)
|
|
||||||
k[keylen/4] |= (unsigned __int32)1 << ((keylen%4)*8);
|
|
||||||
|
|
||||||
k += 8;
|
k += 8;
|
||||||
t = k[-1];
|
t = k[-1];
|
||||||
for (i = 0; i < 132; ++i)
|
for (i = 0; i < 132; ++i)
|
||||||
@@ -841,7 +835,7 @@ void serpent_encrypt(const unsigned __int8 *inBlock, unsigned __int8 *outBlock,
|
|||||||
|
|
||||||
#endif // TC_MINIMIZE_CODE_SIZE
|
#endif // TC_MINIMIZE_CODE_SIZE
|
||||||
|
|
||||||
#if !defined (TC_MINIMIZE_CODE_SIZE) || defined (TC_WINDOWS_BOOT_SERPENT)
|
#if !defined (TC_MINIMIZE_CODE_SIZE)
|
||||||
|
|
||||||
void serpent_decrypt(const unsigned __int8 *inBlock, unsigned __int8 *outBlock, unsigned __int8 *ks)
|
void serpent_decrypt(const unsigned __int8 *inBlock, unsigned __int8 *outBlock, unsigned __int8 *ks)
|
||||||
{
|
{
|
||||||
@@ -884,7 +878,7 @@ start:
|
|||||||
out[3] = LE32(e);
|
out[3] = LE32(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
#else // TC_MINIMIZE_CODE_SIZE && !TC_WINDOWS_BOOT_SERPENT
|
#else // TC_MINIMIZE_CODE_SIZE
|
||||||
|
|
||||||
static void ILTf (uint32 *a, uint32 *b, uint32 *c, uint32 *d)
|
static void ILTf (uint32 *a, uint32 *b, uint32 *c, uint32 *d)
|
||||||
{
|
{
|
||||||
@@ -940,4 +934,4 @@ start:
|
|||||||
out[3] = LE32(e);
|
out[3] = LE32(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // TC_MINIMIZE_CODE_SIZE && !TC_WINDOWS_BOOT_SERPENT
|
#endif // TC_MINIMIZE_CODE_SIZE
|
||||||
|
|||||||
@@ -8,7 +8,8 @@ extern "C"
|
|||||||
{
|
{
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void serpent_set_key(const unsigned __int8 userKey[], int keylen, unsigned __int8 *ks);
|
/* userKey is always 32-bytes long */
|
||||||
|
void serpent_set_key(const unsigned __int8 userKey[], unsigned __int8 *ks);
|
||||||
void serpent_encrypt(const unsigned __int8 *inBlock, unsigned __int8 *outBlock, unsigned __int8 *ks);
|
void serpent_encrypt(const unsigned __int8 *inBlock, unsigned __int8 *outBlock, unsigned __int8 *ks);
|
||||||
void serpent_decrypt(const unsigned __int8 *inBlock, unsigned __int8 *outBlock, unsigned __int8 *ks);
|
void serpent_decrypt(const unsigned __int8 *inBlock, unsigned __int8 *outBlock, unsigned __int8 *ks);
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user