370919 | 2002-03-20 | Martin Nilsson | | #pike __REAL_VERSION__
|
c5d9a9 | 2011-11-05 | Martin Nilsson | | |
e200aa | 1997-04-18 | Niels Möller | | * dummy https server
|
33ef43 | 1997-03-13 | Niels Möller | | */
|
f5bb03 | 2001-09-17 | Martin Nilsson | |
|
33ef43 | 1997-03-13 | Niels Möller | | #define PORT 25678
|
787114 | 2013-08-01 | Martin Nilsson | | #ifdef SSL3_DEBUG
#define SSL3_DEBUG_MSG(X ...) werror(X)
#else /*! SSL3_DEBUG */
#define SSL3_DEBUG_MSG(X ...)
#endif /* SSL3_DEBUG */
|
2b3fe2 | 2004-02-29 | Martin Nilsson | | #if constant(SSL.Cipher.CipherAlgorithm)
|
33ef43 | 1997-03-13 | Niels Möller | | import Stdio;
|
d51db5 | 2004-04-20 | Martin Nilsson | | inherit SSL.sslport;
|
33ef43 | 1997-03-13 | Niels Möller | |
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");
class conn {
import Stdio;
object sslfile;
string message = "<html><head><title>SSL-3 server</title></head>\n"
"<body><h1>This is a minimal SSL-3 http server</h1>\n"
"<hr><it>/nisse</it></body></html>\n";
int index = 0;
|
5f22e3 | 1997-03-17 | Niels Möller | | void write_callback()
|
33ef43 | 1997-03-13 | Niels Möller | | {
|
ead972 | 2003-01-20 | Martin Nilsson | | if (index < sizeof(message))
|
33ef43 | 1997-03-13 | Niels Möller | | {
int written = sslfile->write(message[index..]);
if (written > 0)
index += written;
else
sslfile->close();
}
|
ead972 | 2003-01-20 | Martin Nilsson | | if (index == sizeof(message))
|
33ef43 | 1997-03-13 | Niels Möller | | sslfile->close();
}
void read_callback(mixed id, string data)
{
|
787114 | 2013-08-01 | Martin Nilsson | | SSL3_DEBUG_MSG("Received: '" + data + "'\n");
|
5f22e3 | 1997-03-17 | Niels Möller | | sslfile->set_write_callback(write_callback);
|
33ef43 | 1997-03-13 | Niels Möller | | }
|
b55e17 | 2010-12-26 | Henrik Grubbström (Grubba) | | protected void create(object f)
|
33ef43 | 1997-03-13 | Niels Möller | | {
sslfile = f;
|
5f22e3 | 1997-03-17 | Niels Möller | | sslfile->set_nonblocking(read_callback, 0, 0);
|
33ef43 | 1997-03-13 | Niels Möller | | }
}
class no_random {
|
34adca | 2004-02-03 | Martin Nilsson | | object arcfour = Crypto.Arcfour();
|
33ef43 | 1997-03-13 | Niels Möller | |
|
b55e17 | 2010-12-26 | Henrik Grubbström (Grubba) | | protected void create(string|void secret)
|
33ef43 | 1997-03-13 | Niels Möller | | {
if (!secret)
secret = sprintf("Foo!%4c", time());
|
77295a | 2004-02-06 | Henrik Grubbström (Grubba) | | arcfour->set_encrypt_key(Crypto.SHA1->hash(secret));
|
33ef43 | 1997-03-13 | Niels Möller | | }
string read(int size)
{
|
ad7874 | 2000-03-28 | Henrik Grubbström (Grubba) | | return arcfour->crypt(replace(allocate(size), 0, "\021") * "");
|
33ef43 | 1997-03-13 | Niels Möller | | }
}
void my_accept_callback(object f)
{
werror("Accept!\n");
|
5f22e3 | 1997-03-17 | Niels Möller | | conn(accept());
|
33ef43 | 1997-03-13 | Niels Möller | | }
int main()
{
|
787114 | 2013-08-01 | Martin Nilsson | | SSL3_DEBUG_MSG("Cert: '%s'\n", Crypto.string_to_hex(my_certificate));
SSL3_DEBUG_MSG("Key: '%s'\n", Crypto.string_to_hex(my_key));
|
62c4d5 | 1999-03-17 | Henrik Grubbström (Grubba) | | #if 0
|
6ecec9 | 1997-03-15 | Niels Möller | | array key = SSL.asn1.ber_decode(my_key)->get_asn1()[1];
|
787114 | 2013-08-01 | Martin Nilsson | | SSL3_DEBUG_MSG("Decoded key: %O\n", key);
|
cfc83a | 1997-03-15 | Niels Möller | | 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];
|
33ef43 | 1997-03-13 | Niels Möller | |
|
624414 | 2003-01-27 | Martin Nilsson | | werror("n = %s\np = %s\nq = %s\npq = %s\n",
n->digits(), p->digits(), q->digits(), (p*q)->digits());
|
8dcd74 | 1997-03-15 | Niels Möller | |
|
34adca | 2004-02-03 | Martin Nilsson | | rsa = Crypto.RSA();
|
33ef43 | 1997-03-13 | Niels Möller | | rsa->set_public_key(n, e);
rsa->set_private_key(d);
|
62c4d5 | 1999-03-17 | Henrik Grubbström (Grubba) | | #else /* !0 */
rsa = Standards.PKCS.RSA.parse_private_key(my_key);
#endif /* 0 */
|
33ef43 | 1997-03-13 | Niels Möller | | certificates = ({ my_certificate });
random = no_random()->read;
werror("Starting\n");
|
cfc83a | 1997-03-15 | Niels Möller | | if (!bind(PORT, my_accept_callback))
{
perror("");
return 17;
}
else
return -17;
|
33ef43 | 1997-03-13 | Niels Möller | | }
|
6ecec9 | 1997-03-15 | Niels Möller | |
|
b55e17 | 2010-12-26 | Henrik Grubbström (Grubba) | | protected void create()
|
6ecec9 | 1997-03-15 | Niels Möller | | {
|
787114 | 2013-08-01 | Martin Nilsson | | SSL3_DEBUG_MSG("https->create\n");
|
6ecec9 | 1997-03-15 | Niels Möller | | sslport::create();
}
|
aa77d5 | 2001-04-18 | Pär Svensson | |
|
acd15d | 2010-07-25 | Marcus Comstedt | | #else // constant(SSL.Cipher.CipherAlgorithm)
constant this_program_does_not_exist = 1;
|
2b3fe2 | 2004-02-29 | Martin Nilsson | | #endif
|