From 7ebbbaaeef0ded0f39b8bf863ee7fd324b19c9f9 Mon Sep 17 00:00:00 2001 From: k clair Date: Tue, 9 Oct 2012 12:13:13 -0700 Subject: Add source files for python-gnutls version 1.1.9 --- python-gnutls-1.1.9/examples/README | 21 +++++++ python-gnutls-1.1.9/examples/certs/ca.pem | 42 +++++++++++++ python-gnutls-1.1.9/examples/certs/crl.pem | 19 ++++++ python-gnutls-1.1.9/examples/certs/revoked.crt | 34 +++++++++++ python-gnutls-1.1.9/examples/certs/revoked.key | 15 +++++ python-gnutls-1.1.9/examples/certs/valid.crt | 34 +++++++++++ python-gnutls-1.1.9/examples/certs/valid.key | 15 +++++ python-gnutls-1.1.9/examples/client.py | 32 ++++++++++ python-gnutls-1.1.9/examples/crypto.py | 84 ++++++++++++++++++++++++++ python-gnutls-1.1.9/examples/server.py | 64 ++++++++++++++++++++ python-gnutls-1.1.9/examples/twisted-client.py | 49 +++++++++++++++ python-gnutls-1.1.9/examples/twisted-server.py | 59 ++++++++++++++++++ 12 files changed, 468 insertions(+) create mode 100644 python-gnutls-1.1.9/examples/README create mode 100644 python-gnutls-1.1.9/examples/certs/ca.pem create mode 100644 python-gnutls-1.1.9/examples/certs/crl.pem create mode 100644 python-gnutls-1.1.9/examples/certs/revoked.crt create mode 100644 python-gnutls-1.1.9/examples/certs/revoked.key create mode 100644 python-gnutls-1.1.9/examples/certs/valid.crt create mode 100644 python-gnutls-1.1.9/examples/certs/valid.key create mode 100755 python-gnutls-1.1.9/examples/client.py create mode 100755 python-gnutls-1.1.9/examples/crypto.py create mode 100755 python-gnutls-1.1.9/examples/server.py create mode 100755 python-gnutls-1.1.9/examples/twisted-client.py create mode 100755 python-gnutls-1.1.9/examples/twisted-server.py (limited to 'python-gnutls-1.1.9/examples') diff --git a/python-gnutls-1.1.9/examples/README b/python-gnutls-1.1.9/examples/README new file mode 100644 index 0000000..343359f --- /dev/null +++ b/python-gnutls-1.1.9/examples/README @@ -0,0 +1,21 @@ + +This directory holds some examples of using python-gnutls. + +- An example of writing a synchronous client and server using the + ClientSession and ServerSession classes from python-gnutls is + given in client.py and server.py + +- An example of writing an asynchronous client and server using the + python-gnutls twisted interface is given in twisted-client.py and + twisted-server.py + +- An example of working with X509 certificates and their attributes + as well as using a CRL to check their revocation is in crypto.py + + + +To run the examples without installing python-gnutls, run the following +command prior to trying the examples (after python-gnutls was built): + +export PYTHONPATH=/path/to/python-gnutls + diff --git a/python-gnutls-1.1.9/examples/certs/ca.pem b/python-gnutls-1.1.9/examples/certs/ca.pem new file mode 100644 index 0000000..6b81c20 --- /dev/null +++ b/python-gnutls-1.1.9/examples/certs/ca.pem @@ -0,0 +1,42 @@ +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- diff --git a/python-gnutls-1.1.9/examples/certs/crl.pem b/python-gnutls-1.1.9/examples/certs/crl.pem new file mode 100644 index 0000000..d1eb221 --- /dev/null +++ b/python-gnutls-1.1.9/examples/certs/crl.pem @@ -0,0 +1,19 @@ +-----BEGIN X509 CRL----- +MIIDGjCCAQICAQEwDQYJKoZIhvcNAQEFBQAwgasxCzAJBgNVBAYTAk5MMRYwFAYD +VQQIEw1Ob29yZC1Ib29sYW5kMRAwDgYDVQQHEwdIYWFybGVtMRQwEgYDVQQKEwtB +RyBQcm9qZWN0czEUMBIGA1UECxMLRGV2ZWxvcG1lbnQxIDAeBgNVBAMTF0FHIFBy +b2plY3RzIERldmVsb3BtZW50MSQwIgYJKoZIhvcNAQkBFhVkZXZlbEBhZy1wcm9q +ZWN0cy5jb20XDTA3MDQwMzEyMjMwNFoXDTE3MDMzMTEyMjMwNFowIjAgAgECFw0w +NzA0MDMxMjIxNTlaMAwwCgYDVR0VBAMKAQEwDQYJKoZIhvcNAQEFBQADggIBAIoF +8pCAPnWt1kpao/TXkR80/ZOyrdKRAyo+hYejUJw41lxsWey4NUEwbWp9pnCWsL3s +DMrLt948PRzIqMhI/9zXhl4+ipuuWSTJAb4usMh3CG0vJsexzE1e8SMAnoJdE3Fu +5M2xCmd8loCaq3/oA05Ovv8Kc1KwTBiJUNQNvVEMhw9Wsn3mrFk2mWNlLa0vnANI +DlO9HFZJOrw0ipco03ACDxTGGQiNxw6Yjw+OCqMaV3AAE9GvE8VXy3PgeaDgvffM +9e71+6TC5j6S0S5c8P83NQpAAbYatQh5/McPd8b8o9ailj/rGt1krYxiLSUb12NE +yy6EmybdLJmat9nvMAlpbxtzdRQdX0E9aDQaK4J388OkMiT6P83ykEKT7qCloEk6 +vkAebqCexA/dqv+7+AsNe+h18iHB+aZxv0xU3NS1Te4X902AUj2n4UGtiOUELMgJ +leEN8Nh5R9a8/OsXQVLqqeMg6QmTjP3Y1PYNv4GSnJNAYMhEUPz19tC0E5kR4cLQ +Y7csgROnfo5EX7byeQK1PjSGTMOP5KMgdH1YpxSg43uuTk12ZJEqKYeIXa50KYCA +6OurC+2fOWQQogRnRlx94lOInfKeTlN7F09sMjBzIA+m9sKahKsZ00rHxuvcjP/e +ZN+qO9H56VmfcOefMRLRPSPwuwtQdR3udI/QyL4D +-----END X509 CRL----- diff --git a/python-gnutls-1.1.9/examples/certs/revoked.crt b/python-gnutls-1.1.9/examples/certs/revoked.crt new file mode 100644 index 0000000..d41bd3a --- /dev/null +++ b/python-gnutls-1.1.9/examples/certs/revoked.crt @@ -0,0 +1,34 @@ +-----BEGIN CERTIFICATE----- +MIIF4DCCA8igAwIBAgIBAjANBgkqhkiG9w0BAQUFADCBqzELMAkGA1UEBhMCTkwx +FjAUBgNVBAgTDU5vb3JkLUhvb2xhbmQxEDAOBgNVBAcTB0hhYXJsZW0xFDASBgNV +BAoTC0FHIFByb2plY3RzMRQwEgYDVQQLEwtEZXZlbG9wbWVudDEgMB4GA1UEAxMX +QUcgUHJvamVjdHMgRGV2ZWxvcG1lbnQxJDAiBgkqhkiG9w0BCQEWFWRldmVsQGFn +LXByb2plY3RzLmNvbTAeFw0wNzA0MDMxMjExMzFaFw0xNzAzMzExMjExMzFaMIGm +MQswCQYDVQQGEwJOTDEWMBQGA1UECBMNTm9vcmQtSG9vbGFuZDEQMA4GA1UEBxMH +SGFhcmxlbTEUMBIGA1UEChMLQUcgUHJvamVjdHMxFDASBgNVBAsTC0RldmVsb3Bt +ZW50MRwwGgYDVQQDExNSZXZva2VkIGNlcnRpZmljYXRlMSMwIQYJKoZIhvcNAQkB +FhR0ZXN0QGFnLXByb2plY3RzLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkC +gYEA+2k1ZYLmqLlogixTwVfZUw4WvfWjWXfTH0MJx4WynG7Oc7iLUw9KOCJaxOY+ +utE2etfRlVj4/SQ5JjgmkXuHfuaKpXXpWz7+na+YZqTcMs1cajGQ8sfdzQYKTlKw +vyHjAxDPCxG7HtXubiwkqqimABpD4leloT/cQNBfmNGCGU0CAwEAAaOCAZQwggGQ +MAkGA1UdEwQCMAAwEQYJYIZIAYb4QgEBBAQDAgZAMCsGCWCGSAGG+EIBDQQeFhxU +aW55Q0EgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQWBBSuCSZulRupp+T6 +AuKl/0OYvpPBbzCB4AYDVR0jBIHYMIHVgBSWd0/MJQO1y0Mzp9ee96IBwwg4+qGB +saSBrjCBqzELMAkGA1UEBhMCTkwxFjAUBgNVBAgTDU5vb3JkLUhvb2xhbmQxEDAO +BgNVBAcTB0hhYXJsZW0xFDASBgNVBAoTC0FHIFByb2plY3RzMRQwEgYDVQQLEwtE +ZXZlbG9wbWVudDEgMB4GA1UEAxMXQUcgUHJvamVjdHMgRGV2ZWxvcG1lbnQxJDAi +BgkqhkiG9w0BCQEWFWRldmVsQGFnLXByb2plY3RzLmNvbYIJAPV2qch7qoEZMCAG +A1UdEgQZMBeBFWRldmVsQGFnLXByb2plY3RzLmNvbTAfBgNVHREEGDAWgRR0ZXN0 +QGFnLXByb2plY3RzLmNvbTANBgkqhkiG9w0BAQUFAAOCAgEApOy1uTOLlzZX4aMg +hy+k7ginbqRWLgZNSvgbUAs1oIiLxB5DnWr7+S6eOw6ao4xaXAUdffL0RjlI30DQ +hS/nWbHGePG65E2qFIPjnielEORrp5xI5mYbz221Khs9A51r/UIUzCPcRgKzZmpH +K2o0YApw61JWIl7LCsnoBPfOexe5GPJBVJDvOkdrqL/DdH8YrMyPpbawe/q5yh+5 +aYvwdKr9q6RL+WatOXKh4vQ1kcB8g7RGsAG8i2+hUGHTpyE2sJzNnsf/jGYeqPv/ +lTXjWOgKpdoIwjOetwpY0PXnnV4UESTQ9HA54pIv7wrB+Jfj38wD9DTk4YVlKcVc +nSJpNpZvj336G8fdypUOufGLH9KuYMOMv/6KA79gAicFbOsbzbZwDnZ5+zDqZMTx +F/k8+X+ofArJrva0jw8xe6LAwmxwRLVfurVZU1edqCh8LD+oV84V4wlJGYcMDqi5 +EaIXA0oOn1pUQEhnv/yTL6OH/N8BtpyC055Uw/rrU4N/N1umlV1ePdGh6ntyECSY +T8ZAziBUyzdkE3EpHuR15Dx0u3ah7uEBKejxUUYWs2mlEO5nxQCuGrtMSkv5+Y8g +duOXKuAGfQXMOBO8njGEwfInHKEQeeiPeZZMXjm3yuY/zyMSdI7wDgmvZzJhKtuK +4eds2Jp+RGmYDlNnq1ZazlAz3kc= +-----END CERTIFICATE----- diff --git a/python-gnutls-1.1.9/examples/certs/revoked.key b/python-gnutls-1.1.9/examples/certs/revoked.key new file mode 100644 index 0000000..f223826 --- /dev/null +++ b/python-gnutls-1.1.9/examples/certs/revoked.key @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICXgIBAAKBgQD7aTVlguaouWiCLFPBV9lTDha99aNZd9MfQwnHhbKcbs5zuItT +D0o4IlrE5j660TZ619GVWPj9JDkmOCaRe4d+5oqldelbPv6dr5hmpNwyzVxqMZDy +x93NBgpOUrC/IeMDEM8LEbse1e5uLCSqqKYAGkPiV6WhP9xA0F+Y0YIZTQIDAQAB +AoGBANKqwjehjK5tTollo3krp8vUznG2134szhgwEI3EFnrGzvBg/z5GXabUAsNj +O8VHciNVnSVMPLfCFrFT892MaWffkEYwkyrkX+VUZYlRoMeNE/xT4BzPFchHg1rw +I8rwFRWZumHB0AhKzg7N015/cxNar2aIKtU5m833NrN9K3vxAkEA/7yFJLsAuPHT +scqPMXQ0XW/7P74lSFYHtbLOihVr/4myzLqpwuUvL55q1Ixi4AF/UHZ29pLilbDQ +jQIKfT6K9wJBAPurjBJ8E0unfg+UYhx7/ws718uiDqJ7E0nC37RTOO+qyqZF4687 +B0yOIt/MbwDRUQttArLoNIv+nSs7yvzCiNsCQQDEZWjyzlI9tinXTjItzoowf8E6 +MLK9HKSLG6iWTuFDu+H+bBPXQt67+TMdzDpawYuepXuy3Rb50nI2+CxKBu/9AkEA +8/SOizyK18M8h42mrUXlLNaNkG8/EHGNeOrWPs6NWoWMezE0TCBEKwl89MQOthQx +I4pAG3zLswjVAZusYOeSEQJAdHhBRhk8EHgo/rMITeL0sGRH3nT82oPOJIPLDoDQ +1T8aRVTvTtSsBXSadBw+cwmfgl2Z5GCmAmFoRS6bZqZCHQ== +-----END RSA PRIVATE KEY----- diff --git a/python-gnutls-1.1.9/examples/certs/valid.crt b/python-gnutls-1.1.9/examples/certs/valid.crt new file mode 100644 index 0000000..10a3066 --- /dev/null +++ b/python-gnutls-1.1.9/examples/certs/valid.crt @@ -0,0 +1,34 @@ +-----BEGIN CERTIFICATE----- +MIIF3jCCA8agAwIBAgIBATANBgkqhkiG9w0BAQUFADCBqzELMAkGA1UEBhMCTkwx +FjAUBgNVBAgTDU5vb3JkLUhvb2xhbmQxEDAOBgNVBAcTB0hhYXJsZW0xFDASBgNV +BAoTC0FHIFByb2plY3RzMRQwEgYDVQQLEwtEZXZlbG9wbWVudDEgMB4GA1UEAxMX +QUcgUHJvamVjdHMgRGV2ZWxvcG1lbnQxJDAiBgkqhkiG9w0BCQEWFWRldmVsQGFn +LXByb2plY3RzLmNvbTAeFw0wNzA0MDMxMjEwNTFaFw0xNzAzMzExMjEwNTFaMIGk +MQswCQYDVQQGEwJOTDEWMBQGA1UECBMNTm9vcmQtSG9vbGFuZDEQMA4GA1UEBxMH +SGFhcmxlbTEUMBIGA1UEChMLQUcgUHJvamVjdHMxFDASBgNVBAsTC0RldmVsb3Bt +ZW50MRowGAYDVQQDExFWYWxpZCBjZXJ0aWZpY2F0ZTEjMCEGCSqGSIb3DQEJARYU +dGVzdEBhZy1wcm9qZWN0cy5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB +AKYb9BLca4J3yszyRaMC+zvJKheOsROYFN9wIc+EAFO5RUFEFRQ/Ahfw2AmY+1bn +S5K7tMV8J54coHI0ROohskTEXKx1iF+67Krezf3tfUY0zGPhTGaXJ2OkReAmZQvj +a4IhWxBTQBFq1bbpDpOy/DJ24nBEgJoPTULfqGx5IVoJAgMBAAGjggGUMIIBkDAJ +BgNVHRMEAjAAMBEGCWCGSAGG+EIBAQQEAwIGQDArBglghkgBhvhCAQ0EHhYcVGlu +eUNBIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUDN4YV9HDpJrHcbzV +8Ayu0Lymh2AwgeAGA1UdIwSB2DCB1YAUlndPzCUDtctDM6fXnveiAcMIOPqhgbGk +ga4wgasxCzAJBgNVBAYTAk5MMRYwFAYDVQQIEw1Ob29yZC1Ib29sYW5kMRAwDgYD +VQQHEwdIYWFybGVtMRQwEgYDVQQKEwtBRyBQcm9qZWN0czEUMBIGA1UECxMLRGV2 +ZWxvcG1lbnQxIDAeBgNVBAMTF0FHIFByb2plY3RzIERldmVsb3BtZW50MSQwIgYJ +KoZIhvcNAQkBFhVkZXZlbEBhZy1wcm9qZWN0cy5jb22CCQD1dqnIe6qBGTAgBgNV +HRIEGTAXgRVkZXZlbEBhZy1wcm9qZWN0cy5jb20wHwYDVR0RBBgwFoEUdGVzdEBh +Zy1wcm9qZWN0cy5jb20wDQYJKoZIhvcNAQEFBQADggIBABCal7eKH7K5UmMt2CRh +xjLdpLfo2d83dCSvAerabfyLYuSE4qg4pP6x1P3vBGFVuMc504AF+TwZIOLWQ47U +b0NbzNi49NGPKjCUsjZiAhGE9SBjiac2xZXUW7UytkVlboyeqKn3Tc9rMT+THd/y +wJj5Nqz2vcAcJ1LSpKs/c+NFE3KX+gdaiQtkgUZfkGBz2N6gvXn6r6w1sY/j8Gdw +wuVXHv2pbM2zkhUFIFJbuT/3AEQlM2sqk7fVEHlm9cLOtzHsoBVo0pnSw/8mcl5J +Z6oss51eR8zLVBhU3XrKTbammHv8uZ2vawRKuUR2Ot2RfINAPdwiW6r61ugBj/ux +HGTmY8uO1Zx8dpNS/cC+HtjTKqD2zaBa6dX+6USf+4jgrVismMGAtUCX7IlwjNYV +/p5TiwovA5p+xC2KWb9d0vTr8pGHV6vyDaE5Ba0jLfEjkT6b4MbZmWanUDUkYHuy +P31NTgUPrIiU83bKfBlQZbS5YsyspdJQBzuGuon68Bw/ULpfERdRlipeTpkDhUn3 +gAAS0iLwgPybw8d9/d16nKPCdtSjDBvOUmMLPc0FqggvSGeFkkDn5hiN6eJ4DgTA +Ze5X9kpc57dV2SvA1eqPCkmA8pZfPWaJtwf5AiiOzhGUAAx4+4hXyRWULIJXNCcD +175SpToDKAei7ZSJfaiqPU/T +-----END CERTIFICATE----- diff --git a/python-gnutls-1.1.9/examples/certs/valid.key b/python-gnutls-1.1.9/examples/certs/valid.key new file mode 100644 index 0000000..694caed --- /dev/null +++ b/python-gnutls-1.1.9/examples/certs/valid.key @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICWwIBAAKBgQCmG/QS3GuCd8rM8kWjAvs7ySoXjrETmBTfcCHPhABTuUVBRBUU +PwIX8NgJmPtW50uSu7TFfCeeHKByNETqIbJExFysdYhfuuyq3s397X1GNMxj4Uxm +lydjpEXgJmUL42uCIVsQU0ARatW26Q6TsvwyduJwRICaD01C36hseSFaCQIDAQAB +AoGAC6qs8uIuXuSBBvIBOBjOgn13il4IS+MDnEno5gVUbIz3s0TP4jMmt32//rSS ++qCWK0EpyjEVK0LBdiP7ryIcviC3EMU33SErqSPdpJN/UOYePn5CX45d30OyDL/J +1ai4AsQbG9twe5cOJae8ZLa76O4Q82MTxN2agrSoV41lcu0CQQDZID9NbHioGBPE +cgwzwgTAWXc+sdHKsEJERxCPGyqChuFwFjgTdl0MQms3mclAOUq/23j6XYHkjG7o +YS3FcBaTAkEAw9lnMKN5kF3/9xxZxmr62qm6RlgvpdgW4zs9m7SVGSq7fio07i4z +a/5RGC0Tr/WzfjHD1+SyUEXmT1DMl7eycwJAQUX2gdoYM8B5QNdgX7b2IrVCqfBf +N2XhphEPI1ZxYygVYdLsLL2qn2LgRKjQ3aPbmu3p4qp1wDWPqgB8+BwITQJAP1nA +fkQy21b8qCM8iukp8bc7MOvvpbarWJ9eA1K7c+OVuG7Qpka9jW47LxXNq3pPsD9K +uTgZ0ct6fyeEtoLOLwJAM1Eeopu3wSkNbf2p4TbhePc5ASZRR2c1GZZQE4GIYamB +yEk53aQ5MDpHLffWdWI7vZ449s/AHwrN6txlu/+VTQ== +-----END RSA PRIVATE KEY----- diff --git a/python-gnutls-1.1.9/examples/client.py b/python-gnutls-1.1.9/examples/client.py new file mode 100755 index 0000000..c6e4208 --- /dev/null +++ b/python-gnutls-1.1.9/examples/client.py @@ -0,0 +1,32 @@ +#!/usr/bin/env python + +"""Synchronous client using python-gnutls""" + +import sys +import os +import socket + +from gnutls.crypto import * +from gnutls.connection import * + +script_path = os.path.realpath(os.path.dirname(sys.argv[0])) +certs_path = os.path.join(script_path, 'certs') + +cert = X509Certificate(open(certs_path + '/valid.crt').read()) +key = X509PrivateKey(open(certs_path + '/valid.key').read()) +ca = X509Certificate(open(certs_path + '/ca.pem').read()) +crl = X509CRL(open(certs_path + '/crl.pem').read()) +cred = X509Credentials(cert, key) + +sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +session = ClientSession(sock, cred) + +session.connect(('localhost', 10000)) +session.handshake() +session.send("test\r\n") +buf = session.recv(1024) +print 'Received: ', buf.rstrip() +session.bye() +session.shutdown() +session.close() + diff --git a/python-gnutls-1.1.9/examples/crypto.py b/python-gnutls-1.1.9/examples/crypto.py new file mode 100755 index 0000000..cbb29c9 --- /dev/null +++ b/python-gnutls-1.1.9/examples/crypto.py @@ -0,0 +1,84 @@ +#!/usr/bin/env python + +"""Cryptographic examples using python-gnutls""" + +import sys +import os +import time + +from gnutls.crypto import * + +script_path = os.path.realpath(os.path.dirname(sys.argv[0])) +certs_path = os.path.join(script_path, 'certs') + +cert = X509Certificate(open(certs_path + '/valid.crt').read()) +crl = X509CRL(open(certs_path + '/crl.pem').read()) + +print '' + +print 'CRL certs/crl.pem:' +print '------------------' +print 'CRL issuer:' +print ' CN = %s' % crl.issuer.CN # or crl.issuer.common_name +print ' O = %s' % crl.issuer.O # or crl.issuer.organization +print ' OU = %s' % crl.issuer.OU # or crl.issuer.organization_unit +print ' C = %s' % crl.issuer.C # or crl.issuer.country +print ' ST = %s' % crl.issuer.ST # or crl.issuer.state +print ' L = %s' % crl.issuer.L # or crl.issuer.locality +print ' EMAIL = %s' % crl.issuer.EMAIL # or crl.issuer.email +print 'CRL version:', crl.version +print 'CRL count: ', crl.count +print '' + +print 'Certificate certs/valid.crt:' +print '----------------------------' +print 'Cert subject:' +print ' CN = %s' % cert.subject.CN # or cert.subject.common_name +print ' O = %s' % cert.subject.O # or cert.subject.organization +print ' OU = %s' % cert.subject.OU # or cert.subject.organization_unit +print ' C = %s' % cert.subject.C # or cert.subject.country +print ' ST = %s' % cert.subject.ST # or cert.subject.state +print ' L = %s' % cert.subject.L # or cert.subject.locality +print ' EMAIL = %s' % cert.subject.EMAIL # or cert.subject.email +print 'Cert issuer:' +print ' CN = %s' % cert.issuer.CN # or cert.issuer.common_name +print ' O = %s' % cert.issuer.O # or cert.issuer.organization +print ' OU = %s' % cert.issuer.OU # or cert.issuer.organization_unit +print ' C = %s' % cert.issuer.C # or cert.issuer.country +print ' ST = %s' % cert.issuer.ST # or cert.issuer.state +print ' L = %s' % cert.issuer.L # or cert.issuer.locality +print ' EMAIL = %s' % cert.issuer.EMAIL # or cert.issuer.email +print 'Cert serial: ', cert.serial_number +print 'Cert version: ', cert.version +print 'Cert activation:', time.ctime(cert.activation_time) +print 'Cert expiration:', time.ctime(cert.expiration_time) +print 'Cert is revoked:', crl.is_revoked(cert) +print '' + +cert = X509Certificate(open(certs_path + '/revoked.crt').read()) + +print 'Certificate certs/revoked.crt:' +print '------------------------------' +print 'Cert subject:' +print ' CN = %s' % cert.subject.common_name # here we use long names +print ' O = %s' % cert.subject.organization +print ' OU = %s' % cert.subject.organization_unit +print ' C = %s' % cert.subject.country +print ' ST = %s' % cert.subject.state +print ' L = %s' % cert.subject.locality +print ' EMAIL = %s' % cert.subject.email +print 'Cert issuer:' +print ' CN = %s' % cert.issuer.common_name +print ' O = %s' % cert.issuer.organization +print ' OU = %s' % cert.issuer.organization_unit +print ' C = %s' % cert.issuer.country +print ' ST = %s' % cert.issuer.state +print ' L = %s' % cert.issuer.locality +print ' EMAIL = %s' % cert.issuer.email +print 'Cert serial: ', cert.serial_number +print 'Cert version: ', cert.version +print 'Cert activation:', time.ctime(cert.activation_time) +print 'Cert expiration:', time.ctime(cert.expiration_time) +print 'Cert is revoked:', crl.is_revoked(cert) +print '' + diff --git a/python-gnutls-1.1.9/examples/server.py b/python-gnutls-1.1.9/examples/server.py new file mode 100755 index 0000000..e7d744d --- /dev/null +++ b/python-gnutls-1.1.9/examples/server.py @@ -0,0 +1,64 @@ +#!/usr/bin/env python + +"""Synchronous server using python-gnutls""" + +import sys +import os +import socket + +from gnutls.crypto import * +from gnutls.connection import * + +script_path = os.path.realpath(os.path.dirname(sys.argv[0])) +certs_path = os.path.join(script_path, 'certs') + +cert = X509Certificate(open(certs_path + '/valid.crt').read()) +key = X509PrivateKey(open(certs_path + '/valid.key').read()) +ca = X509Certificate(open(certs_path + '/ca.pem').read()) +crl = X509CRL(open(certs_path + '/crl.pem').read()) +cred = X509Credentials(cert, key, [ca], [crl]) + +sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) +ssf = ServerSessionFactory(sock, cred) +ssf.bind(('0.0.0.0', 10000)) +ssf.listen(100) + +while True: + session, address = ssf.accept() + try: + session.handshake() + peer_cert = session.peer_certificate + try: + peer_name = peer_cert.subject + except AttributeError: + peer_name = 'Unknown' + print '\nNew connection from:', peer_name + print 'Protocol: ', session.protocol + print 'KX algorithm: ', session.kx_algorithm + print 'Cipher: ', session.cipher + print 'MAC algorithm:', session.mac_algorithm + print 'Compression: ', session.compression + session.verify_peer() + cred.check_certificate(peer_cert, cert_name='peer certificate') + except Exception, e: + print 'Handshake failed:', e + session.bye() + else: + while True: + try: + buf = session.recv(1024) + if buf == 0 or buf == '': + print "Peer has closed the session" + break + else: + if buf.strip().lower() == 'quit': + print "Got quit command, closing connection" + session.bye() + break + session.send(buf) + except Exception, e: + print "Error in reception: ", e + break + session.shutdown() + session.close() diff --git a/python-gnutls-1.1.9/examples/twisted-client.py b/python-gnutls-1.1.9/examples/twisted-client.py new file mode 100755 index 0000000..0bcb8ca --- /dev/null +++ b/python-gnutls-1.1.9/examples/twisted-client.py @@ -0,0 +1,49 @@ +#!/usr/bin/env python + +"""Asynchronous client using Twisted with GNUTLS""" + +import sys +import os + +from twisted.internet.protocol import ClientFactory +from twisted.protocols.basic import LineOnlyReceiver +from twisted.internet import reactor + +from gnutls.constants import * +from gnutls.crypto import * +from gnutls.errors import * +from gnutls.interfaces.twisted import X509Credentials + +class EchoProtocol(LineOnlyReceiver): + + def connectionMade(self): + self.sendLine('echo') + + def lineReceived(self, line): + print 'received: ', line + self.transport.loseConnection() + + def connectionLost(self, reason): + reactor.stop() + +class EchoFactory(ClientFactory): + protocol = EchoProtocol + + def clientConnectionFailed(self, connector, err): + print err.value + reactor.stop() + + +script_path = os.path.realpath(os.path.dirname(sys.argv[0])) +certs_path = os.path.join(script_path, 'certs') + +cert = X509Certificate(open(certs_path + '/valid.crt').read()) +key = X509PrivateKey(open(certs_path + '/valid.key').read()) +ca = X509Certificate(open(certs_path + '/ca.pem').read()) +crl = X509CRL(open(certs_path + '/crl.pem').read()) +cred = X509Credentials(cert, key, [ca]) +cred.verify_peer = True + +reactor.connectTLS('localhost', 10000, EchoFactory(), cred) +reactor.run() + diff --git a/python-gnutls-1.1.9/examples/twisted-server.py b/python-gnutls-1.1.9/examples/twisted-server.py new file mode 100755 index 0000000..67e14e6 --- /dev/null +++ b/python-gnutls-1.1.9/examples/twisted-server.py @@ -0,0 +1,59 @@ +#!/usr/bin/env python + +"""Asynchronous server using Twisted with GNUTLS""" + +import sys +import os + +from twisted.internet.protocol import Factory +from twisted.protocols.basic import LineOnlyReceiver +from twisted.internet.error import CannotListenError, ConnectionDone +from twisted.internet import reactor + +from gnutls.constants import * +from gnutls.crypto import * +from gnutls.errors import * +from gnutls.interfaces.twisted import X509Credentials + +class EchoProtocol(LineOnlyReceiver): + + def connectionMade(self): + session = self.transport.socket + try: + peer_name = session.peer_certificate.subject + except AttributeError: + peer_name = 'Unknown' + print '\nNew connection from:', peer_name + print 'Protocol: ', session.protocol + print 'KX algorithm: ', session.kx_algorithm + print 'Cipher: ', session.cipher + print 'MAC algorithm:', session.mac_algorithm + print 'Compression: ', session.compression + + def lineReceived(self, line): + if line == 'quit': + self.transport.loseConnection() + return + self.sendLine(line) + + def connectionLost(self, reason): + if reason.type != ConnectionDone: + print "Connection was lost:", str(reason.value) + +class EchoFactory(Factory): + protocol = EchoProtocol + +script_path = os.path.realpath(os.path.dirname(sys.argv[0])) +certs_path = os.path.join(script_path, 'certs') + +cert = X509Certificate(open(certs_path + '/valid.crt').read()) +key = X509PrivateKey(open(certs_path + '/valid.key').read()) +ca = X509Certificate(open(certs_path + '/ca.pem').read()) +crl = X509CRL(open(certs_path + '/crl.pem').read()) +cred = X509Credentials(cert, key, [ca], [crl]) +cred.verify_peer = True +cred.session_params.compressions = (COMP_LZO, COMP_DEFLATE, COMP_NULL) + +reactor.listenTLS(10000, EchoFactory(), cred) +reactor.run() + -- cgit v1.2.3