Copyright | (c) Marcel Fourné 20[14..] |
---|---|
License | BSD3 |
Maintainer | Marcel Fourné (haskell@marcelfourne.de) |
Stability | alpha |
Portability | Good |
Safe Haskell | None |
Language | Haskell98 |
Long-time plan: get rid of Integer and do all field arithmetic const-time by hand
- b :: Int
- q :: FPrime
- l :: FPrime
- d :: FPrime
- i :: FPrime
- h :: ByteString -> ByteString
- by :: FPrime
- inf :: Point
- null :: FPrime
- eins :: FPrime
- alleeins :: FPrime
- xrecover :: FPrime -> Integer -> FPrime
- listofbits :: FPrime -> [FPrime]
- bPoint :: Point
- padd :: Point -> Point -> Point
- pmul :: Point -> FPrime -> Point
- ison :: Point -> Bool
- getFPrime :: Get FPrime
- putFPrime :: FPrime -> Put
- pointtobs :: Point -> ByteString
- bstopoint :: ByteString -> Either String Point
- keyPoint :: SecFPrime -> PubKeyPoint
- a :: SecKey -> Either String SecFPrime
- data Point = Point (FPrime, FPrime)
- data VerifyResult
- type PubKey = ByteString
- type PubKeyPoint = Point
- type SecKey = ByteString
- type SecFPrime = FPrime
- type Signature = ByteString
- type Message = ByteString
- genkeys_simple :: IO (Either String (SecKey, PubKey))
- genkeys :: CryptoRandomGen g => g -> Either String (SecKey, PubKey)
- sign :: SecKey -> Message -> Either String Signature
- sign_detached :: SecKey -> Message -> Either String Signature
Documentation
h :: ByteString -> ByteString Source #
wrapper for our hash function
xrecover :: FPrime -> Integer -> FPrime Source #
recover the x coordinate from the y coordinate and a signum
listofbits :: FPrime -> [FPrime] Source #
convert a FPrime to a list of FPrimes, each 0 or 1 depending on the inputs bits
pmul :: Point -> FPrime -> Point Source #
scalar multiplication, branchfree in k, pattern-matched branch on j (length of k)
pointtobs :: Point -> ByteString Source #
convert a point on the curve to a ByteString
keyPoint :: SecFPrime -> PubKeyPoint Source #
multiply the curve base point by a FPrime, giving a point on the curve
type PubKey = ByteString Source #
type PubKeyPoint = Point Source #
type SecKey = ByteString Source #
type Signature = ByteString Source #
type Message = ByteString Source #
genkeys_simple :: IO (Either String (SecKey, PubKey)) Source #
generate a new key pair (secret and derived public key) using some external entropy
genkeys :: CryptoRandomGen g => g -> Either String (SecKey, PubKey) Source #
generate a new key pair (secret and derived public key) using the supplied randomness-generator