packages : (APP-1674) add dppd-creds-dummy package.

This commit is contained in:
Milad Mohtashamirad 2023-08-24 14:04:38 +10:00 committed by Arien Judge
parent c8fb813f41
commit b3f381e42c
7 changed files with 263 additions and 0 deletions

View File

@ -0,0 +1,64 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=dppd-creds-dummy
PKG_RELEASE=1
PKG_MAINTAINER:=The Customer
include $(INCLUDE_DIR)/package.mk
# "TheCustomer" value for CERT_HOSTNAME is just a dummy value, and needs to updated
# according to your own hostname.
# CERT_HOSTNAME = TheCustomer
# SUBJECT_ALT_NAME = "DNS:$(CERT_HOSTNAME).local"
# SUBJECT_ALT_NAME += ",DNS:$(CERT_HOSTNAME)-2,DNS:$(CERT_HOSTNAME)-2.local"
# SUBJECT_ALT_NAME += ",DNS:$(CERT_HOSTNAME)-3,DNS:$(CERT_HOSTNAME)-3.local"
# SUBJECT_ALT_NAME += ",DNS:$(CERT_HOSTNAME)-4,DNS:$(CERT_HOSTNAME)-4.local"
# EXT = "[v3_cert] \\n\
# basicConstraints = CA:FALSE \\n\
# subjectAltName = '$(SUBJECT_ALT_NAME)'\\n\
# keyUsage = digitalSignature, keyEncipherment \\n\
# extendedKeyUsage = 1.3.6.1.5.5.7.3.1"
define Package/dppd-creds-dummy
SECTION:=Utilities
CATEGORY:=Utilities
PROVIDES:=dppd-creds
TITLE:=DPP daemon credentials generator.
endef
# This credential package is for Demo purposes only and is not secure as the server private key is published.
# In order to have a secure connection between DPP mobile app and the router, you'll need to follow the instructions in
# files/README to generate your own certificate to sign the keys and update the compile step to sign your keys and
# install step to copy your signed.
define Build/Compile
openssl ecparam -genkey -name prime256v1 -noout -out $(PKG_BUILD_DIR)/key.pem
openssl ecparam -genkey -name prime256v1 -noout -out $(PKG_BUILD_DIR)/ppkey.pem
# openssl req -nodes -newkey rsa:4096 -keyout $(PKG_BUILD_DIR)/server.key -out $(PKG_BUILD_DIR)/server.csr -subj "/C=AU/O=Morse Micro/OU=Engineering/CN=$(CERT_HOSTNAME)"
# echo -e "$(EXT)" > $(PKG_BUILD_DIR)/auto_ext.conf
# openssl x509 -req -in $(PKG_BUILD_DIR)/server.csr -CA creds/ca.pem -CAkey creds/ca.key -CAcreateserial -days 1460 \
# -out $(PKG_BUILD_DIR)/server.pem -extensions v3_cert -extfile $(PKG_BUILD_DIR)/auto_ext.conf
endef
define Package/dppd-creds-dummy/description
Generates the needed credentials for dpp daemon.
endef
define Package/dppd-creds-dummy/install
$(INSTALL_DIR) $(1)/etc/dppd/
$(INSTALL_DATA) -m 0444 -D $(PKG_BUILD_DIR)/key.pem $(1)/etc/dppd/key.pem
$(INSTALL_DATA) -m 0444 -D $(PKG_BUILD_DIR)/ppkey.pem $(1)/etc/dppd/ppkey.pem
$(INSTALL_DATA) -m 0666 -D files/etc/dppd/auth_secrets.txt $(1)/etc/dppd/auth_secrets.txt
$(INSTALL_DATA) -m 0444 -D files/etc/dppd/server.key $(1)/etc/dppd/server.key
$(INSTALL_DATA) -m 0444 -D files/etc/dppd/server.pem $(1)/etc/dppd/server.pem
endef
$(eval $(call BuildPackage,dppd-creds-dummy))

View File

@ -0,0 +1,13 @@
This folder contains sample configuration and key material for the purposes
of TESTING ONLY
make-ca.sh will regenerate the CA. Note that doing so means the mobile app
will need to be rebuilt with the new CA. And the ca.cer file placed in
app/android/app/src/main/assets/ca_out.cer, this will also be picked up by the
iOS builds.
sign-cert.sh will create a signed server certificate for the current machine.
Have a look inside this script if you want to generate a certificate for
another machine. You will need to output of this script, <hostname>.pem and
<hostname>.key to the dppd server. For convenience the script also symlinks
server.pem and server.key to the key pair it last generated.

View File

@ -0,0 +1,16 @@
# This file holds the authorised credentials that the DPP HTTP server will
# accept
#
# The format of this file is:
# <username><whitespace><password>
# e.g.
# myuser mypassword
# anotheruser I have spaces in my password
#
# Where the first whitespace splits the username from the password
# Note: Whitespace at either end of a password is trimmed
#
# username password
morse HaLow

View File

@ -0,0 +1,52 @@
-----BEGIN PRIVATE KEY-----
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
JQBIBS+JFWg2DpNyLPYiNPzbjp3vyA==
-----END PRIVATE KEY-----

View File

@ -0,0 +1,34 @@
-----BEGIN CERTIFICATE-----
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
87MvF1G2FW5q6w==
-----END CERTIFICATE-----

View File

@ -0,0 +1,18 @@
#!/bin/bash
# The filename to save the CA as
NAME=ca
set -e
if [ -e "${NAME}".pem ]; then
echo "Are you sure you want to regenerate the root CA? The app will need updating."
echo "Please delete ca.pem if you are sure you want to regenerate the CA"
exit 1;
fi
# Make our testing CA last 5 years
openssl req -nodes -x509 -newkey rsa:4096 -keyout "${NAME}".key -out "${NAME}".pem -days 1825 -subj "/C=AU/O=Morse Micro/OU=Development/CN=Dppd Test CA"
openssl x509 -in "${NAME}".pem -outform der -out "${NAME}".cer
openssl x509 -in "${NAME}".pem -text

View File

@ -0,0 +1,66 @@
#!/bin/bash
# Exit if any commands return an error
set -e
# This will try and automatically generate the correct certificate for this machine
# If it doesn't, or you need to generate for another machine
# You can manually override any of NAME, CA_NAME, HOSTNAME, ADDR as needed
# The filename to save this certificate to
NAME="$(hostname)"
CA_NAME=ca
# The local hostname to include within the certificate
HOSTNAME="$(hostname)"
LONGHOSTNAME="$(hostname -f)"
# A local address to include within the certificate
DEFAULT_INTERFACE="$(ip route show default | awk '/default/ {print $3}')"
ADDR="$DEFAULT_INTERFACE"
openssl req -nodes -newkey rsa:4096 -keyout "$NAME".key \
-out "$NAME".csr -subj "/C=AU/O=Morse Micro/OU=Development/CN=$HOSTNAME"
# Generate our AltNames
ALT_NAMES="IP:127.0.0.1,DNS:localhost"
if [ -n "$ADDR" ]; then
ALT_NAMES="$ALT_NAMES,IP:$ADDR"
fi
if [ -n "$HOSTNAME" ]; then
ALT_NAMES="$ALT_NAMES,DNS:$HOSTNAME,DNS:$HOSTNAME.local"
# If another device with the same name already exists on the network
# avahi will try HOSTNAME-2, -3, -4 etc ... see avahi_alternative_host_name
# So we also sign for "-2"
ALT_NAMES="$ALT_NAMES,DNS:$HOSTNAME-2,DNS:$HOSTNAME-2.local"
fi
if [ -n "$LONGHOSTNAME" ] && [ "$HOSTNAME" != "$LONGHOSTNAME" ]; then
# Generate for the long hostname
ALT_NAMES="$ALT_NAMES,DNS:$LONGHOSTNAME"
fi
echo "subjectAltName" "$ALT_NAMES"
EXT='[v3_cert]
basicConstraints = CA:FALSE
keyUsage = digitalSignature, keyEncipherment
subjectAltName = '"$ALT_NAMES"'
extendedKeyUsage = 1.3.6.1.5.5.7.3.1
'
echo "$EXT" > auto_ext.conf
openssl x509 -req -in "$NAME".csr -CA "$CA_NAME".pem -CAkey "$CA_NAME".key \
-CAcreateserial -out "$NAME".pem -extensions v3_cert \
-extfile ./auto_ext.conf
rm auto_ext.conf
openssl x509 -in "$NAME".pem -outform der -out "$NAME".cer
openssl x509 -in "$NAME".pem -text
ln -fs "$NAME".pem server.pem
ln -fs "$NAME".key server.key
cat "$NAME".pem "$CA_NAME".pem > "$NAME"-bundle.pem
echo "Find your certificate $NAME.pem and the keyfile $NAME.key"
echo "These have also been symlinked to server.pem and server.key"