aboutsummaryrefslogtreecommitdiff
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2022 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

(define-module (test-pki)
  #:use-module (guix pki)
  #:use-module (gcrypt pk-crypto)
  #:use-module (gcrypt hash)
  #:use-module (rnrs io ports)
  #:use-module (srfi srfi-64))

;; Test the (guix pki) module.

(define %public-key
  (call-with-input-file %public-key-file
    (compose string->canonical-sexp get-string-all)))

(define %secret-key
  (call-with-input-file %private-key-file
    (compose string->canonical-sexp get-string-all)))

(define %alternate-secret-key
  (string->canonical-sexp
   "
  (key-data
   (public-key
    (rsa
     (n #00FDBF170366AC43B7D95CF9085565C566FB1F21B17C0A36E68F35ABB500E7851E00B40D7B04C8CD25903371F38E4C298FACEFFC4C97E913B536A0672BAF99D04515AE98A1A56627CD7EB02502FCFBEEA21AF13CC1A853192AD6409B9EFBD9F549BDE32BD890AE01F9A221E81FEE1C407090550647790E0D60775B855E181C2FB5#)
     (e #010001#)))
   (private-key
    (rsa
     (n #00FDBF170366AC43B7D95CF9085565C566FB1F21B17C0A36E68F35ABB500E7851E00B40D7B04C8CD25903371F38E4C298FACEFFC4C97E913B536A0672BAF99D04515AE98A1A56627CD7EB02502FCFBEEA21AF13CC1A853192AD6409B9EFBD9F549BDE32BD890AE01F9A221E81FEE1C407090550647790E0D60775B855E181C2FB5#)
     (e #010001#)
     (d #2790250C2E74C2FD361A99288BBA19B878048F5A0F333F829CC71B3DD64582DB9DF3F4DB1EB0994DD7493225EDA4A1E1492F44D903617FA5643E47BFC7BA157EF48B492AB51229916B02DDBDA0E7DBC7B35A6B8332AB463DC61951CA694551A9760F5A836A375D39E3EA8F2C502A3B5D89CB8777A809B75D603BE7511CEB74E9#)
     (p #00FE15B1751E1C31125B724FF37462F9476239A2AFF4192FAB1550F76928C8D02407F4F5EFC83F7A0AF51BD93399DDC06A4B54DFA60A7079F160A9F618C0148AD9#)
     (q #00FFA8BE7005AAB7401B0926CD9D6AC30BC9BE7D12C8737C9438498A999F56BE9F5EA98B4D7F5364BEB6D550A5AEDDE34C1EC152C9DAF61A97FDE71740C73BAA3D#)
     (u #00FD4050EF4F31B41EC81C28E18D205DFFB3C188F15D8BBA300E30AD8B5C4D3E392EFE10269FC115A538B19F4025973AB09B6650A7FF97DA833FB726F3D8819319#))))"))

(test-begin "pki")

(test-assert "current-acl"
  (not (not (member (canonical-sexp->sexp %public-key)
                    (map canonical-sexp->sexp
                         (acl->public-keys (current-acl)))))))

(test-assert "authorized-key? public-key current-acl"
  (authorized-key? %public-key))

(test-assert "authorized-key? public-key empty-acl"
  (not (authorized-key? %public-key (public-keys->acl '()))))

(test-assert "authorized-key? public-key singleton"
  (authorized-key? %public-key (public-keys->acl (list %public-key))))

(test-equal "public-keys->acl deduplication"
  (public-keys->acl (list %public-key))
  (public-keys->acl (make-list 10 %public-key)))

(test-assert "signature-case valid-signature"
  (let* ((hash (sha256 #vu8(1 2 3)))
         (data (bytevector->hash-data hash #:key-type (key-type %public-key)))
         (sig  (signature-sexp data %secret-key %public-key)))
   (signature-case (sig hash (public-keys->acl (list %public-key)))
     (valid-signature #t)
     (else #f))))

(test-eq "signature-case invalid-signature" 'i
  (let* ((hash (sha256 #vu8(1 2 3)))
         (data (bytevector->hash-data hash #:key-type (key-type %public-key)))
         (sig  (signature-sexp data %alternate-secret-key %public-key)))
    (signature-case (sig hash (public-keys->acl (list %public-key)))
      (valid-signature 'v)
      (invalid-signature 'i)
      (hash-mismatch 'm)
      (unauthorized-key 'u)
      (corrupt-signature 'c))))

(test-eq "signature-case hash-mismatch" 'm
  (let* ((hash (sha256 #vu8(1 2 3)))
         (data (bytevector->hash-data hash #:key-type (key-type %public-key)))
         (sig  (signature-sexp data %secret-key %public-key)))
    (signature-case (sig (sha256 #vu8())
                         (public-keys->acl (list %public-key)))
      (valid-signature 'v)
      (invalid-signature 'i)
      (hash-mismatch 'm)
      (unauthorized-key 'u)
      (corrupt-signature 'c))))

(test-eq "signature-case unauthorized-key" 'u
  (let* ((hash (sha256 #vu8(1 2 3)))
         (data (bytevector->hash-data hash #:key-type (key-type %public-key)))
         (sig  (signature-sexp data %secret-key %public-key)))
    (signature-case (sig hash (public-keys->acl '()))
      (valid-signature 'v)
      (invalid-signature 'i)
      (hash-mismatch 'm)
      (unauthorized-key 'u)
      (corrupt-signature 'c))))

(test-eq "signature-case corrupt-signature" 'c
  (let* ((hash (sha256 #vu8(1 2 3)))
         (sig  (string->canonical-sexp "(w tf)")))
    (signature-case (sig hash (public-keys->acl (list %public-key)))
      (valid-signature 'v)
      (invalid-signature 'i)
      (hash-mismatch 'm)
      (unauthorized-key 'u)
      (corrupt-signature 'c))))

(test-end)
s='ls-blob scm' href='/guix/tree/gnu/packages/algebra.scm?id=f96097da8ac3a5e0e818608cc4b4848a00362c00'>algebra.scm64655logplainabout -rw-r--r--android.scm41109logplainabout -rw-r--r--animation.scm12578logplainabout -rw-r--r--anthy.scm2879logplainabout -rw-r--r--antivirus.scm7329logplainabout -rw-r--r--apl.scm2193logplainabout -rw-r--r--apr.scm4303logplainabout -rw-r--r--arcan.scm11501logplainabout -rw-r--r--aspell.scm17802logplainabout -rw-r--r--assembly.scm14198logplainabout -rw-r--r--astronomy.scm14593logplainabout -rw-r--r--attr.scm2879logplainabout -rw-r--r--audio.scm163926logplainabout -rw-r--r--augeas.scm2648logplainabout -rw-r--r--authentication.scm5568logplainabout -rw-r--r--autogen.scm3063logplainabout -rw-r--r--autotools.scm19575logplainabout d---------aux-files151logplain -rw-r--r--avahi.scm4656logplainabout -rw-r--r--avr.scm7876logplainabout -rw-r--r--axoloti.scm29526logplainabout -rw-r--r--backup.scm45191logplainabout -rw-r--r--base.scm60849logplainabout -rw-r--r--bash.scm15093logplainabout -rw-r--r--batik.scm8852logplainabout -rw-r--r--bdw-gc.scm5933logplainabout -rw-r--r--benchmark.scm11076logplainabout -rw-r--r--bioconductor.scm287993logplainabout -rw-r--r--bioinformatics.scm645697logplainabout -rw-r--r--bison.scm3053logplainabout -rw-r--r--bittorrent.scm20415logplainabout -rw-r--r--boost.scm14626logplainabout -rw-r--r--bootloaders.scm45848logplainabout -rw-r--r--bootstrap.scm34139logplainabout -rw-r--r--build-tools.scm13271logplainabout -rw-r--r--busybox.scm6344logplainabout -rw-r--r--c.scm10507logplainabout -rw-r--r--calcurse.scm3490logplainabout -rw-r--r--calendar.scm12411logplainabout -rw-r--r--ccache.scm2469logplainabout -rw-r--r--cdrom.scm40773logplainabout -rw-r--r--cedille.scm5517logplainabout -rw-r--r--certs.scm8919logplainabout -rw-r--r--check.scm96849logplainabout -rw-r--r--chemistry.scm19960logplainabout -rw-r--r--chez.scm27260logplainabout -rw-r--r--chicken.scm2767logplainabout -rw-r--r--chromium.scm40833logplainabout -rw-r--r--ci.scm7086logplainabout -rw-r--r--cinnamon.scm3320logplainabout -rw-r--r--clojure.scm13328logplainabout -rw-r--r--cluster.scm5230logplainabout -rw-r--r--cmake.scm11673logplainabout -rw-r--r--cobol.scm2997logplainabout -rw-r--r--code.scm29716logplainabout -rw-r--r--commencement.scm111572logplainabout -rw-r--r--compression.scm93312logplainabout -rw-r--r--compton.scm5990logplainabout -rw-r--r--conky.scm3495logplainabout -rw-r--r--connman.scm7259logplainabout -rw-r--r--cook.scm4102logplainabout -rw-r--r--coq.scm25571logplainabout -rw-r--r--cpio.scm1971logplainabout -rw-r--r--cpp.scm19276logplainabout -rw-r--r--cppi.scm1775logplainabout -rw-r--r--cran.scm776313logplainabout -rw-r--r--crates-io.scm918853logplainabout -rw-r--r--cross-base.scm24204logplainabout -rw-r--r--crypto.scm47041logplainabout -rw-r--r--cryptsetup.scm6211logplainabout -rw-r--r--cups.scm38506logplainabout -rw-r--r--curl.scm11056logplainabout -rw-r--r--cvassistant.scm3640logplainabout -rw-r--r--cybersecurity.scm1800logplainabout -rw-r--r--cyrus-sasl.scm3020logplainabout -rw-r--r--databases.scm137884logplainabout -rw-r--r--datamash.scm1969logplainabout -rw-r--r--datastructures.scm12381logplainabout -rw-r--r--dav.scm4789logplainabout -rw-r--r--dbm.scm6103logplainabout -rw-r--r--dc.scm2233logplainabout -rw-r--r--debian.scm9895logplainabout -rw-r--r--debug.scm26204logplainabout -rw-r--r--dejagnu.scm3510logplainabout -rw-r--r--dico.scm3607logplainabout -rw-r--r--dictionaries.scm16036logplainabout -rw-r--r--diffoscope.scm16043logplainabout -rw-r--r--digest.scm2267logplainabout -rw-r--r--direct-connect.scm2610logplainabout -rw-r--r--disk.scm39004logplainabout -rw-r--r--display-managers.scm11471logplainabout -rw-r--r--distributed.scm4121logplainabout -rw-r--r--django.scm39609logplainabout -rw-r--r--djvu.scm3985logplainabout -rw-r--r--dlang.scm17727logplainabout -rw-r--r--dns.scm41217logplainabout -rw-r--r--docbook.scm11815logplainabout -rw-r--r--docker.scm31642logplainabout -rw-r--r--documentation.scm10887logplainabout -rw-r--r--drones.scm7632logplainabout -rw-r--r--dunst.scm3744logplainabout -rw-r--r--dvtm.scm2311logplainabout -rw-r--r--easyrpg.scm4444logplainabout -rw-r--r--ebook.scm14854logplainabout -rw-r--r--ed.scm2378logplainabout -rw-r--r--education.scm40887logplainabout -rw-r--r--efi.scm8393logplainabout -rw-r--r--electronics.scm10736logplainabout -rw-r--r--elf.scm10959logplainabout -rw-r--r--elixir.scm5029logplainabout -rw-r--r--elm.scm3960logplainabout -rw-r--r--emacs-xyz.scm883515logplainabout -rw-r--r--emacs.scm22573logplainabout -rw-r--r--embedded.scm57139logplainabout -rw-r--r--emulators.scm64817logplainabout -rw-r--r--enchant.scm5227logplainabout -rw-r--r--engineering.scm103263logplainabout -rw-r--r--enlightenment.scm23980logplainabout -rw-r--r--entr.scm3036logplainabout -rw-r--r--erlang.scm10106logplainabout -rw-r--r--fabric-management.scm9625logplainabout -rw-r--r--fcitx.scm5107logplainabout -rw-r--r--figlet.scm1797logplainabout -rw-r--r--file-systems.scm23250logplainabout -rw-r--r--file.scm2342logplainabout -rw-r--r--finance.scm62874logplainabout -rw-r--r--firmware.scm24599logplainabout -rw-r--r--flashing-tools.scm18452logplainabout -rw-r--r--flex.scm3224logplainabout -rw-r--r--fltk.scm6081logplainabout -rw-r--r--fonts.scm73782logplainabout -rw-r--r--fontutils.scm35246logplainabout -rw-r--r--forth.scm2424logplainabout -rw-r--r--fpga.scm15288logplainabout -rw-r--r--freedesktop.scm69670logplainabout -rw-r--r--freeipmi.scm2072logplainabout -rw-r--r--fribidi.scm4295logplainabout -rw-r--r--ftp.scm10963logplainabout -rw-r--r--fvwm.scm3341logplainabout -rw-r--r--game-development.scm89982logplainabout -rw-r--r--games.scm431120logplainabout -rw-r--r--gawk.scm3785logplainabout -rw-r--r--gcal.scm2889logplainabout -rw-r--r--gcc.scm45878logplainabout -rw-r--r--gd.scm6536logplainabout -rw-r--r--gdb.scm5428logplainabout -rw-r--r--genealogy.scm4602logplainabout -rw-r--r--genimage.scm8315logplainabout -rw-r--r--geo.scm80927logplainabout -rw-r--r--gettext.scm10707logplainabout -rw-r--r--ghostscript.scm16832logplainabout -rw-r--r--gimp.scm16588logplainabout -rw-r--r--gkrellm.scm2449logplainabout -rw-r--r--gl.scm38946logplainabout -rw-r--r--glib.scm42802logplainabout -rw-r--r--gnome-xyz.scm22335logplainabout -rw-r--r--gnome.scm402024logplainabout -rw-r--r--gnu-doc.scm4109logplainabout -rw-r--r--gnu-pw-mgr.scm2350logplainabout -rw-r--r--gnucash.scm13605logplainabout -rw-r--r--gnunet.scm17154logplainabout -rw-r--r--gnupg.scm45421logplainabout -rw-r--r--gnustep.scm11913logplainabout -rw-r--r--gnuzilla.scm57673logplainabout -rw-r--r--gobby.scm7738logplainabout -rw-r--r--golang.scm153295logplainabout -rw-r--r--gperf.scm2354logplainabout -rw-r--r--gpodder.scm7676logplainabout -rw-r--r--gps.scm12135logplainabout -rw-r--r--graph.scm21027logplainabout -rw-r--r--graphics.scm46796logplainabout -rw-r--r--graphviz.scm14511logplainabout -rw-r--r--groff.scm8199logplainabout -rw-r--r--groovy.scm47230logplainabout -rw-r--r--gsasl.scm4354logplainabout -rw-r--r--gstreamer.scm22432logplainabout -rw-r--r--gtk.scm78242logplainabout -rw-r--r--guile-wm.scm9225logplainabout -rw-r--r--guile-xyz.scm135574logplainabout -rw-r--r--guile.scm27780logplainabout -rw-r--r--gv.scm3247logplainabout -rw-r--r--gxmessage.scm2352logplainabout -rw-r--r--hardware.scm19101logplainabout -rw-r--r--haskell-apps.scm32750logplainabout -rw-r--r--haskell-check.scm35862logplainabout -rw-r--r--haskell-crypto.scm32972logplainabout -rw-r--r--haskell-web.scm64502logplainabout -rw-r--r--haskell-xyz.scm508029logplainabout -rw-r--r--haskell.scm26856logplainabout -rw-r--r--heads.scm6863logplainabout -rw-r--r--hexedit.scm4680logplainabout -rw-r--r--hugs.scm3688logplainabout -rw-r--r--hurd.scm12492logplainabout -rw-r--r--hyperledger.scm8806logplainabout -rw-r--r--i2p.scm5318logplainabout -rw-r--r--ibus.scm30352logplainabout -rw-r--r--icu4c.scm6644logplainabout -rw-r--r--idris.scm12317logplainabout -rw-r--r--idutils.scm2816logplainabout -rw-r--r--image-processing.scm33156logplainabout -rw-r--r--image-viewers.scm28194logplainabout -rw-r--r--image.scm81274logplainabout -rw-r--r--imagemagick.scm9344logplainabout -rw-r--r--inklingreader.scm2239logplainabout -rw-r--r--inkscape.scm3876logplainabout -rw-r--r--installers.scm6869logplainabout -rw-r--r--ipfs.scm12644logplainabout -rw-r--r--irc.scm18150logplainabout -rw-r--r--iso-codes.scm4113logplainabout -rw-r--r--jami.scm13962logplainabout -rw-r--r--java-compression.scm13531logplainabout -rw-r--r--java-graphics.scm5228logplainabout -rw-r--r--java-maths.scm3607logplainabout -rw-r--r--java.scm507918logplainabout -rw-r--r--javascript.scm18925logplainabout -rw-r--r--jemalloc.scm3218logplainabout -rw-r--r--jose.scm1999logplainabout -rw-r--r--jrnl.scm2441logplainabout -rw-r--r--julia.scm21069logplainabout -rw-r--r--jupyter.scm7705logplainabout -rw-r--r--kawa.scm2553logplainabout -rw-r--r--kde-frameworks.scm146988logplainabout -rw-r--r--kde-internet.scm17749logplainabout -rw-r--r--kde-multimedia.scm25784logplainabout -rw-r--r--kde-pim.scm70253logplainabout -rw-r--r--kde-plasma.scm8178logplainabout -rw-r--r--kde-systemtools.scm11900logplainabout -rw-r--r--kde-utils.scm19288logplainabout -rw-r--r--kde.scm28174logplainabout -rw-r--r--kerberos.scm9171logplainabout -rw-r--r--key-mon.scm2121logplainabout -rw-r--r--kodi.scm21509logplainabout -rw-r--r--language.scm34664logplainabout -rw-r--r--ld-wrapper-next.in12321logplainabout -rw-r--r--ld-wrapper.in11660logplainabout -rw-r--r--lean.scm2657logplainabout -rw-r--r--lego.scm5447logplainabout -rw-r--r--less.scm3969logplainabout -rw-r--r--lesstif.scm1817logplainabout -rw-r--r--libbsd.scm2092logplainabout -rw-r--r--libcanberra.scm6105logplainabout -rw-r--r--libdaemon.scm2903logplainabout -rw-r--r--libedit.scm2002logplainabout -rw-r--r--libevent.scm10061logplainabout -rw-r--r--libffcall.scm1922logplainabout -rw-r--r--libffi.scm9887logplainabout -rw-r--r--libftdi.scm1943logplainabout -rw-r--r--libidn.scm3562logplainabout -rw-r--r--libphidget.scm1747logplainabout -rw-r--r--libreoffice.scm46904logplainabout -rw-r--r--libsigsegv.scm2731logplainabout -rw-r--r--libunistring.scm3159logplainabout -rw-r--r--libunwind.scm2318logplainabout -rw-r--r--libusb.scm25648logplainabout -rw-r--r--license.scm8295logplainabout -rw-r--r--lighting.scm3418logplainabout -rw-r--r--linphone.scm23572logplainabout -rw-r--r--linux.scm285955logplainabout -rw-r--r--lirc.scm6365logplainabout -rw-r--r--lisp-xyz.scm426281logplainabout -rw-r--r--lisp.scm47110logplainabout -rw-r--r--llvm.scm35092logplainabout -rw-r--r--logging.scm8210logplainabout -rw-r--r--logo.scm2829logplainabout -rw-r--r--lolcode.scm2418logplainabout -rw-r--r--lout.scm5633logplainabout -rw-r--r--lsof.scm5252logplainabout -rw-r--r--lua.scm27758logplainabout -rw-r--r--lxde.scm22224logplainabout -rw-r--r--lxqt.scm51055logplainabout -rw-r--r--m4.scm2700logplainabout -rw-r--r--machine-learning.scm90343logplainabout -rw-r--r--magic-wormhole.scm6604logplainabout -rw-r--r--mail.scm127515logplainabout -rw-r--r--make-bootstrap.scm39500logplainabout -rw-r--r--man.scm11837logplainabout -rw-r--r--markup.scm10159logplainabout -rw-r--r--marst.scm1763logplainabout -rw-r--r--mastodon.scm2481logplainabout -rw-r--r--mate.scm57569logplainabout -rw-r--r--maths.scm227324logplainabout -rw-r--r--matrix.scm5166logplainabout -rw-r--r--maven.scm77802logplainabout -rw-r--r--mc.scm4522logplainabout -rw-r--r--mcrypt.scm4576logplainabout -rw-r--r--medical.scm2420logplainabout -rw-r--r--mes.scm12538logplainabout -rw-r--r--messaging.scm85143logplainabout -rw-r--r--microcom.scm2210logplainabout -rw-r--r--mingw.scm6090logplainabout -rw-r--r--moe.scm2223logplainabout -rw-r--r--monitoring.scm19824logplainabout -rw-r--r--mono.scm7113logplainabout -rw-r--r--moreutils.scm3243logplainabout -rw-r--r--motti.scm1669logplainabout -rw-r--r--mp3.scm22706logplainabout -rw-r--r--mpd.scm14056logplainabout -rw-r--r--mpi.scm21673logplainabout -rw-r--r--mtools.scm2851logplainabout -rw-r--r--multiprecision.scm17135logplainabout -rw-r--r--music.scm219188logplainabout -rw-r--r--musl.scm2189logplainabout -rw-r--r--nano.scm2142logplainabout -rw-r--r--ncdu.scm2123logplainabout -rw-r--r--ncurses.scm15954logplainabout -rw-r--r--netpbm.scm8367logplainabout -rw-r--r--nettle.scm4089logplainabout -rw-r--r--networking.scm121082logplainabout -rw-r--r--nfs.scm5588logplainabout -rw-r--r--nickle.scm2471logplainabout -rw-r--r--nim.scm3188logplainabout -rw-r--r--ninja.scm3110logplainabout -rw-r--r--node-xyz.scm10054logplainabout -rw-r--r--node.scm9228logplainabout -rw-r--r--noweb.scm5114logplainabout -rw-r--r--nss.scm8842logplainabout -rw-r--r--ntp.scm10888logplainabout -rw-r--r--nutrition.scm3245logplainabout -rw-r--r--nvi.scm2907logplainabout -rw-r--r--ocaml.scm218470logplainabout -rw-r--r--ocr.scm6168logplainabout -rw-r--r--onc-rpc.scm6612logplainabout -rw-r--r--openbox.scm3926logplainabout -rw-r--r--opencl.scm16420logplainabout -rw-r--r--opencog.scm12188logplainabout -rw-r--r--openldap.scm17460logplainabout -rw-r--r--openstack.scm31553logplainabout -rw-r--r--orpheus.scm4287logplainabout -rw-r--r--ots.scm3497logplainabout -rw-r--r--package-management.scm47116logplainabout -rw-r--r--parallel.scm11684logplainabout -rw-r--r--password-utils.scm48150logplainabout d---------patches49440logplain -rw-r--r--patchutils.scm21084logplainabout -rw-r--r--pciutils.scm3933logplainabout -rw-r--r--pcre.scm5551logplainabout -rw-r--r--pdf.scm56346logplainabout -rw-r--r--pem.scm1795logplainabout -rw-r--r--perl-check.scm57447logplainabout -rw-r--r--perl-compression.scm5960logplainabout -rw-r--r--perl-web.scm4732logplainabout -rw-r--r--perl.scm431351logplainabout -rw-r--r--perl6.scm31302logplainabout -rw-r--r--phabricator.scm4962logplainabout -rw-r--r--photo.scm25747logplainabout -rw-r--r--php.scm17419logplainabout -rw-r--r--pkg-config.scm5231logplainabout -rw-r--r--plotutils.scm13357logplainabout -rw-r--r--poedit.scm3027logplainabout -rw-r--r--polkit.scm8396logplainabout -rw-r--r--popt.scm6666logplainabout -rw-r--r--pretty-print.scm12619logplainabout -rw-r--r--printers.scm4923logplainabout -rw-r--r--profiling.scm17493logplainabout -rw-r--r--prolog.scm6044logplainabout -rw-r--r--protobuf.scm10052logplainabout -rw-r--r--pth.scm2338logplainabout -rw-r--r--pulseaudio.scm17646logplainabout -rw-r--r--pumpio.scm2812logplainabout