Giter Site home page Giter Site logo

anssi-fr / libecc Goto Github PK

View Code? Open in Web Editor NEW
254.0 21.0 81.0 10.12 MB

Library for elliptic curves cryptography

License: Other

Makefile 0.05% Shell 0.06% Python 0.27% C 99.63%
cryptography ecdh ecdsa ed25519 ed448 elliptic-curves x25519 x448 eddsa sm2

libecc's Introduction

libecc's People

Contributors

ae-anssi avatar arwalk avatar contrun avatar davidkorczynski avatar gtaska avatar jpflori avatar lbureau-billettiqueservices avatar nrbrook avatar rben-dev 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  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  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  avatar

Watchers

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

libecc's Issues

functions with too much stack usage

It seems that there are at least 3 functions with big stack usage:
_ecgdsa_verify_finalize
_ecrdsa_verify_finalize
_ecdsa_verify_finalize
this can be problem when using libecc inside windows driver bcs stack size is limited 12kb (see https://community.osr.com/discussion/45453/kernel-stack-limts)
So perhaps it has sense to add option something like ALLOW_EXTERNAL_ALLOCATION and add code like this
typedef u8 *(*Tbuf_alloc)(u32 size);
typedef void (*Tbuf_free)(u8 *);

extern Tbuf_alloc g_buf_alloc;
extern Tbuf_free g_buf_free;

next in each of above mentioned function:
#ifdef ALLOW_EXTERNAL_ALLOCATION u8 *h_buf = NULL; ... h_buf = g_buf_alloc(sizeof(u8) * MAX_DIGEST_SIZE); if ( h_buf == NULL ) { ret = -1; goto err; } ... err: if ( h_buf != NULL ) g_buf_free(h_buf);

Incorrect `ec_params` during startup

I should note the following issue came up when importing the library into Swift, and using SwiftPM to build (with the guidance of the "Compiling with environments without GNU make" instructions) and Swift global initializers.

I've been playing around with this library and ran into an issue where if I imported ec_params via import_params in a global initializer, there would be an issue which caused the executable to crash at line 30 in fp.c

I didn't see an obvious reason for this to be the case, but importing parameters at a later time worked fine. There were some byte differences between the two resulting ec_params, namely the ec_fp, ec_curve, ec_curve_points, and ec_gen_cofactor members. This, combined with the eventual crash in fp.c makes me believe this is related to fp initialization.

I used secp256r1, here is a full, interleaved hex readout of the resulting values. "g" lines are for the global variable, created during static initialization and "l" lines are the local variable, initialized later.

l: ffffffffffffffff00000000ffffffff0000000000000000ffffffff00000001
g: ffffffffffffffff00000000ffffffff0000000000000000ffffffff00000001
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 000000000000000000000000000000000000000000000000b4cf5d56e202334d
g: 000000000000000000000000000000000000000000000000b4cf5d56e202334d
l: 000000010071c00400007ffeefbf010000000000000000010000000000000001 <<< Different
g: 0000000000000004000000000000010000000000000000010000000000000001 <<< Different
l: ffffffff00000000ffffffffffffffff00000000fffffffe0000000000000000
g: ffffffff00000000ffffffffffffffff00000000fffffffe0000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 00000000000000000000000000000000b4cf5d56e202334d00007ffeefbfd304 <<< Different
g: 00000000000000000000000000000000b4cf5d56e202334d00007ffeefbfb704 <<< Different
l: 0000000000000003fffffffbfffffffffffffffffffffffe00000004fffffffd
g: 0000000000000003fffffffbfffffffffffffffffffffffe00000004fffffffd
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 000000000000000000000000000000000000000000000000b4cf5d56e202334d
g: 000000000000000000000000000000000000000000000000b4cf5d56e202334d
l: 000000010007e9040000000000000000ffffffffffffffff00000000ffffffff <<< Different
g: 00000001009d700400007ffeefbf0000ffffffffffffffff00000000ffffffff <<< Different
l: 0000000000000000ffffffff0000000100000000000000000000000000000000
g: 0000000000000000ffffffff0000000100000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000b4cf5d56e202334df69400007000100400000000ffffffff <<< Different
g: 0000000000000000b4cf5d56e202334d00007ffeefbfba0400000000ffffffff <<< Different
l: 114366fc34955125fffffffffffffffc00000000ffffffff0000000000000000
g: 114366fc34955125fffffffffffffffc00000000ffffffff0000000000000000
l: ffffffff00000001000000000000000000000000000000000000000000000000
g: ffffffff00000001000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: b4cf5d56e202334d000000000000000400007ffeefbfc25014e96c8ab28221ef <<< Different
g: b4cf5d56e202334d000000000000000400007ffeefbf8ec814e96c8ab28221ef <<< Different
l: 3bce3c3e27d2604b651d06b0cc53b0f6b3ebbd55769886bc5ac635d8aa3a93e7
g: 3bce3c3e27d2604b651d06b0cc53b0f6b3ebbd55769886bc5ac635d8aa3a93e7
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 000000000000000000000000000000000000000000000000b4cf5d56e202334d
g: 000000000000000000000000000000000000000000000000b4cf5d56e202334d
l: 0000000100e0950400007ffeefbfc25014e96c8ab28221effffffffffffffffc <<< Different
g: 800000000000000400007ffeefbf8ec814e96c8ab28221effffffffffffffffc <<< Different
l: 00000003ffffffff0000000000000000fffffffc000000040000000000000000
g: 00000003ffffffff0000000000000000fffffffc000000040000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 00000000000000000000000000000000b4cf5d56e202334d00007ffeefbfd904 <<< Different
g: 00000000000000000000000000000000b4cf5d56e202334d0000000000000004 <<< Different
l: 00007ffeefbfc25014e96c8ab28221ef9c7c46a1a04c6720f3b9cac2fc632551 <<< Different
g: 00007ffeefbf8ec814e96c8ab28221ef9c7c46a1a04c6720f3b9cac2fc632551 <<< Different
l: bce6faada7179e84ffffffffffffffffffffffff000000000000000000000000
g: bce6faada7179e84ffffffffffffffffffffffff000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 00000000000000000000000000000000b4cf5d56e202334d00007ffeefbfd704 <<< Different
g: 00000000000000000000000000000000b4cf5d56e202334d00007ffeefbfc904 <<< Different
l: f4a13945d898c29677037d812deb33a0f8bce6e563a440f26b17d1f2e12c4247
g: f4a13945d898c29677037d812deb33a0f8bce6e563a440f26b17d1f2e12c4247
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 000000000000000000000000000000000000000000000000b4cf5d56e202334d
g: 000000000000000000000000000000000000000000000000b4cf5d56e202334d
l: 00000001009daa0400007ffeefbfc25014e96c8ab28221efcbb6406837bf51f5 <<< Different
g: 0000000101ad140400007ffeefbf8ec814e96c8ab28221efcbb6406837bf51f5 <<< Different
l: 2bce33576b315ece8ee7eb4a7c0f9e164fe342e2fe1a7f9b0000000000000000
g: 2bce33576b315ece8ee7eb4a7c0f9e164fe342e2fe1a7f9b0000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 00000000000000000000000000000000b4cf5d56e202334d0000000103001504 <<< Different
g: 00000000000000000000000000000000b4cf5d56e202334d00007ffeefbfbf04 <<< Different
l: 00007ffeefbfc25014e96c8ab28221ef00000000000000010000000000000000 <<< Different
g: 00007ffeefbf8ec814e96c8ab28221ef00000000000000010000000000000000 <<< Different
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000b4cf5d56e202334d00007fff795a790400007ffeefbfc250 <<< Different
g: 0000000000000000b4cf5d56e202334d000000000000000400007ffeefbf8ec8 <<< Different
l: 14e96c8ab28221ef00007ffeefbfc618e1cd70babb1d5afef3b9cac2fc632551 <<< Different
g: 14e96c8ab28221ef00007ffeefbf9290e1cd70babb1d5afef3b9cac2fc632551 <<< Different
l: bce6faada7179e84ffffffffffffffffffffffff000000000000000000000000
g: bce6faada7179e84ffffffffffffffffffffffff000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 00000000000000000000000000000000b4cf5d56e202334d0000000101c5d004 <<< Different
g: 00000000000000000000000000000000b4cf5d56e202334d0000000000000004 <<< Different
l: 0000000101c60100000000000000000100000000000000000000000000000000 <<< Different
g: 00007fffa4e30100000000000000000100000000000000000000000000000000 <<< Different
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: 0000000000000000000000000000000000000000000000000000000000000000
g: 0000000000000000000000000000000000000000000000000000000000000000
l: b4cf5d56e202334d0000000101d037012e3034382e322e312e332e3534303031 <<< Different
g: b4cf5d56e202334d00000000000000012e3034382e322e312e332e3534303031 <<< Different
l: 0000000000372e31000000000000000052363532504345530000000000000031
g: 0000000000372e31000000000000000052363532504345530000000000000031
l: 00000000000000000000000000000000
g: 00000000000000000000000000000000

Unable to sign file with the example code from README

I tried to run the following code (adapted from README, used variables to make sure there are no typos).

export curve=SECP256R1 sign_algo=ECDSA hash_algo=SHA3_512 file=myfile keyname=mykeypair
echo test > "$file"; ./build/ec_utils gen_keys "$curve" "$sign_algo" "$keyname"; ./build/ec_utils sign $curve $sign_algo $hash_algo "$file" "${keyname}_private_key.bin" sig.bin

The above commands output sign error ....

I am using gcc 11.2.0 on NixOS 22.05. Please let me know if there are any additional information I need to provide.

rand does not include Wincrypt.h

When building on Cygwin for windows, I had to do the following modification to get it to compile properly CC=gcc CFLAGS="-include 'Wincrypt.h'" make

Simply doing CC=gcc make will result in a lot of invalid types due to the missing header file. I think just adding #include <wincrypt.h> within rand.h should be sufficient.

https://i.imgur.com/FvkgffY.png

Support generating random numbers from an entropy buffer

It would be useful to have analogs of the nn_get_random functions which initialize a random number from a buffer of entropy, instead of using get_random. Specifically, a function int nn_init_from_entropy_mod(nn_t out, nn_src_t q, unsigned char *entropy, u16 *entropy_len) which would operate roughly the same as nn_get_random_mod, but instead of calling get_random, it would ensure that *entropy_len is at least 2 * q_len, use the first 2 * q_len bytes of entropy to initialize tmp_rand, subtract 2 * q_len from *entropy_len and advance entropy by 2 * q_len bytes.

My specific use case is WebAssembly, which depends on Javascript (or whatever host is running it) to provide entropy. It would be simpler and easier to provide entropy as an argument (in my use case, I know the amount of entropy I need ahead of time) rather than calling back out to the host from within the get_random function.

An added benefit of this approach is that it would be possible to use libecc without implementing get_random at all.

One alternative to this approach is to pass the get_random function as an argument to nn_get_random, along with a context pointer. For instance, nn_get_random_ctx(nn_t out, nn_src_t q, int (*get_random_ctx)(unsigned char *buf, u16 len, void *ctx), void *random_ctx).

I'm happy to put a Pull Request together if one of these approaches is acceptable.

How to transform 'toy' examples to production example ?

The purpose of this example is to implement a 'toy'

I understand that some impovement need to be done to transform 'toy' to 'prod' but I don't really know which exactly ?

It is necessary to create a DPA proof code only or we need to change something else ?

In other words, can we trust your implementation ?
Thank you so much for you help.

Best regards,

Signature function's "help" function is incorrect

Hello @rb-anssi and @ae-anssi !

Branch: master

Version: most recent as of now

Error:

./ec_utils verify
Bad args number for ./ec_utils verify:
        arg1 = curve name: FRP256V1 SECP192R1 SECP224R1 SECP256R1 SECP384R1 SECP521R1 BRAINPOOLP192R1 BRAINPOOLP224R1 BRAINPOOLP256R1 BRAINPOOLP384R1 BRAINPOOLP512R1 GOST256 GOST512 SM2P256TEST SM2P256V1 WEI25519 WEI448 
        arg2 = signature algorithm type: ECDSA ECKCDSA ECSDSA ECOSDSA ECFSDSA ECGDSA ECRDSA SM2 EDDSA25519 EDDSA25519CTX EDDSA25519PH EDDSA448 EDDSA448PH 
        arg3 = hash algorithm type: SHA224 SHA256 SHA384 SHA512 SHA512_224 SHA512_256 SHA3_224 SHA3_256 SHA3_384 SHA3_512 SM3 SHAKE256 
        arg4 = input file to verify
        arg5 = input file containing the public key (in raw binary format)
        <arg7 (optional) = ancillary data to be used>

Solution:

This should be superseded by the instructions for using the signature function in the current, outermost README file (the one displayed on this repo's Github address). That is to say:

$ ./build/ec_utils verify <CURVE> <SIGNATURE ALGO> <HASH> examplefile example_public_key.bin example_signed_file.bin

Doubt in generate a Signature isong ECDSA brainpool method

Hi,

I need to make a signature of a file using the brainpool256r1 curve. A have the private key in a .pem file. I already created the routine to convert to byte array. And the SHA256 process works fine, using the implemention of the LIBECC.

My doubt is, what functions I need to use to apply this parameters and generate the signature. The examples seems to be a little complex to implement on my application.

Thank you so much for the support.

secp256k1

Hello, I am new to the lib, that I find fantastic. However running curve_basic_examples, all curves work except secp256k1. It just stays there. Is the pb on the def of the curve? Thank you!

EdDSA and new curves

First things first : awesome job, this is really great !

Are there plans for integrating EdDSA signing ?
Is it planned to support Curves 25519 and 448 ?

Thanks a lot :-)

prj_pt_monty.c is missing

/Users/admin/Documents/****/lib/libecc/src/curves/prj_pt_monty.c Build input file cannot be found: '/Users/admin/Documents/****/lib/libecc/src/curves/prj_pt_monty.c'. Did you forget to declare this file as an output of a script phase or custom build rule which produces it?

I got this error while I was building an iOS project. The repository does not have the files, but the xcode project requires them. How to fix it?

Error compilation example, overflow

Hi it's me again 🙃
When trying to compile the examples I have compilation errors about an overflow with the KCDSA sig test.

Step to reproduce:

cd src/examples
make

Here is the output I have

In function ‘buf_lshift’,
    inlined from ‘kcdsa_sign’ at kcdsa.c:262:9:
kcdsa.c:113:32: error: writing 16 bytes into a region of size 2 [-Werror=stringop-overflow=]
  113 |                 buf[i - shift] = buf[i];
      |                 ~~~~~~~~~~~~~~~^~~~~~~~
kcdsa.c: In function ‘kcdsa_sign’:
kcdsa.c:154:12: note: at offset 112 into destination object ‘hash’ of size 114
  154 |         u8 hash[MAX_DIGEST_SIZE];
      |            ^~~~
In function ‘buf_lshift’,
    inlined from ‘kcdsa_sign’ at kcdsa.c:262:9:
kcdsa.c:113:32: error: writing 16 bytes into a region of size 0 [-Werror=stringop-overflow=]
  113 |                 buf[i - shift] = buf[i];
      |                 ~~~~~~~~~~~~~~~^~~~~~~~
kcdsa.c: In function ‘kcdsa_sign’:
kcdsa.c:154:12: note: at offset 128 into destination object ‘hash’ of size 114
  154 |         u8 hash[MAX_DIGEST_SIZE];
      |            ^~~~
In function ‘buf_lshift’,
    inlined from ‘kcdsa_sign’ at kcdsa.c:262:9:
        ^~~~

[...]

These errors are quite repetitive so I cut the output to avoid flooding the issue, but I can send the full errors if needed.
Thanks,

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.