xref: /isa-l/
Name
Date
Size
#Lines
LOC

..--

.github/workflows/H--7266

crc/H--22,42118,081

doc/H--331242

erasure_code/H--42,57634,544

examples/H--1,317896

igzip/H--39,12031,858

include/H--5,6572,894

mem/H--1,5801,189

programs/H--1,6151,310

raid/H--5,8654,531

tests/fuzz/H--386282

tools/H--1,024839

.clang-formatH A D19-Apr-20242 KiB4745

.clang-format-ignoreH A D02-May-202469 43

.gitignoreH A D22-Apr-2019233 2926

.travis.ymlH A D21-May-20212 KiB8769

CONTRIBUTING.mdH A D19-Apr-20241.3 KiB4026

DoxyfileH A D19-Jul-20221.2 KiB3632

LICENSEH A D07-Dec-20231.6 KiB2925

Makefile.amH A D07-Jan-20254.2 KiB

Makefile.nmakeH A D18-Dec-202410.9 KiB386316

Makefile.unxH A D07-Mar-20202.3 KiB5718

README.mdH A D19-Mar-20244.3 KiB10377

Release_notes.txtH A D07-Jan-202511.3 KiB359244

SECURITY.mdH A D19-Jul-2022430 127

autogen.shH A D04-Dec-2023443 1812

configure.acH A D18-Dec-20249 KiB329301

isa-l.defH A D20-Dec-20233.7 KiB125123

isa-l.rcH A D03-Sep-20213.6 KiB7969

libisal.pc.inH A D22-Oct-2015220 1210

make.incH A D18-Dec-202413.1 KiB406339

README.md

1Intel(R) Intelligent Storage Acceleration Library
2=================================================
3
4![Continuous Integration](https://github.com/intel/isa-l/actions/workflows/ci.yml/badge.svg)
5[![Package on conda-forge](https://img.shields.io/conda/v/conda-forge/isa-l.svg)](https://anaconda.org/conda-forge/isa-l)
6[![Coverity Status](https://scan.coverity.com/projects/29480/badge.svg)](https://scan.coverity.com/projects/intel-isa-l)
7[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/intel/isa-l/badge)](https://securityscorecards.dev/viewer/?uri=github.com/intel/isa-l)
8
9ISA-L is a collection of optimized low-level functions targeting storage
10applications.  ISA-L includes:
11* Erasure codes - Fast block Reed-Solomon type erasure codes for any
12  encode/decode matrix in GF(2^8).
13* CRC - Fast implementations of cyclic redundancy check.  Six different
14  polynomials supported.
15  - iscsi32, ieee32, t10dif, ecma64, iso64, jones64, rocksoft64.
16* Raid - calculate and operate on XOR and P+Q parity found in common RAID
17  implementations.
18* Compression - Fast deflate-compatible data compression.
19* De-compression - Fast inflate-compatible data compression.
20* igzip - A command line application like gzip, accelerated with ISA-L.
21
22Also see:
23* [ISA-L for updates](https://github.com/intel/isa-l).
24* For crypto functions see [isa-l_crypto on github](https://github.com/intel/isa-l_crypto).
25* The [github wiki](https://github.com/intel/isa-l/wiki) including a list of
26  [distros/ports](https://github.com/intel/isa-l/wiki/Ports--Repos) offering binary packages
27  as well as a list of [language bindings](https://github.com/intel/isa-l/wiki/Language-Bindings).
28* [Contributing](CONTRIBUTING.md).
29* [Security Policy](SECURITY.md).
30* Docs on [units](doc/functions.md), [tests](doc/test.md), or [build details](doc/build.md).
31
32Building ISA-L
33--------------
34
35### Prerequisites
36
37* Make: GNU 'make' or 'nmake' (Windows).
38* Optional: Building with autotools requires autoconf/automake/libtool packages.
39* Optional: Manual generation requires help2man package.
40
41x86_64:
42* Assembler: nasm. Version 2.15 or later suggested (other versions of nasm and
43  yasm may build but with limited function [support](doc/build.md)).
44* Compiler: gcc, clang, icc or VC compiler.
45
46aarch64:
47* Assembler: gas v2.24 or later.
48* Compiler: gcc v4.7 or later.
49
50other:
51* Compiler: Portable base functions are available that build with most C compilers.
52
53### Autotools
54To build and install the library with autotools it is usually sufficient to run:
55
56    ./autogen.sh
57    ./configure
58    make
59    sudo make install
60
61### Makefile
62To use a standard makefile run:
63
64    make -f Makefile.unx
65
66### Windows
67On Windows use nmake to build dll and static lib:
68
69    nmake -f Makefile.nmake
70
71or see [details on setting up environment here](doc/build.md).
72
73### Other make targets
74Other targets include:
75* `make check` : create and run tests
76* `make tests` : create additional unit tests
77* `make perfs` : create included performance tests
78* `make ex`    : build examples
79* `make other` : build other utilities such as compression file tests
80* `make doc`   : build API manual
81
82DLL Injection Attack
83--------------------
84
85### Problem
86
87The Windows OS has an insecure predefined search order and set of defaults when trying to locate a resource. If the resource location is not specified by the software, an attacker need only place a malicious version in one of the locations Windows will search, and it will be loaded instead. Although this weakness can occur with any resource, it is especially common with DLL files.
88
89### Solutions
90
91Applications using libisal DLL library may need to apply one of the solutions to prevent from DLL injection attack.
92
93Two solutions are available:
94- Using a Fully Qualified Path is the most secure way to load a DLL
95- Signature verification of the DLL
96
97### Resources and Solution Details
98
99- Security remarks section of LoadLibraryEx documentation by Microsoft: <https://docs.microsoft.com/en-us/windows/win32/api/libloaderapi/nf-libloaderapi-loadlibraryexa#security-remarks>
100- Microsoft Dynamic Link Library Security article: <https://docs.microsoft.com/en-us/windows/win32/dlls/dynamic-link-library-security>
101- Hijack Execution Flow: DLL Search Order Hijacking: <https://attack.mitre.org/techniques/T1574/001>
102- Hijack Execution Flow: DLL Side-Loading: <https://attack.mitre.org/techniques/T1574/002>
103