diff options
author | Andrew Cady <d@jerkface.net> | 2017-08-29 05:36:11 -0400 |
---|---|---|
committer | Andrew Cady <d@jerkface.net> | 2017-08-29 05:36:11 -0400 |
commit | b78f7c78c3a6bcc2fddf3603336ccfc7c5e8ea50 (patch) | |
tree | 2a210f1b1acc779f6f7e76ff2c4e47d7db18ad41 | |
parent | 85129e4a9b97e7fe27ea1c560ad43603ad5133bc (diff) |
Include derived file Arbitrary.hs in repo
This allows the git repo to be used as a dependency for stack builds.
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | Data/OpenPGP/Arbitrary.hs | 272 |
2 files changed, 272 insertions, 1 deletions
@@ -3,7 +3,6 @@ | |||
3 | *.swp* | 3 | *.swp* |
4 | *.orig | 4 | *.orig |
5 | *.rej | 5 | *.rej |
6 | Data/OpenPGP/Arbitrary.hs | ||
7 | verify | 6 | verify |
8 | sign | 7 | sign |
9 | keygen | 8 | keygen |
diff --git a/Data/OpenPGP/Arbitrary.hs b/Data/OpenPGP/Arbitrary.hs new file mode 100644 index 0000000..48e43c9 --- /dev/null +++ b/Data/OpenPGP/Arbitrary.hs | |||
@@ -0,0 +1,272 @@ | |||
1 | {-# OPTIONS_GHC -fno-warn-orphans -fno-warn-unused-imports #-} | ||
2 | module Data.OpenPGP.Arbitrary where | ||
3 | import Data.OpenPGP | ||
4 | import Data.OpenPGP.Internal | ||
5 | import Test.QuickCheck | ||
6 | import Test.QuickCheck.Instances | ||
7 | import Data.Word | ||
8 | |||
9 | instance () => Arbitrary Packet where | ||
10 | arbitrary | ||
11 | = do x <- choose (0 :: Int, 13) | ||
12 | case x of | ||
13 | 0 -> do x1 <- arbitrary | ||
14 | x2 <- arbitrary | ||
15 | x3 <- arbitrary | ||
16 | x4 <- arbitrary | ||
17 | return (AsymmetricSessionKeyPacket x1 x2 x3 x4) | ||
18 | 1 -> do x1 <- arbitrary | ||
19 | x2 <- arbitrary | ||
20 | x3 <- arbitrary | ||
21 | x4 <- resize 10 (listOf arbitrary) | ||
22 | x5 <- resize 10 (listOf arbitrary) | ||
23 | x6 <- arbitrary | ||
24 | x7 <- arbitrary | ||
25 | version <- choose (2 :: Word8, 4) | ||
26 | case version of | ||
27 | 4 -> | ||
28 | return (signaturePacket 4 x1 x2 x3 x4 x5 x6 x7) | ||
29 | _ -> do | ||
30 | creation_time <- arbitrary | ||
31 | keyid <- vectorOf 16 (elements (['0'..'9'] ++ ['A'..'F'])) | ||
32 | return (signaturePacket version x1 x2 x3 [] [SignatureCreationTimePacket creation_time, IssuerPacket keyid] x6 x7) | ||
33 | 2 -> do x1 <- arbitrary | ||
34 | x2 <- arbitrary | ||
35 | x3 <- arbitrary | ||
36 | x4 <- arbitrary | ||
37 | return (SymmetricSessionKeyPacket x1 x2 x3 x4) | ||
38 | 3 -> do x1 <- arbitrary | ||
39 | x2 <- arbitrary | ||
40 | x3 <- arbitrary | ||
41 | x4 <- arbitrary | ||
42 | x5 <- arbitrary | ||
43 | x6 <- arbitrary | ||
44 | return (OnePassSignaturePacket x1 x2 x3 x4 x5 x6) | ||
45 | 4 -> do x1 <- arbitrary | ||
46 | x2 <- arbitrary | ||
47 | x3 <- arbitrary | ||
48 | x4 <- arbitrary | ||
49 | x5 <- arbitrary | ||
50 | x6 <- arbitrary | ||
51 | return (PublicKeyPacket x1 x2 x3 x4 x5 x6) | ||
52 | 5 -> do x1 <- arbitrary | ||
53 | x2 <- arbitrary | ||
54 | x3 <- arbitrary | ||
55 | x4 <- arbitrary | ||
56 | x5 <- arbitrary | ||
57 | x6 <- arbitrary | ||
58 | x7 <- arbitrary | ||
59 | x8 <- arbitrary | ||
60 | x9 <- arbitrary | ||
61 | return (SecretKeyPacket x1 x2 x3 x4 x5 x6 x7 x8 x9) | ||
62 | 6 -> do x1 <- arbitrary | ||
63 | x2 <- arbitrary | ||
64 | return (CompressedDataPacket x1 x2) | ||
65 | 7 -> return MarkerPacket | ||
66 | 8 -> do x1 <- arbitrary | ||
67 | x2 <- arbitrary | ||
68 | x3 <- arbitrary | ||
69 | x4 <- arbitrary | ||
70 | return (LiteralDataPacket x1 x2 x3 x4) | ||
71 | 9 -> do x1 <- arbitrary | ||
72 | return (TrustPacket x1) | ||
73 | 10 -> do x1 <- arbitrary | ||
74 | return (UserIDPacket x1) | ||
75 | 11 -> do x1 <- arbitrary | ||
76 | x2 <- arbitrary | ||
77 | return (EncryptedDataPacket x1 x2) | ||
78 | 12 -> do x1 <- arbitrary | ||
79 | return (ModificationDetectionCodePacket x1) | ||
80 | 13 -> do x1 <- arbitrary | ||
81 | x2 <- arbitrary | ||
82 | return (UnsupportedPacket x1 x2) | ||
83 | _ -> error "FATAL ERROR: Arbitrary instance, logic bug" | ||
84 | |||
85 | instance () => Arbitrary S2K where | ||
86 | arbitrary | ||
87 | = do x <- choose (0 :: Int, 3) | ||
88 | case x of | ||
89 | 0 -> do x1 <- arbitrary | ||
90 | return (SimpleS2K x1) | ||
91 | 1 -> do x1 <- arbitrary | ||
92 | x2 <- arbitrary | ||
93 | return (SaltedS2K x1 x2) | ||
94 | 2 -> do x1 <- arbitrary | ||
95 | x2 <- arbitrary | ||
96 | x3 <- fmap decode_s2k_count arbitrary | ||
97 | return (IteratedSaltedS2K x1 x2 x3) | ||
98 | 3 -> do x1 <- suchThat arbitrary (`notElem` [0,1,3]) | ||
99 | x2 <- arbitrary | ||
100 | return (S2K x1 x2) | ||
101 | _ -> error "FATAL ERROR: Arbitrary instance, logic bug" | ||
102 | |||
103 | instance () => Arbitrary HashAlgorithm where | ||
104 | arbitrary | ||
105 | = do x <- choose (0 :: Int, 7) | ||
106 | case x of | ||
107 | 0 -> return MD5 | ||
108 | 1 -> return SHA1 | ||
109 | 2 -> return RIPEMD160 | ||
110 | 3 -> return SHA256 | ||
111 | 4 -> return SHA384 | ||
112 | 5 -> return SHA512 | ||
113 | 6 -> return SHA224 | ||
114 | 7 -> do x1 <- suchThat arbitrary (`notElem` [01,02,03,08,09,10,11]) | ||
115 | return (HashAlgorithm x1) | ||
116 | _ -> error "FATAL ERROR: Arbitrary instance, logic bug" | ||
117 | |||
118 | instance () => Arbitrary KeyAlgorithm where | ||
119 | arbitrary | ||
120 | = do x <- choose (0 :: Int, 8) | ||
121 | case x of | ||
122 | 0 -> return RSA | ||
123 | 1 -> return RSA_E | ||
124 | 2 -> return RSA_S | ||
125 | 3 -> return ELGAMAL | ||
126 | 4 -> return DSA | ||
127 | 5 -> return ECC | ||
128 | 6 -> return ECDSA | ||
129 | 7 -> return DH | ||
130 | 8 -> do x1 <- suchThat arbitrary (`notElem` [01,02,03,16,17,18,19,21]) | ||
131 | return (KeyAlgorithm x1) | ||
132 | _ -> error "FATAL ERROR: Arbitrary instance, logic bug" | ||
133 | |||
134 | instance () => Arbitrary SymmetricAlgorithm where | ||
135 | arbitrary | ||
136 | = do x <- choose (0 :: Int, 9) | ||
137 | case x of | ||
138 | 0 -> return Unencrypted | ||
139 | 1 -> return IDEA | ||
140 | 2 -> return TripleDES | ||
141 | 3 -> return CAST5 | ||
142 | 4 -> return Blowfish | ||
143 | 5 -> return AES128 | ||
144 | 6 -> return AES192 | ||
145 | 7 -> return AES256 | ||
146 | 8 -> return Twofish | ||
147 | 9 -> do x1 <- suchThat arbitrary (`notElem` [00,01,02,03,04,07,08,09,10]) | ||
148 | return (SymmetricAlgorithm x1) | ||
149 | _ -> error "FATAL ERROR: Arbitrary instance, logic bug" | ||
150 | |||
151 | instance () => Arbitrary CompressionAlgorithm where | ||
152 | arbitrary | ||
153 | = do x <- choose (0 :: Int, 4) | ||
154 | case x of | ||
155 | 0 -> return Uncompressed | ||
156 | 1 -> return ZIP | ||
157 | 2 -> return ZLIB | ||
158 | 3 -> return BZip2 | ||
159 | 4 -> do x1 <- suchThat arbitrary (`notElem` [0,1,2,3]) | ||
160 | return (CompressionAlgorithm x1) | ||
161 | _ -> error "FATAL ERROR: Arbitrary instance, logic bug" | ||
162 | |||
163 | instance () => Arbitrary RevocationCode where | ||
164 | arbitrary | ||
165 | = do x <- choose (0 :: Int, 5) | ||
166 | case x of | ||
167 | 0 -> return NoReason | ||
168 | 1 -> return KeySuperseded | ||
169 | 2 -> return KeyCompromised | ||
170 | 3 -> return KeyRetired | ||
171 | 4 -> return UserIDInvalid | ||
172 | 5 -> do x1 <- suchThat arbitrary (`notElem` [00,01,02,03,32]) | ||
173 | return (RevocationCode x1) | ||
174 | _ -> error "FATAL ERROR: Arbitrary instance, logic bug" | ||
175 | |||
176 | instance () => Arbitrary Message where | ||
177 | arbitrary | ||
178 | = do x1 <- arbitrary | ||
179 | return (Message x1) | ||
180 | |||
181 | instance () => Arbitrary SignatureOver where | ||
182 | arbitrary | ||
183 | = do x <- choose (0 :: Int, 3) | ||
184 | case x of | ||
185 | 0 -> do x1 <- arbitrary | ||
186 | x2 <- arbitrary | ||
187 | return (DataSignature x1 x2) | ||
188 | 1 -> do x1 <- arbitrary | ||
189 | x2 <- arbitrary | ||
190 | return (KeySignature x1 x2) | ||
191 | 2 -> do x1 <- arbitrary | ||
192 | x2 <- arbitrary | ||
193 | x3 <- arbitrary | ||
194 | return (SubkeySignature x1 x2 x3) | ||
195 | 3 -> do x1 <- arbitrary | ||
196 | x2 <- arbitrary | ||
197 | x3 <- arbitrary | ||
198 | return (CertificationSignature x1 x2 x3) | ||
199 | _ -> error "FATAL ERROR: Arbitrary instance, logic bug" | ||
200 | |||
201 | instance () => Arbitrary MPI where | ||
202 | arbitrary | ||
203 | = do x1 <- suchThat arbitrary (>=0) | ||
204 | return (MPI x1) | ||
205 | |||
206 | instance () => Arbitrary SignatureSubpacket where | ||
207 | arbitrary | ||
208 | = do x <- choose (0 :: Int, 23) | ||
209 | case x of | ||
210 | 0 -> do x1 <- arbitrary | ||
211 | return (SignatureCreationTimePacket x1) | ||
212 | 1 -> do x1 <- arbitrary | ||
213 | return (SignatureExpirationTimePacket x1) | ||
214 | 2 -> do x1 <- arbitrary | ||
215 | return (ExportableCertificationPacket x1) | ||
216 | 3 -> do x1 <- arbitrary | ||
217 | x2 <- arbitrary | ||
218 | return (TrustSignaturePacket x1 x2) | ||
219 | 4 -> do x1 <- arbitrary | ||
220 | return (RegularExpressionPacket x1) | ||
221 | 5 -> do x1 <- arbitrary | ||
222 | return (RevocablePacket x1) | ||
223 | 6 -> do x1 <- arbitrary | ||
224 | return (KeyExpirationTimePacket x1) | ||
225 | 7 -> do x1 <- arbitrary | ||
226 | return (PreferredSymmetricAlgorithmsPacket x1) | ||
227 | 8 -> do x1 <- arbitrary | ||
228 | x2 <- arbitrary | ||
229 | x3 <- vectorOf 40 (elements (['0'..'9'] ++ ['A'..'F'])) | ||
230 | return (RevocationKeyPacket x1 x2 x3) | ||
231 | 9 -> do x1 <- vectorOf 16 (elements (['0'..'9'] ++ ['A'..'F'])) | ||
232 | return (IssuerPacket x1) | ||
233 | 10 -> do x1 <- arbitrary | ||
234 | x2 <- arbitrary | ||
235 | x3 <- arbitrary | ||
236 | return (NotationDataPacket x1 x2 x3) | ||
237 | 11 -> do x1 <- arbitrary | ||
238 | return (PreferredHashAlgorithmsPacket x1) | ||
239 | 12 -> do x1 <- arbitrary | ||
240 | return (PreferredCompressionAlgorithmsPacket x1) | ||
241 | 13 -> do x1 <- arbitrary | ||
242 | return (KeyServerPreferencesPacket x1) | ||
243 | 14 -> do x1 <- arbitrary | ||
244 | return (PreferredKeyServerPacket x1) | ||
245 | 15 -> do x1 <- arbitrary | ||
246 | return (PrimaryUserIDPacket x1) | ||
247 | 16 -> do x1 <- arbitrary | ||
248 | return (PolicyURIPacket x1) | ||
249 | 17 -> do x1 <- arbitrary | ||
250 | x2 <- arbitrary | ||
251 | x3 <- arbitrary | ||
252 | x4 <- arbitrary | ||
253 | x5 <- arbitrary | ||
254 | x6 <- arbitrary | ||
255 | x7 <- arbitrary | ||
256 | return (KeyFlagsPacket x1 x2 x3 x4 x5 x6 x7) | ||
257 | 18 -> do x1 <- arbitrary | ||
258 | return (SignerUserIDPacket x1) | ||
259 | 19 -> do x1 <- arbitrary | ||
260 | x2 <- arbitrary | ||
261 | return (ReasonForRevocationPacket x1 x2) | ||
262 | 20 -> do x1 <- arbitrary | ||
263 | return (FeaturesPacket x1) | ||
264 | 21 -> do x1 <- arbitrary | ||
265 | x2 <- arbitrary | ||
266 | x3 <- arbitrary | ||
267 | return (SignatureTargetPacket x1 x2 x3) | ||
268 | 22 -> do x1 <- suchThat arbitrary isSignaturePacket | ||
269 | return (EmbeddedSignaturePacket x1) | ||
270 | 23 -> do x1 <- arbitrary | ||
271 | return (UnsupportedSignatureSubpacket 105 x1) | ||
272 | _ -> error "FATAL ERROR: Arbitrary instance, logic bug" | ||