6343a3 | 2002-11-22 | H. William Welliver III | | #pike __REAL_VERSION__
|
2b3fe2 | 2004-02-29 | Martin Nilsson | | #if constant(SSL.Cipher.CipherAlgorithm)
|
6343a3 | 2002-11-22 | H. William Welliver III | | import ".";
|
3d13aa | 2002-11-27 | Martin Nilsson | | MySSLPort port;
|
6343a3 | 2002-11-22 | H. William Welliver III | | int portno;
string|int(0..0) interface;
function(Request:void) callback;
program request_program=Request;
|
3d13aa | 2002-11-27 | Martin Nilsson | |
|
6343a3 | 2002-11-22 | H. William Welliver III | |
|
f5553d | 2002-11-26 | H. William Welliver III | |
|
3d13aa | 2002-11-27 | Martin Nilsson | |
|
f5553d | 2002-11-26 | H. William Welliver III | |
|
3d13aa | 2002-11-27 | Martin Nilsson | |
|
f5553d | 2002-11-26 | H. William Welliver III | |
|
3d13aa | 2002-11-27 | Martin Nilsson | |
|
f5553d | 2002-11-26 | H. William Welliver III | |
|
3d13aa | 2002-11-27 | Martin Nilsson | |
|
f5553d | 2002-11-26 | H. William Welliver III | |
|
3f76cd | 2004-01-15 | H. William Welliver III | |
|
6343a3 | 2002-11-22 | H. William Welliver III | | void create(function(Request:void) _callback,
void|int _portno,
|
3f76cd | 2004-01-15 | H. William Welliver III | | void|string _interface, void|string key, void|string|array certificate)
|
6343a3 | 2002-11-22 | H. William Welliver III | | {
portno=_portno;
|
f5553d | 2002-11-26 | H. William Welliver III | | if (!portno) portno=443;
|
6343a3 | 2002-11-22 | H. William Welliver III | |
callback=_callback;
interface=_interface;
|
3d13aa | 2002-11-27 | Martin Nilsson | | port=MySSLPort();
|
6343a3 | 2002-11-22 | H. William Welliver III | | port->set_default_keycert();
if(key)
port->set_key(key);
if(certificate)
port->set_certificate(certificate);
if (!port->bind(portno,new_connection,interface))
error("HTTP.Server.SSLPort: failed to bind port %s%d: %s\n",
interface?interface+":":"",
portno,strerror(port->errno()));
}
|
3d13aa | 2002-11-27 | Martin Nilsson | |
|
6343a3 | 2002-11-22 | H. William Welliver III | | void close()
{
destruct(port);
port=0;
}
void destroy() { close(); }
|
3d13aa | 2002-11-27 | Martin Nilsson | |
|
6343a3 | 2002-11-22 | H. William Welliver III | | static void new_connection()
{
|
ef5547 | 2004-01-16 | H. William Welliver III | | SSL.sslfile fd=port->accept();
|
6343a3 | 2002-11-22 | H. William Welliver III | | Request r=request_program();
|
563bd7 | 2004-01-11 | Martin Nilsson | | r->attach_fd(fd,this,callback);
|
6343a3 | 2002-11-22 | H. William Welliver III | | }
|
3d13aa | 2002-11-27 | Martin Nilsson | |
class MySSLPort
|
6343a3 | 2002-11-22 | H. William Welliver III | | {
#pike __REAL_VERSION__
import Stdio;
inherit SSL.sslport;
string my_certificate = MIME.decode_base64(
"MIIBxDCCAW4CAQAwDQYJKoZIhvcNAQEEBQAwbTELMAkGA1UEBhMCREUxEzARBgNV\n"
"BAgTClRodWVyaW5nZW4xEDAOBgNVBAcTB0lsbWVuYXUxEzARBgNVBAoTClRVIEls\n"
"bWVuYXUxDDAKBgNVBAsTA1BNSTEUMBIGA1UEAxMLZGVtbyBzZXJ2ZXIwHhcNOTYw\n"
"NDMwMDUzNjU4WhcNOTYwNTMwMDUzNjU5WjBtMQswCQYDVQQGEwJERTETMBEGA1UE\n"
"CBMKVGh1ZXJpbmdlbjEQMA4GA1UEBxMHSWxtZW5hdTETMBEGA1UEChMKVFUgSWxt\n"
"ZW5hdTEMMAoGA1UECxMDUE1JMRQwEgYDVQQDEwtkZW1vIHNlcnZlcjBcMA0GCSqG\n"
"SIb3DQEBAQUAA0sAMEgCQQDBB6T7bGJhRhRSpDESxk6FKh3iKKrpn4KcDtFM0W6s\n"
"16QSPz6J0Z2a00lDxudwhJfQFkarJ2w44Gdl/8b+de37AgMBAAEwDQYJKoZIhvcN\n"
"AQEEBQADQQB5O9VOLqt28vjLBuSP1De92uAiLURwg41idH8qXxmylD39UE/YtHnf\n"
"bC6QS0pqetnZpQj1yEsjRTeVfuRfANGw\n");
string my_key = MIME.decode_base64(
"MIIBOwIBAAJBAMEHpPtsYmFGFFKkMRLGToUqHeIoqumfgpwO0UzRbqzXpBI/PonR\n"
"nZrTSUPG53CEl9AWRqsnbDjgZ2X/xv517fsCAwEAAQJBALzUbJmkQm1kL9dUVclH\n"
"A2MTe15VaDTY3N0rRaZ/LmSXb3laiOgBnrFBCz+VRIi88go3wQ3PKLD8eQ5to+SB\n"
"oWECIQDrmq//unoW1+/+D3JQMGC1KT4HJprhfxBsEoNrmyIhSwIhANG9c0bdpJse\n"
"VJA0y6nxLeB9pyoGWNZrAB4636jTOigRAiBhLQlAqhJnT6N+H7LfnkSVFDCwVFz3\n"
"eygz2yL3hCH8pwIhAKE6vEHuodmoYCMWorT5tGWM0hLpHCN/z3Btm38BGQSxAiAz\n"
"jwsOclu4b+H8zopfzpAaoB8xMcbs0heN+GNNI0h/dQ==\n");
|
3d13aa | 2002-11-27 | Martin Nilsson | |
|
6343a3 | 2002-11-22 | H. William Welliver III | | void set_default_keycert()
{
set_key(my_key);
set_certificate(my_certificate);
}
|
3d13aa | 2002-11-27 | Martin Nilsson | |
|
f5553d | 2002-11-26 | H. William Welliver III | | void set_key(string skey)
|
6343a3 | 2002-11-22 | H. William Welliver III | | {
#if 0
|
f5553d | 2002-11-26 | H. William Welliver III | | array key = SSL.asn1.ber_decode(skey)->get_asn1()[1];
|
6343a3 | 2002-11-22 | H. William Welliver III | | object n = key[1][1];
object e = key[2][1];
object d = key[3][1];
object p = key[4][1];
object q = key[5][1];
|
34adca | 2004-02-03 | Martin Nilsson | | rsa = Crypto.RSA();
|
6343a3 | 2002-11-22 | H. William Welliver III | | rsa->set_public_key(n, e);
rsa->set_private_key(d);
#else /* !0 */
|
f5553d | 2002-11-26 | H. William Welliver III | | rsa = Standards.PKCS.RSA.parse_private_key(skey);
|
6343a3 | 2002-11-22 | H. William Welliver III | | #endif /* 0 */
}
|
3d13aa | 2002-11-27 | Martin Nilsson | |
|
3f76cd | 2004-01-15 | H. William Welliver III | | void set_certificate(string|array certificate)
|
6343a3 | 2002-11-22 | H. William Welliver III | | {
|
3f76cd | 2004-01-15 | H. William Welliver III | | if(arrayp(certificate))
certificates = certificate;
else
|
6343a3 | 2002-11-22 | H. William Welliver III | | certificates = ({ certificate });
}
void create()
{
sslport::create();
|
f90e3c | 2004-02-03 | Martin Nilsson | | random = Crypto.Random.random_string;
|
6343a3 | 2002-11-22 | H. William Welliver III | | }
}
|
2b3fe2 | 2004-02-29 | Martin Nilsson | |
#endif
|