Hello community,
here is the log from the commit of package ghc-pipes-cacophony for
openSUSE:Factory checked in at 2017-04-18 13:48:33
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-pipes-cacophony (Old)
and /work/SRC/openSUSE:Factory/.ghc-pipes-cacophony.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-pipes-cacophony"
Tue Apr 18 13:48:33 2017 rev:2 rq:461672 version:0.4.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-pipes-cacophony/ghc-pipes-cacophony.changes
2016-10-06 12:41:24.000000000 +0200
+++
/work/SRC/openSUSE:Factory/.ghc-pipes-cacophony.new/ghc-pipes-cacophony.changes
2017-04-18 13:48:34.569944394 +0200
@@ -1,0 +2,10 @@
+Sun Feb 12 14:20:25 UTC 2017 - [email protected]
+
+- Update to version 0.4.1 with cabal2obs.
+
+-------------------------------------------------------------------
+Thu Sep 15 06:43:53 UTC 2016 - [email protected]
+
+- Update to version 0.4.0 revision 0 with cabal2obs.
+
+-------------------------------------------------------------------
Old:
----
pipes-cacophony-0.2.1.tar.gz
New:
----
pipes-cacophony-0.4.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-pipes-cacophony.spec ++++++
--- /var/tmp/diff_new_pack.ZrYVdP/_old 2017-04-18 13:48:35.121866276 +0200
+++ /var/tmp/diff_new_pack.ZrYVdP/_new 2017-04-18 13:48:35.129865144 +0200
@@ -1,7 +1,7 @@
#
# spec file for package ghc-pipes-cacophony
#
-# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,24 +19,23 @@
%global pkg_name pipes-cacophony
%bcond_with tests
Name: ghc-%{pkg_name}
-Version: 0.2.1
+Version: 0.4.1
Release: 0
Summary: Pipes for Noise-secured network connections
License: SUSE-Public-Domain
-Group: System/Libraries
+Group: Development/Languages/Other
Url: https://hackage.haskell.org/package/%{pkg_name}
Source0:
https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{version}.tar.gz
BuildRequires: ghc-Cabal-devel
-# Begin cabal-rpm deps:
BuildRequires: ghc-bytestring-devel
BuildRequires: ghc-cacophony-devel
+BuildRequires: ghc-memory-devel
BuildRequires: ghc-pipes-devel
BuildRequires: ghc-rpm-macros
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%if %{with tests}
BuildRequires: ghc-hlint-devel
%endif
-# End cabal-rpm deps
%description
A set of pipes to secure network connections with the
@@ -57,20 +56,14 @@
%prep
%setup -q -n %{pkg_name}-%{version}
-
%build
%ghc_lib_build
-
%install
%ghc_lib_install
-
%check
-%if %{with tests}
-%{cabal} test
-%endif
-
+%cabal_test
%post devel
%ghc_pkg_recache
@@ -84,6 +77,6 @@
%files devel -f %{name}-devel.files
%defattr(-,root,root,-)
-%doc README.md changelog.md
+%doc README.md changelog.md examples
%changelog
++++++ pipes-cacophony-0.2.1.tar.gz -> pipes-cacophony-0.4.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pipes-cacophony-0.2.1/.travis.yml
new/pipes-cacophony-0.4.1/.travis.yml
--- old/pipes-cacophony-0.2.1/.travis.yml 2016-04-06 03:26:38.000000000
+0200
+++ new/pipes-cacophony-0.4.1/.travis.yml 2016-12-26 17:17:05.000000000
+0100
@@ -13,26 +13,23 @@
matrix:
include:
- - env: CABALVER=1.22 GHCVER=7.10.1
- compiler: ": #GHC 7.10.1"
- addons: {apt: {packages:
[cabal-install-1.22,ghc-7.10.1,alex-3.1.4,happy-1.19.5], sources: [hvr-ghc]}}
- - env: CABALVER=1.22 GHCVER=7.10.2
- compiler: ": #GHC 7.10.2"
- addons: {apt: {packages:
[cabal-install-1.22,ghc-7.10.2,alex-3.1.4,happy-1.19.5], sources: [hvr-ghc]}}
- env: CABALVER=1.22 GHCVER=7.10.3
compiler: ": #GHC 7.10.3"
- addons: {apt: {packages:
[cabal-install-1.22,ghc-7.10.3,alex-3.1.4,happy-1.19.5], sources: [hvr-ghc]}}
- - env: CABALVER=1.22 GHCVER=head
+ addons: {apt: {packages:
[cabal-install-1.22,ghc-7.10.3,alex-3.1.7,happy-1.19.5], sources: [hvr-ghc]}}
+ - env: CABALVER=1.24 GHCVER=8.0.2
+ compiler: ": #GHC 8.0.2"
+ addons: {apt: {packages:
[cabal-install-1.24,ghc-8.0.2,alex-3.1.7,happy-1.19.5], sources: [hvr-ghc]}}
+ - env: CABALVER=head GHCVER=head
compiler: ": #GHC head"
- addons: {apt: {packages:
[cabal-install-1.22,ghc-head,alex-3.1.4,happy-1.19.5], sources: [hvr-ghc]}}
+ addons: {apt: {packages:
[cabal-install-head,ghc-head,alex-3.1.7,happy-1.19.5], sources: [hvr-ghc]}}
allow_failures:
- - env: CABALVER=1.22 GHCVER=head
+ - env: CABALVER=head GHCVER=head
before_install:
- unset CC
- export HAPPYVER=1.19.5
- - export ALEXVER=3.1.4
+ - export ALEXVER=3.1.7
- export
PATH=~/.cabal/bin:/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:/opt/happy/$HAPPYVER/bin:/opt/alex/$ALEXVER/bin:$PATH
install:
@@ -45,7 +42,7 @@
fi
- travis_retry cabal update
- "sed -i 's/^jobs:.*$/jobs: 2/' $HOME/.cabal/config"
- - cabal install --only-dependencies --enable-tests --dry -v
pipes-cacophony.cabal > installplan.txt
+ - cabal install --only-dependencies --enable-tests -fbuild-examples --dry -v
pipes-cacophony.cabal > installplan.txt
- sed -i -e '1,/^Resolving /d' installplan.txt; cat installplan.txt
# check whether current requested install-plan matches cached package-db
snapshot
@@ -59,8 +56,7 @@
echo "cabal build-cache MISS";
rm -rf $HOME/.cabsnap;
mkdir -p $HOME/.ghc $HOME/.cabal/lib $HOME/.cabal/share $HOME/.cabal/bin;
- cabal install --only-dependencies --enable-tests pipes-cacophony.cabal;
- if [ "$GHCVER" = "7.10.1" ]; then cabal install Cabal-1.22.4.0; fi;
+ cabal install --only-dependencies --enable-tests -fbuild-examples
pipes-cacophony.cabal;
fi
# snapshot package-db on cache miss
@@ -72,10 +68,8 @@
cp -a $HOME/.cabal/lib $HOME/.cabal/share $HOME/.cabal/bin
installplan.txt $HOME/.cabsnap/;
fi
- - cabal install
-
script:
- - cabal configure --enable-tests -v2 # -v2 provides useful information for
debugging
+ - cabal configure --enable-tests -fbuild-examples -v2 # -v2 provides useful
information for debugging
- cabal build # this builds all libraries and executables (including tests)
- cabal test
- cabal sdist # tests that a source-distribution can be generated
@@ -84,4 +78,4 @@
# If there are no other `.tar.gz` files in `dist`, this can be even simpler:
# `cabal install --force-reinstalls dist/*-*.tar.gz`
- SRC_TGZ=$(cabal info . | awk '{print $2;exit}').tar.gz &&
- (cd dist && cabal install --enable-tests -fbuild-examples --run-tests
--force-reinstalls "$SRC_TGZ")
+ (cd dist && cabal install --enable-tests --run-tests -fbuild-examples
--force-reinstalls "$SRC_TGZ")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pipes-cacophony-0.2.1/changelog.md
new/pipes-cacophony-0.4.1/changelog.md
--- old/pipes-cacophony-0.2.1/changelog.md 2016-04-06 03:26:38.000000000
+0200
+++ new/pipes-cacophony-0.4.1/changelog.md 2016-12-26 17:17:05.000000000
+0100
@@ -1,9 +1,21 @@
-# 0.2.1
+# 0.4.1
-* Removed examples
+* Brought up to date with cacophony API changes
+
+# 0.4.0
+
+* Brought up to date with cacophony API changes
+
+* Updated travis configuration
+
+# 0.3.0
* Brought up to date with cacophony API changes
+# 0.2.1
+
+* Removed examples
+
# 0.2.0
* Removed HandshakePipe due to cacophony API changes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pipes-cacophony-0.2.1/examples/loopback/Main.hs
new/pipes-cacophony-0.4.1/examples/loopback/Main.hs
--- old/pipes-cacophony-0.2.1/examples/loopback/Main.hs 1970-01-01
01:00:00.000000000 +0100
+++ new/pipes-cacophony-0.4.1/examples/loopback/Main.hs 2016-12-26
17:17:05.000000000 +0100
@@ -0,0 +1,44 @@
+module Main where
+
+import Control.Exception (SomeException)
+import Control.Lens
+import Control.Monad (forever)
+import Data.ByteArray (ScrubbedBytes, convert)
+import Data.ByteString.Char8 (unpack, pack)
+import Pipes
+import qualified Pipes.Prelude as P
+
+import Crypto.Noise
+import Crypto.Noise.Cipher.ChaChaPoly1305
+import Crypto.Noise.DH
+import Crypto.Noise.DH.Curve25519
+import Crypto.Noise.HandshakePatterns (noiseNN)
+import Crypto.Noise.Hash.SHA256
+
+import Pipes.Noise
+
+strToSB :: Pipe String ScrubbedBytes IO (Either SomeException ())
+strToSB = forever $ await >>= yield . convert . pack
+
+sbToStr :: Pipe ScrubbedBytes String IO (Either SomeException ())
+sbToStr = forever $ await >>= yield . unpack . convert
+
+main :: IO ()
+main = do
+ iek <- dhGenKey :: IO (KeyPair Curve25519)
+ rek <- dhGenKey :: IO (KeyPair Curve25519)
+
+ let idho = defaultHandshakeOpts noiseNN InitiatorRole
+ rdho = defaultHandshakeOpts noiseNN ResponderRole
+ iho = idho & hoLocalEphemeral .~ Just iek
+ rho = rdho & hoLocalEphemeral .~ Just rek
+ ins = noiseState iho :: NoiseState ChaChaPoly1305 Curve25519 SHA256
+ rns = noiseState rho :: NoiseState ChaChaPoly1305 Curve25519 SHA256
+
+ (iip, iop) <- mkNoisePipes ins
+ (rip, rop) <- mkNoisePipes rns
+
+ result <- runEffect $ (Right () <$ P.stdinLn) >-> strToSB >-> iop >-> rip
>-> rop >-> iip >-> sbToStr >-> (Right () <$ P.stdoutLn)
+ case result of
+ Left e -> print e
+ Right _ -> return ()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pipes-cacophony-0.2.1/pipes-cacophony.cabal
new/pipes-cacophony-0.4.1/pipes-cacophony.cabal
--- old/pipes-cacophony-0.2.1/pipes-cacophony.cabal 2016-04-06
03:26:38.000000000 +0200
+++ new/pipes-cacophony-0.4.1/pipes-cacophony.cabal 2016-12-26
17:17:05.000000000 +0100
@@ -1,5 +1,5 @@
name: pipes-cacophony
-version: 0.2.1
+version: 0.4.1
synopsis: Pipes for Noise-secured network connections.
license: PublicDomain
license-file: LICENSE
@@ -10,7 +10,7 @@
category: Pipes, Cryptography
build-type: Simple
cabal-version: >=1.10
-tested-with: GHC == 7.10.1, GHC == 7.10.2, GHC == 7.10.3
+tested-with: GHC == 7.10.3, GHC == 8.0.2
description:
A set of pipes to secure network connections with the
<https://github.com/trevp/noise/blob/master/noise.md Noise> protocol.
@@ -30,6 +30,12 @@
-- FLAGS
flag hlint
+ description: Build hlint test
+
+flag build-examples
+ description: Build example executables
+ default: False
+ manual: True
flag llvm
default: False
@@ -40,15 +46,41 @@
library
build-depends:
- base >=4.8 && <5,
+ base >=4.8 && <5,
bytestring,
- cacophony >=0.6,
+ cacophony >=0.9,
+ memory,
pipes
hs-source-dirs: src
default-language: Haskell2010
exposed-modules:
Pipes.Noise
- ghc-options: -rtsopts -with-rtsopts=-N -Wall -fwarn-tabs
+ ghc-options: -Wall -fwarn-tabs
+
+ if flag(llvm)
+ ghc-options: -fllvm
+
+--------------------------------------------------------------------------------
+-- EXAMPLES
+
+executable loopback
+ default-language: Haskell2010
+ hs-source-dirs: examples/loopback
+ main-is: Main.hs
+
+ if flag(build-examples)
+ build-depends:
+ base >=4.8 && <5,
+ bytestring,
+ cacophony >=0.9,
+ lens,
+ memory,
+ pipes,
+ pipes-cacophony
+ else
+ buildable: False
+
+ ghc-options: -threaded -O2 -rtsopts -with-rtsopts=-N -Wall -fwarn-tabs
if flag(llvm)
ghc-options: -fllvm
@@ -67,5 +99,8 @@
buildable: False
else
build-depends:
- base >=4.8 && <5,
+ base >=4.8 && <5,
hlint
+
+ if flag(llvm)
+ ghc-options: -fllvm
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pipes-cacophony-0.2.1/src/Pipes/Noise.hs
new/pipes-cacophony-0.4.1/src/Pipes/Noise.hs
--- old/pipes-cacophony-0.2.1/src/Pipes/Noise.hs 2016-04-06
03:26:38.000000000 +0200
+++ new/pipes-cacophony-0.4.1/src/Pipes/Noise.hs 2016-12-26
17:17:05.000000000 +0100
@@ -8,48 +8,63 @@
module Pipes.Noise
( -- * Types
- MessagePipe,
+ InboundNoisePipe
+ , OutboundNoisePipe
-- * Pipes
- messageEncryptPipe,
- messageDecryptPipe
+ , mkNoisePipes
) where
-import Control.Concurrent.MVar (MVar, putMVar, takeMVar)
-import Control.Monad (forever)
+import Control.Concurrent.MVar (MVar, newMVar, putMVar, takeMVar)
+import Control.Exception (SomeException)
+import Data.ByteArray (ScrubbedBytes)
import Data.ByteString (ByteString)
-import Pipes (Pipe, await, yield, lift)
+import Pipes (Pipe, MonadIO, await, yield, liftIO)
import Crypto.Noise.Cipher (Cipher)
-import Crypto.Noise.Handshake
-import Crypto.Noise.Types
-import Data.ByteArray.Extend
-
--- | Message pipes transform ByteStrings.
-type MessagePipe = Pipe ByteString ByteString
-
--- | Creates a new 'MessagePipe' exclusively for encryption.
-messageEncryptPipe :: Cipher c
- => MVar (SendingCipherState c)
- -> MessagePipe IO r
-messageEncryptPipe csmv = forever $ do
+import Crypto.Noise.DH (DH)
+import Crypto.Noise.Hash (Hash)
+import Crypto.Noise
+
+-- | Pipe used for inbound Noise messages.
+type InboundNoisePipe = Pipe ByteString ScrubbedBytes
+
+-- | Pipe used for outbound Noise messages.
+type OutboundNoisePipe = Pipe ScrubbedBytes ByteString
+
+-- | Creates a pair of Pipes, the first used for inbound messages and the
+-- second used for outbound messages.
+mkNoisePipes :: (MonadIO m, Cipher c, DH d, Hash h)
+ => NoiseState c d h
+ -> IO (InboundNoisePipe m (Either SomeException ()),
+ OutboundNoisePipe m (Either SomeException ()))
+mkNoisePipes ns = do
+ nsmv <- liftIO . newMVar $ ns
+ return (inboundPipe nsmv, outboundPipe nsmv)
+
+inboundPipe :: (MonadIO m, Cipher c, DH d, Hash h)
+ => MVar (NoiseState c d h)
+ -> InboundNoisePipe m (Either SomeException ())
+inboundPipe nsmv = do
msg <- await
- encState <- lift $ takeMVar csmv
- let pt = Plaintext . bsToSB' $ msg
- (ct, encState') = encryptPayload pt encState
- lift $ putMVar csmv encState'
-
- yield ct
-
--- | Creates a new 'MessagePipe' exclusively for decryption.
-messageDecryptPipe :: Cipher c
- => MVar (ReceivingCipherState c)
- -> MessagePipe IO r
-messageDecryptPipe csmv = forever $ do
+ ns <- liftIO . takeMVar $ nsmv
+ case readMessage ns msg of
+ Left e -> return . Left $ e
+ Right (pt, ns') -> do
+ liftIO . putMVar nsmv $ ns'
+ yield pt
+ inboundPipe nsmv
+
+outboundPipe :: (MonadIO m, Cipher c, DH d, Hash h)
+ => MVar (NoiseState c d h)
+ -> OutboundNoisePipe m (Either SomeException ())
+outboundPipe nsmv = do
msg <- await
- decState <- lift $ takeMVar csmv
- let (Plaintext pt, decState') = decryptPayload msg decState
- lift $ putMVar csmv decState'
-
- yield . sbToBS' $ pt
+ ns <- liftIO . takeMVar $ nsmv
+ case writeMessage ns msg of
+ Left e -> return . Left $ e
+ Right (ct, ns') -> do
+ liftIO . putMVar nsmv $ ns'
+ yield ct
+ outboundPipe nsmv