summaryrefslogtreecommitdiff
path: root/tests/test-ed25519.hs
blob: b249f343abb174c8a38aedc765eede5f57348d9d (plain)
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
{-# LANGUAGE LambdaCase, QuasiQuotes #-}

import Data.Binary
import Data.OpenPGP
import Data.OpenPGP.Util
import Control.Monad
import Crypto.Cipher.SBox
-- import Data.ByteString (ByteString)
import qualified Data.ByteString.Lazy as BL
import System.IO

-- Five pgp packets.
keyring :: BL.ByteString
keyring = BL.fromChunks . (:[]) $ [bytes|
    98 33 04 5d c3 17 92 16 09 2b 06 01 04 01 da 47
    0f 01 01 07 40 d3 0e e6 a9 02 02 ce 00 35 98 4d
    46 a5 c2 fe 77 dd 91 aa b0 ee db 37 f2 d3 60 71
    e9 55 9f 9a d0 b4 1b 74 65 73 74 65 72 20 3c 6e
    6f 62 6f 64 79 40 65 78 61 6d 70 6c 65 2e 63 6f
    6d 3e 88 90 04 13 16 0a 00 38 16 21 04 7e ea bd
    d2 ea 2e 2a 5d eb c7 b0 35 6f 1d fe 7b 47 ad 75
    bb 05 02 5d c3 17 92 02 1b 03 05 0b 09 08 07 02
    06 15 0a 09 08 0b 02 04 16 02 03 01 02 1e 01 02
    17 80 00 0a 09 10 6f 1d fe 7b 47 ad 75 bb f3 f0
    00 ff 57 ff 3b 5d 8e 7c 43 f0 d4 4f fe 0e 10 76
    e4 d5 55 0d e1 db 28 e1 92 87 05 02 24 50 d1 c4
    3d 35 00 ff 50 ef f4 dd 3f 69 89 a4 89 12 eb 0d
    5e 11 4f 79 67 89 04 fd 60 ba fd 2a 50 1e 03 21
    38 9a 2a 04 b8 38 04 5d c3 17 92 12 0a 2b 06 01
    04 01 97 55 01 05 01 01 07 40 73 1d 7a 99 ae e3
    0e 8f 49 74 7d f3 b6 91 f2 d9 44 1c 4a bc eb 43
    17 96 0b 8f 2c fc 6b 2e 8a 7c 03 01 08 07 88 78
    04 18 16 0a 00 20 16 21 04 7e ea bd d2 ea 2e 2a
    5d eb c7 b0 35 6f 1d fe 7b 47 ad 75 bb 05 02 5d
    c3 17 92 02 1b 0c 00 0a 09 10 6f 1d fe 7b 47 ad
    75 bb a3 4e 00 fe 2b e9 46 86 d5 02 d7 e1 47 e7
    27 3e e1 3b 5a d8 7d 81 41 24 3e a2 4e c4 b2 f3
    cd 8f 09 24 6f e3 00 ff 61 bb 9a 89 9f 6f 5f c2
    39 18 15 cb f6 c9 2f 24 a3 ba 7d 6d a0 1e f0 a2
    5d a6 2e 03 4c 97 9f 0d
    |]

main = do
    let Message
            [ master -- ---Public 7EEABDD2EA2E2A5DEBC7B0356F1DFE7B47AD75BB Ed25519
            , uid    -- UserID "tester <nobody@example.com>"
            , uidsig -- Signature ^ signed: 6F1DFE7B47AD75BB ["vouch-sign"]
            , subkey -- PublicKey 231056D292F432A87A5207F7E1304F68665EC913 ECC
            , subsig -- Signature ^ signed: 6F1DFE7B47AD75BB ["encrypt"]
            ] = decode keyring
        over_uid = CertificationSignature master uid [uidsig]
        over_sub = SubkeySignature master subkey [subsig]

    let uid_result = not . null $ signatures_over $ verify (Message [master]) over_uid
    putStrLn $ "   UID signature: " ++ show uid_result

    let sub_result = not . null $ signatures_over $ verify (Message [master]) over_sub
    putStrLn $ "Subkey signature: " ++ show sub_result