#include <arpa/inet.h>
+#include <db.h>
+
#include <quick-der/api.h>
#include "api.h"
}
gotcrs =
ok = ok && (0 == self->db->cursor (self->db, self->txn, &crs, 0));
- dbt_init_fixbuf (&db_key, key ->derptr, key ->derlen);
- dbt_init_fixbuf (&db_val, value->derptr, value->derlen);
- dbt_init_empty (&db_got);
+ memset (&db_key, 0, sizeof (db_key));
+ db_key.data = key->derptr;
+ db_key.size = key->derlen;
+ memset (&db_val, 0, sizeof (db_val));
+ db_val.data = value->derptr;
+ db_val.size = value->derlen;
+ memset (&db_got, 0, sizeof (db_got));
+ //OLD// dbt_init_fixbuf (&db_key, key ->derptr, key ->derlen);
+ //OLD// dbt_init_fixbuf (&db_val, value->derptr, value->derlen);
+ //OLD// dbt_init_empty (&db_got);
nomore = crs->get (crs, &db_key, &db_got, DB_SET);
while (!nomore) {
int match = 1;
for (i = 0; match && (i < trimlen); i++) {
match = match && (i < db_val.size);
match = match && (i < db_got.size);
- if (match) {
+ if (!match) {
+ // Final decision; only match for same sizes
+ match = (db_val.size == db_got.size);
+ break;
+ } else {
uint8_t m, a, b;
m = (i < 4)? mask4 [i]: 0xff;
a = m & ((uint8_t *) db_val.data) [i];
}
ok = ok && (nomore == DB_NOTFOUND);
if (gotcrs) {
- crs->close (crs);
+ if (0 != crs->close (crs)) {
+ fprintf (stderr, "Failed to close cursor\n");
+ }
}
if (!rm) {
ok = ok && (0 == self->db->put (
- self->db, self->txn, &db_key, &db_val, 0));
+ self->db, self->txn, &db_key, &db_val, 0));
}
- dbt_free (&db_got);
- // Static, so don't free // dbt_free (&db_val);
- // Static, so don't free // dbt_free (&db_key);
+ //OLD// // Not ours, so don't free // dbt_free (&db_got);
+ //OLD// // Static, so don't free // dbt_free (&db_val);
+ //OLD// // Static, so don't free // dbt_free (&db_key);
return ok;
}
// Perhaps length is too small, or DER formatting error
return 0;
}
+printf ("Updating disclose.db (%s): %.*s -> %.*s\n", rm?"DEL":"ADD", rid.derlen, rid.derptr, lid.derlen, lid.derptr);
return update_db (self, &rid, &lid, -1, NULL, rm);
}
#include <stdio.h>
#include <string.h>
+#include <time.h>
#include <unistd.h>
#include <libgen.h>
void showstatus (char *title) {
printf ("\n\n\n# %s\n", title);
// testcmd ("db_stat -h ../testdata/tlspool.env -d ../disclose.db");
- printf ("\n\n\n## Disclosure database\n\n\n");
- testcmd ("../tool/get_disclose "CONFFILE" "REMOTEID" >/dev/null");
- testcmd ("../tool/get_disclose "CONFFILE" "REMOTEID_PATN" >/dev/null");
- testcmd ("../tool/get_disclose "CONFFILE" "LOCALID" >/dev/null");
- printf ("\n\n\n## LocalID database\n\n\n");
- testcmd ("../tool/get_localid "CONFFILE" "REMOTEID" X.509,client,server"" >/dev/null");
- testcmd ("../tool/get_localid "CONFFILE" "LOCALID" X.509,client,server"" >/dev/null");
- testcmd ("../tool/get_localid "CONFFILE" "REMOTEID" OpenPGP,client,server"" >/dev/null");
- testcmd ("../tool/get_localid "CONFFILE" "LOCALID" OpenPGP,client,server"" >/dev/null");
- printf ("\n\n\n## Trust database\n\n\n");
- testcmd ("../tool/get_trust "CONFFILE" x509,client,server "ANCHOR_HEX" >/dev/null");
- testcmd ("../tool/get_trust "CONFFILE" x509,client,server "ANCHOR_HEX" >/dev/null");
- testcmd ("../tool/get_trust "CONFFILE" pgp,client,server "ANCHOR_HEX" >/dev/null");
- testcmd ("../tool/get_trust "CONFFILE" pgp,client,server "ANCHOR_HEX" >/dev/null");
- printf ("\nThat was our last test for %s\n\n\n", title);
+ // printf ("\n\n\n## Disclosure database\n\n\n");
+ // testcmd ("../tool/get_disclose "CONFFILE" "REMOTEID" >/dev/null");
+ // testcmd ("../tool/get_disclose "CONFFILE" "REMOTEID_PATN" >/dev/null");
+ // testcmd ("../tool/get_disclose "CONFFILE" "LOCALID" >/dev/null");
+ // printf ("\n\n\n## LocalID database\n\n\n");
+ // testcmd ("../tool/get_localid "CONFFILE" "REMOTEID" X.509,client,server"" >/dev/null");
+ // testcmd ("../tool/get_localid "CONFFILE" "LOCALID" X.509,client,server"" >/dev/null");
+ // testcmd ("../tool/get_localid "CONFFILE" "REMOTEID" OpenPGP,client,server"" >/dev/null");
+ // testcmd ("../tool/get_localid "CONFFILE" "LOCALID" OpenPGP,client,server"" >/dev/null");
+ // printf ("\n\n\n## Trust database\n\n\n");
+ // testcmd ("../tool/get_trust "CONFFILE" x509,client,server "ANCHOR_HEX" >/dev/null");
+ // testcmd ("../tool/get_trust "CONFFILE" x509,client,server "ANCHOR_HEX" >/dev/null");
+ // testcmd ("../tool/get_trust "CONFFILE" pgp,client,server "ANCHOR_HEX" >/dev/null");
+ // testcmd ("../tool/get_trust "CONFFILE" pgp,client,server "ANCHOR_HEX" >/dev/null");
+ // printf ("\nThat was our last test for %s\n\n\n", title);
}
}
void close_backend (void *backend) {
- pulleyback_close (backend);
+ struct pulleyback_tlspool *self = backend;
+ if (backend != NULL) {
+ pulleyback_close (backend);
+ }
}
char *test1 [] = { "pulleyback_tlspool", "config=../etc/tlspool.conf", "type=disclose", "args=remoteid,localid", NULL };
char *test2 [] = { "pulleyback_tlspool", "config=../etc/tlspool.conf", "type=localid", "args=localid,pkcs11,cred", "subtype=x509,client", NULL };
-uint8_t *args0 [2] = { "\x0c\x1alocal@pulleyback.arpa2.lab", "\x0c\x1bremote@pulleyback.arpa2.lab" };
-uint8_t *args1 [2] = { "\x0c\x1bremote@pulleyback.arpa2.lab", "\x0c\x1alocal@pulleyback.arpa2.lab" };
-uint8_t *args2 [3] = { "\x0c\x1alocal@pulleyback.arpa2.lab", "\x0c\x24pkcs11:manuf=OpenFortress;serial=123", "\x0c\x1a-----LIKE A PGP KEY-----\r\n" };
+uint8_t *args0 [2] = { "\x0c\x1clocalid@pulleyback.arpa2.lab", "\x0c\x1dremoteid@pulleyback.arpa2.lab" };
+uint8_t *args1 [2] = { "\x0c\x1dremoteid@pulleyback.arpa2.lab", "\x0c\x1clocalid@pulleyback.arpa2.lab" };
+uint8_t *args2 [3] = { "\x0c\x1clocalid@pulleyback.arpa2.lab", "\x0c\x24pkcs11:manuf=OpenFortress;serial=123", "\x0c\x1a-----LIKE A PGP KEY-----\r\n" };
char **tests [] = { test0, test1, test2, NULL };
uint8_t **argss [] = { args0, args1, args2, NULL };
close (2);
dup2 (1, 2);
openlog (basename (argv [0]), LOG_PERROR, LOG_LOCAL0);
- showstatus ("Initial status");
+ // showstatus ("Initial status");
for (testp = tests, argsp = argss; *testp != NULL; testp++, argsp++) {
backend = open_backend (*testp);
if (backend == NULL) {
continue;
}
- snprintf (testtitle, 100, "Test number %d\n", testnr++);
+ snprintf (testtitle, 100, "Test number %d\n", testnr);
+ showstatus (testtitle);
+ pulleyback_add (backend, *argsp);
+ if (pulleyback_commit (backend)) {
+ printf ("Go have a look...\n");
+ } else {
+ printf ("Failed, so you probably won't find it...\n");
+ }
+ sleep (10);
+ snprintf (testtitle, 100, "Added in test number %d\n", testnr++);
showstatus (testtitle);
- // pulleyback_add (backend, *argsp);
- // pulleyback_del (backend, *argsp);
+ pulleyback_del (backend, *argsp);
+ if (pulleyback_commit (backend)) {
+ printf ("It should be gone...\n");
+ } else {
+ printf ("Failed, so it is probably still there...\n");
+ }
close_backend (backend);
}
- showstatus ("Final status");
+ // showstatus ("Final status");
closelog ();
exit (0);
}