summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Arbitrary.patch9
-rw-r--r--Data/OpenPGP.hs30
2 files changed, 39 insertions, 0 deletions
diff --git a/Arbitrary.patch b/Arbitrary.patch
index 9c753cb..6d855f1 100644
--- a/Arbitrary.patch
+++ b/Arbitrary.patch
@@ -10,6 +10,15 @@
10 1 -> do x1 <- arbitrary 10 1 -> do x1 <- arbitrary
11 x2 <- arbitrary 11 x2 <- arbitrary
12 x3 <- arbitrary 12 x3 <- arbitrary
13@@ -108,7 +107,7 @@
14 6 -> return AES192
15 7 -> return AES256
16 8 -> return Twofish
17- 9 -> do x1 <- arbitrary
18+ 9 -> do x1 <- suchThat arbitrary (`notElem` [00,01,02,03,04,07,08,09,10])
19 return (SymmetricAlgorithm x1)
20 _ -> error "FATAL ERROR: Arbitrary instance, logic bug"
21
13@@ -116,7 +115,7 @@ 22@@ -116,7 +115,7 @@
14 23
15 instance Arbitrary MPI where 24 instance Arbitrary MPI where
diff --git a/Data/OpenPGP.hs b/Data/OpenPGP.hs
index acf5fb6..878fb99 100644
--- a/Data/OpenPGP.hs
+++ b/Data/OpenPGP.hs
@@ -46,6 +46,7 @@ module Data.OpenPGP (
46 SignatureSubpacket(..), 46 SignatureSubpacket(..),
47 HashAlgorithm(..), 47 HashAlgorithm(..),
48 KeyAlgorithm(..), 48 KeyAlgorithm(..),
49 SymmetricAlgorithm(..),
49 CompressionAlgorithm(..), 50 CompressionAlgorithm(..),
50 MPI(..), 51 MPI(..),
51 find_key, 52 find_key,
@@ -590,6 +591,35 @@ instance BINARY_CLASS KeyAlgorithm where
590 put = put . enum_to_word8 591 put = put . enum_to_word8
591 get = fmap enum_from_word8 get 592 get = fmap enum_from_word8 get
592 593
594data SymmetricAlgorithm = Unencrypted | IDEA | TripleDES | CAST5 | Blowfish | AES128 | AES192 | AES256 | Twofish | SymmetricAlgorithm Word8
595 deriving (Show, Read, Eq)
596
597instance Enum SymmetricAlgorithm where
598 toEnum 00 = Unencrypted
599 toEnum 01 = IDEA
600 toEnum 02 = TripleDES
601 toEnum 03 = CAST5
602 toEnum 04 = Blowfish
603 toEnum 07 = AES128
604 toEnum 08 = AES192
605 toEnum 09 = AES256
606 toEnum 10 = Twofish
607 toEnum x = SymmetricAlgorithm $ fromIntegral x
608 fromEnum Unencrypted = 00
609 fromEnum IDEA = 01
610 fromEnum TripleDES = 02
611 fromEnum CAST5 = 03
612 fromEnum Blowfish = 04
613 fromEnum AES128 = 07
614 fromEnum AES192 = 08
615 fromEnum AES256 = 09
616 fromEnum Twofish = 10
617 fromEnum (SymmetricAlgorithm x) = fromIntegral x
618
619instance BINARY_CLASS SymmetricAlgorithm where
620 put = put . enum_to_word8
621 get = fmap enum_from_word8 get
622
593data CompressionAlgorithm = Uncompressed | ZIP | ZLIB | BZip2 | CompressionAlgorithm Word8 623data CompressionAlgorithm = Uncompressed | ZIP | ZLIB | BZip2 | CompressionAlgorithm Word8
594 deriving (Show, Read, Eq) 624 deriving (Show, Read, Eq)
595 625