1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
name: hmacaroons
version: 0.1.0.0
synopsis: Haskell implementation of macaroons
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
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
build-depends: base >=4 && < 5,
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,
deepseq >= 1.1,
hex >= 0.1
hs-source-dirs: src
default-language: Haskell2010
benchmark bench
default-language: Haskell2010
type: exitcode-stdio-1.0
hs-source-dirs: src, bench
main-is: bench.hs
ghc-options: -O2
build-depends: base >= 4 && <5,
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,
hex >= 0.1,
deepseq >= 1.1,
criterion >= 1.1
test-suite test
default-language: Haskell2010
type: exitcode-stdio-1.0
hs-source-dirs: test
main-is: main.hs
build-depends: base >= 4 && <5,
attoparsec >=0.12,
bytestring >=0.10,
base64-bytestring >= 1.0,
byteable >= 0.1 && <0.2,
cereal >= 0.4,
cryptohash >=0.11 && <0.12,
hex >= 0.1,
tasty >= 0.10,
tasty-hunit >= 0.9,
tasty-quickcheck >= 0.8,
hmacaroons
|