packages feed

secret-sharing 1.0.1.0 → 1.0.1.2

raw patch · 6 files changed

Files

+ ChangeLog.md view
@@ -0,0 +1,15 @@+# Changelog for secret-sharing++## Unreleased changes++* None++## 1.0.1.2++* Updated README.+* Minor cleanups.++## 1.0.1.1++* Make it build with `stack`.+* Updated dependencies.
+ README.md view
@@ -0,0 +1,28 @@+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.++~~~ {.haskell}+❯ :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.
− Setup.hs
@@ -1,2 +0,0 @@-import Distribution.Simple-main = defaultMain
secret-sharing.cabal view
@@ -1,70 +1,65 @@-name:                secret-sharing-version:             1.0.1.0-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:            https://github.com/pwrobinson/secret-sharing-stability:           experimental+cabal-version: 1.12 +-- This file has been generated from package.yaml by hpack version 0.31.2.+--+-- see: https://github.com/sol/hpack+--+-- hash: c21dac92ca7fbfcbf556d7a2483bfb7a84eaaae8527274e6796ab95b958a0492++name:           secret-sharing+version:        1.0.1.2+synopsis:       Information-theoretic secure secret sharing+description:    Please see the README on GitHub at <https://github.com/pwrobinson/secret-sharing#readme>+category:       Data, Cryptography+homepage:       https://github.com/pwrobinson/secret-sharing#readme+bug-reports:    https://github.com/pwrobinson/secret-sharing/issues+author:         Peter Robinson+maintainer:     peter@lowerbound.io+copyright:      2014-2020 Peter Robinson+license:        LGPL-2.1+license-file:   LICENSE+build-type:     Simple+extra-source-files:+    README.md+    ChangeLog.md+ source-repository head   type: git   location: https://github.com/pwrobinson/secret-sharing  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-  ghc-options:      -Wall-+  exposed-modules:+      Crypto.SecretSharing+      Crypto.SecretSharing.Internal+  other-modules:+      Paths_secret_sharing+  hs-source-dirs:+      src+  build-depends:+      base >=4.6 && <5+    , binary >=0.5.1.1+    , bytestring >=0.10.0.2+    , dice-entropy-conduit >=1.0.0.0+    , finite-field >=0.8.0+    , vector >=0.10.11.0+  default-language: Haskell2010 -test-suite Main-  type:            exitcode-stdio-1.0-  x-uses-tf:       true-  build-depends:   base >= 4 && < 5,-                   bytestring ==0.10.*,-                   QuickCheck >= 2.4,-                   secret-sharing,-                   test-framework >= 0.4.1,-                   test-framework-quickcheck2-  hs-source-dirs:  tests-  main-is:         Tests.hs+test-suite secret-sharing-test+  type: exitcode-stdio-1.0+  main-is: Tests.hs+  other-modules:+      Paths_secret_sharing+  hs-source-dirs:+      tests+  build-depends:+      QuickCheck >=2.4+    , base >=4 && <5+    , binary >=0.5.1.1+    , bytestring >=0.10.0.2+    , dice-entropy-conduit >=1.0.0.0+    , finite-field >=0.8.0+    , secret-sharing+    , test-framework >=0.4.1+    , test-framework-quickcheck2+    , vector >=0.10.11.0+  default-language: Haskell2010
src/Crypto/SecretSharing.hs view
@@ -3,19 +3,18 @@ -- Module      :  Crypto.SecretSharing -- Copyright   :  Peter Robinson 2014 -- License     :  LGPL--- --- Maintainer  :  Peter Robinson <peter.robinson@monoid.at>+-- -- Stability   :  experimental -- Portability :  portable--- +-- -- Implementation of an (@m@,@n@)-threshold secret sharing scheme.--- A given ByteString @b@ (the secret) is split into @n@ shares, +-- A given ByteString @b@ (the secret) is split into @n@ shares, -- and any @m@ shares are sufficient to reconstruct @b@. -- The scheme preserves perfect secrecy in the sense that the knowledge of up -- to @m-1@ shares does not reveal any information about the secret @b@. -- -- Typically, there are @n@ parties and we would like to give the @i@-th party--- the @i@-share of each byte. +-- the @i@-share of each byte. -- For example, to encode a bytestring @secret@ as @10@ shares, any @5@ of which -- are sufficient for reconstruction we could write: --@@ -27,7 +26,7 @@ -- The mathematics behind the secret sharing scheme is described in: -- \"How to share a secret.\" by Shamir, Adi. -- In Communications of the ACM 22 (11): 612–613, 1979.--- +-- -- ----------------------------------------------------------------------------- 
src/Crypto/SecretSharing/Internal.hs view
@@ -5,7 +5,6 @@ -- Copyright   :  Peter Robinson 2014 -- License     :  LGPL ----- Maintainer  :  Peter Robinson <peter.robinson@monoid.at> -- Stability   :  experimental -- Portability :  portable --@@ -158,4 +157,3 @@   foldr (\c res -> c + (x * res)) 0 coeffs --  let clist = zipWith (\pow c -> (\x -> c * (x^pow))) [0..] coeffs --  in L.foldl' (+) 0 [ c x | c <- clist ]-