diff --git a/DSA.cabal b/DSA.cabal
--- a/DSA.cabal
+++ b/DSA.cabal
@@ -1,6 +1,6 @@
 name:          DSA
 category:      Cryptography, Codec
-version:       1.0.0
+version:       1.0.1
 license:       BSD3
 license-file:  LICENSE
 author:        Adam Wick <awick@galois.com>
diff --git a/src/Codec/Crypto/DSA/Pure.hs b/src/Codec/Crypto/DSA/Pure.hs
--- a/src/Codec/Crypto/DSA/Pure.hs
+++ b/src/Codec/Crypto/DSA/Pure.hs
@@ -346,7 +346,7 @@
 -- be used to ensure that the /p/ and /q/ values provided were generated
 -- appropriately.
 data ProbablePrimesEvidence = ProbablePrimesEvidence {
-       prpeDomainParameterSeed :: Integer
+       prpeDomainParameterSeed :: ByteString
      , prpeCounter             :: Integer
      , prpeHash                :: ByteString -> ByteString
      }
@@ -392,14 +392,13 @@
   find_q g'
     | isLeft dpsEth   = Left (DSARandomGenerationError err)
     | isLeft primeEth = Left primeErr
-    | isPrime         = find_p g''' 1 0 q dpsI
+    | isPrime         = find_p g''' 1 0 q domParamSeed
     | otherwise       = find_q g'''
    where
     dpsEth                = genBytes (fromIntegral ((seedlen + 7) `div` 8)) g'
     Left err              = dpsEth
     Right (dpsBS, g'')    = dpsEth
     domParamSeed          = BS.fromStrict dpsBS
-    dpsI                  = bs2int domParamSeed
     mask                  = 2 ^ (bigN - 1)
     bigU                  = bs2int (hash domParamSeed) `mod` mask
     q                     = mask + bigU + 1 - (bigU `mod` 2)
@@ -407,13 +406,15 @@
     Left primeErr         = primeEth
     Right (isPrime, g''') = primeEth
   --
-  find_p g' !off !ctr !q !dps
+  find_p g' !off !ctr !q !dpsBS
     | ctr == fourTimesL = find_q g'
-    | p < twoLm1        = find_p g' off' ctr' q dps
+    | p < twoLm1        = find_p g' off' ctr' q dpsBS
     | isLeft primeEth   = Left primeErr
-    | isPrime           = Right (p, q, ProbablePrimesEvidence dps ctr hash, g'')
-    | otherwise         = find_p g'' off' ctr' q dps
+    | isPrime           = let ev = ProbablePrimesEvidence dpsBS ctr hash
+                          in Right (p, q, ev, g'')
+    | otherwise         = find_p g'' off' ctr' q dpsBS
    where
+    dps                  = bs2int (dpsBS :: ByteString) :: Integer
     !bigW                = computeW hash dps off n b seedlen
     bigX                 = bigW + (2 ^ (bigL - 1))
     c                    = bigX `mod` (2 * q)
@@ -471,11 +472,11 @@
   -- 4. If (counter > (4L – 1)), then return INVALID.
   --    [See the second line above]
   -- 5. seedlen = len (domain_parameter_seed).
-  seedlen = intlen dps * 8
+  seedlen = fromIntegral (BS.length dps * 8)
   -- 6. If (seedlen < N), then return INVALID.
   --    [See the third line above]
   -- 7. U = Hash(domain_parameter_seed) mod 2N–1
-  bigU = bs2int (hash (int2bs dps)) `mod` (2 ^ (bigN - 1))
+  bigU = bs2int (hash dps) `mod` (2 ^ (bigN - 1))
   -- 8. computed_q = 2^(N–1) + U + 1 – ( U mod 2).
   computed_q = (2 ^ (bigN - 1)) + bigU + 1 - (bigU `mod` 2)
   -- 9. Test whether or not computed_q is prime as specified in Appendix C.3.
@@ -500,7 +501,7 @@
     | isPrime                       = step14 gen i computed_p isPrime
     | otherwise                     = loop gen' (i + 1) off'
    where
-    bigW                  = computeW hash dps off n b seedlen
+    bigW                  = computeW hash (bs2int dps) off n b seedlen
     bigX                  = bigW + (2 ^ (bigL - 1))
     c                     = bigX `mod` (2 * q)
     computed_p            = bigX - (c - 1)
@@ -677,7 +678,7 @@
 
 instance GenerationEvidence ProbablePrimesEvidence where
   getHash                = prpeHash
-  getDomainParameterSeed = int2bs . prpeDomainParameterSeed
+  getDomainParameterSeed = prpeDomainParameterSeed
 
 instance GenerationEvidence ProvablePrimesEvidence where
   getHash                  = pvpeHash
diff --git a/src/Test.hs b/src/Test.hs
--- a/src/Test.hs
+++ b/src/Test.hs
@@ -183,7 +183,7 @@
     Right (p, q, ev, g') ->
         let (res, _) = validateProbablePrimes g' p q ev
         in if not res
-              then trace ("FAIL p = " ++ show p ++ " q = " ++ show q) False
+              then trace ("FAIL p = " ++ show p ++ " q = " ++ show q ++ " dps = " ++ show (prpeDomainParameterSeed ev) ++ " counter: " ++ show (prpeCounter ev)) False
               else True
  where mseedlen' = fmap (\ x -> (getPositive x * 8) + getN params) mseedlen
 
