fix linking problem on first login

This commit is contained in:
Levi Neely 2024-08-14 23:21:44 +02:00
parent 202de9688a
commit 6938cb6723
4 changed files with 25 additions and 7 deletions

View File

@ -38,15 +38,16 @@ add_library(pcloudcc_lib SHARED ${CMD_PATH}/pclsync_lib_c.cpp ${CMD_PATH}/pclsyn
target_link_libraries(pcloudcc_lib
${PCLSYNC_PATH}/psynclib.a
${MBEDTLS2_PATH}/build/library/libmbedcrypto.a
${MBEDTLS2_PATH}/build/library/libmbedx509.a
${MBEDTLS2_PATH}/build/library/libmbedtls.a
fuse
pthread
sqlite3
z
dl
udev)
udev
${MBEDTLS2_PATH}/build/library/libmbedtls.a
${MBEDTLS2_PATH}/build/library/libmbedx509.a
${MBEDTLS2_PATH}/build/library/libmbedcrypto.a
)
add_executable(pcloudcc ${CMD_PATH}/main.cpp)

View File

@ -1,6 +1,6 @@
all:
make -C ./lib/pclsync fs
cmake -DCMAKE_BUILD_TYPE=Debug -H./lib/mbedtls-2.1.14 -B./lib/mbedtls-2.1.14/build
cmake -DCMAKE_BUILD_TYPE=Debug -DENABLE_PROGRAMS=OFF -DENABLE_TESTING=OFF -H./lib/mbedtls-2.1.14 -B./lib/mbedtls-2.1.14/build
make -C ./lib/mbedtls-2.1.14/build
mkdir -p ./cmd/pcloudcc/build
cmake -DCMAKE_BUILD_TYPE=Debug -H. -B./cmd/pcloudcc/build

View File

@ -9,7 +9,7 @@ CFLAGS=-Werror -O2 -g -fno-stack-protector -fomit-frame-pointer -I../sqlite -fPI
LIB_A=psynclib.a
UNAME_S := $(shell uname -s)
UNAME_V := $(shell uname -v)
CFLAGS += -DP_OS_LINUX -D_FILE_OFFSET_BITS=64 -DP_SSL_MBEDTLS -I../mbedtls-1.3.10/include -I ../mbedtls-2.1.14/include
CFLAGS += -DP_OS_LINUX -D_FILE_OFFSET_BITS=64 -DP_SSL_MBEDTLS -I ../mbedtls-2.1.14/include
LDFLAGS += -lssl -lcrypto -lfuse -lpthread -lsqlite3 -lzlib
OBJ=pcompat.o psynclib.o plocks.o plibs.o pcallbacks.o pdiff.o pstatus.o papi.o ptimer.o\

View File

@ -33,6 +33,7 @@
#include <mbedtls/ctr_drbg.h>
#include <mbedtls/debug.h>
#include <mbedtls/entropy.h>
#include <mbedtls/error.h>
#include <mbedtls/md.h>
#include <mbedtls/net.h>
#include <mbedtls/pkcs5.h>
@ -620,16 +621,32 @@ psync_rsa_publickey_t psync_ssl_rsa_load_public(const unsigned char *keydata,
mbedtls_pk_context ctx;
mbedtls_rsa_context *rsa;
int ret;
debug(D_NOTICE, "Public key data (first 16 bytes): %02x %02x %02x %02x ...",
keydata[0], keydata[1], keydata[2], keydata[3]);
mbedtls_pk_init(&ctx);
if (unlikely(ret = mbedtls_pk_parse_public_key(&ctx, keydata, keylen))) {
debug(D_WARNING, "pk_parse_public_key failed with code %d", ret);
debug(D_WARNING, "pk_parse_public_key failed with code %d (-0x%04x)", ret,
-ret);
char error_buf[100];
mbedtls_strerror(ret, error_buf, sizeof(error_buf));
debug(D_WARNING, "Error details: %s", error_buf);
return PSYNC_INVALID_RSA;
}
if (mbedtls_pk_get_type(&ctx) != MBEDTLS_PK_RSA) {
debug(D_WARNING, "Parsed key is not RSA");
mbedtls_pk_free(&ctx);
return PSYNC_INVALID_RSA;
}
rsa = psync_new(mbedtls_rsa_context);
mbedtls_rsa_init(rsa, MBEDTLS_RSA_PKCS_V21, MBEDTLS_MD_SHA1);
ret = mbedtls_rsa_copy(rsa, mbedtls_pk_rsa(ctx));
mbedtls_pk_free(&ctx);
if (unlikely(ret)) {
debug(D_WARNING, "rsa_copy failed with code %d", ret);
mbedtls_rsa_free(rsa);
psync_free(rsa);
return PSYNC_INVALID_RSA;