File: secret-sharing.cabal

package info (click to toggle)
haskell-secret-sharing 1.0.0.3-3
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 108 kB
  • ctags: 3
  • sloc: haskell: 130; makefile: 5
file content (72 lines) | stat: -rw-r--r-- 2,771 bytes parent folder | download
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
name:                secret-sharing
version:             1.0.0.3
synopsis:            Information-theoretic secure secret sharing 
description:
 Implementation of an (@m@,@n@)-threshold secret sharing scheme.
 A given ByteString @b@ (the secret) is split into @n@ shares, 
 and any @m@ shares are sufficient to reconstruct @b@.
 The scheme preserves information-theoretic perfect secrecy in the sense that the knowledge of up
 to @m-1@ shares does not reveal any information about the secret @b@.
 .
 /Example in GHCi:/
 Suppose that you want to split the string \"my secret data\" into n=5 shares such that
 at least m=3 shares are necessary to reconstruct the secret.
 .
 >> :m + Data.ByteString.Lazy.Char8 Crypto.SecretSharing
 >> let secret = pack "my secret message!"
 >> shares <- encode 3 5 secret
 >> mapM_ (Prelude.putStrLn . show) shares -- each share should be deposited at a different site.
 > (1,"\134\168\154\SUBV\248\CAN:\250y<\GS\EOT*\t\222_\140")
 > (2,"\225\206\241\136\SUBse\199r\169\162\131D4\179P\210x")
 > (3,"~\238%\192\174\206\\\f\214\173\162\148\&3\139_\183\193\235")
 > (4,"Z\b0\188\DC2\f\247\f,\136\&6S\209\&5\n\FS,\223")
 > (5,"x\EM\CAN\DELI*<\193q7d\192!/\183v\DC3T")
 >> let shares' = Prelude.drop 2 shares 
 >> decode shares' 
 > "my secret message!"
 .
 The mathematics behind the secret sharing scheme is described in:
 \"/How to share a secret/.\" by Adi Shamir.
 In Communications of the ACM 22 (11): 612–613, 1979.
license:             LGPL-2.1
license-file:        LICENSE
author:              Peter Robinson <peter.robinson@monoid.at>
maintainer:          peter.robinson@monoid.at
copyright:           Peter Robinson 2014
category:            Cryptography 
build-type:          Simple
cabal-version:       >=1.8
homepage:            http://monoid.at/code
stability:           experimental

library
  hs-source-dirs:    src
  exposed-modules:   Crypto.SecretSharing
                     Crypto.SecretSharing.Internal

  build-depends:    base >=4.6 && < 5,
                    bytestring ==0.10.*,
                    dice-entropy-conduit >= 1.0.0.0,
                    binary >=0.5.1.1,
                    vector >=0.10.11.0,
                    finite-field >=0.8.0,
                    polynomial >= 0.7.1
  ghc-options:      -Wall 


test-suite Main
  type:            exitcode-stdio-1.0
  x-uses-tf:       true
  build-depends:   base >= 4 && < 5,
                   QuickCheck >= 2.4,
                   test-framework >= 0.4.1,
                   test-framework-quickcheck2,
                   polynomial,
                   bytestring,
                   vector,
                   binary,
                   finite-field,
                   dice-entropy-conduit
  hs-source-dirs:  src, tests
  main-is:         Tests.hs