mirror of
https://github.com/VCMP-SqMod/SqMod.git
synced 2025-06-27 20:47:11 +02:00
.github
bin
module
vendor
CPR
CivetWeb
ConcurrentQueue
Fmt
MDBC
client
cmake
include
libmariadb
man
mariadb_config
plugins
auth
ref10
api.h
base.h
base2.h
common.h
crypto_hash_sha512.h
crypto_int32.h
crypto_int64.h
crypto_sign.h
crypto_uint32.h
crypto_uint64.h
crypto_verify.h
crypto_verify_32.h
d.h
d2.h
fe.h
fe_0.c
fe_1.c
fe_add.c
fe_cmov.c
fe_copy.c
fe_frombytes.c
fe_invert.c
fe_isnegative.c
fe_isnonzero.c
fe_mul.c
fe_neg.c
fe_pow22523.c
fe_sq.c
fe_sq2.c
fe_sub.c
fe_tobytes.c
ge.h
ge_add.c
ge_add.h
ge_double_scalarmult.c
ge_frombytes.c
ge_madd.c
ge_madd.h
ge_msub.c
ge_msub.h
ge_p1p1_to_p2.c
ge_p1p1_to_p3.c
ge_p2_0.c
ge_p2_dbl.c
ge_p2_dbl.h
ge_p3_0.c
ge_p3_dbl.c
ge_p3_to_cached.c
ge_p3_to_p2.c
ge_p3_tobytes.c
ge_precomp_0.c
ge_scalarmult_base.c
ge_sub.c
ge_sub.h
ge_tobytes.c
keypair.c
open.c
pow22523.h
pow225521.h
sc.h
sc_muladd.c
sc_reduce.c
sign.c
sqrtm1.h
verify.c
CMakeLists.txt
auth_gssapi_client.c
caching_sha2_pw.c
common.h
dialog.c
ed25519.c
gssapi_client.c
gssapi_errmsg.c
gssapi_errmsg.h
mariadb_cleartext.c
my_auth.c
old_password.c
server_plugin.h
sha256_pw.c
sspi_client.c
sspi_common.h
sspi_errmsg.c
connection
io
pvio
trace
CMakeLists.txt
plugin.def
scripts
unittest
win
win-iconv
CMakeLists.txt
COPYING.LIB
README
appveyor-download.bat
appveyor.yml
travis.sh
MaxmindDB
POCO
PUGIXML
RPMalloc
SAJSON
SimpleIni
Squirrel
TinyDir
UTF8
ZMQ
xxHash
CMakeLists.txt
.gitignore
.gitmodules
CMakeLists.txt
LICENSE
README.md
37 lines
722 B
C
37 lines
722 B
C
#include <string.h>
|
|
#include "crypto_sign.h"
|
|
#include "crypto_hash_sha512.h"
|
|
#include "crypto_verify_32.h"
|
|
#include "ge.h"
|
|
#include "sc.h"
|
|
|
|
int crypto_sign_open(
|
|
unsigned char *sm, unsigned long long smlen,
|
|
const unsigned char *pk
|
|
)
|
|
{
|
|
unsigned char scopy[32];
|
|
unsigned char h[64];
|
|
unsigned char rcheck[32];
|
|
ge_p3 A;
|
|
ge_p2 R;
|
|
|
|
if (smlen < 64) goto badsig;
|
|
if (sm[63] & 224) goto badsig;
|
|
if (ge_frombytes_negate_vartime(&A,pk) != 0) goto badsig;
|
|
|
|
memmove(scopy,sm + 32,32);
|
|
|
|
memmove(sm + 32,pk,32);
|
|
crypto_hash_sha512(h,sm,smlen);
|
|
sc_reduce(h);
|
|
|
|
ge_double_scalarmult_vartime(&R,h,&A,scopy);
|
|
ge_tobytes(rcheck,&R);
|
|
if (crypto_verify_32(rcheck,sm) == 0)
|
|
return 0;
|
|
|
|
badsig:
|
|
return -1;
|
|
}
|