Add XMPP STARTTLS support.
This commit is contained in:
parent
0f7efbc859
commit
d5bbead449
3
CHANGES
3
CHANGES
@ -722,6 +722,9 @@
|
|||||||
|
|
||||||
Changes between 0.9.8i and 0.9.8j [xx XXX xxxx]
|
Changes between 0.9.8i and 0.9.8j [xx XXX xxxx]
|
||||||
|
|
||||||
|
*) Add support for XMPP STARTTLS in s_client.
|
||||||
|
[Philip Paeps <philip@freebsd.org>]
|
||||||
|
|
||||||
*) Change the server-side SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG behavior
|
*) Change the server-side SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG behavior
|
||||||
to ensure that even with this option, only ciphersuites in the
|
to ensure that even with this option, only ciphersuites in the
|
||||||
server's preference list will be accepted. (Note that the option
|
server's preference list will be accepted. (Note that the option
|
||||||
|
@ -325,7 +325,8 @@ static void sc_usage(void)
|
|||||||
BIO_printf(bio_err," -starttls prot - use the STARTTLS command before starting TLS\n");
|
BIO_printf(bio_err," -starttls prot - use the STARTTLS command before starting TLS\n");
|
||||||
BIO_printf(bio_err," for those protocols that support it, where\n");
|
BIO_printf(bio_err," for those protocols that support it, where\n");
|
||||||
BIO_printf(bio_err," 'prot' defines which one to assume. Currently,\n");
|
BIO_printf(bio_err," 'prot' defines which one to assume. Currently,\n");
|
||||||
BIO_printf(bio_err," only \"smtp\", \"pop3\", \"imap\", and \"ftp\" are supported.\n");
|
BIO_printf(bio_err," only \"smtp\", \"pop3\", \"imap\", \"ftp\" and \"xmpp\"\n");
|
||||||
|
BIO_printf(bio_err," are supported.\n");
|
||||||
#ifndef OPENSSL_NO_ENGINE
|
#ifndef OPENSSL_NO_ENGINE
|
||||||
BIO_printf(bio_err," -engine id - Initialise and use the specified engine\n");
|
BIO_printf(bio_err," -engine id - Initialise and use the specified engine\n");
|
||||||
#endif
|
#endif
|
||||||
@ -368,7 +369,8 @@ enum
|
|||||||
PROTO_SMTP,
|
PROTO_SMTP,
|
||||||
PROTO_POP3,
|
PROTO_POP3,
|
||||||
PROTO_IMAP,
|
PROTO_IMAP,
|
||||||
PROTO_FTP
|
PROTO_FTP,
|
||||||
|
PROTO_XMPP,
|
||||||
};
|
};
|
||||||
|
|
||||||
int MAIN(int, char **);
|
int MAIN(int, char **);
|
||||||
@ -664,6 +666,8 @@ int MAIN(int argc, char **argv)
|
|||||||
starttls_proto = PROTO_IMAP;
|
starttls_proto = PROTO_IMAP;
|
||||||
else if (strcmp(*argv,"ftp") == 0)
|
else if (strcmp(*argv,"ftp") == 0)
|
||||||
starttls_proto = PROTO_FTP;
|
starttls_proto = PROTO_FTP;
|
||||||
|
else if (strcmp(*argv, "xmpp") == 0)
|
||||||
|
starttls_proto = PROTO_XMPP;
|
||||||
else
|
else
|
||||||
goto bad;
|
goto bad;
|
||||||
}
|
}
|
||||||
@ -1118,6 +1122,28 @@ SSL_set_tlsext_status_ids(con, ids);
|
|||||||
BIO_printf(sbio,"AUTH TLS\r\n");
|
BIO_printf(sbio,"AUTH TLS\r\n");
|
||||||
BIO_read(sbio,sbuf,BUFSIZZ);
|
BIO_read(sbio,sbuf,BUFSIZZ);
|
||||||
}
|
}
|
||||||
|
if (starttls_proto == PROTO_XMPP)
|
||||||
|
{
|
||||||
|
int seen = 0;
|
||||||
|
BIO_printf(sbio,"<stream:stream "
|
||||||
|
"xmlns:stream='http://etherx.jabber.org/streams' "
|
||||||
|
"xmlns='jabber:client' to='%s' version='1.0'>", host);
|
||||||
|
seen = BIO_read(sbio,mbuf,BUFSIZZ);
|
||||||
|
mbuf[seen] = 0;
|
||||||
|
while (!strstr(mbuf, "<starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'"))
|
||||||
|
{
|
||||||
|
if (strstr(mbuf, "/stream:features>"))
|
||||||
|
goto shut;
|
||||||
|
seen = BIO_read(sbio,mbuf,BUFSIZZ);
|
||||||
|
mbuf[seen] = 0;
|
||||||
|
}
|
||||||
|
BIO_printf(sbio, "<starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>");
|
||||||
|
seen = BIO_read(sbio,sbuf,BUFSIZZ);
|
||||||
|
sbuf[seen] = 0;
|
||||||
|
if (!strstr(sbuf, "<proceed"))
|
||||||
|
goto shut;
|
||||||
|
mbuf[0] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user