export getInteger16/putInteger16 to serialize Integer in opaque16.

This commit is contained in:
Vincent Hanquez 2013-12-07 12:05:41 +08:00
parent dea7eb32cf
commit a03b22024b

View file

@ -23,6 +23,7 @@ module Network.TLS.Wire
, getOpaque8 , getOpaque8
, getOpaque16 , getOpaque16
, getOpaque24 , getOpaque24
, getInteger16
, getList , getList
, processBytes , processBytes
, isEmpty , isEmpty
@ -37,6 +38,7 @@ module Network.TLS.Wire
, putOpaque8 , putOpaque8
, putOpaque16 , putOpaque16
, putOpaque24 , putOpaque24
, putInteger16
, encodeWord16 , encodeWord16
, encodeWord64 , encodeWord64
) where ) where
@ -50,6 +52,7 @@ import qualified Data.ByteString as B
import Data.Word import Data.Word
import Data.Bits import Data.Bits
import Network.TLS.Struct import Network.TLS.Struct
import Network.TLS.Util.Serialization
runGet :: String -> Get a -> Bytes -> Either String a runGet :: String -> Get a -> Bytes -> Either String a
runGet lbl f = G.runGet (label lbl f) runGet lbl f = G.runGet (label lbl f)
@ -85,6 +88,9 @@ getOpaque16 = getWord16 >>= getBytes . fromIntegral
getOpaque24 :: Get Bytes getOpaque24 :: Get Bytes
getOpaque24 = getWord24 >>= getBytes getOpaque24 = getWord24 >>= getBytes
getInteger16 :: Get Integer
getInteger16 = os2ip <$> getOpaque16
getList :: Int -> (Get (Int, a)) -> Get [a] getList :: Int -> (Get (Int, a)) -> Get [a]
getList totalLen getElement = isolate totalLen (getElements totalLen) getList totalLen getElement = isolate totalLen (getElements totalLen)
where getElements len where getElements len
@ -127,6 +133,9 @@ putOpaque16 b = putWord16 (fromIntegral $ B.length b) >> putBytes b
putOpaque24 :: Bytes -> Put putOpaque24 :: Bytes -> Put
putOpaque24 b = putWord24 (B.length b) >> putBytes b putOpaque24 b = putWord24 (B.length b) >> putBytes b
putInteger16 :: Integer -> Put
putInteger16 = putOpaque16 . i2osp
encodeWord16 :: Word16 -> Bytes encodeWord16 :: Word16 -> Bytes
encodeWord16 = runPut . putWord16 encodeWord16 = runPut . putWord16