summary refs log tree commit diff
path: root/gnu/packages/tls.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/tls.scm')
-rw-r--r--gnu/packages/tls.scm108
1 files changed, 104 insertions, 4 deletions
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index 1a0eeb2708..e539686199 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -3,6 +3,8 @@
 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
 ;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2015 David Thompson <davet@gnu.org>
+;;; Copyright © 2015 Leo Famulari <leo@famulari.name>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -26,14 +28,17 @@
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system perl)
+  #:use-module (guix build-system python)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages)
   #:use-module (gnu packages guile)
   #:use-module (gnu packages libffi)
   #:use-module (gnu packages libidn)
+  #:use-module (gnu packages ncurses)
   #:use-module (gnu packages nettle)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages python)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages base))
 
@@ -187,14 +192,14 @@ required structures.")
 (define-public openssl
   (package
    (name "openssl")
-   (version "1.0.2d")
+   (version "1.0.2e")
    (source (origin
             (method url-fetch)
             (uri (string-append "ftp://ftp.openssl.org/source/openssl-" version
                                 ".tar.gz"))
             (sha256
              (base32
-              "1j58r7rdj9fz2lanir8ajbx4bspb5jnm5ikl6dq8lql5fx43c737"))
+              "1zqb1rff1wikc62a7vj5qxd1k191m8qif5d05mwdxz2wnzywlg72"))
             (patches (map search-patch
                           '("openssl-runpath.patch"
                             "openssl-c-rehash.patch")))))
@@ -207,10 +212,11 @@ required structures.")
       #:phases
       (modify-phases %standard-phases
         (add-before
-         'configure 'fix-man-dir
+         'configure 'patch-Makefile.org
          (lambda* (#:key outputs #:allow-other-keys)
            ;; The default MANDIR is some unusual place.  Fix that.
            (let ((out (assoc-ref outputs "out")))
+             (patch-makefile-SHELL "Makefile.org")
              (substitute* "Makefile.org"
                (("^MANDIR[[:blank:]]*=.*$")
                 (string-append "MANDIR = " out "/share/man\n")))
@@ -249,6 +255,27 @@ required structures.")
                        (find-files (string-append out "/lib")
                                    "\\.so"))
              #t)))
+        (add-after
+         'unpack 'fix-broken-symlinks
+         (lambda _
+           ;; Repair the broken symlinks in the openssl-1.0.2e tarball.
+           (let* ((link-prefix "openssl-1.0.2e/")
+                  (link-prefix-length (string-length link-prefix))
+                  (broken-links
+                   (find-files "." (lambda (file stat)
+                                     (and (eq? 'symlink (stat:type stat))
+                                          (string-prefix? link-prefix
+                                                          (readlink file)))))))
+             (when (null? broken-links)
+               (error "The 'fix-broken-symlinks' phase is obsolete; remove it"))
+             (for-each (lambda (file)
+                         (let* ((old-target (readlink file))
+                                (new-target (string-drop old-target
+                                                         link-prefix-length)))
+                           (delete-file file)
+                           (symlink new-target file)))
+                       broken-links)
+             #t)))
         (add-before
          'patch-source-shebangs 'patch-tests
          (lambda* (#:key inputs native-inputs #:allow-other-keys)
@@ -257,7 +284,8 @@ required structures.")
                (("/bin/sh")
                 (string-append bash "/bin/bash"))
                (("/bin/rm")
-                "rm")))))
+                "rm"))
+             #t)))
         (add-after
          'install 'remove-miscellany
          (lambda* (#:key outputs #:allow-other-keys)
@@ -320,6 +348,78 @@ security, and applying best practice development processes.")
                      "file://COPYING"
                      "See COPYING in the distribution.")))))
 
+(define-public acme
+  (package
+    (name "acme")
+    (version "0.1.0")
+    (source (origin
+      (method url-fetch)
+      (uri (string-append "https://pypi.python.org/packages/source/a/acme/acme-"
+                          version ".tar.gz"))
+      (sha256
+        (base32
+          "0fj0m04zzdxx23vazl00ilqyl3jxqq9c9p4x61pfz1zps7nbzsy3"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2))
+    ;; TODO: Add optional inputs for testing and building documentation.
+    (native-inputs
+     `(("python2-mock" ,python2-mock)
+       ("python2-setuptools" ,python2-setuptools)))
+    (propagated-inputs
+     `(("python2-ndg-httpsclient" ,python2-ndg-httpsclient)
+       ("python2-werkzeug" ,python2-werkzeug)
+       ("python2-six" ,python2-six)
+       ("python2-requests" ,python2-requests)
+       ("python2-pytz" ,python2-pytz)
+       ("python2-pyrfc3339" ,python2-pyrfc3339)
+       ("python2-pyasn1" ,python2-pyasn1)
+       ("python2-cryptography" ,python2-cryptography)
+       ("python2-pyopenssl" ,python2-pyopenssl)))
+    (home-page "https://github.com/letsencrypt/letsencrypt")
+    (synopsis "ACME protocol implementation in Python")
+    (description "ACME protocol implementation in Python")
+    (license license:asl2.0)))
+
+(define-public letsencrypt
+  (package
+    (name "letsencrypt")
+    (version "0.1.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://pypi.python.org/packages/source/l/"
+                                  "letsencrypt/letsencrypt-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1zb96xz32k6ai41h5m1l22qi47y71dq69dcmbz7vfm6jfrhjgxl1"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2))
+    ;; TODO: Add optional inputs for testing building documentation.
+    (native-inputs
+     `(("python2-nose" ,python2-nose)
+       ("python2-mock" ,python2-mock)))
+    (propagated-inputs
+     `(("acme" ,acme)
+       ("python2-zope-interface" ,python2-zope-interface)
+       ("python2-pythondialog" ,python2-pythondialog)
+       ("python2-pyrfc3339" ,python2-pyrfc3339)
+       ("python2-pyopenssl" ,python2-pyopenssl)
+       ("python2-configobj" ,python2-configobj)
+       ("python2-configargparse" ,python2-configargparse)
+       ("python2-zope-component" ,python2-zope-component)
+       ("python2-parsedatetime" ,python2-parsedatetime)
+       ("python2-six" ,python2-six)
+       ("python2-psutil" ,python2-psutil)
+       ("python2-requests" ,python2-requests)
+       ("python2-pytz" ,python2-pytz)))
+    (synopsis "Let's Encrypt client")
+    (description "Tool to automatically receive and install X.509 certificates
+to enable TLS on servers.  The client will interoperate with the Let’s Encrypt CA which
+will be issuing browser-trusted certificates for free.")
+    (home-page "https://letsencrypt.org/")
+    (license license:asl2.0)))
+
 (define-public perl-net-ssleay
   (package
     (name "perl-net-ssleay")