Skip to content

Commit fcb6080

Browse files
authored
Merge pull request #575 from david-cermak/fix/wifi_remote_keys
fix(wifi_remote): Do not restrict EPPP config to RSA keys only
2 parents 150a3ec + 22914d4 commit fcb6080

File tree

4 files changed

+36
-25
lines changed

4 files changed

+36
-25
lines changed

.github/workflows/wifi_remote__build.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ jobs:
2222
- name: Check that headers are the same as generated
2323
shell: bash
2424
run: |
25-
${IDF_PATH}/install.sh --enable-pytest
2625
. ${IDF_PATH}/export.sh
26+
pip install idf-component-manager idf-build-apps --upgrade
2727
cd ./components/esp_wifi_remote/scripts
2828
python generate_and_check.py
2929
@@ -46,8 +46,8 @@ jobs:
4646
- name: Build ${{ matrix.test.app }} with IDF-${{ matrix.idf_ver }}
4747
shell: bash
4848
run: |
49-
${IDF_PATH}/install.sh --enable-pytest
5049
. ${IDF_PATH}/export.sh
50+
pip install idf-component-manager idf-build-apps --upgrade
5151
python ./ci/build_apps.py ./components/esp_wifi_remote/${{matrix.test.path}} -vv --preserve-all
5252
5353
build_wifi_remote_example:
@@ -72,6 +72,6 @@ jobs:
7272
EXPECTED_WARNING: ${{ matrix.warning }}
7373
shell: bash
7474
run: |
75-
${IDF_PATH}/install.sh --enable-pytest
7675
. ${IDF_PATH}/export.sh
76+
pip install idf-component-manager idf-build-apps --upgrade
7777
python ./ci/build_apps.py ./components/esp_wifi_remote/${{matrix.example.path}} -vv --preserve-all

components/esp_wifi_remote/eppp/wifi_remote_rpc_client.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ const char *TAG = "rpc_client";
2525

2626
const unsigned char ca_crt[] = "-----BEGIN CERTIFICATE-----\n" CONFIG_ESP_WIFI_REMOTE_EPPP_SERVER_CA "\n-----END CERTIFICATE-----";
2727
const unsigned char crt[] = "-----BEGIN CERTIFICATE-----\n" CONFIG_ESP_WIFI_REMOTE_EPPP_CLIENT_CRT "\n-----END CERTIFICATE-----";
28-
const unsigned char key[] = "-----BEGIN RSA PRIVATE KEY-----\n" CONFIG_ESP_WIFI_REMOTE_EPPP_CLIENT_KEY "\n-----END RSA PRIVATE KEY-----";
28+
const unsigned char key[] = "-----BEGIN PRIVATE KEY-----\n" CONFIG_ESP_WIFI_REMOTE_EPPP_CLIENT_KEY "\n-----END PRIVATE KEY-----";
2929
// TODO: Add option to supply keys and certs via a global symbol (file)
3030

3131
}

components/esp_wifi_remote/eppp/wifi_remote_rpc_server.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ const char *TAG = "rpc_server";
2525

2626
const unsigned char ca_crt[] = "-----BEGIN CERTIFICATE-----\n" CONFIG_ESP_WIFI_REMOTE_EPPP_CLIENT_CA "\n-----END CERTIFICATE-----";
2727
const unsigned char crt[] = "-----BEGIN CERTIFICATE-----\n" CONFIG_ESP_WIFI_REMOTE_EPPP_SERVER_CRT "\n-----END CERTIFICATE-----";
28-
const unsigned char key[] = "-----BEGIN RSA PRIVATE KEY-----\n" CONFIG_ESP_WIFI_REMOTE_EPPP_SERVER_KEY "\n-----END RSA PRIVATE KEY-----";
28+
const unsigned char key[] = "-----BEGIN PRIVATE KEY-----\n" CONFIG_ESP_WIFI_REMOTE_EPPP_SERVER_KEY "\n-----END PRIVATE KEY-----";
2929
// TODO: Add option to supply keys and certs via a global symbol (file)
3030

3131
}
Lines changed: 31 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,19 @@
11
#!/usr/bin/env bash
22

3+
function gen_pkey { # Params: [KEY_FILE]
4+
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 | openssl pkcs8 -topk8 -outform PEM -nocrypt -out $1
5+
}
6+
7+
function sign_with_ca { # Params: [KEY_FILE] [CN] [CRT_FILE]
8+
openssl req -out request.csr -key $1 -subj "/CN=$2" -new -sha256
9+
openssl x509 -req -in request.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out $3 -days 365 -sha256
10+
}
11+
12+
function export_config { # Params: [FILE/CONFIG_NAME]
13+
content=`cat $1 | sed '/---/d' | tr -d '\n'`
14+
echo "CONFIG_ESP_WIFI_REMOTE_EPPP_$1=\"${content}\""
15+
}
16+
317
if [ -z "$1" ]; then
418
echo "Usage $0 <SERVER_CN> [CLIENT_CN]"
519
exit 1;
@@ -12,30 +26,27 @@ echo "Server's CN: $SERVER_CN"
1226
echo "Client's CN: $CLIENT_CN"
1327

1428
## First create our own CA
15-
openssl genrsa -out ca.key 2048
29+
gen_pkey ca.key
1630
openssl req -new -x509 -subj "/C=CZ/CN=Espressif" -days 365 -key ca.key -out ca.crt
31+
# will use the same CA for both server and client side
32+
cp ca.crt SERVER_CA
33+
cp ca.crt CLIENT_CA
1734

1835
# Server side
19-
openssl genrsa -out srv.key 2048
20-
openssl req -out srv.csr -key srv.key -subj "/CN=$SERVER_CN" -new -sha256
21-
openssl x509 -req -in srv.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out srv.crt -days 365 -sha256
36+
gen_pkey SERVER_KEY
37+
sign_with_ca SERVER_KEY $SERVER_CN SERVER_CRT
2238

2339
# Client side
24-
openssl genrsa -out client.key 2048
25-
openssl req -out client.csr -key client.key -subj "/CN=$CLIENT_CN" -new -sha256
26-
openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt -days 365 -sha256
40+
gen_pkey CLIENT_KEY
41+
sign_with_ca CLIENT_KEY $CLIENT_CN CLIENT_CRT
2742

2843
## Generate config options
29-
# Client side:
30-
CA_CRT=`cat ca.crt | sed '/---/d' | tr -d '\n'`
31-
echo "CONFIG_ESP_WIFI_REMOTE_EPPP_SERVER_CA=\"$CA_CRT\""
32-
CLIENT_CRT=`cat client.crt | sed '/---/d' | tr -d '\n'`
33-
echo "CONFIG_ESP_WIFI_REMOTE_EPPP_CLIENT_CRT=\"$CLIENT_CRT\""
34-
CLIENT_KEY=`cat client.key | sed '/---/d' | tr -d '\n'`
35-
echo "CONFIG_ESP_WIFI_REMOTE_EPPP_CLIENT_KEY=\"$CLIENT_KEY\""
36-
## Server side (here it uses the same CA)
37-
echo "CONFIG_ESP_WIFI_REMOTE_EPPP_CLIENT_CA=\"$CA_CRT\""
38-
SERVER_CRT=`cat srv.crt | sed '/---/d' | tr -d '\n'`
39-
echo "CONFIG_ESP_WIFI_REMOTE_EPPP_SERVER_CRT=\"$SERVER_CRT\""
40-
SERVER_KEY=`cat srv.key | sed '/---/d' | tr -d '\n'`
41-
echo "CONFIG_ESP_WIFI_REMOTE_EPPP_SERVER_KEY=\"$SERVER_KEY\""
44+
echo -e "\n# Client side: need own cert and key and ca-cert for server validation"
45+
for f in SERVER_CA CLIENT_CRT CLIENT_KEY; do
46+
export_config $f
47+
done
48+
49+
echo -e "\n# Server side: need own cert and key and ca-cert for client validation"
50+
for f in CLIENT_CA SERVER_CRT SERVER_KEY; do
51+
export_config $f
52+
done

0 commit comments

Comments
 (0)