summaryrefslogtreecommitdiff
path: root/Data
diff options
context:
space:
mode:
authorStephen Paul Weber <singpolyma@singpolyma.net>2013-01-03 12:25:35 -0500
committerStephen Paul Weber <singpolyma@singpolyma.net>2013-01-03 12:25:35 -0500
commite9df3b08a0ec2fa73b8959ec7a70478fb028990a (patch)
treefe4c274725b571b78718e3e2d4e492bac5510ac8 /Data
parenta9e3593f6f45638447de0238a48f15883324321d (diff)
Need to verify the checksum, not store it.
Diffstat (limited to 'Data')
-rw-r--r--Data/OpenPGP.hs11
1 files changed, 5 insertions, 6 deletions
diff --git a/Data/OpenPGP.hs b/Data/OpenPGP.hs
index 0df2e98..2460a29 100644
--- a/Data/OpenPGP.hs
+++ b/Data/OpenPGP.hs
@@ -34,7 +34,6 @@ module Data.OpenPGP (
34 key_id, 34 key_id,
35 message, 35 message,
36 nested, 36 nested,
37 private_hash,
38 s2k_useage, 37 s2k_useage,
39 s2k, 38 s2k,
40 signature, 39 signature,
@@ -223,7 +222,6 @@ data Packet =
223 s2k::S2K, -- ^ This is meaningless if symmetric_algorithm == Unencrypted 222 s2k::S2K, -- ^ This is meaningless if symmetric_algorithm == Unencrypted
224 symmetric_algorithm::SymmetricAlgorithm, 223 symmetric_algorithm::SymmetricAlgorithm,
225 encrypted_data::B.ByteString, 224 encrypted_data::B.ByteString,
226 private_hash::Maybe B.ByteString, -- ^ the hash may be in the encrypted data
227 is_subkey::Bool 225 is_subkey::Bool
228 } | 226 } |
229 -- ^ <http://tools.ietf.org/html/rfc4880#section-5.5.1.3> (also subkey) 227 -- ^ <http://tools.ietf.org/html/rfc4880#section-5.5.1.3> (also subkey)
@@ -456,7 +454,7 @@ put_packet (SecretKeyPacket { version = version, timestamp = timestamp,
456 (if symmetric_algorithm /= Unencrypted then 454 (if symmetric_algorithm /= Unencrypted then
457 [encrypted_data] 455 [encrypted_data]
458 else s ++ 456 else s ++
459 -- XXX: Checksum is part of encrypted_data for V4 ONLY 457 -- TODO: Checksum is part of encrypted_data for V4 ONLY
460 if s2k_useage == 254 then 458 if s2k_useage == 254 then
461 [B.replicate 20 0] -- TODO SHA1 Checksum 459 [B.replicate 20 0] -- TODO SHA1 Checksum
462 else 460 else
@@ -608,13 +606,14 @@ parse_packet 5 = do
608 return (Unencrypted, S2K 100 B.empty) 606 return (Unencrypted, S2K 100 B.empty)
609 if symmetric_algorithm /= Unencrypted then do { 607 if symmetric_algorithm /= Unencrypted then do {
610 encrypted <- getRemainingByteString; 608 encrypted <- getRemainingByteString;
611 return (k s2k symmetric_algorithm encrypted Nothing False) 609 return (k s2k symmetric_algorithm encrypted False)
612 } else do 610 } else do
613 key <- foldM (\m f -> do 611 key <- foldM (\m f -> do
614 mpi <- get :: Get MPI 612 mpi <- get :: Get MPI
615 return $ (f,mpi):m) key (secret_key_fields algorithm) 613 return $ (f,mpi):m) key (secret_key_fields algorithm)
616 private_hash <- getRemainingByteString 614 checksum <- getRemainingByteString
617 return ((k s2k symmetric_algorithm B.empty (Just private_hash) False) {key = key}) 615 -- TODO: verify checksum
616 return ((k s2k symmetric_algorithm B.empty False) {key = key})
618-- PublicKeyPacket, http://tools.ietf.org/html/rfc4880#section-5.5.2 617-- PublicKeyPacket, http://tools.ietf.org/html/rfc4880#section-5.5.2
619parse_packet 6 = do 618parse_packet 6 = do
620 version <- get :: Get Word8 619 version <- get :: Get Word8