Personal tools

HacPDX/Projects

From HaskellWiki

< HacPDX(Difference between revisions)
Jump to: navigation, search
Line 68: Line 68:
   
 
==Crypto 5.0 notes==
 
==Crypto 5.0 notes==
TomMD's design for a digest class. From memory.
+
See the patch-tag.com crypto repository files Data/Digest.hs and Data/Cipher.hs for proposed [http://patch-tag.com/r/crypto/snapshot/current/content/pretty/Data/Digest.hs Digest] and [http://patch-tag.com/r/crypto/snapshot/current/content/pretty/Data/Cipher.hs Cipher] typeclasses.
<haskell>
 
class Digest d s | d -> s where
 
-- Associated types are the new hotness. Should we be using them?
 
size :: d -> Int -- Size of a digest
 
extract :: d -> ByteString
 
-- Initial state of the hash function. Dependent on the length of the
 
-- message. Maybe we should let the hash function determine the precision
 
-- or absence of the length.
 
initial :: Word64 -> s
 
-- Chunkwise hashing. Needed to implement efficient hashing of lazy
 
-- bytestrings and efficient hashing of streams in general. OOH, an
 
-- application for iteratees! Hooray!
 
hashsome :: ByteString -> s -> s
 
finalize :: s -> d
 
   
hash :: Digest d s => ByteString -> d
+
This would allow digests to be called with a simple "hash" function so long as they have an instance:
hash bs = finalize $ hashsome bs initial
 
   
newtype SHA1 = SHA1 ByteString
+
<haskell>
instance Digest SHA1 SHA1State where
+
newtype SHA1 = SHA1 (Word32, Word32, Word32, Word32, Word32)
  +
instance Digest SHA1 SHA1PartialCtx where
 
--Code goes here...
 
--Code goes here...
 
</haskell>
 
</haskell>

Revision as of 18:12, 26 September 2009

Contents

1 Proposed Projects for HacPDX

Projects you intend to tackle.

Project Task Description Participants
Network APIs Investigate and test new APIs for potentially replacing network, network-bytestring, and network-fancy TomMD
HPDF Additional hacking and c bindings jmelesky
HUnit GUI. Maybe also text UI that isn't horrible KimWallmark
judy Fast, mutable collection types dons

2 Additional Project Suggestions

Projects you'd consider, but depends on the interest of other attendees.

Project Task Description
Crypto Part I Fix up the crypto library - use bytestring, fold in pureMD5/SHA/hecc, provide a new API
PNG Work on Bart Massey's pure-Haskell PNG reading/writing library. Lots to do here.
ParseArgs Clean up and extend a bit Bart Massey's parseargs package.
TCP Service Extract and package the SMTP-style TCP server bits from Bart Massey's MiniChess server.
sqlite open_v2() Add full support for SQlite's open_v2() call to the sqlite package.
HaRe Get it compiling under ghc 6.10; cabalize it.
plugins Tests and examples seem to fail with linking errors on the latest Haskell Platform.
wxHaskell Get this to install on Arch Linux.
Kernel Modules Finish porting a Linux driver to Haskell (mostly means working on the c2hs bindings)
Whiteout I - Echo Nolan - have been working on a BitTorrent client library. It uses fun things like iteratees and STM. If anyone is interested in hearing about/working on it, I'm more than happy to give the guided tour.
Lambdabot Everyone's favorite Haskell IRC bot.

3 Crypto 5.0 notes

See the patch-tag.com crypto repository files Data/Digest.hs and Data/Cipher.hs for proposed Digest and Cipher typeclasses.

This would allow digests to be called with a simple "hash" function so long as they have an instance:

newtype SHA1 = SHA1 (Word32, Word32, Word32, Word32, Word32)
instance Digest SHA1 SHA1PartialCtx where
  --Code goes here...

And similarly for block/stream ciphers and RNGs. Also, slurp up the various other crypto libs on hackage.

3.1 Other todos

  • Add website and darcs repo to Crypto.cabal.
  • Use test-framework.
  • Don't build tests by default - use a flag.
  • Is [email protected] still the correct contact email? If not, change it in CryptoHomePage.html
  • Does the readme *really* have to be in TeX?
  • Get a real bugtracker set up? code.haskell.org gives out trac hosting.
  • Holy crap that is a lot of warnings.
  • QuickCheck 2?
  • Echo hates Darcs with a passion.