Coder Social home page Coder Social logo

symcrypt-openssl's Introduction

SCOSSL - The SymCrypt engine for OpenSSL

The SymCrypt engine for OpenSSL (SCOSSL) allows the use of OpenSSL with SymCrypt as the provider for core cryptographic operations. It leverages the OpenSSL engine interface to override the cryptographic implementations in OpenSSL's libcrypto.so with SymCrypt's implementations. The primary motivation for this is to support FIPS certification, as vanilla OpenSSL 1.1.1 does not have a FIPS-certified cryptographic module.

Where possible the SCOSSL will direct OpenSSL API calls to the SymCrypt FIPS module. In cases where SymCrypt cannot (currently) support an OpenSSL API, the best effort is made to fall-back to the default OpenSSL implementation of the given function. In a few cases the engine will instead fail the call completely, as re-routing to OpenSSL's implementation is not always easy, and as with any project we have to prioritize!

Important note: The code in this repository is currently undergoing validation for use in Microsoft-internal products. At this time, it has not been tested for use in other environments and should not be considered production-ready.

Algorithms that will be routed to a FIPS certifiable SymCrypt module with this version

The following list is not necessarily exhaustive, and will be updated as more functionality is added to SCOSSL. Note that just because an algorithm is FIPS certifiable, does not mean it is recommended for use. SSH-KDF implementation is disabled by default and can be enabled by adding -DSCOSSL_SSHKDF=1 argument to CMake. This algorithm also requires OpenSSL source code in the build process.

  • Key derivation
    • HKDF (SHA1, SHA2-256, SHA2-384, SHA2-512)
    • TLS 1.2 KDF (SHA1, SHA2-256, SHA2-384, SHA2-512)
    • SSH-KDF (SHA1, SHA2-256, SHA2-384, SHA2-512)
  • Key Agreement
    • ECDH (P256, P384, P521)
    • Finite Field DH (ffdhe2048, ffdhe3072, ffdhe4096, modp2048, modp3072, modp4096)
  • Hashing
    • SHA1
    • SHA2-256
    • SHA2-384
    • SHA2-512
  • Message Authentication
    • HMAC (SHA1, SHA2-256, SHA2-384, SHA2-512)
  • Symmetric
    • AES (128, 192, 256)
      • CBC, CCM, ECB, GCM
  • Asymmetric
    • RSA (2048, 3072, 4096)
      • PKCS1, OAEP, PSS
    • ECDSA (P256, P384, P521)

Known cases where SCOSSL will fail rather than fallback to default OpenSSL

  1. Use of an AES-GCM IV which is not 12-bytes (96-bits)
  2. Use of unsupported digests in RSA signatures, TLS PRF, and HMAC
  3. Use of multi-prime (more than 2-prime) RSA

Versioning and Servicing

As of version 1.0.0, SCOSSL uses the versioning scheme defined by the Semantic Versioning 2.0.0 specification. This means:

  • Major version changes introduce ABI and/or API breaking changes
  • Minor version changes introduce backwards compatible additional functionality or improvements, and/or bug fixes
  • Patch version changes introduce backwards compatible bug fixes

Regarding servicing, our strong recommendation is that distro vendors and application developers regularly update to the latest version of SymCrypt and SymCrypt engine for both security fixes and functionality/performance improvements.

We will support long-term servicing of specific releases for security fixes. Details of this plan will be released publicly in the future.

Building Instructions

Compilation Instructions

  1. Install libssl, or compile and install OpenSSL from source
  2. Follow Linux build instructions from SymCrypt repository SymCrypt to build the Linux SymCrypt module
    • You can either install the Linux SymCrypt module (i.e libsymcrypt.so* to /usr/lib/, and inc/* to /usr/include/), or
    • Copy the built module to the root of the SymCrypt-OpenSSL repo cp <SymCryptRepo>/bin/module/<arch>/LinuxUserMode/<module_name>/libsymcrypt.so ./
  3. mkdir bin; cd bin
  4. cmake .. -DCMAKE_TOOLCHAIN_FILE=../cmake-toolchain/LinuxUserMode-<arch>.cmake
    • If you have not installed SymCrypt header files, you can also specify the root directory -DSYMCRYPT_ROOT_DIR=<SymCryptRepo>
    • If you want to link to a specific OpenSSL installation, you can also specify -DOPENSSL_ROOT_DIR=<OpensslInstallDirectory>
    • Optionally, for a release build, specify -DCMAKE_BUILD_TYPE=Release
  5. cmake --build .
    • Optionally specify -jN where N is the number of processes you wish to spawn for the build

Run Samples

./SslPlay/SslPlay

Contributing

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.

When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

Trademarks

This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft's Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party's policies.

symcrypt-openssl's People

Contributors

akshayku avatar ccalik avatar ironyman avatar mamckee avatar microsoftopensource avatar mlindgren avatar pemensik avatar samuel-lee-msft avatar smallbytes avatar spencernofzinger avatar xumia avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

symcrypt-openssl's Issues

Git clone failing on AzureLinux 3.0 for https://git.kernel.org hosted repos with TLS IV length error

In Azure Linux 3.0 we recently (on 25th April 2024) updated the SymCrypt-OpenSSL package to latest 1.4.2, since then we are having this issue where, git clone is failing on any repo hosted on https://git.kernel.org

Log:

$ git clone https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/
Cloning into 'linux-stable'...
[ERROR] error:41080106:SCOSSL::passed invalid argument:set_iv_fixed only works with TLS IV length at /usr/src/azl/BUILD/SymCrypt-OpenSSL-1.4.2/ScosslCommon/src/scossl_aes_aead.c, line 305
fatal: unable to access 'https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/': OpenSSL/3.3.0: error:41080106:SCOSSL::passed invalid argument

This doesn't occur when the clone url starts with git://

$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/
Cloning into 'linux-stable'...
remote: Enumerating objects: 12393993, done.
remote: Counting objects: 100% (64/64), done.
remote: Compressing objects: 100% (25/25), done.
^Cceiving objects:   4% (593148/12393993), 286.92 MiB | 27.45 MiB/s

After removing this package git clone also works with https:// prefix.

Note: This doesn't affect clone operations from https://github.com/

VSCode WSL remote doesn't work when SymCrypt OpenSSL engine is set as default

When SymCrypt-OpenSSL is set as the default engine for all algorithms in via OpenSSL.cnf, VSCode Remote for WSL fails to connect with the following errors:

[2021-09-16 16:07:30.426] [renderer1] [info] [remote-connection][ExtensionHost][91019…][reconnect] starting reconnecting loop. You can get more information with the trace log level.
[2021-09-16 16:07:30.426] [renderer1] [info] [remote-connection][ExtensionHost][91019…][reconnect] resolving connection...
[2021-09-16 16:07:34.677] [renderer1] [info] [remote-connection][Management   ][04ee5…][reconnect] connecting to <IP removed>:39209...
[2021-09-16 16:07:34.679] [renderer1] [info] [remote-connection][ExtensionHost][91019…][reconnect] connecting to <IP removed>:39209...
[2021-09-16 16:07:34.844] [renderer1] [info] [remote-connection][Management   ][04ee5…][reconnect] received socket close event (wasClean: false, code: 1006, reason: ).
[2021-09-16 16:07:34.845] [renderer1] [error] {"isTrusted":true}
[2021-09-16 16:07:34.851] [renderer1] [error] [remote-connection][Management   ][04ee5…][reconnect][<IP removed>:39209] received error control message when negotiating connection. Error:
[2021-09-16 16:07:34.852] [renderer1] [error] Error: Connection error: Unknown reconnection token
    at W (vscode-file://vscode-app/c:/Program%20Files/Microsoft%20VS%20Code/resources/app/out/vs/workbench/workbench.desktop.main.js:637:154700)
    at vscode-file://vscode-app/c:/Program%20Files/Microsoft%20VS%20Code/resources/app/out/vs/workbench/workbench.desktop.main.js:637:145469
    at l.fire (vscode-file://vscode-app/c:/Program%20Files/Microsoft%20VS%20Code/resources/app/out/vs/workbench/workbench.desktop.main.js:60:1712)
    at n.fire (vscode-file://vscode-app/c:/Program%20Files/Microsoft%20VS%20Code/resources/app/out/vs/workbench/workbench.desktop.main.js:76:16477)
    at u._receiveMessage (vscode-file://vscode-app/c:/Program%20Files/Microsoft%20VS%20Code/resources/app/out/vs/workbench/workbench.desktop.main.js:76:21798)
    at vscode-file://vscode-app/c:/Program%20Files/Microsoft%20VS%20Code/resources/app/out/vs/workbench/workbench.desktop.main.js:76:20841
    at l.fire (vscode-file://vscode-app/c:/Program%20Files/Microsoft%20VS%20Code/resources/app/out/vs/workbench/workbench.desktop.main.js:60:1712)
    at b.acceptChunk (vscode-file://vscode-app/c:/Program%20Files/Microsoft%20VS%20Code/resources/app/out/vs/workbench/workbench.desktop.main.js:76:13838)
    at vscode-file://vscode-app/c:/Program%20Files/Microsoft%20VS%20Code/resources/app/out/vs/workbench/workbench.desktop.main.js:76:13186
    at vscode-file://vscode-app/c:/Program%20Files/Microsoft%20VS%20Code/resources/app/out/vs/workbench/workbench.desktop.main.js:637:140524
    at l.fire (vscode-file://vscode-app/c:/Program%20Files/Microsoft%20VS%20Code/resources/app/out/vs/workbench/workbench.desktop.main.js:60:1712)
    at FileReader._fileReader.onload (vscode-file://vscode-app/c:/Program%20Files/Microsoft%20VS%20Code/resources/app/out/vs/workbench/workbench.desktop.main.js:637:139084)
[2021-09-16 16:07:34.852] [renderer1] [error] [remote-connection][Management   ][04ee5…][reconnect] A permanent error occurred in the reconnecting loop! Will give up now! Error:
[2021-09-16 16:07:34.852] [renderer1] [error] Error: Connection error: Unknown reconnection token

Compiling with tracing enabled does not yield any errors or warnings in the SCOSSL log:

mitch@MITCHL-Z420:~$ rg ERROR /tmp/scossl.log
mitch@MITCHL-Z420:~$ rg WARN /tmp/scossl.log

openssl.cnf changes:

[ openssl_def ]
engines = engine_section

[ engine_section ]
symcrypt = symcrypt_section

[ symcrypt_section ]
engine_id = symcrypt
dynamic_path = /usr/lib/x86_64-linux-gnu/engines-1.1/libsymcryptengine.so
default_algorithms = ALL
init = 1

Unfortunately I haven't found a good way to debug this yet.

Make SslPlay crash on failure

Currently if SslPlay encounters a test failure it just prints an error message which can easily be missed. It would be better to crash to make it clear that something has gone wrong.

Use human readable macro or enum for return values

Currently in various places we are returning SCOSSL_STATUS from functions which means returning an int with 1 indicating success, and non-1 (normally 0 other than in some special cases) indicating failure.
Across the codebase introduce some SCOSSL_SUCCESS and SCOSSL_FAILURE macro to be used in these functions.

Is anywhere documented memory alignment requirements used with symcryptengine?

We have a customer, who tried to use SymCrypt and this engine to implement FIPS 140-2 like compliance. However they hit a crashes with some software, for example bind-export-libs and dhcp client.

I have tried reproducing it by using the engine with named service. It crashes early in the start, because it uses MOVAPS instructions requiring 16B alignment. Normal OpenSSL does not have any similar requirement and typical application does not have a need for alignment checks. I think that is important difference from default OpenSSL engine, be it on Windows platform or Linux. Is such requirement documented anywhere?

I think such requirement prevents the use of symcryptengine as a system wide default. Is it possible to build version without such limitation? Ie. which would accept also non-aligned memory buffers? I had expected some requirements for RSA keys and such, but requirement of digest functions is a bit surprising.

(gdb) bt
#0  0x00007ffff7f2b91d in SymCryptMd5AppendBlocks (pChain=0x5555558a6908, pbData=0x5555558a68c8 "\200", cbData=64, pcbRemaining=0x7fffffffdfb0) at /__w/1/s/lib/md5.c:388
#1  0x00007ffff7f26839 in SymCryptHashCommonPaddingMd4Style (pHash=pHash@entry=0x7ffff7f79880 <SymCryptMd5Algorithm_default>, pState=pState@entry=0x5555558a68a8) at /__w/1/s/lib/hash.c:125
#2  0x00007ffff7f2b1dc in SymCryptMd5Result (pState=0x5555558a68a8, pbResult=0x7fffffffe060 "(\341\212UUU") at /__w/1/s/lib/md5.c:221
#3  0x00007ffff1e22e19 in scossl_digest_md5_final () from /usr/lib64/symcryptengine.so
#4  0x00007ffff5fae808 in EVP_DigestFinal_ex (ctx=0x5555558b25f8, md=0x7fffffffe060 "(\341\212UUU", size=0x0) at crypto/evp/digest.c:199
#5  0x00007ffff5fae882 in EVP_DigestFinal (ctx=0x5555558b25f8, md=<optimized out>, size=<optimized out>) at crypto/evp/digest.c:185
#6  0x00007ffff63667cd in do_detect_available () from /lib64/libisc.so.1107
#7  0x00007ffff4ff6e67 in __pthread_once_slow (once_control=0x7ffff65bd0e4, init_routine=0x7ffff6366760 <do_detect_available>) at pthread_once.c:116
#8  0x00007ffff636693b in isc_md5_available () from /lib64/libisc.so.1107
#9  0x00007ffff793830d in dst.hmacmd5_init () from /lib64/libdns.so.1115
#10 0x00007ffff792d67c in dst_lib_init2 () from /lib64/libdns.so.1115
#11 0x00005555555b21f4 in ns_server_create (mctx=0x55555582a730, serverp=0x555555824240 <ns_g_server>) at ../../../bin/named/server.c:9166
#12 0x0000555555578bed in setup () at ../../../bin/named/main.c:1337
#13 main (argc=2, argv=0x7fffffffe2d8) at ../../../bin/named/main.c:1556

(gdb) disassemble /m
388	in /__w/1/s/lib/md5.c
   0x00007ffff7f2b90b <+1787>:	mov    0x10(%rsp),%rax
   0x00007ffff7f2b910 <+1792>:	movd   %r11d,%xmm3
   0x00007ffff7f2b915 <+1797>:	punpckldq %xmm3,%xmm0
   0x00007ffff7f2b919 <+1801>:	punpcklqdq %xmm1,%xmm0
=> 0x00007ffff7f2b91d <+1805>:	movaps %xmm0,(%rax)

Build failure for the annotation _Return_type_success_ in debian bullseye

Is the annotation Return_type_success only supported in Windows?
https://docs.microsoft.com/en-us/cpp/code-quality/annotating-function-behavior?view=msvc-160

The error logs:

2021-09-24T04:31:16.8931682Z -- Build files have been written to: /w/1/SymCrypt-OpenSSL
2021-09-24T04:31:16.9366161Z Scanning dependencies of target sc_ossl
2021-09-24T04:31:16.9491771Z [ 3%] Building C object SymCryptEngine/static/CMakeFiles/sc_ossl.dir/
/src/sc_ossl.c.o
2021-09-24T04:31:17.0328453Z In file included from /__w/1/SymCrypt-OpenSSL/SymCryptEngine/src/sc_ossl_rsa.h:6,
2021-09-24T04:31:17.0329933Z from /__w/1/SymCrypt-OpenSSL/SymCryptEngine/src/sc_ossl.c:7:
2021-09-24T04:31:17.0332095Z /__w/1/SymCrypt-OpenSSL/SymCryptEngine/src/sc_ossl_helpers.h:13:31: error: expected declaration specifiers or '...' before 'return'
2021-09-24T04:31:17.0333240Z 13 | typedef Return_type_success(return == 1) int SCOSSL_STATUS;
2021-09-24T04:31:17.0334060Z | ^~~~~~
2021-09-24T04:31:17.0335536Z /__w/1/SymCrypt-OpenSSL/SymCryptEngine/src/sc_ossl_helpers.h:14:31: error: expected declaration specifiers or '...' before 'return'
2021-09-24T04:31:17.0337331Z 14 | typedef Return_type_success(return >= 0) int SCOSSL_RETURNLENGTH; // For functions that return length on success and -1 on error
2021-09-24T04:31:17.0338353Z | ^~~~~~
2021-09-24T04:31:17.0415755Z In file included from /__w/1/SymCrypt-OpenSSL/SymCryptEngine/src/sc_ossl.c:7:
2021-09-24T04:31:17.0416663Z /__w/1/SymCrypt-OpenSSL/SymCryptEngine/src/sc_ossl_rsa.h:24:1: error: unknown type name 'SCOSSL_RETURNLENGTH'
2021-09-24T04:31:17.0417352Z 24 | SCOSSL_RETURNLENGTH sc_ossl_rsa_pub_enc(int flen, In_reads_bytes(flen) const unsigned char* from,
2021-09-24T04:31:17.0417842Z | ^~~~~~~~~~~~~~~~~~~
2021-09-24T04:31:17.0507607Z /__w/1/SymCrypt-OpenSSL/SymCryptEngine/src/sc_ossl_rsa.h:35:1: error: unknown type name 'SCOSSL_RETURNLENGTH'
2021-09-24T04:31:17.0508335Z 35 | SCOSSL_RETURNLENGTH sc_ossl_rsa_priv_dec(int flen, In_reads_bytes(flen) const unsigned char* from,
2021-09-24T04:31:17.0509287Z | ^~~~~~~~~~~~~~~~~~~
2021-09-24T04:31:17.0598866Z /__w/1/SymCrypt-OpenSSL/SymCryptEngine/src/sc_ossl_rsa.h:41:1: error: unknown type name 'SCOSSL_RETURNLENGTH'
2021-09-24T04:31:17.0599541Z 41 | SCOSSL_RETURNLENGTH sc_ossl_rsa_priv_enc(int flen, In_reads_bytes(flen) const unsigned char* from,
2021-09-24T04:31:17.0600008Z | ^~~~~~~~~~~~~~~~~~~
2021-09-24T04:31:17.0688562Z /__w/1/SymCrypt-OpenSSL/SymCryptEngine/src/sc_ossl_rsa.h:47:1: error: unknown type name 'SCOSSL_RETURNLENGTH'
2021-09-24T04:31:17.0689352Z 47 | SCOSSL_RETURNLENGTH sc_ossl_rsa_pub_dec(int flen, In_reads_bytes(flen) const unsigned char* from,
2021-09-24T04:31:17.0689811Z | ^~~~~~~~~~~~~~~~~~~
2021-09-24T04:31:17.0722706Z /__w/1/SymCrypt-OpenSSL/SymCryptEngine/src/sc_ossl_rsa.h:54:1: error: unknown type name 'SCOSSL_STATUS'
2021-09-24T04:31:17.0723421Z 54 | SCOSSL_STATUS sc_ossl_rsa_mod_exp(Out BIGNUM* r0, In const BIGNUM* i, In RSA* rsa, In BN_CTX* ctx);
2021-09-24T04:31:17.0723940Z | ^~~~~~~~~~~~~
2021-09-24T04:31:17.0755649Z /__w/1/SymCrypt-OpenSSL/SymCryptEngine/src/sc_ossl_rsa.h:60:1: error: unknown type name 'SCOSSL_STATUS'
2021-09-24T04:31:17.0756762Z 60 | SCOSSL_STATUS sc_ossl_rsa_bn_mod_exp(Out BIGNUM* r, In const BIGNUM* a, In const BIGNUM* p,
2021-09-24T04:31:17.0757401Z | ^~~~~~~~~~~~~
2021-09-24T04:31:17.0792431Z /__w/1/SymCrypt-OpenSSL/SymCryptEngine/src/sc_ossl_rsa.h:66:1: error: unknown type name 'SCOSSL_STATUS'
2021-09-24T04:31:17.0793156Z 66 | SCOSSL_STATUS sc_ossl_rsa_sign(int type, In_reads_bytes(m_length) const unsigned char* m, unsigned int m_length,
2021-09-24T04:31:17.0793671Z | ^~~~~~~~~~~~~
2021-09-24T04:31:17.0825634Z /__w/1/SymCrypt-OpenSSL/SymCryptEngine/src/sc_ossl_rsa.h:74:1: error: unknown type name 'SCOSSL_STATUS'
2021-09-24T04:31:17.0826277Z 74 | SCOSSL_STATUS sc_ossl_rsa_verify(int dtype, In_reads_bytes(m_length) const unsigned char* m,
2021-09-24T04:31:17.0826724Z | ^~~~~~~~~~~~~
2021-09-24T04:31:17.0859131Z /__w/1/SymCrypt-OpenSSL/SymCryptEngine/src/sc_ossl_rsa.h:83:1: error: unknown type name 'SCOSSL_STATUS'
2021-09-24T04:31:17.0859841Z 83 | SCOSSL_STATUS sc_ossl_rsa_keygen(Out RSA* rsa, int bits, In BIGNUM* e, In_opt BN_GENCB* cb);
2021-09-24T04:31:17.0860327Z | ^~~~~~~~~~~~~
2021-09-24T04:31:17.0893883Z /__w/1/SymCrypt-OpenSSL/SymCryptEngine/src/sc_ossl_rsa.h:87:1: error: unknown type name 'SCOSSL_STATUS'
2021-09-24T04:31:17.0894465Z 87 | SCOSSL_STATUS sc_ossl_rsa_init(Inout RSA rsa);
2021-09-24T04:31:17.0895072Z | ^~~~~~~~~~~~~
2021-09-24T04:31:17.0928801Z /__w/1/SymCrypt-OpenSSL/SymCryptEngine/src/sc_ossl_rsa.h:91:1: error: unknown type name 'SCOSSL_STATUS'
2021-09-24T04:31:17.0929421Z 91 | SCOSSL_STATUS sc_ossl_rsa_finish(Inout RSA rsa);
2021-09-24T04:31:17.0929829Z | ^~~~~~~~~~~~~
2021-09-24T04:31:17.0965641Z /__w/1/SymCrypt-OpenSSL/SymCryptEngine/src/sc_ossl_rsa.h:105:1: error: unknown type name 'SCOSSL_STATUS'
2021-09-24T04:31:17.0966355Z 105 | SCOSSL_STATUS sc_ossl_initialize_rsa_key(In RSA
rsa, Out SC_OSSL_RSA_KEY_CONTEXT keyCtx);
2021-09-24T04:31:17.0966839Z | ^~~~~~~~~~~~~
2021-09-24T04:31:17.0967496Z In file included from /__w/1/SymCrypt-OpenSSL/SymCryptEngine/src/sc_ossl_dsa.h:6,
2021-09-24T04:31:17.0968253Z from /__w/1/SymCrypt-OpenSSL/SymCryptEngine/src/sc_ossl.c:8:
2021-09-24T04:31:17.0969155Z /__w/1/SymCrypt-OpenSSL/SymCryptEngine/src/sc_ossl_helpers.h:13:31: error: expected declaration specifiers or '...' before 'return'
2021-09-24T04:31:17.0969799Z 13 | typedef Return_type_success(return == 1) int SCOSSL_STATUS;
2021-09-24T04:31:17.0970262Z | ^~~~~~
2021-09-24T04:31:17.0971089Z /__w/1/SymCrypt-OpenSSL/SymCryptEngine/src/sc_ossl_helpers.h:14:31: error: expected declaration specifiers or '...' before 'return'
2021-09-24T04:31:17.0972087Z 14 | typedef Return_type_success(return >= 0) int SCOSSL_RETURNLENGTH; // For functions that return length on success and -1 on error
2021-09-24T04:31:17.0972876Z | ^~~~~~
2021-09-24T04:31:17.1002748Z In file included from /__w/1/SymCrypt-OpenSSL/SymCryptEngine/src/sc_ossl.c:8:
2021-09-24T04:31:17.1003579Z /__w/1/SymCrypt-OpenSSL/SymCryptEngine/src/sc_ossl_dsa.h:22:1: error: unknown type name 'SCOSSL_STATUS'
2021-09-24T04:31:17.1004212Z 22 | SCOSSL_STATUS sc_ossl_dsa_sign_setup(In DSA
dsa, In BN_CTX
ctx_in, Out BIGNUM** kinvp, Out BIGNUM** rp);
2021-09-24T04:31:17.1004683Z | ^~~~~~~~~~~~~
2021-09-24T04:31:17.1036024Z /__w/1/SymCrypt-OpenSSL/SymCryptEngine/src/sc_ossl_dsa.h:27:1: error: unknown type name 'SCOSSL_STATUS'
2021-09-24T04:31:17.1036727Z 27 | SCOSSL_STATUS sc_ossl_dsa_verify(In_reads_bytes(dgst_len) const unsigned char* dgst, int dgst_len, In DSA_SIG* sig, In DSA* dsa);
2021-09-24T04:31:17.1037236Z | ^~~~~~~~~~~~~
2021-09-24T04:31:17.1070698Z In file included from /__w/1/SymCrypt-OpenSSL/SymCryptEngine/src/sc_ossl.c:8:
2021-09-24T04:31:17.1071597Z /__w/1/SymCrypt-OpenSSL/SymCryptEngine/src/sc_ossl_dsa.h:31:1: error: unknown type name 'SCOSSL_STATUS'
2021-09-24T04:31:17.1072177Z 31 | SCOSSL_STATUS sc_ossl_dsa_init(Inout DSA* dsa);
2021-09-24T04:31:17.1072582Z | ^~~~~~~~~~~~~
2021-09-24T04:31:17.1104173Z /__w/1/SymCrypt-OpenSSL/SymCryptEngine/src/sc_ossl_dsa.h:35:1: error: unknown type name 'SCOSSL_STATUS'
2021-09-24T04:31:17.1104762Z 35 | SCOSSL_STATUS sc_ossl_dsa_finish(Inout DSA* dsa);
2021-09-24T04:31:17.1105143Z | ^~~~~~~~~~~~~
2021-09-24T04:31:17.1105758Z In file included from /__w/1/SymCrypt-OpenSSL/SymCryptEngine/src/sc_ossl_dh.h:6,
2021-09-24T04:31:17.1106474Z from /__w/1/SymCrypt-OpenSSL/SymCryptEngine/src/sc_ossl.c:9:
2021-09-24T04:31:17.1107314Z /__w/1/SymCrypt-OpenSSL/SymCryptEngine/src/sc_ossl_helpers.h:13:31: error: expected declaration specifiers or '...' before 'return'
2021-09-24T04:31:17.1107905Z 13 | typedef Return_type_success(return == 1) int SCOSSL_STATUS;
2021-09-24T04:31:17.1108333Z | ^~~~~~
2021-09-24T04:31:17.1109263Z /__w/1/SymCrypt-OpenSSL/SymCryptEngine/src/sc_ossl_helpers.h:14:31: error: expected declaration specifiers or '...' before 'return'
2021-09-24T04:31:17.1110171Z 14 | typedef Return_type_success(return >= 0) int SCOSSL_RETURNLENGTH; // For functions that return length on success and -1 on error
2021-09-24T04:31:17.1110781Z | ^~~~~~
2021-09-24T04:31:17.1139256Z In file included from /__w/1/SymCrypt-OpenSSL/SymCryptEngine/src/sc_ossl.c:9:
2021-09-24T04:31:17.1140437Z /__w/1/SymCrypt-OpenSSL/SymCryptEngine/src/sc_ossl_dh.h:18:1: error: unknown type name 'SCOSSL_STATUS'
2021-09-24T04:31:17.1140963Z 18 | SCOSSL_STATUS sc_ossl_dh_generate_key(Inout DH* dh);
2021-09-24T04:31:17.1141345Z | ^~~~~~~~~~~~~
2021-09-24T04:31:17.1225439Z /__w/1/SymCrypt-OpenSSL/SymCryptEngine/src/sc_ossl_dh.h:23:1: error: unknown type name 'SCOSSL_RETURNLENGTH'
2021-09-24T04:31:17.1226207Z 23 | SCOSSL_RETURNLENGTH sc_ossl_dh_compute_key(Out_writes_bytes(DH_size(dh)) unsigned char* key, In const BIGNUM* pub_key, In DH* dh);
2021-09-24T04:31:17.1226743Z | ^~~~~~~~~~~~~~~~~~~
2021-09-24T04:31:17.1256812Z In file included from /__w/1/SymCrypt-OpenSSL/SymCryptEngine/src/sc_ossl.c:9:
2021-09-24T04:31:17.1257713Z /__w/1/SymCrypt-OpenSSL/SymCryptEngine/src/sc_ossl_dh.h:27:1: error: unknown type name 'SCOSSL_STATUS'
2021-09-24T04:31:17.1258323Z 27 | SCOSSL_STATUS sc_ossl_dh_bn_mod_exp(In const DH* dh, Out BIGNUM* r,
2021-09-24T04:31:17.1258778Z | ^~~~~~~~~~~~~
2021-09-24T04:31:17.1288062Z /__w/1/SymCrypt-OpenSSL/SymCryptEngine/src/sc_ossl_dh.h:33:1: error: unknown type name 'SCOSSL_STATUS'
2021-09-24T04:31:17.1288633Z 33 | SCOSSL_STATUS sc_ossl_dh_init(Inout DH* dh);
2021-09-24T04:31:17.1289003Z | ^~~~~~~~~~~~~
2021-09-24T04:31:17.1316589Z /__w/1/SymCrypt-OpenSSL/SymCryptEngine/src/sc_ossl_dh.h:37:1: error: unknown type name 'SCOSSL_STATUS'
2021-09-24T04:31:17.1317093Z 37 | SCOSSL_STATUS sc_ossl_dh_finish(Inout DH* dh);
2021-09-24T04:31:17.1317838Z | ^~~~~~~~~~~~~
2021-09-24T04:31:17.1329834Z In file included from /__w/1/SymCrypt-OpenSSL/SymCryptEngine/src/sc_ossl.c:14:
2021-09-24T04:31:17.1330725Z /__w/1/SymCrypt-OpenSSL/SymCryptEngine/src/sc_ossl_helpers.h:13:31: error: expected declaration specifiers or '...' before 'return'
2021-09-24T04:31:17.1331381Z 13 | typedef Return_type_success(return == 1) int SCOSSL_STATUS;
2021-09-24T04:31:17.1331754Z | ^~~~~~
2021-09-24T04:31:17.1332446Z /w/1/SymCrypt-OpenSSL/SymCryptEngine/src/sc_ossl_helpers.h:14:31: error: expected declaration specifiers or '...' before 'return'
2021-09-24T04:31:17.1333255Z 14 | typedef Return_type_success(return >= 0) int SCOSSL_RETURNLENGTH; // For functions that return length on success and -1 on error
2021-09-24T04:31:17.1333725Z | ^~~~~~
2021-09-24T04:31:17.1375503Z make[2]: *** [SymCryptEngine/static/CMakeFiles/sc_ossl.dir/build.make:82: SymCryptEngine/static/CMakeFiles/sc_ossl.dir/
/src/sc_ossl.c.o] Error 1
2021-09-24T04:31:17.1392449Z make[1]: *** [CMakeFiles/Makefile2:155: SymCryptEngine/static/CMakeFiles/sc_ossl.dir/all] Error 2
2021-09-24T04:31:17.1392989Z make: *** [Makefile:149: all] Error 2
2021-09-24T04:31:17.1438435Z ##[error]Bash exited with code '2'.
2021-09-24T04:31:17.1540322Z ##[section]Finishing: Build SymCrypt-OpenSSL

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.