Skip to content

Commit b6c39c8

Browse files
committed
new version
1 parent a020442 commit b6c39c8

File tree

11 files changed

+124
-13
lines changed

11 files changed

+124
-13
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
11
/*.dylib
22
/src/*.o
3+
.gitlab-ci.yml
4+
Dockerfile
5+
jwt_io.so

.gitlab-ci.yml renamed to .gitlab-ci.yml.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
image: registry.gitlab.com/canbican/jwt_io:latest
1+
image: registry.gitlab.com/canbican/jwt_io:VERSION
22

33
test:
44
script:

Dockerfile

Lines changed: 0 additions & 6 deletions
This file was deleted.

Dockerfile.in

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
FROM swipl:DOCKER_SWIPL
2+
LABEL maintainer "Can Bican <can@bican.net>"
3+
LABEL version="VERSION"
4+
RUN apt-get update
5+
RUN apt-get install -qq -y gcc make dh-autoreconf wget pkg-config libssl-dev git libgpm2
6+
RUN wget https://github.com/akheron/jansson/archive/vDOCKER_JANSSON.tar.gz && tar xvzfp vDOCKER_JANSSON.tar.gz && cd jansson-DOCKER_JANSSON && autoreconf -i && ./configure && make && make install && cd .. && rm -rf jansson-DOCKER_JANSSON vDOCKER_JANSSON.tar.gz
7+
RUN wget https://github.com/benmcollins/libjwt/archive/vDOCKER_LIBJWT.tar.gz && tar xvzfp vDOCKER_LIBJWT.tar.gz && cd libjwt-DOCKER_LIBJWT && autoreconf -i && ./configure && make && make install && cd .. && rm -rf vDOCKER_LIBJWT.tar.gz libjwt-DOCKER_LIBJWT

Makefile

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
version := $(shell swipl -s pack.pl -g 'version(X), writeln(X).' -t halt)
22
packname := $(shell basename $$(pwd))
33

4+
DOCKER_SWIPL=8.1.12
5+
DOCKER_JANSSON=2.12
6+
DOCKER_LIBJWT=1.12.0
7+
48
JWTLDFLAGS=$(shell pkg-config --libs libjwt)
59
JWTCFLAGS=$(shell pkg-config --cflags libjwt)
610
SSLLDFLAGS=-lssl -lcrypto
@@ -13,7 +17,7 @@ LIBNAME=jwt_io
1317

1418
testfiles := $(wildcard tests/*.plt)
1519

16-
all: $(LIBNAME).$(LIBEXT)
20+
all: $(LIBNAME).$(LIBEXT) .gitlab-ci.yml
1721

1822
$(LIBNAME).$(LIBEXT): src/$(LIBNAME).o
1923
swipl-ld $(LDFLAGS) -o $@ $<
@@ -34,7 +38,7 @@ install:
3438
FORCE:
3539

3640
clean:
37-
rm -f src/$(LIBNAME).o $(LIBNAME).$(LIBEXT)
41+
rm -f src/$(LIBNAME).o $(LIBNAME).$(LIBEXT) Dockerfile .gitlab-ci.yml
3842

3943
make_tgz: FORCE
4044
rm -f ../$(packname)-$(version).tgz
@@ -48,7 +52,17 @@ release: check make_tgz clean releasebranch
4852
releasebranch: FORCE
4953
git checkout releases
5054

51-
dockerimage: FORCE
52-
docker build -t registry.gitlab.com/canbican/jwt_io .
53-
docker push registry.gitlab.com/canbican/jwt_io
55+
dockerimage: FORCE Dockerfile
56+
docker build -t registry.gitlab.com/canbican/jwt_io:$(version) .
57+
docker push registry.gitlab.com/canbican/jwt_io:$(version)
58+
59+
Dockerfile: Dockerfile.in
60+
sed -e 's/DOCKER_SWIPL/$(DOCKER_SWIPL)/g' \
61+
-e 's/DOCKER_JANSSON/$(DOCKER_JANSSON)/g' \
62+
-e 's/DOCKER_LIBJWT/$(DOCKER_LIBJWT)/g' \
63+
-e 's/VERSION/$(version)/g' \
64+
< $< > $@
5465

66+
.gitlab-ci.yml: .gitlab-ci.yml.in
67+
sed -e 's/VERSION/$(version)/g' \
68+
< $< > $@

keys/rs2.key

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
-----BEGIN OPENSSH PRIVATE KEY-----
2+
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
48+
dT8ZN8t4vHUAAAALY2FuQGNhbmRlc2s=
49+
-----END OPENSSH PRIVATE KEY-----

keys/rs2.key.pub

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQD4AhBo93fEkEg2DiL1zfTKrcO0Trx41UqNX8TWKlNOteVYABzVdfD1PA69h1FfLTILMLQ9PhLqbuQoN1L2R8XT6a6ug+SNjtCA/K5EbuMkbpusQOFaunyCkcwzv8iTFXTxPsiJ4WYCZ+kFTDCCUkjC+6eSQRVQeSEgXA13XiqLnLs6HnW0gAVokeIySgFjSXOnWKkcP7rA74UwU/djCsFdRXzKuadM0Qk9UCmvZ82PJjd9IdzL282RvnIfHJ3pg2JKaKRMmSEAtOaG1iMeRGPOnwVmeyzdBF/d0HYBxALmFlGJPOuO9Vanclf3INRk5yjDgZKoS6ufWzOxagr+gVCizhke3cnoXhcRG5Dc3JtCOjmcl6IoPUwD1peIPTzz+seci7Yyhm5ciFAdkHR9Zd2C6fv2HhQSsVo7yD3k8cekodb1lvWNmT2PN5Td5ivKMNVv/49JS5o+6VOalNrajadVvznTo9Uu+tAYdZbPcqcaVBF7MEiKPbUusYy9+8GiD0DzzdfwhqCiM6mS/XezhytfXubZKSpvAkkQ1tKYR8/9vSCHCVJTtIdgbq29S0Yodu9lA/wuj52f6YfMW2J1WwgUQPfC12bQXLr2isey4mvXFe2+MZKJ15rWLR+YPPVj9bmnoBm5GEFlkzOOD/yJ7s4wlTN47Rgjuswt1VBikxPI+w== can@candesk

pack.pl

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
name(jwt_io).
22
title('JWT implementation').
3-
version('0.0.2').
3+
version('0.0.3').
44
author('Can Bican','can@bican.net').
5+
author('Robin De Rooij','robin@terminusdb.com').
6+
maintainer('Can Bican','can@bican.net').

tests/jwt_io_jwt.plt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,3 +80,5 @@ test(aud) :- set_setting(jwt_io:audience, "testaudnot"), jwt_encode('hmac256', _
8080
test(jti) :- jwt_encode('hmac256', _{sub: 'a'}, X), jwt_decode(X, _, []).
8181
test(jti, fail) :- jwt_encode('hmac256', _{sub: 'a'}, X), jwt_decode(X, Y, []), jwt_decode(X, Y, []).
8282
test(jti, fail) :- jwt_encode('hmac256', _{sub: 'a'}, X), jwt_decode(X, Y, []), not(jwt_decode(X, Y, [])), jwt_decode(X, Y, []).
83+
84+
:- end_tests(jwt_io).

tests/jwt_io_pubpri.plt

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
:- begin_tests(jwt_io).
2+
3+
:- use_module(library(settings)).
4+
:- use_module(library(http/json)).
5+
6+
:- use_module(prolog/jwt_io).
7+
8+
:- set_setting(jwt_io:clock_tolerance, 30).
9+
10+
test(pubpri_success, Sub == "a") :-
11+
set_setting(jwt_io:keys, [k{kid: 'rsa256', type: 'RSA', algorithm: 'RS256', key: 'keys/rs.key', public_key: 'keys/rs.key.pub'}]),
12+
jwt_encode('rsa256', _{sub:'a'}, X),
13+
jwt_decode(X, Y, []),
14+
atom_json_dict(Y, Result, []),
15+
Sub = Result.get(sub).
16+
17+
test(pubpri_fail, fail) :-
18+
set_setting(jwt_io:keys, [k{kid: 'rsa256', type: 'RSA', algorithm: 'RS256', key: 'keys/rs.key', public_key: 'keys/rs.key.pub'}]),
19+
jwt_encode('rsa256', _{sub:'a'}, X),
20+
set_setting(jwt_io:keys, [k{kid: 'rsa256', type: 'RSA', algorithm: 'RS256', key: 'keys/rs2.key', public_key: 'keys/rs2.key.pub'}]),
21+
jwt_decode(X, _, []).
22+
23+
test(pubonly_success, Sub == "a") :-
24+
set_setting(jwt_io:keys, [k{kid: 'rsa256', type: 'RSA', algorithm: 'RS256', key: 'keys/rs.key', public_key: 'keys/rs.key.pub'}]),
25+
jwt_encode('rsa256', _{sub:'a'}, X),
26+
set_setting(jwt_io:keys, [k{kid: 'rsa256', type: 'RSA', algorithm: 'RS256', public_key: 'keys/rs.key.pub'}]),
27+
jwt_decode(X, Y, []),
28+
atom_json_dict(Y, Result, []),
29+
Sub = Result.get(sub).
30+
31+
test(pubonly_fail, fail) :-
32+
set_setting(jwt_io:keys, [k{kid: 'rsa256', type: 'RSA', algorithm: 'RS256', key: 'keys/rs.key', public_key: 'keys/rs.key.pub'}]),
33+
jwt_encode('rsa256', _{sub:'a'}, X),
34+
set_setting(jwt_io:keys, [k{kid: 'rsa256', type: 'RSA', algorithm: 'RS256', public_key: 'keys/rs2.key.pub'}]),
35+
jwt_decode(X, _, []).
36+
37+
:- end_tests(jwt_io).

0 commit comments

Comments
 (0)