Skip to content

Instantly share code, notes, and snippets.

@phoe
Created August 30, 2018 19:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save phoe/97dea60b07e33552b055c83e782b55ad to your computer and use it in GitHub Desktop.
Save phoe/97dea60b07e33552b055c83e782b55ad to your computer and use it in GitHub Desktop.
Connect to Furcadia with STARTTLS
(defun ssl-connect () ;; this is a god damn hack
(let* ((socket (usocket:socket-connect "lightbringer.furcadia.com" 80))
(stream (usocket:socket-stream socket)))
(sleep 1)
(loop while (listen stream)
for line = (read-line stream nil stream)
until (eq line stream)
do (format t "S> ~A~%" line))
(format t "C> ~A~%" "starttls")
(format stream "starttls~C~C" #\Return #\Linefeed)
(force-output stream)
(format t "S> ~A~%" (read-line stream))
(cl+ssl:make-ssl-client-stream stream
:verify nil ;; until we find the X509 public cert
)))
@phoe
Copy link
Author

phoe commented Aug 30, 2018

(defun try-ssl ()
  (let* ((socket (usocket:socket-connect "lightbringer.furcadia.com" 80))
         (stream (usocket:socket-stream socket)))
    (unwind-protect
         (progn (sleep 1)
                (loop while (listen stream)
                      for line = (read-line stream nil stream)
                      until (eq line stream)
                      do (format t "S> ~A~%" line))
                (format t "C> ~A~%" "starttls")
                (format stream "starttls~C~C" #\Return #\Linefeed)
                (force-output stream)
                (format t "S> ~A~%" (read-line stream))
                (let ((client (cl+ssl:make-ssl-client-stream stream :verify nil)))
                  client))
      (usocket:socket-close socket))))

@phoe
Copy link
Author

phoe commented Aug 30, 2018

-----BEGIN CERTIFICATE-----
MIIFUTCCBDmgAwIBAgIQSlrncaBdkN97VHiNuwOJ8jANBgkqhkiG9w0BAQsFADCB
kDELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxNjA0BgNV
BAMTLUNPTU9ETyBSU0EgRG9tYWluIFZhbGlkYXRpb24gU2VjdXJlIFNlcnZlciBD
QTAeFw0xNjA3MzEwMDAwMDBaFw0xNzA4MjYyMzU5NTlaMFsxITAfBgNVBAsTGERv
bWFpbiBDb250cm9sIFZhbGlkYXRlZDEdMBsGA1UECxMUUG9zaXRpdmVTU0wgV2ls
ZGNhcmQxFzAVBgNVBAMMDiouZnVyY2FkaWEuY29tMIIBIjANBgkqhkiG9w0BAQEF
AAOCAQ8AMIIBCgKCAQEA79nM1cB0Hj4/108Za7YSW3GCyMuzFvJdkgUuN8OyFWBs
wNdioKwi5VN2I8WvlGOfNwK40eq8SzRCYt/DgRqd4/KkKNCbAfMymfSgtKfVJL89
wMO5i2odtyQUZiTbK2oCQn8WsvoNRmpTCnXs2o0Pl+Ld/9XHjRirxC1tDRn75/ig
FAhSOLfGf8E1qO3iBQI6EFWvsh3O0ayBuFkeunvwY15V+Nljf6OOLY5M716UYcpM
8pE61VqYmgjZxg+vOpe3ARsbp0aVc8xF2cMDLshrCJMtmpEWtThQRomkqsobJMhQ
sEdgZ3MbJL1d1L6tMGcMQHeQ+eCVsATvD63kLDRH9QIDAQABo4IB2TCCAdUwHwYD
VR0jBBgwFoAUkK9qOpRaC9iQ6hJWc99DtDoo2ucwHQYDVR0OBBYEFAAuvxUrCL1j
HmwSZRTT7THeX9vaMA4GA1UdDwEB/wQEAwIFoDAMBgNVHRMBAf8EAjAAMB0GA1Ud
JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBPBgNVHSAESDBGMDoGCysGAQQBsjEB
AgIHMCswKQYIKwYBBQUHAgEWHWh0dHBzOi8vc2VjdXJlLmNvbW9kby5jb20vQ1BT
MAgGBmeBDAECATBUBgNVHR8ETTBLMEmgR6BFhkNodHRwOi8vY3JsLmNvbW9kb2Nh
LmNvbS9DT01PRE9SU0FEb21haW5WYWxpZGF0aW9uU2VjdXJlU2VydmVyQ0EuY3Js
MIGFBggrBgEFBQcBAQR5MHcwTwYIKwYBBQUHMAKGQ2h0dHA6Ly9jcnQuY29tb2Rv
Y2EuY29tL0NPTU9ET1JTQURvbWFpblZhbGlkYXRpb25TZWN1cmVTZXJ2ZXJDQS5j
cnQwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmNvbW9kb2NhLmNvbTAnBgNVHREE
IDAegg4qLmZ1cmNhZGlhLmNvbYIMZnVyY2FkaWEuY29tMA0GCSqGSIb3DQEBCwUA
A4IBAQBDTHCdozk09EYODuGazPBRJyk1Ws+bXov+iOQW+139hRhzDKWtDkusoknP
XmWnRws/InAVU+D62fa4oADW/y2qYr/HDvm8ZlYQE7pP7Iq+KldP7u7OCErovNlF
zOvs80oAfXV4sjrztT1fCaPbyUqBCteT+iMpnakXjSqASz86359UlxKlBWrVL+DY
3Imww8ZA68h6UPH8hwTWkoAH845usU8k3i5E/UEcH/3fZsYZ1aVR1PZlqZ8X1vQq
Qc1E53rjY74+LFNvajCtTE4Yzo3gWPY/Es+tLu9ODlgOyA7OOdfo21rtcmmDpIt0
WaB/+OEdOuvFJxl9P8h/FKbZOfdK
-----END CERTIFICATE-----

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment