module Crypto.PHKDF.Assert where
import Data.Bits
import Data.Word
import Crypto.PHKDF.Subtle
phkdfCtx_assertBufferPosition' :: Word64 -> PhkdfCtx -> PhkdfCtx
phkdfCtx_assertBufferPosition' :: Word64 -> PhkdfCtx -> PhkdfCtx
phkdfCtx_assertBufferPosition' Word64
n PhkdfCtx
ctx
| Word64
len Word64 -> Word64 -> Word64
forall a. Bits a => a -> a -> a
.&. Word64
63 Word64 -> Word64 -> Bool
forall a. Eq a => a -> a -> Bool
/= Word64
n Word64 -> Word64 -> Word64
forall a. Bits a => a -> a -> a
.&. Word64
63
= [Char] -> PhkdfCtx
forall a. HasCallStack => [Char] -> a
error ([Char]
"phkdf buffer position mismatch: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ Word64 -> [Char]
forall a. Show a => a -> [Char]
show Word64
len [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
" /= " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ Word64 -> [Char]
forall a. Show a => a -> [Char]
show Word64
n [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
" (mod 64)")
| Bool
otherwise = PhkdfCtx
ctx
where len :: Word64
len = PhkdfCtx -> Word64
phkdfCtx_byteCount PhkdfCtx
ctx
phkdfCtx_assertBufferPosition :: Word64 -> PhkdfCtx -> PhkdfCtx
phkdfCtx_assertBufferPosition :: Word64 -> PhkdfCtx -> PhkdfCtx
phkdfCtx_assertBufferPosition = Word64 -> PhkdfCtx -> PhkdfCtx
phkdfCtx_assertBufferPosition'