diff --git a/Codec/Encryption/OpenPGP/Serialize.hs b/Codec/Encryption/OpenPGP/Serialize.hs
--- a/Codec/Encryption/OpenPGP/Serialize.hs
+++ b/Codec/Encryption/OpenPGP/Serialize.hs
@@ -36,7 +36,7 @@
 import qualified Data.Text as T
 import Data.Text.Encoding (decodeUtf8With, encodeUtf8)
 import Data.Text.Encoding.Error (lenientDecode)
-import Data.Word (Word8, Word32)
+import Data.Word (Word8, Word16, Word32)
 import Data.Maybe (fromMaybe)
 import Network.URI (nullURI, parseURI, uriToString)
 
@@ -904,7 +904,7 @@
     s2kusage <- getWord8
     case s2kusage of
         0 -> do sk <- getSecretKey pkp
-                checksum <- getWord16be
+                checksum <- getWord16be -- FIXME: validate checksum?
                 return $ SUUnencrypted sk checksum
         255 -> do symenc <- getWord8
                   s2k <- getS2K
@@ -935,8 +935,9 @@
     putLazyByteString encryptedblock
 putSKAddendum (SUUnencrypted sk checksum) = do
     putWord8 0
-    putSKey sk
-    putWord16be checksum
+    let skb = runPut (putSKey sk)
+    putLazyByteString skb
+    putWord16be (if checksum == 0 then BL.foldl (\a b -> mod (a+fromIntegral b) 0xffff) (0 :: Word16) skb else checksum) -- FIXME: be saner
 putSKAddendum _ = fail "Type not supported"
 
 symEncBlockSize :: SymmetricAlgorithm -> Int
diff --git a/hOpenPGP.cabal b/hOpenPGP.cabal
--- a/hOpenPGP.cabal
+++ b/hOpenPGP.cabal
@@ -1,5 +1,5 @@
 Name:                hOpenPGP
-Version:             2.8.1
+Version:             2.8.2
 Synopsis:            native Haskell implementation of OpenPGP (RFC4880)
 Description:         native Haskell implementation of OpenPGP (RFC4880), plus Camellia (RFC5581), plus ECC (RFC6637)
 Homepage:            https://salsa.debian.org/clint/hOpenPGP
@@ -343,4 +343,4 @@
 source-repository this
   type:     git
   location: https://salsa.debian.org/clint/hOpenPGP.git
-  tag:      v2.8.1
+  tag:      v2.8.2
