1libscep - A Client Side SCEP Library
2====================================
3[![Build Status](https://travis-ci.org/Javex/libscep.svg?branch=develop)](https://travis-ci.org/Javex/libscep)
4
5`libscep` implements the
6[SCEP protocol](http://tools.ietf.org/html/draft-nourse-scep-23) as a C library
7and additionally provides a command line client that allows to operate the
8program without need to write an implementation of this library.
9
10The client is based on the classic [sscep](https://github.com/certnanny/sscep)
11client and follows the same syntax. Internally it just wraps the library.
12
13The library itself is pretty basic. It gets initialized, then one or multiple
14operations can be executed and then it gets destroyed again.
15
16*Note*: This is currently in development phase und not yet ready.
17
18Compiling
19----------
20
21Dependencies:
22
23    `openssl`, `cmake`, `pkg-config`, `check` (unit test framework for C),
24    `uriparser` (liburiparser1, liburiparser-dev on debian),
25    `libcurl4-openssl-dev`
26
27    mkdir build
28    cmake ..
29    make
30    make test
31
32Version Bump
33-------------
34
35The major and monir version numbers are tracked in:
36
37    CMakeLists.txt
38    src/clients/perl/Crypt-LibSCEP/MYMETA.json
39    src/clients/perl/Crypt-LibSCEP/MYMETA.yml
40    src/clients/perl/Crypt-LibSCEP/lib/Crypt/LibSCEP.pm
41
42To update the version:
43
44    major=0
45    minor=09
46    version=$major.$minor
47    perl -i -p \
48        -e "s{(libscep_VERSION_MAJOR) \d+}{\$1 $major};" \
49        -e "s{(libscep_VERSION_MINOR) \d+}{\$1 $minor};" \
50        CMakeLists.txt
51    perl -i -p \
52        -e "s{\"version\" : \"[0-9.]+\"}{\"version\" : \"$version\"};" \
53        src/clients/perl/Crypt-LibSCEP/MYMETA.json
54    perl -i -p \
55        -e "s{^version: \'[0-9.]+\'}{version: \'$version\'};" \
56        src/clients/perl/Crypt-LibSCEP/MYMETA.yml
57    perl -i -p \
58        -e "s{(our .VERSION =) \'[0-9.]+\'}{\$1 \'$version\'};" \
59        src/clients/perl/Crypt-LibSCEP/lib/Crypt/LibSCEP.pm
60    git add \
61        CMakeLists.txt \
62        src/clients/perl/Crypt-LibSCEP/MYMETA.json \
63        src/clients/perl/Crypt-LibSCEP/MYMETA.yml \
64        src/clients/perl/Crypt-LibSCEP/lib/Crypt/LibSCEP.pm
65
66    # Commit version bump
67    git commit -m "bump to v$version"
68    git tag -a v$version -m "bump to v$version"
69
70
71Building Debian Package
72------------------------
73
74The Debian packaging is done via Vagrant. To create the libscep and Perl
75library packages, run the following:
76
77    vagrant up debian
78    vagrant ssh --command /vagrant/package/make-deb.sh debian
79
80The resulting debian package files will be copied to the current directory.
81
82NOTE: The current support for building packages is proof-of-concept. The
83package versions must be set manually in the debian/\* files.
84
85Uploading Perl Module to CPAN
86-----------------------------
87
88Bump the version (see the 'Version Bump' section above). Then, run:
89
90    cd src/clients/perl/Crypt-LibSCEP
91    version=$(perl -MYAML -e '$y = YAML::LoadFile("MYMETA.yml");print $y->{version};')
92    git archive \
93        --prefix=Crypt-LibSCEP-$version/ \
94        --output Crypt-LibSCEP-$version.tar.gz \
95        v$version
96    cpan-upload Crypt-LibSCEP-$version.tar.gz
97
98
99