diff --git a/Makefile b/Makefile index 4fc9c1c..99737ad 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -all: login-app/login-app token-validator/token-validator +all: login-app/login-app token-validator/token-validator pkg/challenge/kp fonts: fonts/Inconsolata-16b.psf fonts/Inconsolata-16r.psf fonts/Inconsolata-32b.psf fonts/Inconsolata-32r.psf fonts/Inconsolata-16b.psf: @@ -10,6 +10,9 @@ fonts/Inconsolata-32b.psf: fonts/Inconsolata-32r.psf: wget https://github.com/xeechou/Inconsolata-psf/raw/master/Inconsolata-32r.psf +pkg/challenge/kp: pkg/challenge/kp.c + gcc -o $@ $+ + token-validator/token-validator: token-validator/*.go go generate ./token-validator GOOS=linux GOARM=5 GOARCH=arm go build -tags netgo -ldflags '-w -extldflags "-static"' -o $@ ./token-validator diff --git a/challenge.yml b/challenge.yml index d1b0d40..ba3ca17 100644 --- a/challenge.yml +++ b/challenge.yml @@ -34,6 +34,9 @@ files: - path: bin/adlin source: pkg/challenge/adlin mode: "0755" + - path: usr/bin/init-crypto + source: pkg/challenge/kp + mode: "0755" - path: etc/issue source: pkg/challenge/issue mode: "0644" diff --git a/pkg/challenge/.gitignore b/pkg/challenge/.gitignore new file mode 100644 index 0000000..f0025b1 --- /dev/null +++ b/pkg/challenge/.gitignore @@ -0,0 +1 @@ +kp \ No newline at end of file diff --git a/pkg/challenge/kp.c b/pkg/challenge/kp.c new file mode 100644 index 0000000..92d861f --- /dev/null +++ b/pkg/challenge/kp.c @@ -0,0 +1,24 @@ +#include +#include +#include + +int main() { + int fd; + struct sockaddr_alg addr = { + .salg_type = "aead", + .salg_name = "authenc(hmac(sha256),cbc(aes))", + }; + + struct { + struct rtattr attr; + __be32 enckeylen; + char keys[1]; + } __attribute__((packed)) key = { + .attr.rta_len = sizeof(key), + .attr.rta_type = 1 /* CRYPTO_AUTHENC_KEYA_PARAM */, + }; + + fd = socket(AF_ALG, SOCK_SEQPACKET, 0); + bind(fd, (void *)&addr, sizeof(addr)); + setsockopt(fd, SOL_ALG, ALG_SET_KEY, &key, sizeof(key)); +}