aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/afm-system-daemon.c2
-rw-r--r--src/afm-user-daemon.c2
-rw-r--r--src/wgtpkg-base64.c2
-rw-r--r--src/wgtpkg-base64.h24
-rw-r--r--src/wgtpkg-certs.c3
-rw-r--r--src/wgtpkg-certs.h22
-rw-r--r--src/wgtpkg-digsig.c6
-rw-r--r--src/wgtpkg-digsig.h28
-rw-r--r--src/wgtpkg-files.c3
-rw-r--r--src/wgtpkg-files.h57
-rw-r--r--src/wgtpkg-info.c8
-rw-r--r--src/wgtpkg-install.c8
-rw-r--r--src/wgtpkg-install.h1
-rw-r--r--src/wgtpkg-installer.c5
-rw-r--r--src/wgtpkg-pack.c14
-rw-r--r--src/wgtpkg-permissions.c3
-rw-r--r--src/wgtpkg-permissions.h27
-rw-r--r--src/wgtpkg-sign.c7
-rw-r--r--src/wgtpkg-workdir.c4
-rw-r--r--src/wgtpkg-workdir.h26
-rw-r--r--src/wgtpkg-xmlsec.c4
-rw-r--r--src/wgtpkg-xmlsec.h23
-rw-r--r--src/wgtpkg-zip.c4
-rw-r--r--src/wgtpkg-zip.h26
-rw-r--r--src/wgtpkg.h132
25 files changed, 283 insertions, 158 deletions
diff --git a/src/afm-system-daemon.c b/src/afm-system-daemon.c
index 84e8992..70d8656 100644
--- a/src/afm-system-daemon.c
+++ b/src/afm-system-daemon.c
@@ -284,7 +284,7 @@ int main(int ac, char **av)
/* start and run */
if (jbus_start_serving(jbus)) {
- ERROR("cant start server");
+ ERROR("can't start server");
return 1;
}
while (!jbus_read_write_dispatch(jbus, -1));
diff --git a/src/afm-user-daemon.c b/src/afm-user-daemon.c
index 1459dde..87d7e71 100644
--- a/src/afm-user-daemon.c
+++ b/src/afm-user-daemon.c
@@ -303,7 +303,7 @@ int main(int ac, char **av)
/* start and run */
if (jbus_start_serving(jbus)) {
- ERROR("cant start server");
+ ERROR("can't start server");
return 1;
}
while (!jbus_read_write_dispatch(jbus, -1));
diff --git a/src/wgtpkg-base64.c b/src/wgtpkg-base64.c
index d86f75a..63929ae 100644
--- a/src/wgtpkg-base64.c
+++ b/src/wgtpkg-base64.c
@@ -21,7 +21,7 @@
#include <string.h>
#include "verbose.h"
-#include "wgtpkg.h"
+#include "wgtpkg-base64.h"
static char tob64(char x)
{
diff --git a/src/wgtpkg-base64.h b/src/wgtpkg-base64.h
new file mode 100644
index 0000000..90917a9
--- /dev/null
+++ b/src/wgtpkg-base64.h
@@ -0,0 +1,24 @@
+/*
+ Copyright 2015 IoT.bzh
+
+ author: José Bollo <jose.bollo@iot.bzh>
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+
+extern char *base64encw(const char *buffer, int length, int width);
+extern char *base64enc(const char *buffer, int length);
+extern int base64dec(const char *buffer, char **output);
+extern int base64eq(const char *buf1, const char *buf2);
+
diff --git a/src/wgtpkg-certs.c b/src/wgtpkg-certs.c
index 116e637..7310035 100644
--- a/src/wgtpkg-certs.c
+++ b/src/wgtpkg-certs.c
@@ -20,7 +20,8 @@
#include <openssl/x509.h>
#include "verbose.h"
-#include "wgtpkg.h"
+#include "wgtpkg-certs.h"
+#include "wgtpkg-base64.h"
struct x509l {
int count;
diff --git a/src/wgtpkg-certs.h b/src/wgtpkg-certs.h
new file mode 100644
index 0000000..6342581
--- /dev/null
+++ b/src/wgtpkg-certs.h
@@ -0,0 +1,22 @@
+/*
+ Copyright 2015 IoT.bzh
+
+ author: José Bollo <jose.bollo@iot.bzh>
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+
+extern void clear_certificates();
+extern int add_certificate_b64(const char *b64);
+
diff --git a/src/wgtpkg-digsig.c b/src/wgtpkg-digsig.c
index e5a8d74..ed9d089 100644
--- a/src/wgtpkg-digsig.c
+++ b/src/wgtpkg-digsig.c
@@ -29,7 +29,11 @@
#include "verbose.h"
-#include "wgtpkg.h"
+#include "wgtpkg-files.h"
+#include "wgtpkg-workdir.h"
+#include "wgtpkg-certs.h"
+#include "wgtpkg-xmlsec.h"
+#include "wgtpkg-digsig.h"
diff --git a/src/wgtpkg-digsig.h b/src/wgtpkg-digsig.h
new file mode 100644
index 0000000..99c5a56
--- /dev/null
+++ b/src/wgtpkg-digsig.h
@@ -0,0 +1,28 @@
+/*
+ Copyright 2015 IoT.bzh
+
+ author: José Bollo <jose.bollo@iot.bzh>
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+
+/* verify the digital signature in file */
+extern int verify_digsig(struct filedesc *fdesc);
+
+/* create a digital signature */
+extern int create_digsig(int index, const char *key, const char **certs);
+
+/* check the signatures of the current directory */
+extern int check_all_signatures();
+
diff --git a/src/wgtpkg-files.c b/src/wgtpkg-files.c
index a89c52b..cbd6048 100644
--- a/src/wgtpkg-files.c
+++ b/src/wgtpkg-files.c
@@ -27,7 +27,8 @@
#include <limits.h>
#include "verbose.h"
-#include "wgtpkg.h"
+#include "wgtpkg-workdir.h"
+#include "wgtpkg-files.h"
struct fdb {
unsigned int count;
diff --git a/src/wgtpkg-files.h b/src/wgtpkg-files.h
new file mode 100644
index 0000000..e3aabf8
--- /dev/null
+++ b/src/wgtpkg-files.h
@@ -0,0 +1,57 @@
+/*
+ Copyright 2015 IoT.bzh
+
+ author: José Bollo <jose.bollo@iot.bzh>
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+enum entrytype {
+ type_unset = 0,
+ type_file = 1,
+ type_directory = 2
+};
+
+enum fileflag {
+ flag_referenced = 1,
+ flag_opened = 2,
+ flag_author_signature = 4,
+ flag_distributor_signature = 8,
+ flag_signature = 12
+};
+
+struct filedesc {
+ enum entrytype type;
+ unsigned int flags;
+ unsigned int signum;
+ unsigned int zindex;
+ char name[1];
+};
+
+extern void file_reset();
+extern void file_clear_flags();
+extern unsigned int file_count();
+extern struct filedesc *file_of_index(unsigned int index);
+extern struct filedesc *file_of_name(const char *name);
+extern struct filedesc *file_add_directory(const char *name);
+extern struct filedesc *file_add_file(const char *name);
+extern int fill_files();
+
+extern unsigned int signature_count();
+extern struct filedesc *signature_of_index(unsigned int index);
+extern struct filedesc *create_signature(unsigned int number);
+extern struct filedesc *get_signature(unsigned int number);
+
+extern int file_set_prop(struct filedesc *file, const char *name, const char *value);
+extern const char *file_get_prop(struct filedesc *file, const char *name);
+
diff --git a/src/wgtpkg-info.c b/src/wgtpkg-info.c
index 18b1118..67d4596 100644
--- a/src/wgtpkg-info.c
+++ b/src/wgtpkg-info.c
@@ -26,8 +26,14 @@
#include <errno.h>
#include <getopt.h>
+#include <libxml/tree.h>
+
#include "verbose.h"
-#include "wgtpkg.h"
+#include "wgtpkg-workdir.h"
+#include "wgtpkg-files.h"
+#include "wgtpkg-zip.h"
+#include "wgtpkg-digsig.h"
+#include "wgtpkg-xmlsec.h"
#include "wgt.h"
#include "wgt-info.h"
diff --git a/src/wgtpkg-install.c b/src/wgtpkg-install.c
index 70198e9..7b299f2 100644
--- a/src/wgtpkg-install.c
+++ b/src/wgtpkg-install.c
@@ -18,16 +18,22 @@
#define _GNU_SOURCE
+#include <limits.h>
#include <errno.h>
#include <string.h>
#include <ctype.h>
#include <assert.h>
#include <unistd.h>
+#include <stdio.h>
#include "verbose.h"
-#include "wgtpkg.h"
#include "wgt.h"
#include "wgt-info.h"
+#include "wgtpkg-files.h"
+#include "wgtpkg-workdir.h"
+#include "wgtpkg-zip.h"
+#include "wgtpkg-permissions.h"
+#include "wgtpkg-digsig.h"
#include "wgtpkg-install.h"
#include "secmgr-wrap.h"
#include "utils-dir.h"
diff --git a/src/wgtpkg-install.h b/src/wgtpkg-install.h
index bf3c3a6..f3dd123 100644
--- a/src/wgtpkg-install.h
+++ b/src/wgtpkg-install.h
@@ -17,4 +17,3 @@
*/
extern struct wgt_info *install_widget(const char *wgtfile, const char *root, int force);
-
diff --git a/src/wgtpkg-installer.c b/src/wgtpkg-installer.c
index b5da59f..ea08fce 100644
--- a/src/wgtpkg-installer.c
+++ b/src/wgtpkg-installer.c
@@ -27,8 +27,11 @@
#include <errno.h>
#include <getopt.h>
+#include <libxml/tree.h>
+
#include "verbose.h"
-#include "wgtpkg.h"
+#include "wgtpkg-permissions.h"
+#include "wgtpkg-xmlsec.h"
#include "wgt-info.h"
#include "wgtpkg-install.h"
diff --git a/src/wgtpkg-pack.c b/src/wgtpkg-pack.c
index e7fa752..0eeb4ab 100644
--- a/src/wgtpkg-pack.c
+++ b/src/wgtpkg-pack.c
@@ -28,17 +28,9 @@
#include <fcntl.h>
#include "verbose.h"
-#include "wgtpkg.h"
-
-#if !defined(MAXCERT)
-#define MAXCERT 20
-#endif
-#if !defined(DEFAULT_KEY_FILE)
-#define DEFAULT_KEY_FILE "key.pem"
-#endif
-#if !defined(DEFAULT_CERT_FILE)
-#define DEFAULT_CERT_FILE "cert.pem"
-#endif
+#include "wgtpkg-files.h"
+#include "wgtpkg-workdir.h"
+#include "wgtpkg-zip.h"
const char appname[] = "wgtpkg-pack";
diff --git a/src/wgtpkg-permissions.c b/src/wgtpkg-permissions.c
index 9dabdd0..88bce05 100644
--- a/src/wgtpkg-permissions.c
+++ b/src/wgtpkg-permissions.c
@@ -20,9 +20,10 @@
#include <errno.h>
#include <string.h>
+#include <stdlib.h>
#include "verbose.h"
-#include "wgtpkg.h"
+#include "wgtpkg-permissions.h"
struct permission {
char *name;
diff --git a/src/wgtpkg-permissions.h b/src/wgtpkg-permissions.h
new file mode 100644
index 0000000..b052063
--- /dev/null
+++ b/src/wgtpkg-permissions.h
@@ -0,0 +1,27 @@
+/*
+ Copyright 2015 IoT.bzh
+
+ author: José Bollo <jose.bollo@iot.bzh>
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+extern int is_standard_permission(const char *name);
+extern void reset_permissions();
+extern void crop_permissions(unsigned level);
+extern void grant_permission_list(const char *list);
+extern int permission_exists(const char *name);
+extern int request_permission(const char *name);
+extern const char *first_usable_permission();
+extern const char *next_usable_permission();
+
diff --git a/src/wgtpkg-sign.c b/src/wgtpkg-sign.c
index 7851c4a..5a5d019 100644
--- a/src/wgtpkg-sign.c
+++ b/src/wgtpkg-sign.c
@@ -27,8 +27,13 @@
#include <sys/stat.h>
#include <fcntl.h>
+#include <libxml/tree.h>
+
#include "verbose.h"
-#include "wgtpkg.h"
+#include "wgtpkg-files.h"
+#include "wgtpkg-workdir.h"
+#include "wgtpkg-digsig.h"
+#include "wgtpkg-xmlsec.h"
#if !defined(MAXCERT)
#define MAXCERT 20
diff --git a/src/wgtpkg-workdir.c b/src/wgtpkg-workdir.c
index e6632f4..e1dcdac 100644
--- a/src/wgtpkg-workdir.c
+++ b/src/wgtpkg-workdir.c
@@ -20,6 +20,8 @@
#include <unistd.h>
#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
#include <dirent.h>
#include <errno.h>
#include <fcntl.h>
@@ -29,7 +31,7 @@
#include <limits.h>
#include "verbose.h"
-#include "wgtpkg.h"
+#include "wgtpkg-workdir.h"
#include "utils-dir.h"
static const int dirmode = 0755;
diff --git a/src/wgtpkg-workdir.h b/src/wgtpkg-workdir.h
new file mode 100644
index 0000000..ff21ab1
--- /dev/null
+++ b/src/wgtpkg-workdir.h
@@ -0,0 +1,26 @@
+/*
+ Copyright 2015 IoT.bzh
+
+ author: José Bollo <jose.bollo@iot.bzh>
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+extern char workdir[PATH_MAX];
+extern int workdirfd;
+extern void remove_workdir();
+extern int set_workdir(const char *name, int create);
+extern int make_workdir_base(const char *root, const char *prefix, int reuse);
+extern int make_workdir(int reuse);
+extern int move_workdir(const char *dest, int parents, int force);
+
diff --git a/src/wgtpkg-xmlsec.c b/src/wgtpkg-xmlsec.c
index b31a5d0..2d52cc6 100644
--- a/src/wgtpkg-xmlsec.c
+++ b/src/wgtpkg-xmlsec.c
@@ -35,7 +35,9 @@
#include "verbose.h"
-#include "wgtpkg.h"
+#include "wgtpkg-files.h"
+#include "wgtpkg-workdir.h"
+#include "wgtpkg-xmlsec.h"
static int initstatus;
static int initdone;
diff --git a/src/wgtpkg-xmlsec.h b/src/wgtpkg-xmlsec.h
new file mode 100644
index 0000000..92d7615
--- /dev/null
+++ b/src/wgtpkg-xmlsec.h
@@ -0,0 +1,23 @@
+/*
+ Copyright 2015 IoT.bzh
+
+ author: José Bollo <jose.bollo@iot.bzh>
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+extern int xmlsec_init();
+extern void xmlsec_shutdown();
+extern int xmlsec_verify(xmlNodePtr node);
+extern xmlDocPtr xmlsec_create(int index, const char *key, const char **certs);
+
diff --git a/src/wgtpkg-zip.c b/src/wgtpkg-zip.c
index 0b1234b..8168fe7 100644
--- a/src/wgtpkg-zip.c
+++ b/src/wgtpkg-zip.c
@@ -29,7 +29,9 @@
#include <unistd.h>
#include "verbose.h"
-#include "wgtpkg.h"
+#include "wgtpkg-files.h"
+#include "wgtpkg-workdir.h"
+#include "wgtpkg-zip.h"
#define MODE_OF_FILE_CREATION 0640
#define MODE_OF_DIRECTORY_CREATION 0750
diff --git a/src/wgtpkg-zip.h b/src/wgtpkg-zip.h
new file mode 100644
index 0000000..03d0433
--- /dev/null
+++ b/src/wgtpkg-zip.h
@@ -0,0 +1,26 @@
+/*
+ Copyright 2015 IoT.bzh
+
+ author: José Bollo <jose.bollo@iot.bzh>
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+
+/* read (extract) 'zipfile' in current directory */
+extern int zread(const char *zipfile, unsigned long long maxsize);
+
+/* write (pack) content of the current directory in 'zipfile' */
+extern int zwrite(const char *zipfile);
+
+
diff --git a/src/wgtpkg.h b/src/wgtpkg.h
deleted file mode 100644
index e700a9b..0000000
--- a/src/wgtpkg.h
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- Copyright 2015 IoT.bzh
-
- author: José Bollo <jose.bollo@iot.bzh>
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-
-
-#include <libxml/tree.h>
-
-struct filedesc;
-
-/**************************************************************/
-/* from wgtpkg-base64 */
-
-extern char *base64encw(const char *buffer, int length, int width);
-extern char *base64enc(const char *buffer, int length);
-extern int base64dec(const char *buffer, char **output);
-extern int base64eq(const char *buf1, const char *buf2);
-
-/**************************************************************/
-/* from wgtpkg-certs */
-
-extern void clear_certificates();
-extern int add_certificate_b64(const char *b64);
-
-/**************************************************************/
-/* from wgtpkg-digsig */
-
-/* verify the digital signature in file */
-extern int verify_digsig(struct filedesc *fdesc);
-
-/* create a digital signature */
-extern int create_digsig(int index, const char *key, const char **certs);
-
-/* check the signatures of the current directory */
-extern int check_all_signatures();
-
-/**************************************************************/
-/* from wgtpkg-files */
-
-enum entrytype {
- type_unset = 0,
- type_file = 1,
- type_directory = 2
-};
-
-enum fileflag {
- flag_referenced = 1,
- flag_opened = 2,
- flag_author_signature = 4,
- flag_distributor_signature = 8,
- flag_signature = 12
-};
-
-struct filedesc {
- enum entrytype type;
- unsigned int flags;
- unsigned int signum;
- unsigned int zindex;
- char name[1];
-};
-
-extern void file_reset();
-extern void file_clear_flags();
-extern unsigned int file_count();
-extern struct filedesc *file_of_index(unsigned int index);
-extern struct filedesc *file_of_name(const char *name);
-extern struct filedesc *file_add_directory(const char *name);
-extern struct filedesc *file_add_file(const char *name);
-extern int fill_files();
-
-extern unsigned int signature_count();
-extern struct filedesc *signature_of_index(unsigned int index);
-extern struct filedesc *create_signature(unsigned int number);
-extern struct filedesc *get_signature(unsigned int number);
-
-extern int file_set_prop(struct filedesc *file, const char *name, const char *value);
-extern const char *file_get_prop(struct filedesc *file, const char *name);
-
-/**************************************************************/
-/* from wgtpkg-permission */
-
-extern int is_standard_permission(const char *name);
-extern void reset_permissions();
-extern void crop_permissions(unsigned level);
-extern void grant_permission_list(const char *list);
-extern int permission_exists(const char *name);
-extern int request_permission(const char *name);
-extern const char *first_usable_permission();
-extern const char *next_usable_permission();
-
-/**************************************************************/
-/* from wgtpkg-workdir */
-
-extern char workdir[PATH_MAX];
-extern int workdirfd;
-extern void remove_workdir();
-extern int set_workdir(const char *name, int create);
-extern int make_workdir_base(const char *root, const char *prefix, int reuse);
-extern int make_workdir(int reuse);
-extern int move_workdir(const char *dest, int parents, int force);
-
-/**************************************************************/
-/* from wgtpkg-xmlsec */
-
-extern int xmlsec_init();
-extern void xmlsec_shutdown();
-extern int xmlsec_verify(xmlNodePtr node);
-extern xmlDocPtr xmlsec_create(int index, const char *key, const char **certs);
-
-/**************************************************************/
-/* from wgtpkg-zip */
-
-/* read (extract) 'zipfile' in current directory */
-extern int zread(const char *zipfile, unsigned long long maxsize);
-
-/* write (pack) content of the current directory in 'zipfile' */
-extern int zwrite(const char *zipfile);
-
-