Misc deletions and restructuring
Getty Ritter
7 years ago
1 | |
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
2 | |
Version 2, December 2004
|
3 | |
|
4 | |
Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
|
5 | |
|
6 | |
Everyone is permitted to copy and distribute verbatim or modified
|
7 | |
copies of this license document, and changing it is allowed as long
|
8 | |
as the name is changed.
|
9 | |
|
10 | |
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
11 | |
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
12 | |
|
13 | |
0. You just DO WHAT THE FUCK YOU WANT TO.
|
14 | |
|
1 | |
name: RSAPair
|
2 | |
version: 0.1.0.1
|
3 | |
license: OtherLicense
|
4 | |
license-file: LICENSE
|
5 | |
author: Getty Ritter
|
6 | |
maintainer: gdritter@galois.com
|
7 | |
category: Codec
|
8 | |
build-type: Simple
|
9 | |
cabal-version: >=1.10
|
10 | |
|
11 | |
executable rsa-pair
|
12 | |
main-is: RSAPair.hs
|
13 | |
build-depends: base >=4.6 && <4.8,
|
14 | |
bytestring, binary, DRBG, crypto-api, RSA
|
15 | |
hs-source-dirs: src
|
16 | |
default-language: Haskell2010⏎
|
1 | |
import Distribution.Simple
|
2 | |
main = defaultMain
|
1 | |
module Main where
|
2 | |
|
3 | |
import Codec.Crypto.RSA
|
4 | |
import Crypto.Random
|
5 | |
import Crypto.Random.DRBG
|
6 | |
import Data.Binary
|
7 | |
import qualified Data.ByteString.Lazy as BS
|
8 | |
import Numeric (showHex)
|
9 | |
import System.Environment (getArgs)
|
10 | |
import System.IO (hPutStrLn, stderr)
|
11 | |
|
12 | |
toHex :: (Binary a) => a -> String
|
13 | |
toHex = concat . map (flip showHex "") . BS.unpack . encode
|
14 | |
|
15 | |
main :: IO ()
|
16 | |
main = do
|
17 | |
args <- getArgs
|
18 | |
let size = case args of (s:_) -> read s
|
19 | |
_ -> 1024
|
20 | |
hPutStrLn stderr ("Generating key pair of size " ++ show size)
|
21 | |
(pub, priv) <- genPair size
|
22 | |
putStrLn ("pub: " ++ toHex pub)
|
23 | |
putStrLn ("priv: " ++ toHex priv)
|
24 | |
|
25 | |
genPair :: Int -> IO (PublicKey, PrivateKey)
|
26 | |
genPair size = go `fmap` (newGenIO :: IO HashDRBG)
|
27 | |
where go g = let (pub, priv, _) = generateKeyPair g size in (pub, priv)
|
12 | 12 |
|
13 | 13 |
executable json2bencode
|
14 | 14 |
main-is: Main.hs
|
15 | |
-- other-modules:
|
16 | |
-- other-extensions:
|
17 | |
build-depends: base >=4.8 && <4.9,
|
| 15 |
build-depends: base,
|
18 | 16 |
aeson,
|
19 | 17 |
bencode,
|
20 | 18 |
bytestring,
|
1 | |
# For more information, see: https://github.com/commercialhaskell/stack/blob/release/doc/yaml_configuration.md
|
2 | |
|
3 | |
# Specifies the GHC version and set of packages available (e.g., lts-3.5, nightly-2015-09-21, ghc-7.10.2)
|
4 | |
resolver: lts-3.19
|
5 | |
|
6 | |
# Local packages, usually specified by relative directory name
|
7 | |
packages:
|
8 | |
- '.'
|
9 | |
|
10 | |
# Packages to be pulled from upstream that are not in the resolver (e.g., acme-missiles-0.3)
|
11 | |
extra-deps: []
|
12 | |
|
13 | |
# Override default flag values for local packages and extra-deps
|
14 | |
flags: {}
|
15 | |
|
16 | |
# Extra package databases containing global packages
|
17 | |
extra-package-dbs: []
|
18 | |
|
19 | |
# Control whether we use the GHC we find on the path
|
20 | |
# system-ghc: true
|
21 | |
|
22 | |
# Require a specific version of stack, using version ranges
|
23 | |
# require-stack-version: -any # Default
|
24 | |
# require-stack-version: >= 0.1.4.0
|
25 | |
|
26 | |
# Override the architecture used by stack, especially useful on Windows
|
27 | |
# arch: i386
|
28 | |
# arch: x86_64
|
29 | |
|
30 | |
# Extra directories used by stack for building
|
31 | |
# extra-include-dirs: [/path/to/dir]
|
32 | |
# extra-lib-dirs: [/path/to/dir]
|
| 1 |
#!/usr/bin/python
|
| 2 |
|
| 3 |
import os
|
| 4 |
import sys
|
| 5 |
import json
|
| 6 |
import yaml
|
| 7 |
|
| 8 |
|
| 9 |
def die(msg, *args):
|
| 10 |
sys.stderr.write(msg + '\n', *args)
|
| 11 |
sys.exit(99)
|
| 12 |
|
| 13 |
|
| 14 |
def load_dir(dir_name):
|
| 15 |
if not os.path.isdir(dir_name):
|
| 16 |
die("{0} is not a directory", dir_name)
|
| 17 |
else:
|
| 18 |
return dict((path, load_elem(os.path.join(dir_name, path)))
|
| 19 |
for path in os.listdir(dir_name) if path[0] != '.')
|
| 20 |
|
| 21 |
|
| 22 |
def load_elem(path):
|
| 23 |
if os.path.isdir(path):
|
| 24 |
return load_dir(path)
|
| 25 |
else:
|
| 26 |
with open(path) as f:
|
| 27 |
content = f.read()
|
| 28 |
try:
|
| 29 |
return json.loads(content)
|
| 30 |
except ValueError:
|
| 31 |
return content.strip()
|
| 32 |
|
| 33 |
if __name__ == '__main__':
|
| 34 |
if sys.argv[1:]:
|
| 35 |
dir_name = sys.argv[1]
|
| 36 |
else:
|
| 37 |
dir_name = os.getcwd()
|
| 38 |
yaml.dump(load_dir(dir_name), sys.stdout)
|
39 | 39 |
EOF
|
40 | 40 |
|
41 | 41 |
cd $DIR
|
42 | |
cabal sandbox init
|
43 | |
cabal install
|
44 | |
cabal configure
|
45 | |
exec cabal repl
|
| 42 |
cabal new-build
|
| 43 |
exec cabal new-repl
|
| 1 |
#!/usr/bin/python
|
| 2 |
|
| 3 |
import os
|
| 4 |
import sys
|
| 5 |
import json
|
| 6 |
import yaml
|
| 7 |
|
| 8 |
|
| 9 |
def die(msg, *args):
|
| 10 |
sys.stderr.write(msg + '\n', *args)
|
| 11 |
sys.exit(99)
|
| 12 |
|
| 13 |
|
| 14 |
def emit(datum, root='./'):
|
| 15 |
if type(datum) is not dict:
|
| 16 |
die("Unexpected type: {0} of type {1}", datum, type(datum))
|
| 17 |
else:
|
| 18 |
for key, val in datum.items():
|
| 19 |
if type(val) is dict:
|
| 20 |
new_root = os.path.join(root, key)
|
| 21 |
os.makedir(new_root)
|
| 22 |
emit(val, root=new_root)
|
| 23 |
elif type(val) is list:
|
| 24 |
die("Cannot serialize lists: {0}", datum)
|
| 25 |
elif type(val) is str or type(val) is unicode:
|
| 26 |
with open(os.path.join(root, key), 'w') as f:
|
| 27 |
f.write(val)
|
| 28 |
f.write('\n')
|
| 29 |
else:
|
| 30 |
with open(os.path.join(root, key), 'w') as f:
|
| 31 |
json.dump(val, f)
|
| 32 |
f.write('\n')
|
| 33 |
|
| 34 |
if __name__ == '__main__':
|
| 35 |
if sys.argv[:1] and sys.argv[1] != '-':
|
| 36 |
with open(sys.argv[1]) as f:
|
| 37 |
datum = yaml.load(f)
|
| 38 |
else:
|
| 39 |
datum = yaml.load(sys.stdin)
|
| 40 |
emit(datum)
|