Untitled

                Never    
C
       
#include <stdio.h>
#include <string.h>
#include <err.h>
#include <tls.h>


int
main(int argc, char *argv[])
{
	struct tls_config *cfg = NULL;
	struct tls *ctx = NULL;
	uint8_t *mem;
	size_t mem_len;
	int writelen;
	char buf[BUFSIZ] = "<?xml version=\"1.0\"?>  <stream:stream to=\"tilda.center\" xmlns=\"jabber:client\" xmlns:stream=\"http://etherx.jabber.org/streams\" version=\"1.0\">";

	/*
	** initialize libtls
	*/

	// if (tls_init() != 0)
		// err(1, "tls_init:");

	/*
	** configure libtls
	*/

	if ((cfg = tls_config_new()) == NULL)
		err(1, "tls_config_new:");

	/* set root certificate (CA) */
	if (tls_config_set_ca_file(cfg, "/etc/ssl/cert.pem") != 0)
		err(1, "tls_config_set_ca_file:");

	/*
	** initiate client context
	*/

	if ((ctx = tls_client()) == NULL)
		err(1, "tls_client:");

	/*
	** apply config to context
	*/

	if (tls_configure(ctx, cfg) != 0)
		err(1, "tls_configure: %s", tls_error(ctx));

	/*
	** connect to server
	*/

	if (tls_connect(ctx, "tilda.center", "5222") != 0)
		err(1, "tls_connect: %s", tls_error(ctx));

	/*
	** send message to server
	*/

	if ((writelen = tls_write(ctx, buf, strlen(buf))) < 0)
		err(1, "tls_write: %s", tls_error(ctx));

	printf("sent message: [%*.*s]\n", writelen, writelen, buf);

	/*
	** clean up all
	*/

	if (tls_close(ctx) != 0)
		err(1, "tls_close: %s", tls_error(ctx));
	tls_free(ctx);
	tls_config_free(cfg);

	return(0);
}

Raw Text