Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions lib/src/main/cpp/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,16 @@ ExternalProject_Add(pixiewps_external
GIT_REPOSITORY "https://github.com/wiire-a/pixiewps.git"
GIT_TAG "master"
SOURCE_DIR "${PIXIEWPS_SOURCE_DIR}"
PATCH_COMMAND
${CMAKE_COMMAND} -E copy
${CMAKE_CURRENT_SOURCE_DIR}/pixiewps/patches/pixiewps.c
${PIXIEWPS_SOURCE_DIR}/src/pixiewps.c
COMMAND ${CMAKE_COMMAND} -E copy
${CMAKE_CURRENT_SOURCE_DIR}/pixiewps/patches/pixiewps.h
${PIXIEWPS_SOURCE_DIR}/src/pixiewps.h
COMMAND ${CMAKE_COMMAND} -E copy
${CMAKE_CURRENT_SOURCE_DIR}/pixiewps/patches/Makefile
${PIXIEWPS_SOURCE_DIR}/Makefile
CONFIGURE_COMMAND ""
BUILD_COMMAND
${CMAKE_COMMAND} -E env
Expand Down
6 changes: 4 additions & 2 deletions lib/src/main/cpp/jni/wpsnative_jni.c
Original file line number Diff line number Diff line change
Expand Up @@ -128,16 +128,18 @@ Java_sangiorgi_wps_lib_ndk_WpsNative_readWpsResult(
return NULL;
}

jmethodID ctor = (*env)->GetMethodID(env, cls, "<init>", "(ILjava/lang/String;Ljava/lang/String;)V");
jmethodID ctor = (*env)->GetMethodID(env, cls, "<init>",
"(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V");
if (ctor == NULL) {
LOGE("readWpsResult: WpsResult constructor not found");
return NULL;
}

jstring jKey = result.network_key[0] ? (*env)->NewStringUTF(env, result.network_key) : NULL;
jstring jRaw = result.raw_line[0] ? (*env)->NewStringUTF(env, result.raw_line) : NULL;
jstring jLog = result.exchange_log[0] ? (*env)->NewStringUTF(env, result.exchange_log) : NULL;

return (*env)->NewObject(env, cls, ctor, result.status, jKey, jRaw);
return (*env)->NewObject(env, cls, ctor, result.status, jKey, jRaw, jLog);
}

// =============================================================================
Expand Down
6 changes: 4 additions & 2 deletions lib/src/main/cpp/jni/wpsnative_jni.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,15 @@ typedef struct {
int status;
char network_key[256]; // Password on success
char raw_line[1024]; // Raw output line for debugging
char exchange_log[65536]; // Accumulated WPS exchange lines
int exchange_log_len; // Current length of exchange_log
} wps_result_t;

// Pixie Dust parameters
typedef struct {
char enrollee_nonce[128];
char dh_own_pubkey[1024]; // PKE
char dh_peer_pubkey[1024]; // PKR
char dh_own_pubkey[1024]; // PKR (our key as External Registrar)
char dh_peer_pubkey[1024]; // PKE (AP's key as Enrollee)
char auth_key[128];
char e_hash1[128];
char e_hash2[128];
Expand Down
67 changes: 67 additions & 0 deletions lib/src/main/cpp/pixiewps/patches/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
CFLAGS = -O3

ifeq ($(NATIVE),1)
CFLAGS += -march=native
endif

PREFIX ?= /usr/local
BINDIR = $(PREFIX)/bin
MANDIR = $(PREFIX)/share/man

SRCDIR = src
HDRS = $(SRCDIR)/config.h $(SRCDIR)/endianness.h $(SRCDIR)/version.h
HDRS += $(SRCDIR)/pixiewps.h $(SRCDIR)/utils.h $(SRCDIR)/wps.h

# Internal flags so one can safely override CFLAGS, CPPFLAGS and LDFLAGS
INTFLAGS = -std=c99 -I $(SRCDIR)/crypto/tc
LIBS = -lpthread

ifeq ($(OPENSSL),1)
LIBS += -lcrypto
INTFLAGS += -DUSE_OPENSSL
endif

TARGET = pixiewps

include $(SRCDIR)/crypto/tfm/sources.mak
TFMSRC = $(patsubst ./%,$(SRCDIR)/crypto/tfm/%,$(TFM_SRCS))
TFMOBJS = $(TFMSRC:.c=.o)
TC_SRCS = ./aes_cbc.c ./aes.c
TCSRC = $(patsubst ./%,$(SRCDIR)/crypto/tc/%,$(TC_SRCS))
TCOBJS = $(TCSRC:.c=.o)

SOURCE = $(SRCDIR)/pixiewps.c

-include config.mak

.PHONY: all install install-bin install-man strip clean

all: $(TARGET) pixiewrapper

pixiewrapper: $(SRCDIR)/pixiewrapper.o
$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ $<

$(TARGET): $(SOURCE) $(HDRS) $(TFMOBJS) $(TCOBJS)
$(CC) $(INTFLAGS) $(CFLAGS) $(CPPFLAGS) -o $(TARGET) $(SOURCE) $(LIBS) $(LDFLAGS) $(TFMOBJS) $(TCOBJS)

$(SRCDIR)/crypto/tfm/%.o: $(SRCDIR)/crypto/tfm/%.c
$(CC) $(CFLAGS) $(CPPFLAGS) -I$(SRCDIR)/crypto/tfm -c -o $@ $<

$(SRCDIR)/crypto/tc/%.o: $(SRCDIR)/crypto/tc/%.c
$(CC) $(CFLAGS) $(CPPFLAGS) -I$(SRCDIR)/crypto/tc -c -o $@ $<

install: install-bin install-man

install-bin: $(TARGET)
install -d $(DESTDIR)$(BINDIR)
install -m 755 $< $(DESTDIR)$(BINDIR)

install-man: pixiewps.1
install -d $(DESTDIR)$(MANDIR)/man1
install -m 644 $< $(DESTDIR)$(MANDIR)/man1

strip: $(TARGET)
strip $(TARGET)

clean:
rm -f $(TARGET) $(TFMOBJS) $(TCOBJS)
Loading
Loading