Name Date Size #Lines LOC

..--

.lift/H--138

app/H--14,36712,501

certs/H--4,5234,521

config/H--13,84810,895

docker/H--258185

include/acvp/H--7,1064,078

m4/H--8,2447,378

metadata/H--295252

ms/H--914880

murl/H--7,7705,573

safe_c_stub/H--2,4971,709

scripts/H--3829

src/H--52,89942,699

test/H--297,306286,958

uncrustify/H--2,2581,595

.gitignoreH A D03-Jul-2023454 5443

COPYINGH A D29-Jul-20164 KiB6651

DoxyfileH A D07-Jul-2021109.8 KiB2,5752,004

DoxygenLayout.xmlH A D07-Jul-20216 KiB196182

LICENSEH A D23-Apr-20199.9 KiB178150

Makefile.amH A D07-Jul-2021660 2920

Makefile.inH A D23-Jul-202428.1 KiB891792

README.mdH A D09-Apr-202423 KiB498420

aclocal.m4H A D23-Jul-202451 KiB1,3521,234

configureH A D23-Jul-2024412.9 KiB14,42911,263

configure.acH A D23-Jul-202413.1 KiB354304

migration_guide.mdH A D09-Apr-20248.4 KiB233183

README.md

1```
2         __       __   ______        ___       ______ ____    ____  ______
3        |  |     |  | |   _  \      /   \     /      |\   \  /   / |   _  \
4        |  |     |  | |  |_)  |    /  ^  \   |  ,----' \   \/   /  |  |_)  |
5        |  |     |  | |   _  <    /  /_\  \  |  |       \      /   |   ___/
6        |  `----.|  | |  |_)  |  /  _____  \ |  `----.   \    /    |  |
7        |_______||__| |______/  /__/     \__\ \______|    \__/     | _|
8
9           A library that implements the client-side of the ACVP protocol.
10      The ACVP specification can be found at https://github.com/usnistgov/ACVP
11```
12
13## License
14Libacvp is licensed under the Apache License 2.0, which means that
15you are free to get and use it for commercial and non-commercial
16purposes as long as you fulfill its conditions. See the LICENSE
17file for details.
18
19
20## Recent Changes
21
22Libacvp has been updated to 2.0.0! The included acvp_app now supports OpenSSL 3.0. Various new
23algorithms are supported and tested on top of multiple other new features and improvements. Please
24see the release notes for more details.
25Support for OpenSSL 1.0.2 has been removed.
26
27
28# Overview
29
30Libacvp is a client-side ACVP library implementation, and also includes
31an example application (acvp_app) which utilizes the library.
32
33libacvp will login and then register with the ACVP server (advertising capabilities).
34The server will respond with a list of vector set identifiers that need to be processed.
35libacvp will download each vector set, process the vectors, and send the results back to the server.
36This is performed in real-time by default. The user can also use "offline" mode for non-realtime
37processing.
38
39The `app/` directory contains a sample application which uses libacvp. This app
40provides the glue between the crypto module DUT and the library itself.
41Depending upon the DUT, the crypto backend API, and other factors, the user
42may need to enhance the reference application, or create a new one from scratch.
43
44The application within `app/` demonstrates how to use libacvp to interface with a crypto module on
45top of providing a broad testing harness for OpenSSL.
46
47This application includes support for FIPS testing OpenSSL 3.X. Historically, support was included
48for FIPS testing OpenSSL's FIPS module for 1.0.2; this is end of life and support has been removed. Some
49artifacts have been left behind in case users have need to test a similar FOM structure for OpenSSL
501.1.1 (OpenSSL does not support this themselves). For OpenSSL 3.X, testing the FIPS provider
51or the default provider is managed at runtime. If you are testing a different provider, you will need
52to modify the application code to fetch those algorithms accordingly. For previous versions, a build
53time argument providing a path to the FIPS module being tested was required.
54
55The `certs/` directory contains the certificates used to establish a TLS
56session with well-known ACVP servers. If the ACVP server uses a self-signed certificate,
57then the proper CA file must be specified.
58libacvp also requires a client certificate and key pair,
59which the ACVP server uses to identify the client. You will need to
60contact NIST to register your client certificate with their server.
61
62The murl directory contains experimental code to replace the Curl
63dependency. This may be useful for target platforms that don't support
64Curl, such as Android or iOS. Murl is a "minimal" Curl implementation.
65It implements a handful of the Curl API entry points used by libacvp.
66The Murl code is currently in an experimental stage and is not supported
67or maintained as part of libacvp and should not be used in any
68production environment.
69
70
71## Dependencies
72* autotools
73* gcc
74* make
75* curl (or substitution)
76* openssl (or substitution)
77* libcriterion (for unit tests only)
78* doxygen (for building documentation only)
79
80Curl is used for sending REST calls to the ACVP server.
81
82Openssl is used for TLS transport by libcurl.
83
84Parson is used to parse and generate JSON data for the REST calls.
85The parson code is included and compiled as part of libacvp.
86
87libcurl, libssl and libcrypto are not included, and must
88be installed separately on your build/target host,
89including the header files.
90
91##### Dealing with system-default dependencies
92This codebase uses features in OpenSSL >= 1.1.1.
93If the system-default install does not meet this requirement,
94you will need to download, compile and install at least OpenSSL 1.1.1 on your system.
95The new OpenSSL resources should typically be installed into /usr/local/ssl to avoid
96overwriting the default OpenSSL that comes with your distro.
97
98Version 1.1.1 of OpenSSL reaches end of life officially on September 11, 2023. Updating to OpenSSL
993.X is highly recommended when possible. All previous versions have reached end of life status.
100
101A potential source of issues is the default libcurl on the Linux distro, which may be linked against
102the previously mentioned default OpenSSL. This could result in linker failures when trying to use
103the system default libcurl with the new OpenSSL install (due to missing symbols).
104Therefore, you SHOULD download the Curl source, compile it against the "new" OpenSSL
105header files, and link libcurl against the "new" OpenSSL.
106libacvp uses compile time macro logic to address differences in the APIs of different OpenSSL
107versions; therefore, it is important that you ensure libacvp is linking to the correct openSSL versions
108at run time as well.
109
110Libacvp is designed to work with curl version 7.80.0 or newer. Some operating systems may ship with
111older versions of Curl which are missing certain features that libacvp depends on. In this case you
112should either acquire a newer version through your OS package manager if possible or build a newer
113version from source. While it is possible some older versions may work, they are not tested or
114supported.
115
116## Building
117
118The instructions below indicate how to build libacvp for OpenSSL 3.X testing. The process is the same
119for building 1.1.1 without FIPS. If you have a FIPS module for 1.1.1, we are unable to officially
120support it as OpenSSL does not have a FIPS for 1.1.1 and there is no standard format to follow.
121However, some support for building with a FOM (such as that included with 1.0.2) remains; for more
122details, see the README included with versions prior to 2.0. It will be up to the user to maintain an
123application capable of testing your implementation.
124
125`--prefix<path to install dir>` can be used with any configure options to specify where you would
126like the library and application to install to.
127
128#### To build app and library for supported algorithm testing
129
130```
131./configure --with-ssl-dir=<path to ssl dir> --with-libcurl-dir=<path to curl dir>
132make clean
133make
134make install
135```
136
137#### Building libacvp without the application code.
138Use the following ./configure command line option and only the library will be built and installed.
139
140--disable-app
141
142Note that this option is not useful when building for offline testing since the application is needed.
143Using this option, only a libcurl installation dir needs to be provided.
144
145#### Building acvp_app only without the library code
146Use the following ./configure command line option and only the app will be built. Note that it depends
147on libacvp having already been built. The libacvp directory can be provided using --with-libacvp-dir=
148Otherwise, it will look in the default build directory in the root folder for libacvp.
149
150--disable-lib
151
152#### Other build options
153More info about all available configure options can be found by using ./configure --help. Some important
154ones include:
155--enable-offline : Removes the Curl dependency and builds a version of libacvp that can only work
156 offline. In current versions of libacvp, this does not affect if libraries are linked statically
157 or dynamically.
158--disable-kdf : Will disable kdf registration and processing in the application, in cases where the given
159 crypto implementation does not support it (E.g. all OpenSSL prior to 3.0)
160--disable-lib-check : This will disable autoconf's attempts to automatically detect prerequisite libraries
161 before building libacvp. This may be useful in some edge cases where the libraries exist but autoconf
162 cannot detect them; however, it will give more cryptic error messages in the make stage if there are issues
163--enable-force-static-linking : This will force a build of acvp_app to attempt to link to every
164dependency library, including libc, statically.
165
166Libacvp will attempt to link a shared library for a given dependency if it exists, and will use a static library
167if a shared one is not found. Statically linking the OpenSSL FIPS provider is not supported at this time as OpenSSL
168does not support static building of the FIPS provider.
169
170#### Cross Compiling
171Requires options --build and --host.
172Your `$PATH` must contain a path the gcc.
173
174```
175export CROSS_COMPILE=powerpc-buildroot-linux-uclibc
176./configure --build=<local target prefix> --host=<gcc prefix of target host> --with-ssl-dir=<path to ssl dir> --with-libcurl-dir=<path to curl dir>
177```
178
179Example with build and host information:
180```
181./configure --build=localx86_64-unknown-linux-gnu --host=mips64-octeon-linux-gnu --with-ssl-dir=<path to ssl dir> --with-libcurl-dir=<path to curl dir>`
182```
183All dependent libraries must have been built with the same cross compile.
184
185If using murl for cross compiles use the same CROSS_COMPILE and HOSTCC used with openssl, for example:
186
187CROSS_COMPILE=arm-linux-gnueabihf-
188HOSTCC=gcc
189
190## Windows
191The Visual Studio projects for acvp_app and libacvp are set to use 2017 tools and are designed to
192be easily updated to use the latest versions of Microsoft build tools while being backwards
193compatible with Visual Studio 2017 and some older Windows 10 SDK versions.
194
195Prerequisites:
196This system assumes all dependency library paths have /include folders containing all the headers
197needed to properly link. This can be altered in the scripts if needed.
198
199For these steps, use the Visual Studio Command Prompt for your platform (x64, x86, x86_64, or
200x64_86)
201
202Steps:
2031.) Edit and run ms\config_windows.bat
204    -Add all of the directories for your dependencies
205	-Change any needed settings
2062.) Open libacvp.sln and acvp_app.sln in Visual Studio and allow the dialog to update the projects'
207    versions of MSVC and windows SDK to the latest installed (May be unnecessary if versions match)
2083.) run ms/make_lib.bat
2094.) run ms/make_app.bat
210
211The library files and app files will be placed in the ms/build/ directory.
212
213Notes:
214Windows will only search specific paths for shared libraries, and will not check the
215locations you specify in config_windows.bat by default unless they are in your path. This results
216in acvp_app not being able to run. An alternative to altering your path or moving libraries to
217system folders is moving/copying any needed .dll files to the same directory as acvp_app.
218
219If you are building statically, it is assumed for acvp_app that you have built Curl with OpenSSL,
220and that you are linking acvp_app to the exact same version of OpenSSL that Curl is linked to. Other
221configurations are not supported, untested, and may not work. Libacvp itself is indifferent
222to which crypto and SSL libraries Curl uses, but any applications using libacvp statically
223need to link to those libraries.
224
225Murl is not supported in windows at this time.
226
227## Running
2281. `export LD_LIBRARY_PATH="<path to ssl lib;path to curl lib>"`
2292. Modify scripts/nist_setup.sh and run `source scripts/nist_setup.sh`
2303. `./app/acvp_app --<options>`
231
232Use `./app/acvp_app --help` for more information on available options.
233
234libacvp generates a file containing information that can be used to resume or check the results
235of a session. By default, this is usually placed in the folder of the executable utilizing
236libacvp, though this can be different on some OS. The name, by default, is
237testSession_(ID number).json. The path and prefix can be controlled using ACV_SESSION_SAVE_PATH
238and ACV_SESSION_SAVE_PREFIX in your environment, respectively.
239
240
241## FIPS and OpenSSL 3.X
242For OpenSSL 3.X, FIPS mode is determined by the acvp_app at runtime instead of
243build time. Acvp_app will attempt to utilize the OpenSSL FIPS provider by default; a runtime
244argument can be provided to not fetch FIPS crypto (CERTIFICATIONS MUST NOT BE PERFORMED THIS WAY).
245
246We cannot advise specifically how to configure OpenSSL 3.X as that will vary on a platform-specific
247basis. Generally, the OpenSSL config file must include the fipsmodule.cnf file, must explicitly
248include the fips section, and must explicitly activate the FIPS provider. When the FIPS provider is
249explicitly activated, the default provider is no longer implicitly activated and must also be
250explicitly activated in some cases. In our testing, offline sessions can be run without explicitly
251activating the default provider (since all the crypto tests seek the FIPS provider), but Curl (and
252thus any online sessions or requests) requires the default provider to be activated to function
253properly.
254
255acvp_app will perform a quick operation at startup using the FIPS provider to determine if FIPS
256crypto is working properly. If it fails, it will return an error; in this case please review your
257OpenSSL install, libacvp build steps, and especially your OpenSSL configuration before contacting
258the libacvp team.
259
260
261### How to test offline
2621. Download vectors on network accessible device:
263`./app/acvp_app --<algs of choice or all_algs> --vector_req <filename1>`
264 - where `<filename1>` is the file you are saving the tests to.
265
2662. Copy vectors and acvp_app to target:
267`./app/acvp_app --all_algs --vector_req <filename1> --vector_rsp <filename2>`
268 - where `<filename1>` is the file the tests are saved in, and `<filename2>` is the file
269you want to save your results to.
270
2713. Copy responses(filename2) to network accessible device:
272`./app/acvp_app --all_algs --vector_upload <filename2>`
273 - where `<filename2>` is the file containing the results of the tests.
274
275*Note:* If the target in Step 2 does not have the standard libraries used by
276libacvp you may configure and build a special app used only for Step 2. This
277can be done by using --enable-offline when running ./configure which will help
278minimize library dependencies. By using --disable-shared at configure time,
279libacvp can be linked to acvp_app statically as well; acvp_app will link to other
280dependencies as described above under `other build options`.
281
282## Testing
283Move to the test/ directory and see the README.md there. The tests depend upon
284a C test framework called Criterion, found here: https://github.com/Snaipe/Criterion
285
286
287## Contributing
288Before opening a pull request on libacvp, please ensure that all unit tests are
289passing. Additionally, new tests should be added for new library features.
290
291We also run the uncrustify tool as a linter to keep code-style consistent
292throughout the library. That can be found in the `uncrustify/` directory.
293
294Any and all new API functions must also be added to ms\resources\source.def.
295
296## FAQ
297
298`I get "unable to process test vectors" for certain algorithms. Why?`
299This usually indicates that you have requested to test certain algorithms or features within
300algorithms that cannot be tested with the given version of OpenSSL as built.
301
302`I get some sort of hard crash while processing vector sets - why?`
303It is probable that acvp_app is linking to a different version of a dependency than the one
304it was configured and built with. libacvp/acvp_app depend on library versions in enabling
305or disabling certain features at build time, so please make sure libacvp and acvp_app are
306built and run with the same versions of each library.
307
308`Can I redownload vector sets from a previously created session?`
309Yes. running acvp_app with the --resume_session AND --vector_req options will redownload
310those vector sets to the given file without processing or uploading anything. See the app
311help section for more details about these commands.
312
313`I have been getting retry messages for X amount of time. Is this normal?`
314Yes; the server actively sends retry messages when it is still in the process of generating
315tests or waiting to generate tests. This period of time can vary wildly if the server is under
316intense load, anywhere from a few seconds to a few days. If there is an issue and the connection
317is lost or the server experiences an error, the library output will indicate it.
318
319`I received a vector set from somewhere other than libacvp, such as a lab. How can I process it?`
320Libacvp expects vector set json files to have a specific formatting. It is possible to manually
321modify the JSON file to make it work though we do not officially support or endorse this process.
322We plan to add support for this usage soon.
323
324Moving your vector set into a json array, and putting this as the json object before the vector set
325should allow libacvp to process it using the offline testing process described above; you would
326also need to remove these entries from the output file.
327```
328{
329    "jwt": "NA",
330    "url": "NA",
331    "isSample": false,
332    "vectorSetUrls": [
333        "NA"
334    ]
335}
336```
337Note that this file will not be able to be submitted using libacvp unless you manually input all
338of the correct information in the above object; we do not recommend this and you should instead
339try to submit via wherever you originally got the vector set from.
340
341## Credits
342This package was initially written by John Foley of Cisco Systems.
343Contributors include (non-exhaustive):
344Barry Fussell (Cisco Systems)
345Andrew Karcher (Cisco Systems)
346
347## Supported Algorithms
348
349|   Algorithm Type   |    Library Support    |    App Support (Open SSL 1.1.1)    |    App Support (OpenSSL 3.X)    |
350| :---------------:  | :-------------------: | :--------------------------------: | :-----------------------------: |
351| **Block Cipher Modes** |                   |                                    |
352| **AES-CBC** |  Y  |  Y  |  Y  |
353| **AES-CFB1** |  Y  |  Y  |  Y  |
354| **AES-CFB8** |  Y  |  Y  |  Y  |
355| **AES-CFB128** |  Y  |  Y  |  Y  |
356| **AES-CTR** |  Y  |  Y  |  Y  |
357| **AES-ECB** |  Y  |  Y  |  Y  |
358| **AES-GCM** |  Y  |  Y  |  Y  |
359| **AES-GCM-SIV** |  Y  |  Y  |  Y  |
360| **AES-KW** |  Y  |  Y  |  Y  |
361| **AES-KWP** |  Y  |  Y  |  Y  |
362| **AES-OFB** |  Y  |  Y  |  Y  |
363| **AES-XPN** |  N  |  N  |  Y  |
364| **AES-XTS** |  Y  |  Y  |  Y  |
365| **AES-FF1** |  N  |  N  |  N  |
366| **AES-FF3-1** |  N  |  N  |  N  |
367| **TDES-CBC** |  Y  |  Y  |  Y  |
368| **TDES-CBCI** |  N  |  N  |  N  |
369| **TDES-CFBP1** |  N  |  N  |  N  |
370| **TDES-CFBP8** |  N  |  N  |  N  |
371| **TDES-CFBP64** |  N  |  N  |  N  |
372| **TDES-CTR** |  Y  |  Y  |  N  |
373| **TDES-ECB** |  Y  |  Y  |  Y  |
374| **TDES-KW** |  Y  |  N  |  N  |
375| **TDES-OFB** |  Y  |  Y  |  N  |
376| **TDES-OFBI** |  N  |  N  |  N  |
377| **Secure Hash** | | |
378| **SHA-1** |  Y  |  Y  |  Y  |
379| **SHA-224** |  Y  |  Y  |  Y  |
380| **SHA-256** |  Y  |  Y  |  Y  |
381| **SHA-384** |  Y  |  Y  |  Y  |
382| **SHA-512** |  Y  |  Y  |  Y  |
383| **SHA-512/224** |  Y  |  Y  |  Y  |
384| **SHA-512/256** |  Y  |  Y  |  Y  |
385| **SHA3-224** |  Y  |  Y  |  Y  |
386| **SHA3-256** |  Y  |  Y  |  Y  |
387| **SHA3-384** |  Y  |  Y  |  Y  |
388| **SHA3-512** |  Y  |  Y  |  Y  |
389| **SHAKE-128** |  Y  |  Y  |  Y  |
390| **SHAKE-256** |  Y  |  Y  |  Y  |
391| **XOFs** | | |
392| **cSHAKE-128** |  N  |  N  |  N  |
393| **cSHAKE-256** |  N  |  N  |  N  |
394| **KMAC-128** |  Y  |  N  |  Y  |
395| **KMAC-256** |  Y  |  N  |  Y  |
396| **ParallelHash-128** |  N  |  N  |  N  |
397| **ParallelHash-256** |  N  |  N  |  N  |
398| **TupleHash-128** |  N  |  N  |  N  |
399| **TupleHash-256** |  N  |  N  |  N  |
400| **Message Authentication** | | |
401| **AES-GMAC** |  Y  |  Y  |  Y  |
402| **AES-CCM** |  Y  |  Y  |  Y  |
403| **CMAC-AES** |  Y  |  Y  |  Y  |
404| **CMAC-TDES** |  Y  |  Y  |  N  |
405| **HMAC-SHA-1** |  Y  |  Y  |  Y  |
406| **HMAC-SHA2-224** |  Y  |  Y  |  Y  |
407| **HMAC-SHA2-256** |  Y  |  Y  |  Y  |
408| **HMAC-SHA2-384** |  Y  |  Y  |  Y  |
409| **HMAC-SHA2-512** |  Y  |  Y  |  Y  |
410| **HMAC-SHA2-512/224** |  Y  |  Y  |  Y  |
411| **HMAC-SHA2-512/256** |  Y  |  Y  |  Y  |
412| **HMAC-SHA3-224** |  Y  |  Y  |  Y  |
413| **HMAC-SHA3-256** |  Y  |  Y  |  Y  |
414| **HMAC-SHA3-384** |  Y  |  Y  |  Y  |
415| **HMAC-SHA3-512** |  Y  |  Y  |  Y  |
416| **DRBG** | | |
417| **ctrDRBG-AES-128** |  Y  |  N  |  Y  |
418| **ctrDRBG-AES-192** |  Y  |  N  |  Y  |
419| **ctrDRBG-AES-256** |  Y  |  N  |  Y  |
420| **ctrDRBG-TDES** |  N  |  N  |  N  |
421| **HASH DRBG** |  Y  |  N  |  Y  |
422| **HMAC DRBG** |  Y  |  N  |  Y  |
423| **Digital Signature** | | |
424| **RSA mode: keyGen** |  Y  |  N  |  Y  |
425| **RSA mode: sigGen** |  Y  |  N  |  Y  |
426| **RSA mode: sigVer** |  Y  |  N  |  Y  |
427| **RSA mode: signatureComponent** |  Y  |  N  |  Y  |
428| **RSA mode: decryptionComponent** |  Y  |  N  |  N  |
429| **RSA mode: legacySigVer** |  N  |  N  |  N  |
430| **ECDSA mode: sigGenComponent** |  Y  |  N  |  Y  |
431| **ECDSA mode: keyGen** |  Y  |  N  |  Y  |
432| **ECDSA mode: keyVer** |  Y  |  N  |  Y  |
433| **ECDSA mode: sigGen** |  Y  |  N  |  Y  |
434| **ECDSA mode: sigVer** |  Y  |  N  |  Y  |
435| **DSA mode: keyGen** |  Y  |  N  |  Y  |
436| **DSA mode: sigVer** |  Y  |  N  |  Y  |
437| **DSA mode: sigGen** |  Y  |  N  |  Y  |
438| **DSA mode: pqgGen** |  Y  |  N  |  Y  |
439| **DSA mode: pqgVer** |  Y  |  N  |  Y  |
440| **EDDSA mode: keyGen** |  Y  |  N  |  Y  |
441| **EDDSA mode: keyVer** |  N  |  N  |  N  |
442| **EDDSA mode: sigGen** |  Y  |  N  |  Y  |
443| **EDDSA mode: sigVer** |  Y  |  N  |  Y  |
444| **LMS mode: keyGen** |  Y  |  N  |  N  |
445| **LMS mode: sigGen** |  Y  |  N  |  N  |
446| **LMS mode: sigVer** |  Y  |  N  |  N  |
447| **Key Agreement** | | |
448| **KAS ECC ephemeralUnified** |  Y  |  N  |  N  |
449| **KAS ECC SSC ephemeralUnified** |  Y  |  N  |  Y  |
450| **KAS ECC fullMqv** |  N  |  N  |  N  |
451| **KAS ECC fullUnified** |  N  |  N  |  N  |
452| **KAS ECC onePassDh** |  N  |  N  |  N  |
453| **KAS ECC onePassMqv** |  N  |  N  |  N  |
454| **KAS ECC OnePassUnified** |  N  |  N  |  N  |
455| **KAS ECC staticUnified** |  N  |  N  |  N  |
456| **KAS ECC CDH-Component** |  Y  |  N  |  Y  |
457| **KAS FFC dhHybrid1** |  N  |  N  |  N  |
458| **KAS FFC mqv2** |  N  |  N  |  N  |
459| **KAS FFC dhEphem** |  Y  |  N  |  N  |
460| **KAS FFC SSC dhEphem** |  Y  |  N  |  Y  |
461| **KAS FFC dhHybridOneFlow** |  N  |  N  |  N  |
462| **KAS FFC mqv1** |  N  |  N  |  N  |
463| **KAS FFC dhOneFlow** |  N  |  N  |  N  |
464| **KAS FFC dhStatic** |  N  |  N  |  N  |
465| **KAS IFC SSC KAS1** |  Y  |  N  |  Y  |
466| **KAS IFC SSC KAS2** |  Y  |  N  |  Y  |
467| **KAS IFC KAS1-basic** |  N  |  N  |  N  |
468| **KAS IFC KAS1-Party_V-confirmation** |  N  |  N  |  N  |
469| **KAS IFC KAS2-basic** |  N  |  N  |  N  |
470| **KAS IFC KAS2-bilateral-confirmation** |  N  |  N  |  N  |
471| **KAS IFC KAS2-Party_U-confirmation** |  N  |  N  |  N  |
472| **KAS IFC KAS2-Party_V-confirmation** |  N  |  N  |  N  |
473| **KTS IFC KTS-OAEP-basic** |  Y  |  N  |  Y  |
474| **KTS IFC KTS-OAEP-Party_V-confirmation** |  N  |  N  |  N  |
475| **KDA HKDF** |  Y  |  N  |  Y  |
476| **KDA ONESTEP** |  Y  |  N  |  Y  |
477| **KDA TWOSTEP** |  Y  |  N  |  Y  |
478| **KDFs** | | |
479| **Counter KDF** |  Y  |  N  |  Y  |
480| **Feedback KDF** |  Y  |  N  |  Y  |
481| **Double Pipeline Iterator KDF** |  Y  |  N  |  N  |
482| **KMAC KDF** |  Y  |  N  |  N  |
483| **IKEv1** |  Y  |  N  |  N  |
484| **IKEv2** |  Y  |  N  |  N  |
485| **SNMP** |  Y  |  N  |  N  |
486| **SRTP** |  Y  |  N  |  N  |
487| **SSH** |  Y  |  N  |  Y  |
488| **TLS 1.2** |  Y  |  N  |  Y  |
489| **TLS 1.3** |  Y  |  N  |  Y  |
490| **TPM** |  N  |  N  |  N  |
491| **ANSX9.63** |  Y  |  N  |  Y  |
492| **ANSX9.42** |  Y  |  N  |  Y  |
493| **PBKDF** |  Y  |  N  |  Y  |
494| **Safe Primes** | | |
495| **SafePrimes KeyGen** |  Y  |  N  |  Y  |
496| **SafePrimes KeyVer** |  Y  |  N  |  Y  |
497
498