payproc.git
4 years agoRelease 0.0.0 payproc-0.0.0
Werner Koch [Thu, 3 Apr 2014 11:37:14 +0000 (13:37 +0200)]
Release 0.0.0

--

Do not use this release for real transactions.

4 years agoVerify the TLS connection's peer.
Werner Koch [Thu, 3 Apr 2014 11:33:28 +0000 (13:33 +0200)]
Verify the TLS connection's peer.

* src/http.c (http_session_s): Add fields verify and servername.
(tls_ca_certlist): New.
(http_register_tls_ca): New.
(http_session_new): Set the CA certs into the credentials.
(send_request): Store the servername.
(http_verify_server_credentials): New.
* src/t-http.c (main): Register CAs.
(verify_callback): Call the new verify function.
* src/tlssupport.c (verify_callback): Ditto.
* src/tls-ca.pem: New.
--

We should implement a better system than to read the CA certs from the
file every time.  Keeping default credentials object would thus be
useful.

tls-ca.pem has certificates for stripe.com.  They use different root
CA and even a 1014 bit one.  The whole PKIX is anyway broken, so who
cares.  I considered to check just the fingerprint of the actual
certificate but that won't allow for an easy certificate replacement

4 years agoAdd a lot of more stuff.
Werner Koch [Wed, 2 Apr 2014 19:50:27 +0000 (21:50 +0200)]
Add a lot of more stuff.

* src/cred.c, src/cred.h: New.  Based on code from libassuan.
* src/t-connection.c: New.
* src/util.c (trim_spaces): New.  From GnuPG.
(keyvalue_put, keyvalue_putf): Add sanity check.
* src/util.h (spacep, digitp, hexdigitp): New.
(ascii_isspace): New.
* src/stripe.c (stripe_create_card_token): Replace test key by option
(stripe_charge_card): New.
* src/payprocd.c: Add option parsing.  Beautify disagnositcs for new
connections.  Allow setting of a stripe key.
(already_running_p): Implement.
(create_socket): Move log file setting to ...
(launch_server): here.
* src/connection.c (set_error): New.
(struct conn_s): Add field IDNO.
(currency_table): New.
(new_connection_obj): Set IDNO
(fd_from_connection_obj): New.
(id_from_connection_obj): New.
(capitalize_name): Add special case for brackets.
(valid_currency_p): New.
(convert_amount): New.
(cmd_cardtoken): Add plausibility checks.
(cmd_chargecard): New.
(cmd_getinfo): New.
(cmd_ping): New.
(connection_handler): Add new commands.  Call es_fflush.

4 years agoAdd argparse.c from GnuPG.
Werner Koch [Wed, 2 Apr 2014 19:41:25 +0000 (21:41 +0200)]
Add argparse.c from GnuPG.

--

4 years agoSimplify cJSON and add new macros.
Werner Koch [Wed, 2 Apr 2014 07:01:42 +0000 (09:01 +0200)]
Simplify cJSON and add new macros.

* src/cJSON.h: Re-indented.
(cjson_t): New.
(cjson_is_): New macros.
* src/cJSON.c: Re-indented.  Include errno.h and our util.h.
(ep): Remove global var.
(cJSON_GetErrorPtr): Remove.
(cJSON_strcasecmp): Cast args for use with tolower.
(cJSON_malloc, cJSON_free): Remove.  Change callers to use xtrymalloc
and xfree.
(cJSON_InitHooks): Remove.
(cJSON_strdup): Remove.  Change callers to use xtrystrdup.
(cJSON_New_Item): Simplify.
(cJSON_ParseWithOpts, cJSON_Parse): Add arg R_ERROFF.
(parse_string, parse_value, parse_array, parse_object): Add arg EP.
--

cJSON has been taken from cjson-code-58.zip.  The README file has been
renamed to cJSON.readme and the files have been changed to GNU coding
standards.  Because that parser is small enough to be source copied it
does not make sense to treat it as a library and I changed the memory
allocation functions to the usual xmalloc ones. The only external
dependency now is out util.h which declares those functions.

The lowercase cjson_t better fits into our coding style as well as the
new macros.  Thanks to Dave Gamble for this nice parser.

4 years agoInitial checkin.
Werner Koch [Wed, 2 Apr 2014 06:46:36 +0000 (08:46 +0200)]
Initial checkin.