Skip to content

Commit

Permalink
GCC 8.2 support, CMAC (Intel(R) AES-NI) optimization, added information
Browse files Browse the repository at this point in the history
functions, fixed selection of CPU specific code in dll/so, AES-ECB,
AES-CBC and AES-CTR enabled with vector Intel(R) AES-NI, RSA enabled
with IFMA
  • Loading branch information
paleksee authored and ipp-cp committed Apr 8, 2019
1 parent 67220e3 commit ccef188
Show file tree
Hide file tree
Showing 3,458 changed files with 48,632 additions and 25,903 deletions.
The diff you're trying to view is too large. We only load the first 3000 changed files.
2 changes: 1 addition & 1 deletion .gitattributes
Expand Up @@ -27,4 +27,4 @@
*.dll binary
*.dylib binary
*.so binary
*.a binary
*.a binary
9 changes: 9 additions & 0 deletions CHANGELOG.md
Expand Up @@ -2,6 +2,15 @@

This is a list of notable changes to Intel(R) IPP Cryptography, in reverse chronological order.

## 2019-04-01
- 1024, 2048, 3072 and 4096 bit RSA were enabled with AVX512 IFMA instructions.
- AES-ECB, AES-CBC and AES-CTR were enabled with vector extensions of Intel(R) AES New Instructions (Intel(R) AES-NI).
- Improved optimization of Intel(R) AES-NI based CMAC.
- Added the ippsGFpGetInfo function, which returns information about a finite field.
- Added the ippsHashGetInfo_rmf function, which returns information about a hash algorithm.
- Added the ability to build the Intel(R) IPP Cryptography library with GCC* 8.2.
- Fixed selection of CPU-specific code in dynamic/shared libraries.

## 2018-10-15
- Added the new SM2 encryption scheme.
- Added the ability to build the Intel(R) IPP Cryptography library with the Microsoft* Visual C++ Compiler 2017.
Expand Down
20 changes: 15 additions & 5 deletions CMakeLists.txt
@@ -1,5 +1,5 @@
#===============================================================================
# Copyright 2017-2018 Intel Corporation
# Copyright 2017-2019 Intel Corporation
# All Rights Reserved.
#
# If this software was obtained under the Intel Simplified Software License,
Expand Down Expand Up @@ -52,6 +52,17 @@ set(LIB_NAME ippcp)

set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "" FORCE)

cmake_policy(SET CMP0054 NEW)

if("${CMAKE_GENERATOR}" STREQUAL "NMake Makefiles")
if(NOT(C_COMPILER STREQUAL ""))
set(CMAKE_C_COMPILER ${C_COMPILER})
endif()
if(NOT(CXX_COMPILER STREQUAL ""))
set(CMAKE_CXX_COMPILER ${CXX_COMPILER})
endif()
endif()

project(${PROJECT_NAME} C CXX)

if("${CMAKE_BUILD_TYPE}" STREQUAL "")
Expand All @@ -61,13 +72,13 @@ endif()

find_package(PythonInterp REQUIRED)

if(WIN32)
if(WIN32 AND (${CMAKE_GENERATOR} MATCHES "Visual Studio"))
if(${CMAKE_GENERATOR} MATCHES "Win64")
set(ARCH intel64)
else()
set(ARCH ia32)
endif()
endif(WIN32)
endif(WIN32 AND (${CMAKE_GENERATOR} MATCHES "Visual Studio"))

if ((NOT NONPIC_LIB) AND (NOT ANDROID) AND (NOT CODE_COVERAGE))
set(DYNAMIC_LIB ON)
Expand Down Expand Up @@ -110,7 +121,7 @@ if(NOT NONPIC_LIB)
else()
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_OUTPUT_DIR}/lib/nonpic")
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_OUTPUT_DIR}/lib/nonpic")
if(NOT THREADED_LIB)
if(THREADED_LIB)
message (STATUS "Set THREADED_LIB off, when NONPIC_LIB is on")
set(THREADED_LIB false)
endif()
Expand Down Expand Up @@ -162,4 +173,3 @@ endif()
if(EXISTS "${CMAKE_SOURCE_DIR}/perf_tests/")
add_subdirectory(perf_tests)
endif()

108 changes: 54 additions & 54 deletions README.md
Expand Up @@ -21,6 +21,12 @@ to select the CPU-specific implementation at run time. Dispatching refers to
the detection of features supported by the underlying CPU and selecting
the corresponding Intel IPP Cryptography binary path.

Branches description
--------------------
- `develop` - snapshots of the library under active development.
Contains code that may not be fully functional and that Intel may substantially modify in development of a production version.
- `ipp_crypto_<release>` - source code of the official production release `<release>`.

License
-------

Expand Down Expand Up @@ -54,74 +60,55 @@ The list below contains the system requirements necessary to build Intel
IPP Cryptography. We tested the build process of Intel IPP Cryptography
only on the operating systems and tools listed below:

### Operating Systems to Build Intel IPP Cryptography:
#### CMake\* Version:

- Windows Server\* 2012
- CMake 3.7.2

- Red Hat\* Enterprise Linux\* 6
#### Python\* Version:

- macOS\* 10.12\*
- Python 2.7

### C/C++\* Compilers for Windows\* OS:
### Windows\* OS

- Intel(R) C++ Compiler 18.0 for Windows\* OS
#### OS
- Windows Server\* 2012

#### C/C++\* Compilers
- Intel(R) C++ Compiler 19.0 for Windows\* OS

- Microsoft Visual C++ Compiler\* version 14.14 or higher
provided by Microsoft Visual Studio\* 2017 version 15.7 or higher

### C/C++\* Compilers for Linux\* OS:

- Intel(R) C++ Compiler 18.0 for Linux\* OS

- Intel(R) C++ Compiler 19.0 for Linux\* OS

### C/C++\* Compilers for macOS\*:

- Intel(R) C++ Compiler 18.0 for OS X\*

- Intel(R) C++ Compiler 19.0 for OS X\* OS

### Assembly Compilers for Windows\* OS:

Microsoft Macro Assembler 11
- Microsoft Visual C++ Compiler\* version 19.16
provided by Microsoft Visual Studio\* 2017 version 15.9

### Assembly Compilers for Linux\* OS:
#### Assembly Compilers
- Microsoft Macro Assembler 14

GNU as from GNU binutils 2.27
### Linux\* OS

### Assembly Compilers for macOS\*:

Yasm 1.2.2

### Binary Tools for Windows\* OS:

- Microsoft Visual Studio\* 2013

- Microsoft Visual Studio\* 2015

- Microsoft Visual Studio\* 2017

### Binary Tools for Linux\* OS:
#### OS
- Red Hat\* Enterprise Linux\* 6

GNU binutils 2.27
#### C/C++\* Compilers
- Intel(R) C++ Compiler 19.0 for Linux\* OS

### Binary Tools for macOS\*:
- GCC 8.2

GNU binutils 1.38
#### Binary Tools
- GNU binutils 2.32

### CMake\* Version:
#### Android\* NDK Version:

CMake 3.0 or higher
- Android NDK, Revision 10

### Python\* Version:
### macOS\*

Python 2.7
#### OS
- macOS\* 10.12\*

### Android\* NDK Version:
#### C/C++\* Compilers
- Intel(R) C++ Compiler 19.0 for OS X\* OS

Android NDK, Revision 10
#### Assembly Compilers
- Yasm 1.2.2

Building from Source
--------------------
Expand Down Expand Up @@ -152,30 +139,43 @@ with the options described in [CMake Arguments](#cmake-arguments).
git clone --recursive <repo>
```
3. Set the environment variables for one of the supported C/C++
compilers; for Intel(R)Compiler please refer to
https://software.intel.com/en-us/cpp-compiler-18.0-developer-guide-and-reference-specifying-the-location-of-compiler-components-with-compilervars
compilers.\
For Intel(R) Compiler please refer to
[Intel(R) C++ Compiler Developer Guide and Reference](https://software.intel.com/en-us/cpp-compiler-developer-guide-and-reference)\
For MSVC* Compiler please refer to [Use the MSVC toolset from the command line](https://docs.microsoft.com/en-us/cpp/build/building-on-the-command-line?view=vs-2017)

4. Run CMake\* on the command line. Example CMake lines for different
operating systems:

**Windows\* OS**:

For Intel(R) C++ Compiler:
```
cmake CMakeLists.txt -Bbuild -G"Visual Studio 14 2015 Win64" -T"Intel C++ Compiler 19.0"
```
For MSVC\* Compiler:
```
cmake CMakeLists.txt -Bbuild -G"Visual Studio 14 2015 Win64" -T"Intel C++ Compiler 18.0"
cmake CMakeLists.txt -Bbuild -G"Visual Studio 15 2017 Win64"
```

**Linux\* OS**:

For Intel(R) C++ Compiler:
```
CC=icc CXX=icpc cmake CMakeLists.txt -Bbuild -DARCH=intel64
```
For GCC:
```
CC=gcc CXX=g++ cmake CMakeLists.txt -Bbuild -DARCH=intel64
```

**macOS\***:

For Intel(R) C++ Compiler:
```
CC=icc CXX=icpc cmake CMakeLists.txt -Bbuild -DARCH=intel64 -DUSEYASM=<path to Yasm compiler>
```

\
The list of supported CMake arguments is available in the
[CMake Arguments](#cmake-arguments) section.

Expand Down Expand Up @@ -268,7 +268,7 @@ CC=<path to C compiler> CXX=<path to C++ compiler> cmake <Arguments>
architecture.

- `-T<Compiler>` - defines the compiler for building, for example,
`-T"Intel C++ Compiler 18.0"` defines Intel(R) Compiler 18.0 for
`-T"Intel C++ Compiler 19.0"` defines Intel(R) Compiler 19.0 for
building.

**Note:** Refer to CMake documentation for more information on these options.
Expand Down Expand Up @@ -338,7 +338,7 @@ Intel, and the Intel logo are trademarks of Intel Corporation in the U.S. and/or

*Other names and brands may be claimed as the property of others.

© 2018 Intel Corporation.
© 2019 Intel Corporation.

|Optimization Notice|
|:------------------|
Expand Down

0 comments on commit ccef188

Please sign in to comment.