]> www.wagner.pp.ru Git - openssl-gost/engine.git/log
openssl-gost/engine.git
23 months agoUpdate INSTALL.md openssl_1_1_1
Dmitry Belyavskiy [Fri, 20 May 2022 14:46:23 +0000 (16:46 +0200)]
Update INSTALL.md

Remove CRYPT_PARAMS mentioning to avoid confusion

2 years agoChecking CMAKE_SKIP_INSTALL in install steps
kartaris [Thu, 26 Aug 2021 13:16:54 +0000 (16:16 +0300)]
Checking CMAKE_SKIP_INSTALL in install steps

2 years agoTRY_RUN should not be run when compiling cmake in CROSS_COMPILE
kartaris [Thu, 26 Aug 2021 12:57:36 +0000 (15:57 +0300)]
TRY_RUN should not be run when compiling cmake in CROSS_COMPILE

2 years agogost_omac included into gost_core there is no need to include it ingo gost_engine
kartaris [Thu, 19 Aug 2021 13:01:47 +0000 (16:01 +0300)]
gost_omac included into gost_core there is no need to include it ingo gost_engine

2 years agotest_keyexpimp, test_grasshopper, test_context and test_curves need OpenSSL::Crypto
kartaris [Thu, 19 Aug 2021 11:06:53 +0000 (14:06 +0300)]
test_keyexpimp, test_grasshopper, test_context and test_curves need OpenSSL::Crypto

2 years agoVERBOSE=1
kartaris [Thu, 19 Aug 2021 10:46:32 +0000 (13:46 +0300)]
VERBOSE=1

2 years agoDropped unnecessary libs
kartaris [Thu, 19 Aug 2021 06:30:49 +0000 (09:30 +0300)]
Dropped unnecessary libs

2 years agoIncreased minimum version for CMake
kartaris [Wed, 18 Aug 2021 12:53:45 +0000 (15:53 +0300)]
Increased minimum version for CMake

2 years agoSwitch to using OpenSSL target names in CMakeLists.txt
Richard Levitte [Wed, 18 Aug 2021 07:12:40 +0000 (09:12 +0200)]
Switch to using OpenSSL target names in CMakeLists.txt

Cmake 3.0 was a switch to using targets and properties rather than
variables when linking different components together.
We follow that philosophy by dropping ${OPENSSL_CRYPTO_LIBRARIES} and
${OPENSSL_SSL_LIBRARIES} in favor of OpenSSL::Crypto and OpenSSL::SSL.

(cherry picked from commit 36c50fa58c3cc1c5a30fd94aad77490e44abf022)

# Conflicts:
# CMakeLists.txt

2 years agoReduce the repeated library dependence information
Richard Levitte [Tue, 17 Aug 2021 20:35:09 +0000 (22:35 +0200)]
Reduce the repeated library dependence information

Cmake is generally good at tracking specified dependencies between
libraries.  All that we need to do is to establish a dependency on
OpenSSL's libcrypto for 'gost_core', and then we can reduce the amount
of repeated dependencies for everything that links against 'gost_core'.

(cherry picked from commit 7ca9b827135b90cfc2567058b56325a518a3d57a)

# Conflicts:
# CMakeLists.txt

2 years agoMake CMakeLists.txt work better with static OpenSSL libraries
Richard Levitte [Tue, 17 Aug 2021 20:31:39 +0000 (22:31 +0200)]
Make CMakeLists.txt work better with static OpenSSL libraries

The static OpenSSL libraries have some dependencies that need to be
recorded fofr everything that's linked against it.  To achieve this,
we use ${OPENSSL_CRYPTO_LIBRARIES} and ${OPENSSL_SSL_LIBRARIES}
instead of ${OPENSSL_CRYPTO_LIBRARY} and ${OPENSSL_SSL_LIBRARY}.

(cherry picked from commit 3df647770ff9aa8bd3b08c6ff8200da1ee69565c)

# Conflicts:
# CMakeLists.txt

2 years agoWIP: Made changes to be able to build gost-engine as static library. Added gost-engin...
kartaris [Tue, 17 Aug 2021 08:29:23 +0000 (11:29 +0300)]
WIP: Made changes to be able to build gost-engine as static library. Added gost-engine.h to be able to load engine as static engine for openssl.
Made gost_core library independent.
Corrected openssl version in cirrus.yml
Related issue: #340

3 years agoAvoid some buffer overflows
Dmitry Belyavskiy [Sat, 20 Feb 2021 12:41:59 +0000 (15:41 +0300)]
Avoid some buffer overflows

3 years agomagma consts changed
Aleksey Terentyev [Fri, 11 Dec 2020 14:19:37 +0000 (17:19 +0300)]
magma consts changed

3 years agobackport commit 2dd3a2f from master (#301)
igrkir [Sun, 6 Dec 2020 16:09:20 +0000 (19:09 +0300)]
backport commit 2dd3a2f from master (#301)

* backport commit 2dd3a2f from master

update magma cipher ctr_acpkm mode encrypting

Fixed bug when acpkm key meshing didn't apply at appropriate time
during TLS secure exchange.
Unify usage of 'num' variable of EVP_CIPHER_CTX for kuznetchik and
magma.

* correct define variable dependency

add optional compiling setting for EVP_CTRL_TLS1_2_TLSTREE variable

Co-authored-by: Igor Kirillov <i.kirillov@kryptonite.ru>
3 years agogost_crypt: process full available block in CFB and CNT mode
Alexei A. Smekalkine [Mon, 30 Nov 2020 21:20:59 +0000 (00:20 +0300)]
gost_crypt: process full available block in CFB and CNT mode

If at the input of the encryption function in the CFB mode we have
an integer number of blocks, then in the main loop all blocks will be
processed, except for the last one due to an incorrect border check.
The last block will be fully processed as a "partial" remainder, but
the initialization vector will not be updated. And, thus, the value
of IV will always be incorrect in this case.

This breaks stateless protocols due to an invalid initialization vector:
all messages except the first cannot be decrypted. (Naturally, we are
talking about a case with disabled key meshing, which does not allow
context recovery due to an erroneous implementation.)

It is worth noting here that the code for processing partial blocks
(both at the input of the encryption functions and at the output) is
a historically unnecessary artifact, since we do not set the
EVP_CIPH_FLAG_CUSTOM_CIPHER flag and, as a result, OpenSSL processes
partial blocks for us.

This patch corrects the checking of the main loop boundary.

A similar error is present in the code for the CNT mode, but there it
does not manifest itself in any way, because the restoration of the
state in this mode is impossible: even after disabling key meshing, we
still have the state-dependent transformation of the IV.

As an extra result of this fix, the code for processing partial blocks
can be completely removed now.

(cherry picked from commit cf402dd4d89271d5b1ca4ea938ce7a2f13a44d58)

3 years agoTests updated to support GOST2001DH
Dmitry Belyavskiy [Sat, 28 Nov 2020 16:53:40 +0000 (19:53 +0300)]
Tests updated to support GOST2001DH

3 years agoAdd explicit support for NID_id_GostR3410_2001DH (GOST R 34.10-2001 DH)
Dmitry Timoshkov [Fri, 27 Nov 2020 14:19:59 +0000 (17:19 +0300)]
Add explicit support for NID_id_GostR3410_2001DH (GOST R 34.10-2001 DH)

(cherry picked from commit e1afd2a137a0a4cab89260202fdc1828263d098d)

3 years agofix_cbc_281
Wolfgang Beck [Fri, 9 Oct 2020 06:57:03 +0000 (16:57 +1000)]
fix_cbc_281

3 years agoCMakeLists.txt: Fix warning on gcc-9
Vitaly Chikunov [Wed, 28 Oct 2020 21:58:56 +0000 (00:58 +0300)]
CMakeLists.txt: Fix warning on gcc-9

/root/rpmbuild/BUILD/openssl-gost-engine-1.1.1/CMakeFiles/CMakeTmp/src.c:4:14: warning: initialization of 'int *' from incompatible pointer type 'char *' [-Wincompatible-pointer-types]
    4 |     int *p = buf + 1;
      |              ^~~
/root/rpmbuild/BUILD/openssl-gost-engine-1.1.1/CMakeFiles/CMakeTmp/src.c:5:14: warning: initialization of 'int *' from incompatible pointer type 'char *' [-Wincompatible-pointer-types]
    5 |     int *q = buf + 2;
      |              ^~~

Reported-by: Ilya Shipitsin <https://github.com/chipitsine>
Fixes: #288
(cherry picked from commit 6c7addf78b7fe7c8841d4cda6c9d710e4992c7a6)

3 years agoKDF Tree fix for BIG_ENDIAN
Dmitry Belyavskiy [Fri, 18 Sep 2020 13:52:47 +0000 (16:52 +0300)]
KDF Tree fix for BIG_ENDIAN

(cherry picked from commit 47be42da87cb9bf9bad6f415c442b586ce0752ef)

3 years agoStrict alignment Kuznyechik bugfix
Dmitry Belyavskiy [Fri, 18 Sep 2020 13:27:41 +0000 (16:27 +0300)]
Strict alignment Kuznyechik bugfix

(cherry picked from commit 1997dd99db27383a89d1f91bd4d7091b553ca6ee)

3 years agoProvide cmake test if alignment requirement is strict
Vitaly Chikunov [Thu, 17 Sep 2020 22:47:27 +0000 (01:47 +0300)]
Provide cmake test if alignment requirement is strict

This is based on AX_CHECK_ALIGNED_ACCESS_REQUIRED from autoconf-archive.

Note, that on some arches unaligned access behavior could be changed at
runtime via prctl(1). Also, unaligned memory access is still slower (and
very slow on some arches) even if it's not strictly required.

(cherry picked from commit d2810d23a9f30ae885f9bf0783f0847a12972ff3)

3 years agoEndianess bugfix
Dmitry Belyavskiy [Fri, 18 Sep 2020 08:18:10 +0000 (11:18 +0300)]
Endianess bugfix

(cherry picked from commit f1f47c6c7710291157aa863768d9048aaeaa9530)

3 years agoEdwards map fix
Billy Brumley [Thu, 23 Jul 2020 16:47:03 +0000 (19:47 +0300)]
Edwards map fix

ECCKiila Changes from

https://gitlab.com/nisec/ecckiila/-/issues/2

https://gitlab.com/nisec/ecckiila/-/commit/7445ecabef77965743e0ae8d39d7433b07820be6

* X3 -> X1
* eliminate a temp variable

X3 = X1 as pointers is the reason this was still passing unit tests.
But that might not hold in future versions of ECCKiila, so fix it now.

(cherry picked from commit 259301a5adf2ef51b8f380b27fcead313669206e)

3 years agoGOST EC armv7 aarch64 fixes
Billy Brumley [Fri, 10 Jul 2020 16:55:32 +0000 (19:55 +0300)]
GOST EC armv7 aarch64 fixes

char defaults to signed on x86/x64, but unsigned on ARM.

(cherry picked from commit 409a1c2b76ac1d783bef6d35542e338d3777b5ac)

3 years agoGOST ECC optimizations (#263)
Billy Brumley [Fri, 3 Jul 2020 15:27:23 +0000 (18:27 +0300)]
GOST ECC optimizations (#263)

Standalone EC implementations from ECCKiila.

https://gitlab.com/nisec/ecckiila
(cherry picked from commit bc346202fbb3bc838a19af8c3b0e449926589c7b)

3 years agoGOST key agreement cofactor fix (#265)
Billy Brumley [Mon, 8 Jun 2020 14:36:10 +0000 (17:36 +0300)]
GOST key agreement cofactor fix (#265)

* GOST key agreement cofactor fix

(cherry picked from commit dbc8f4780fa78d66a68174f78f9ae9aa9cdad53c)

3 years ago[test] ECC: KATs for the curves in RFC4357 and RFC7836
Billy Brumley [Thu, 7 May 2020 17:13:42 +0000 (20:13 +0300)]
[test] ECC: KATs for the curves in RFC4357 and RFC7836

* Tests that gost-engine correctly computes the public key from the
private key. (Twice -- Alice and Bob.)

* Tests that gost-engine correctly computes the derived shared key.
(Twice -- Alice and Bob, should be identical.)

(cherry picked from commit 95dd55b1152cc51bbd50d5eb09b459840971d68d)

4 years agogost_eng: Make it use arrays instead of repeatable code
Vitaly Chikunov [Sat, 2 May 2020 19:53:01 +0000 (22:53 +0300)]
gost_eng: Make it use arrays instead of repeatable code

4 years agoFree memory
Dmitry Belyavskiy [Fri, 1 May 2020 21:28:46 +0000 (00:28 +0300)]
Free memory

4 years agoFix code aligning
Dmitry Belyavskiy [Fri, 1 May 2020 09:22:43 +0000 (12:22 +0300)]
Fix code aligning

4 years agoRebuild error files to avoid build failures
Dmitry Belyavskiy [Fri, 1 May 2020 09:19:43 +0000 (12:19 +0300)]
Rebuild error files to avoid build failures

4 years agopkeyutl -derive support
Dmitry Belyavskiy [Fri, 1 May 2020 00:18:59 +0000 (03:18 +0300)]
pkeyutl -derive support

Support of pkeyutl -pkeyopt ukmhex:0102030405060708 syntax

4 years agotest_digest: Test all block sizes and alignments
Vitaly Chikunov [Sun, 1 Mar 2020 03:03:40 +0000 (06:03 +0300)]
test_digest: Test all block sizes and alignments

There need to be more tests than 2 constant fixed size blocks.
Final digest values are generated from the first run.

Test description in comments.

4 years agocppcheck: Variable is reassigned a value before the old one has been used.
Nikolay Morozov [Thu, 27 Feb 2020 11:28:07 +0000 (14:28 +0300)]
cppcheck: Variable is reassigned a value before the old one has been used.

Plus some minor chnages
- function defenition doen't match function declaration
- Consecutive break statement is unnecessary.
- Type missmatch in format string

4 years agocppcheck: The scope of the variable can be reduced.
Nikolay Morozov [Wed, 26 Feb 2020 09:38:27 +0000 (12:38 +0300)]
cppcheck: The scope of the variable can be reduced.

4 years agokeyx: Add OPENSSL_cleanse for internal buffers
Vitaly Chikunov [Mon, 17 Feb 2020 23:55:35 +0000 (02:55 +0300)]
keyx: Add OPENSSL_cleanse for internal buffers

Only stack buffers are considered.

4 years agoReplace RAND_bytes with RAND_priv_bytes
Vitaly Chikunov [Mon, 17 Feb 2020 23:53:14 +0000 (02:53 +0300)]
Replace RAND_bytes with RAND_priv_bytes

`RAND_priv_bytes' is supposed to be used for private data.

4 years agoec: Use BN_{CTX_,}secure_new memory API for priv keys
Vitaly Chikunov [Mon, 17 Feb 2020 21:35:10 +0000 (00:35 +0300)]
ec: Use BN_{CTX_,}secure_new memory API for priv keys

OpenSSL suggests to use (and internally itself uses)
`BN_{CTX_,}secure_new' primitives to work with private keys.

These are using `OPENSSL_secure_malloc' et al. calls, which use
special 'secure heap' memory.

Along, optimize out `hashsum2bn' with `BN_lebin2bn'.

4 years agoNo need for special OFB context
Dmitry Belyavskiy [Sat, 22 Feb 2020 13:43:42 +0000 (16:43 +0300)]
No need for special OFB context

4 years agoCMakeLists.txt: Skip perl tests if there is no Test2::V0
Vitaly Chikunov [Mon, 10 Feb 2020 15:48:31 +0000 (18:48 +0300)]
CMakeLists.txt: Skip perl tests if there is no Test2::V0

`Test2::V0' is non standard and rarely present on systems, making `make
test' unnecessarily fail.

4 years agocppcheck: function defenition doen't match function declaration
Nikolay Morozov [Mon, 17 Feb 2020 14:01:49 +0000 (17:01 +0300)]
cppcheck: function defenition doen't match function declaration

4 years agoGOST89 key masking 221/head
Nikolay Morozov [Fri, 14 Feb 2020 11:28:23 +0000 (14:28 +0300)]
GOST89 key masking

4 years agoDestroy GOST key data with OPENSSL_cleanse()
Nikolay Morozov [Wed, 12 Feb 2020 11:21:59 +0000 (14:21 +0300)]
Destroy GOST key data with OPENSSL_cleanse()

4 years agoelbrus: Treat __e2k__ as __x86_64__ for Streebog
Vitaly Chikunov [Mon, 10 Feb 2020 05:43:38 +0000 (08:43 +0300)]
elbrus: Treat __e2k__ as __x86_64__ for Streebog

lcc emulates x86_64 SIMD intrinsics, so SSE2 code will work as is. Even
though in benchmarks it is slightly slower than regular implementation

4 years agoelbrus: Workaround `-Werror=assign-where-compare-meant'
Vitaly Chikunov [Mon, 10 Feb 2020 05:38:08 +0000 (08:38 +0300)]
elbrus: Workaround `-Werror=assign-where-compare-meant'

This is lcc bug. Curiously, it is not triggered in `test_context.c' and
`test_grasshopper.c'.

"lcc: "/usr/src/gost-engine/test_curves.c", строка 32: ошибка:
          вероятное использование "=" вместо "=="
          [-Werror=assign-where-compare-meant]
  #define TEST_ASSERT(e) {if ((test = (e))) \
                              ^
 в раскрытие макроса "TEST_ASSERT" на строке 217
      TEST_ASSERT(0);"

4 years agoelbrus: Workaround '#pragma message' [-Werror=unknown-pragmas]
Vitaly Chikunov [Mon, 10 Feb 2020 05:27:34 +0000 (08:27 +0300)]
elbrus: Workaround '#pragma message' [-Werror=unknown-pragmas]

"lcc: "/usr/src/gost-engine/gosthash2012_ref.h", строка 15: ошибка:
          нераспознанная #pragma [-Werror=unknown-pragmas]
  # pragma message "Use regular implementation"
           ^"

Also, cmake does not detect lcc.

4 years agogosthash2012: Properly ifdef '_mm_empty' call
Vitaly Chikunov [Mon, 10 Feb 2020 04:53:56 +0000 (07:53 +0300)]
gosthash2012: Properly ifdef '_mm_empty' call

There is other architectures besides __x86_64__, so EMMS should be
issued on IA-32 only where we are using MMX.

4 years agogosthash2012_const: Remove unused arrays with constants
Vitaly Chikunov [Thu, 6 Feb 2020 15:11:00 +0000 (18:11 +0300)]
gosthash2012_const: Remove unused arrays with constants

This probably would reduce size of the library. And remove
some 'not used' warnings (-Wunused-const-variable).

Previously `Ax' is generated dynamically from `A` and `Pi` in
`GOST3411Init', but in 2013 it is moved into `gosthash2012_precalc.h`.
`Tau' is unrolled and eliminated in 2013 too.

4 years agogosthash2012: Issue EMMS on 32-bit SIMD implementation
Vitaly Chikunov [Thu, 6 Feb 2020 13:53:01 +0000 (16:53 +0300)]
gosthash2012: Issue EMMS on 32-bit SIMD implementation

`_mm_empty' is not needed on x86_64, because we only using SSE2.

But, I didn't notice that EXTRACT32 (32-bit version of EXTRACT) is
using MMX registers and intrinsics, so complete removing of
`_mm_empty' (EMMS) was mistake.

Make it presence conditional only for IA-32.

Fixes: 211489f ("gosthash2012: Improve SIMD implementation")
4 years agogosthash2012: Clean up cmake test for _addcarry_u64
Vitaly Chikunov [Thu, 6 Feb 2020 10:20:13 +0000 (13:20 +0300)]
gosthash2012: Clean up cmake test for _addcarry_u64

Not last version went into commit ed0f8fbedf438e0ed1f6da9e829a932881695175

4 years agogosthash2012_sse2: Remove unused code (__EXTRACT64)
Vitaly Chikunov [Thu, 6 Feb 2020 10:33:38 +0000 (13:33 +0300)]
gosthash2012_sse2: Remove unused code (__EXTRACT64)

It's not only unused, but calling _mm_extract_epi8 which is SSE4.1.

4 years agoMove NID_id_tc26_gost_3410_2012_256_paramSetA to 256-bit
Nikolay Morozov [Tue, 4 Feb 2020 11:54:36 +0000 (14:54 +0300)]
Move NID_id_tc26_gost_3410_2012_256_paramSetA to 256-bit

4 years agogosthash2012_ref: Optimize XLPS for speed
Vitaly Chikunov [Tue, 4 Feb 2020 02:47:15 +0000 (05:47 +0300)]
gosthash2012_ref: Optimize XLPS for speed

This results in ~20% improvement for reference implementation on my
Xeon E5630.

`openssl speed -evp streebog256' results (before and after):

   16 bytes    64 bytes   256 bytes  1024 bytes  8192 bytes  16384 bytes
 3815.25k   12874.41k   31497.81k   49823.06k   59932.67k    57021.78k
 4361.29k   14933.06k   37091.67k   59001.86k   71360.51k    72488.28k

4 years agogosthash2012: Provide cmake test for _addcarry_u64
Vitaly Chikunov [Tue, 4 Feb 2020 02:41:53 +0000 (05:41 +0300)]
gosthash2012: Provide cmake test for _addcarry_u64

Also, simple check if `_addcarry_u64' works correctly.

4 years agotravis-ci: adjust osx linker options
Ilya Shipitsin [Mon, 3 Feb 2020 06:18:33 +0000 (11:18 +0500)]
travis-ci: adjust osx linker options

4 years agotravis-ci: Optimize and rearrange .travis.yml
Vitaly Chikunov [Sun, 2 Feb 2020 18:23:04 +0000 (21:23 +0300)]
travis-ci: Optimize and rearrange .travis.yml

- Remove redundant 'os: linux', 'compiler: gcc' tags.
- Order jobs: x86_64 builds, analysers, other arches, other OSes.
- Mark openssl-master build as 'allow_failures' for PRs.
- Build all jobs against 'OpenSSL_1_1_1-stable' by default.
- Do not include 'linux/arch' in the job name, because Travis show
  them already.
- Split name by ' | ' instead of '/' so it's easier to understand.

4 years agotravis-ci: Fix build on 'OpenSSL_1_1_1-stable'
Vitaly Chikunov [Sun, 2 Feb 2020 19:04:45 +0000 (22:04 +0300)]
travis-ci: Fix build on 'OpenSSL_1_1_1-stable'

It's turned out that 'OpenSSL_1_1_1-stable' does not have 'build_sw'
make target. But both 'OpenSSL_1_1_1-stable' and 'master' have
'build_libs' and 'build_programs'.

Fixes: cb1b5ff ("travis-ci: Speed-up openssl build")
4 years agogosthash2012: Improve SIMD implementation
dmitry dulesov [Fri, 31 Jan 2020 23:59:07 +0000 (02:59 +0300)]
gosthash2012: Improve SIMD implementation

Allow aligned/unaligned access. Use better intrinsics and other
small optimizations.

Committed-by: Vitaly Chikunov <vt@altlinux.org>
4 years agogosthash2012: Enable building with SIMD implementation
Vitaly Chikunov [Fri, 31 Jan 2020 23:57:15 +0000 (02:57 +0300)]
gosthash2012: Enable building with SIMD implementation

Also, add compile time notice message to show which implementation is
selected.

4 years agogosthash2012: Optimize `add512` on x86_64 using Intel intrinsics
dmitry dulesov [Fri, 31 Jan 2020 17:22:19 +0000 (20:22 +0300)]
gosthash2012: Optimize `add512` on x86_64 using Intel intrinsics

`_addcarry_u64' is using `ADC' and does not require ADX extensions
(`-madx').

Committed-by: Vitaly Chikunov <vt@altlinux.org>
4 years agogosthash2012: Optimize out temporary `buf' from `stage3'
dmitry dulesov [Thu, 30 Jan 2020 02:49:50 +0000 (05:49 +0300)]
gosthash2012: Optimize out temporary `buf' from `stage3'

On-stack `buf' is replaced by manipulation directly on `CTX->buffer'.

Committed-by: Vitaly Chikunov <vt@altlinux.org>
4 years agogosthash2012: Optimize `gost2012_hash_block' loop
dmitry dulesov [Thu, 30 Jan 2020 02:41:36 +0000 (05:41 +0300)]
gosthash2012: Optimize `gost2012_hash_block' loop

Some simple optimizations.

Committed-by: Vitaly Chikunov <vt@altlinux.org>
4 years agogosthash2012: Change some byte (pointers) to union uint512_u
dmitry dulesov [Thu, 30 Jan 2020 02:30:49 +0000 (05:30 +0300)]
gosthash2012: Change some byte (pointers) to union uint512_u

Introduce byte `.B' union type to `union uint512_u'.
Change `CTX.buffer' type from `unsigned char' to `union uint512_u'.
Change `data' argument of `stage2()' to `union uint512_u *'.
Change `g()' arguments to `union uint512_u *' with `RESTRICT'
allowing compiler to optimize more.

No code changes, only type changes here.

Committed-by: Vitaly Chikunov <vt@altlinux.org>
4 years agogosthash2012: Remove temporary variable from `stage2'
dmitry dulesov [Thu, 30 Jan 2020 02:21:31 +0000 (05:21 +0300)]
gosthash2012: Remove temporary variable from `stage2'

Now `stage2' will always get aligned data which is prepared in
`gost2012_hash_block' by copying into `CTX->buffer'.

This will allow to change `data' argument of `stage2' from `unsigned
char *' pointer to `union uint512_u *'.

Committed-by: Vitaly Chikunov <vt@altlinux.org>
4 years agogosthash2012: Make `add512' to work in-place
dmitry dulesov [Thu, 30 Jan 2020 01:20:58 +0000 (04:20 +0300)]
gosthash2012: Make `add512' to work in-place

This allows to use `RESTRICT' which allows compiler optimize more.

Committed-by: Vitaly Chikunov <vt@altlinux.org>
4 years agogosthash2012: Simpler version of add512
Vitaly Chikunov [Thu, 30 Jan 2020 01:05:10 +0000 (04:05 +0300)]
gosthash2012: Simpler version of add512

Similar to my commit into adegtyarev/streebog@432d5de.

4 years agogosthash2012: Simplify `pad'
dmitry dulesov [Thu, 30 Jan 2020 00:50:54 +0000 (03:50 +0300)]
gosthash2012: Simplify `pad'

`pad' does not need this complicated  memory movements using stack
buffer.

Committed-by: Vitaly Chikunov <vt@altlinux.org>
4 years agogosthash2012: Remove redundant `memset' form `init_gost2012_hash_ctx'
dmitry dulesov [Thu, 30 Jan 2020 00:42:48 +0000 (03:42 +0300)]
gosthash2012: Remove redundant `memset' form `init_gost2012_hash_ctx'

`CTX' is already fully zeroed at the beginning of
`init_gost2012_hash_ctx'.

Committed-by: Vitaly Chikunov <vt@altlinux.org>
4 years agogosthash2012: Remove unreachable code from `pad'
Vitaly Chikunov [Thu, 30 Jan 2020 00:41:01 +0000 (03:41 +0300)]
gosthash2012: Remove unreachable code from `pad'

`CTX->bufsize' cannot be 64 ever.

4 years agogosthash2012: Remove redundant `hash' field from `struct gost2012_hash_ctx'
dmitry dulesov [Thu, 30 Jan 2020 00:36:45 +0000 (03:36 +0300)]
gosthash2012: Remove redundant `hash' field from `struct gost2012_hash_ctx'

And save 64 bytes.

Committed-by: Vitaly Chikunov <vt@altlinux.org>
4 years agotravis-ci: Add 32-bit build (i386)
Vitaly Chikunov [Fri, 31 Jan 2020 21:58:19 +0000 (00:58 +0300)]
travis-ci: Add 32-bit build (i386)

Make sure everything is OK on 32-bit platform.

4 years agotravis-ci: Speed-up openssl build
Vitaly Chikunov [Fri, 31 Jan 2020 21:55:44 +0000 (00:55 +0300)]
travis-ci: Speed-up openssl build

Do not build openssl documentation.
Also, split build line into several lines.

4 years agotravis-ci: Add (big-endian) s390x build
Vitaly Chikunov [Fri, 31 Jan 2020 17:47:02 +0000 (20:47 +0300)]
travis-ci: Add (big-endian) s390x build

s390x is big-endian which is different from any other arch we build.
We have endianness dependent code, thus this is useful to test.

4 years agotravis-ci: Add clang build for linux/x86_64/openssl-master
Vitaly Chikunov [Fri, 31 Jan 2020 17:41:46 +0000 (20:41 +0300)]
travis-ci: Add clang build for linux/x86_64/openssl-master

Previously Clang is only used for OSX build.

4 years agotravis-ci: Always describe openssl branch
Vitaly Chikunov [Fri, 31 Jan 2020 17:35:33 +0000 (20:35 +0300)]
travis-ci: Always describe openssl branch

Log full commit id that we build OpenSSL against, because `master' is
moving target. That should be useful for old logs to reproduce these
builds.

4 years agoRemove unset local buffer meshing. This removes valgrind errors.
Nikolay Morozov [Thu, 26 Dec 2019 06:17:06 +0000 (09:17 +0300)]
Remove unset local buffer meshing. This removes valgrind errors.

4 years agoCMakeLists.txt: Workaround openssl deprecation of HMAC and CMAC primitives
Vitaly Chikunov [Thu, 30 Jan 2020 23:24:47 +0000 (02:24 +0300)]
CMakeLists.txt: Workaround openssl deprecation of HMAC and CMAC primitives

Following commits mark CMAC and HMAC primitives deprecated:

  commit a6d572e60120e0ffb42aece17a085f0fed1b8f6f
  Author: Pauli <paul.dale@oracle.com>
  Date:   Tue Jan 14 10:59:11 2020 +1000

      Deprecate the low level CMAC functions

  commit dbde4726889a19af0a718fe9c5542f39c81acbd3
  Author: Pauli <paul.dale@oracle.com>
  Date:   Tue Jan 14 12:11:50 2020 +1000

      Deprecate the low level HMAC functions

Add `-Wno-error=deprecated-declarations' to appropriate targets.

References:
  https://github.com/openssl/openssl/commit/a6d572e601
  https://github.com/openssl/openssl/commit/dbde472688

4 years agotravis-ci: adjust names
Ilya Shipitsin [Tue, 28 Jan 2020 13:19:18 +0000 (18:19 +0500)]
travis-ci: adjust names

4 years agotravis-ci: add PR testing for OpenSSL-1.1.1 branch
Ilya Shipitsin [Tue, 28 Jan 2020 12:51:15 +0000 (17:51 +0500)]
travis-ci: add PR testing for OpenSSL-1.1.1 branch

4 years agoCI: do not use LD_BIRARY_PATH anymore
Ilya Shipitsin [Sun, 12 Jan 2020 18:39:17 +0000 (23:39 +0500)]
CI: do not use LD_BIRARY_PATH anymore

4 years agotravis-ci: remove redundant cpanminus installation, remove cmake compile from source
Ilya Shipitsin [Mon, 6 Jan 2020 04:08:43 +0000 (09:08 +0500)]
travis-ci: remove redundant cpanminus installation, remove cmake compile from source

4 years agotravis-ci: Add descriptive names to the tests
Vitaly Chikunov [Sun, 5 Jan 2020 21:06:21 +0000 (00:06 +0300)]
travis-ci: Add descriptive names to the tests

Format is `os/compiler[+env]/arch'.

4 years agotravis-ci: Fix quietness of building of openssl
Vitaly Chikunov [Sun, 5 Jan 2020 20:24:50 +0000 (23:24 +0300)]
travis-ci: Fix quietness of building of openssl

No need for `build.log' as `make -s' will output any failure.

Also, redirection was broken anyway since splitting make into two makes
with separate `-j' and install phase.

Add `travis_wait' to make traves not time-out on slow arches. Reference:
  https://docs.travis-ci.com/user/common-build-problems/#build-times-out-because-no-output-was-received

Fixes: c38ec7587 ("travis: speed up Travis build")
4 years agotcl_tests: Abbreviate output when run under CI
Vitaly Chikunov [Sun, 5 Jan 2020 20:51:09 +0000 (23:51 +0300)]
tcl_tests: Abbreviate output when run under CI

To make CI output not too long - output only header of every test set
and output only relevant log entries on test failures.

When `CI' env is defined. Which should be defined for both Travis and
Cirrus. Reference:
  https://docs.travis-ci.com/user/environment-variables/
  https://cirrus-ci.org/guide/writing-tasks/#environment-variables

4 years agotcl_tests: Rearrange runtest.sh to run from dirrerent env
Vitaly Chikunov [Sun, 5 Jan 2020 20:14:29 +0000 (23:14 +0300)]
tcl_tests: Rearrange runtest.sh to run from dirrerent env

Add more debug output to fix Travis-CI issues. Move definition of
OPENSSL_CONF above first tcl test run. Define OPENSSL_ENGINES from
ENGINE_DIR by default.

4 years agotravis-ci: Add tcl_tests to the builds
Vitaly Chikunov [Sun, 5 Jan 2020 19:44:28 +0000 (22:44 +0300)]
travis-ci: Add tcl_tests to the builds

4 years agotravis-ci: Remove redundant linux/gcc test
Vitaly Chikunov [Sun, 5 Jan 2020 19:30:42 +0000 (22:30 +0300)]
travis-ci: Remove redundant linux/gcc test

Fis was same as the first test.

4 years agotcl_tests: Fix ocsp test by removing -md_gost94 option
Vitaly Chikunov [Wed, 13 Nov 2019 23:18:45 +0000 (02:18 +0300)]
tcl_tests: Fix ocsp test by removing -md_gost94 option

Otherwise you'll get:

  ocsp: Digest must be before -cert or -serial
  ocsp: Use -help for summary.

4 years agotcl_tests: Disable failing ssl tests and suites
Vitaly Chikunov [Wed, 13 Nov 2019 22:58:33 +0000 (01:58 +0300)]
tcl_tests: Disable failing ssl tests and suites

Remove GOST2012-MAGMA-MAGMAOMAC and GOST2012-KUZNYECHIK-KUZNYECHIKOMAC
suites from the test.

Disable handshake tests.

4 years agotcl_tests: Fix cms and smime_io tests by telling that signature is -binary
Vitaly Chikunov [Wed, 13 Nov 2019 22:44:32 +0000 (01:44 +0300)]
tcl_tests: Fix cms and smime_io tests by telling that signature is -binary

Verification failure
139891902039680:error:2E09A09E:CMS routines:CMS_SignerInfo_verify_content:verification failure:crypto/cms/cms_sd.c:848:
139891902039680:error:2E09D06D:CMS routines:CMS_verify:content verify error:crypto/cms/cms_smime.c:393:

4 years agotcl_tests: Fix smimeenc test by removing entries with empty params
Vitaly Chikunov [Wed, 13 Nov 2019 21:58:03 +0000 (00:58 +0300)]
tcl_tests: Fix smimeenc test by removing entries with empty params

This is not robust to have such tests.

4 years agotcl_tests: Fix and update enc test
Vitaly Chikunov [Wed, 13 Nov 2019 21:40:18 +0000 (00:40 +0300)]
tcl_tests: Fix and update enc test

- Set expected default value for CRYPT_PARAMS.
- Disable `RIC 1' params tests.
- Disable `Magma-ACPKM' test.
- Update test descriptions to include cipher name.

4 years agotcl_tests: Fix and extend ca test
Vitaly Chikunov [Wed, 13 Nov 2019 20:08:33 +0000 (23:08 +0300)]
tcl_tests: Fix and extend ca test

- Add more curves to test.
- Properly handle R 1323565.1.023-2018 (5.2.1.2) - absence of
  digestParamSet for some curves.

4 years agotcl_tests: Add more parameters to pkcs12 test
Vitaly Chikunov [Tue, 12 Nov 2019 17:07:15 +0000 (20:07 +0300)]
tcl_tests: Add more parameters to pkcs12 test

4 years agotcl_tests: Fix and extend req-newkey test (with TC26 parameters)
Vitaly Chikunov [Mon, 11 Nov 2019 04:23:30 +0000 (07:23 +0300)]
tcl_tests: Fix and extend req-newkey test (with TC26 parameters)

`gost2012_512:C' was reported as invalid but it's now valid parameter.
Also, add TC26 `TC{A,B,C,D}' parameters (note different OIDs).

4 years agotcl_tests: Fix req-genpkey test (show OID for gost2012_256:0)
Vitaly Chikunov [Mon, 11 Nov 2019 04:09:10 +0000 (07:09 +0300)]
tcl_tests: Fix req-genpkey test (show OID for gost2012_256:0)

4 years agotcl_tests: Fix pkcs8 test (showing public key)
Vitaly Chikunov [Mon, 11 Nov 2019 00:29:40 +0000 (03:29 +0300)]
tcl_tests: Fix pkcs8 test (showing public key)

4 years agotcl_tests: Allow running tests separately
Vitaly Chikunov [Mon, 11 Nov 2019 00:28:36 +0000 (03:28 +0300)]
tcl_tests: Allow running tests separately

For debug purposes.

Example:
  sh ./runtest.sh dgst pkcs8