Compare commits

...

6 Commits

9 changed files with 27 additions and 66 deletions

View File

@@ -18,7 +18,7 @@ To clone the source code and compile, use the following commands.
```
git clone --recursive https://git.spengler.co.za/deon/gnuk.git gnuk
cd gnuk/src
./configure --vidpid=1209:2440
./configure --vidpid=1337:0010
make
```
@@ -30,17 +30,9 @@ How to flash the Gnuk firmware
==============================
In order to flash the firmware ensure that you have openocd installed.
Now create a file called stm32f103.cfg with the following content
```
telnet_port 4444
source [find interface/stlink.cfg]
source [find target/stm32f1x.cfg]
set WORKAREASIZE 0x10000
```
Execute openocd and connect with telnet
```
openocd -f stm32f103.cfg
openocd -f ../misc/stm32f103.cfg
telnet localhost 4444
```
@@ -49,11 +41,28 @@ Use the following commands to unlock, flash the firmware and lock the device aga
reset halt
stm32f1x unlock 0
reset halt
flash write_bank 0 ./src/build/gnuk.bin 0
flash write_bank 0 ./build/gnuk.bin 0
stm32f1x lock 0
reset halt
```
How to reflash the ST-LINK
==========================
To reflash the ST-LINK, connect the device to a programmer as before while keeping pins 7 and 8 shorted. While the LED is blinking, run openocd. Once its running (i.e. it doesnt show any errors), you can unshort the pins.
Then use the following to unlock and reflash.
```
reset halt
stm32f1x unlock 0
reset halt
stm32f1x mass_erase 0
flash write_bank 0 ./build/gnuk.bin 0
stm32f1x lock 0
reset halt
```
***Note: That reprograming will wipe the flash memory and you will lose all key's that was on the device.***
Testing Gnuk
============
Type following command to see if GnuPG detects the Gnuk token.

Submodule chopstx updated: e12a7e0bb3...a8e9074faf

View File

@@ -1,7 +0,0 @@
FROM gnuk:latest
LABEL Description="Image for checking gnuK"
RUN apt install -y shellcheck
RUN apt install -y clang libfindbin-libs-perl
RUN apt clean

View File

@@ -1,4 +0,0 @@
FROM gnuk:latest
LABEL Description="Image for building gnuK with debugging"
RUN apt install -y gdb-arm-none-eabi && apt clean

View File

@@ -1,6 +0,0 @@
FROM debian:latest
LABEL Description="Image for building gnuK"
RUN apt update -y && apt install -y make gcc-arm-none-eabi && apt clean
CMD ["/bin/sh", "-c", "cd /gnuk/src && make clean && ./configure $GNUK_CONFIG && make"]

View File

@@ -1,36 +0,0 @@
ifndef GNUK_CONFIG
$(warning configuration flags not set in GNUK_CONFIG)
endif
all: ../chopstx docker-build-release
docker run --user=`id -u` --env GNUK_CONFIG --rm -v `pwd`/..:/gnuk/ -t gnuk:latest
clean: docker-build-release
docker run --user=`id -u` --env GNUK_CONFIG --rm -v `pwd`/..:/gnuk/ -w /gnuk/src -t gnuk:latest make clean
gdb: docker-build-debug
docker run --net host --rm -i -v `pwd`/..:/gnuk/ -t gnuk:latest-debug arm-none-eabi-gdb /gnuk/src/build/gnuk.elf
shellcheck: docker-build-check
docker run --rm -v `pwd`/..:/gnuk/ -t gnuk:latest-check shellcheck /gnuk/src/configure
CHECKERS=security optin nullability core deadcode alpha.core alpha.security
scan-build: clean docker-build-check
docker run --user=`id -u` --rm -v `pwd`/..:/gnuk/ -w /gnuk/src -t gnuk:latest-check scan-build -o scan-build \
-analyze-headers -stats $(addprefix -enable-checker ,$(CHECKERS)) -k \
--use-cc=arm-none-eabi-gcc \
make
../chopstx:
git submodule update --init
docker-build-release:
docker build -t gnuk:latest -f `pwd`/Dockerfile.release ..
docker-build-debug: docker-build-release
docker build -t gnuk:latest-debug -f `pwd`/Dockerfile.debug ..
docker-build-check: docker-build-release
docker build -t gnuk:latest-check -f `pwd`/Dockerfile.check ..
.PHONY: all clean gdb shellcheck scan-build \
docker-build-release docker-build-debug docker-build-check

4
misc/stm32f103.cfg Normal file
View File

@@ -0,0 +1,4 @@
telnet_port 4444
source [find interface/stlink.cfg]
source [find target/stm32f1x.cfg]
set WORKAREASIZE 0x10000

2
src/configure vendored
View File

@@ -44,7 +44,7 @@ pinpad=no
certdo=no
hid_card_change=no
factory_reset=yes
ackbtn_support=no
ackbtn_support=yes
flash_override=""
kdf_do=${kdf_do:-optional}
# For emulation

View File

@@ -31,6 +31,7 @@ USB_PRODUCT_LIST=[
{ 'vendor' : 0x234b, 'product' : 0x0000 }, # FSIJ Gnuk Token
{ 'vendor' : 0x20a0, 'product' : 0x4211 }, # Nitrokey Start
{ 'vendor' : 0x1209, 'product' : 0x2440 }, # GnuPG e.V.
{ 'vendor' : 0x1337, 'product' : 0x0010 }, # DTS Gnuk Token
]
# USB class, subclass, protocol