source: protocols/msn/passport.h @ 99f929c

Last change on this file since 99f929c was 9186d15, checked in by Wilmer van der Gaast <wilmer@…>, at 2008-02-17T11:26:44Z

Automatically truncate MSN passports to 16 characters because that's the
maximum supported by MSN and giving a longer password will make the
authentication fail.

  • Property mode set to 100644
File size: 4.5 KB
Line 
1/* passport.h
2 *
3 * Functions to login to Microsoft Passport service for Messenger
4 * Copyright (C) 2004-2008 Wilmer van der Gaast <wilmer@gaast.net>
5 *
6 * This program is free software; you can redistribute it and/or modify             
7 * it under the terms of the GNU General Public License version 2                   
8 * as published by the Free Software Foundation                                     
9 *                                                                                   
10 * This program is distributed in the hope that is will be useful,                 
11 * bit WITHOU ANY WARRANTY; without even the implied warranty of                   
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                   
13 * GNU General Public License for more details.                                     
14 *                                                                                   
15 * You should have received a copy of the GNU General Public License               
16 * along with this program; if not, write to the Free Software                     
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA         
18 */
19
20/* Thanks to http://msnpiki.msnfanatic.com/index.php/MSNP13:SOAPTweener
21   for the specs! */
22
23#ifndef __PASSPORT_H__
24#define __PASSPORT_H__
25
26#include <stdio.h>
27#include <stdlib.h>
28#include <string.h>
29#include <sys/types.h>
30#ifndef _WIN32
31#include <sys/socket.h>
32#include <netinet/in.h>
33#include <arpa/inet.h>
34#include <unistd.h>
35#endif
36#include "nogaim.h"
37
38#define MAX_PASSPORT_PWLEN 16
39
40struct msn_auth_data
41{
42        char *url;
43        int ttl;
44       
45        char *username;
46        char *password;
47        char *cookie;
48       
49        /* The end result, the only thing we'll really be interested in
50           once finished. */
51        char *token;
52        char *error; /* Yeah, or that... */
53       
54        void (*callback)( struct msn_auth_data *mad );
55        gpointer data;
56};
57
58#define SOAP_AUTHENTICATION_URL "https://loginnet.passport.com/RST.srf"
59
60#define SOAP_AUTHENTICATION_REQUEST \
61"POST %s HTTP/1.0\r\n" \
62"Accept: text/*\r\n" \
63"User-Agent: BitlBee " BITLBEE_VERSION "\r\n" \
64"Host: %s\r\n" \
65"Content-Length: %d\r\n" \
66"Cache-Control: no-cache\r\n" \
67"\r\n" \
68"%s"
69
70#define SOAP_AUTHENTICATION_PAYLOAD \
71"<?xml version=\"1.0\" encoding=\"UTF-8\"?>" \
72"<Envelope xmlns=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:wsse=\"http://schemas.xmlsoap.org/ws/2003/06/secext\" xmlns:saml=\"urn:oasis:names:tc:SAML:1.0:assertion\" xmlns:wsp=\"http://schemas.xmlsoap.org/ws/2002/12/policy\" xmlns:wsu=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd\" xmlns:wsa=\"http://schemas.xmlsoap.org/ws/2004/03/addressing\" xmlns:wssc=\"http://schemas.xmlsoap.org/ws/2004/04/sc\" xmlns:wst=\"http://schemas.xmlsoap.org/ws/2004/04/trust\">" \
73  "<Header>" \
74    "<ps:AuthInfo xmlns:ps=\"http://schemas.microsoft.com/Passport/SoapServices/PPCRL\" Id=\"PPAuthInfo\">" \
75      "<ps:HostingApp>{7108E71A-9926-4FCB-BCC9-9A9D3F32E423}</ps:HostingApp>" \
76      "<ps:BinaryVersion>4</ps:BinaryVersion>" \
77      "<ps:UIVersion>1</ps:UIVersion>" \
78      "<ps:Cookies></ps:Cookies>" \
79      "<ps:RequestParams>AQAAAAIAAABsYwQAAAAzMDg0</ps:RequestParams>" \
80    "</ps:AuthInfo>" \
81    "<wsse:Security>" \
82       "<wsse:UsernameToken Id=\"user\">" \
83         "<wsse:Username>%s</wsse:Username>" \
84         "<wsse:Password>%s</wsse:Password>" \
85       "</wsse:UsernameToken>" \
86    "</wsse:Security>" \
87  "</Header>" \
88  "<Body>" \
89    "<ps:RequestMultipleSecurityTokens xmlns:ps=\"http://schemas.microsoft.com/Passport/SoapServices/PPCRL\" Id=\"RSTS\">" \
90      "<wst:RequestSecurityToken Id=\"RST0\">" \
91        "<wst:RequestType>http://schemas.xmlsoap.org/ws/2004/04/security/trust/Issue</wst:RequestType>" \
92        "<wsp:AppliesTo>" \
93          "<wsa:EndpointReference>" \
94            "<wsa:Address>http://Passport.NET/tb</wsa:Address>" \
95          "</wsa:EndpointReference>" \
96        "</wsp:AppliesTo>" \
97      "</wst:RequestSecurityToken>" \
98      "<wst:RequestSecurityToken Id=\"RST1\">" \
99       "<wst:RequestType>http://schemas.xmlsoap.org/ws/2004/04/security/trust/Issue</wst:RequestType>" \
100        "<wsp:AppliesTo>" \
101          "<wsa:EndpointReference>" \
102            "<wsa:Address>messenger.msn.com</wsa:Address>" \
103          "</wsa:EndpointReference>" \
104        "</wsp:AppliesTo>" \
105        "<wsse:PolicyReference URI=\"?%s\"></wsse:PolicyReference>" \
106      "</wst:RequestSecurityToken>" \
107    "</ps:RequestMultipleSecurityTokens>" \
108  "</Body>" \
109"</Envelope>"
110
111int passport_get_token( gpointer func, gpointer data, char *username, char *password, char *cookie );
112
113#endif /* __PASSPORT_H__ */
Note: See TracBrowser for help on using the repository browser.