]> git.immae.eu Git - github/fretlink/hmacaroons.git/commitdiff
Nixify package & documentation
authorJulien Tanguy <julien.tanguy@jhome.fr>
Wed, 6 May 2015 09:15:04 +0000 (11:15 +0200)
committerJulien Tanguy <julien.tanguy@jhome.fr>
Wed, 6 May 2015 09:15:04 +0000 (11:15 +0200)
Added quickcheck helper

.travis.yml [new file with mode: 0644]
CONTRIBUTING.md [new file with mode: 0644]
default.nix [new file with mode: 0644]
hmacaroons.cabal
shell.nix [new file with mode: 0644]
test/Crypto/Macaroon/Instances.hs

diff --git a/.travis.yml b/.travis.yml
new file mode 100644 (file)
index 0000000..999bd37
--- /dev/null
@@ -0,0 +1 @@
+language: haskell
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644 (file)
index 0000000..3e85b0b
--- /dev/null
@@ -0,0 +1,26 @@
+How to contribute
+=================
+First and most important: Submit issues !
+
+If you want to contribute, please fork the repo, and send us a pull request with
+your changes.
+
+Tests and cabal flags
+---------------------
+For this project we use the standard hunit/quickcheck tests.
+If you want to submit a new feature, please try to integrate at least
+*some* tests.
+
+Code style
+----------
+We do not impose any specific style of code, but you can improve your code
+by running it through `hlint`.
+
+Crypto analysis
+---------------
+This library has **not** been audited by security experts !
+It relies on an existing implementation and crypto libraries.
+
+Any analysis is welcome, and I will gladly merge it.
+
+
diff --git a/default.nix b/default.nix
new file mode 100644 (file)
index 0000000..10ee0b9
--- /dev/null
@@ -0,0 +1,20 @@
+{ mkDerivation, attoparsec, base, base64-bytestring, byteable
+, bytestring, cereal, cipher-aes, cryptohash, deepseq, hex, stdenv
+, tasty, tasty-hunit, tasty-quickcheck
+}:
+mkDerivation {
+  pname = "hmacaroons";
+  version = "0.1.0.0";
+  src = ./.;
+  buildDepends = [
+    attoparsec base base64-bytestring byteable bytestring cereal
+    cipher-aes cryptohash deepseq hex
+  ];
+  testDepends = [
+    attoparsec base base64-bytestring byteable bytestring cereal
+    cryptohash hex tasty tasty-hunit tasty-quickcheck
+  ];
+  homepage = "https://github.com/jtanguy/hmacaroons";
+  description = "Haskell implementation of macaroons";
+  license = stdenv.lib.licenses.bsd3;
+}
index 2b23c89c32ceb4032da476330cfd31567cfa5a00..5590af61f440292797d79cec60e19de301f59309 100644 (file)
@@ -1,23 +1,73 @@
 name:                hmacaroons
 version:             0.1.0.0
 synopsis:            Haskell implementation of macaroons
--- description:         
+description:
+  = Macaroons: Pure haskell implementation of macaroons
+  #macaroons-pure-haskell-implementation-of-macaroons#
+
+  Macaroons is a pure haskell implementation of macaroons. It aims to
+  provide compatibility at a serialized level with the
+  <https://github.com/rescrv/libmacaroons reference implementation> and
+  the <https://github.com/ecordell/pymacaroons python implementation>
+
+  __WARNING: This library has not been audited by security experts.__
+  __There is no error handling at the moment, everyhting is silently
+  accepted__
+
+  It is developed in the purpose of exploration purposes, and would need
+  much more attention if it were to be used in production.
+
+  = References
+  #references#
+
+  == Papers and articles
+  #papers-and-articles#
+
+  -   <http://research.google.com/pubs/pub41892.html Google paper on macaroons>
+  -   <https://air.mozilla.org/macaroons-cookies-with-contextual-caveats-for-decentralized-authorization-in-the-cloud/ Macaroons at Mozilla>
+  -   <http://hackingdistributed.com/2014/11/23/macaroons-in-hyperdex/ Time for better security in NoSQL>
+
+  == Implementations
+  #implementations#
+
+  -   <https://github.com/rescrv/libmacaroons C>
+  -   <https://github.com/nitram509/jmacaroons Java>
+  -   <https://github.com/nitram509/macaroons.js Node.js>
+  -   <https://github.com/ecordell/pymacaroons Python>
+  -   <https://github.com/cryptosphere/rust-macaroons.git Rust>
+
+  = TODO
+  #todo#
+
+  -   Third party caveats
+  -   Verify Macaroons
+  -   Discharge Macaroons
+  -   JSON serialization
+  -   Quickcheck tests
+  -   Error handling
+  -   FFI\'s for testing and benchmarking purposes
 license:             BSD3
 license-file:        LICENSE
 author:              Julien Tanguy
 maintainer:          julien.tanguy@jhome.fr
--- copyright:           
+homepage:            https://github.com/jtanguy/hmacaroons
+bug-reports:         https://github.com/jtanguy/hmacaroons/issues
 category:            Data
 build-type:          Simple
 extra-source-files:  README.md
+                     CONTRIBUTING.md
 cabal-version:       >=1.10
 
+source-repository head
+    type:       git
+    branch:     master
+    location:   https://github.com/jtanguy/hmacaroons
+
 library
   exposed-modules:     Crypto.Macaroon,
                        Crypto.Macaroon.Binder
                        Crypto.Macaroon.Serializer.Base64
   other-modules:       Crypto.Macaroon.Internal
-  -- other-extensions:    
   build-depends:  base >=4 && < 5,
                   attoparsec >=0.12,
                   bytestring >=0.10,
@@ -41,14 +91,14 @@ benchmark bench
                   attoparsec >=0.12,
                   bytestring >=0.10,
                   base64-bytestring >= 1.0,
+                  byteable >= 0.1 && <0.2,
                   cereal >= 0.4,
                   cryptohash >=0.11 && <0.12,
-                  cipher-aes >=0.2 && <0.3,
-                  byteable >= 0.1 && <0.2,
+--                  cipher-aes >=0.2 && <0.3,
                   hex >= 0.1,
                   deepseq >= 1.1,
                   criterion >= 1.1
+
 test-suite test
   default-language: Haskell2010
   type: exitcode-stdio-1.0
diff --git a/shell.nix b/shell.nix
new file mode 100644 (file)
index 0000000..07952fc
--- /dev/null
+++ b/shell.nix
@@ -0,0 +1,8 @@
+with (import <nixpkgs> {}).pkgs;
+let hspkgs = haskell-ng.packages.ghc7101.override {
+     overrides = self: super: {
+       hmacaroons = self.callPackage ./. {};
+      };
+   };
+in
+  hspkgs.hmacaroons.env
index 5d4b0624150aea5da8004eeabd05f322b9eeb123..4e2f39f4d3bad32c05cedc043694a59483fd1066 100644 (file)
@@ -23,6 +23,12 @@ import           Test.Tasty.QuickCheck
 
 import           Crypto.Macaroon
 
+
+-- | Adjust the size parameter, by transforming it with the given
+-- function.
+scale :: (Int -> Int) -> Gen a -> Gen a
+scale f g = sized (\n -> resize (f n) g)
+
 newtype Url = Url { unUrl :: BS.ByteString } deriving (Show)
 
 instance Arbitrary Url where