-- | -- Module : Data.UUID.V5 -- Copyright : (c) 2008-2009 Antoine Latter -- -- License : BSD-style -- -- Maintainer : aslatter@gmail.com -- Stability : experimental -- Portability : portable -- -- -- This module implements Version 5 UUIDs as specified -- in RFC 4122. -- -- These UUIDs identify an object within a namespace, -- and are deterministic. -- -- The namespace is identified by a UUID. Several sample -- namespaces are enclosed. module Data.UUID.V5 (generateNamed ,Shared.namespaceDNS ,Shared.namespaceURL ,Shared.namespaceOID ,Shared.namespaceX500 ) where import Data.Word import Data.UUID.Types.Internal import qualified Data.UUID.Named as Shared import qualified Crypto.Hash.SHA1 as SHA1 -- |Generate a 'UUID' within the specified namespace out of the given -- object. -- -- Uses a SHA1 hash. The UUID is built from first 128 bits of the hash of -- the namespace UUID and the name (as a series of Word8). generateNamed :: UUID -- ^Namespace -> [Word8] -- ^Object -> UUID generateNamed :: UUID -> [Word8] -> UUID generateNamed = (ByteString -> ByteString) -> Word8 -> UUID -> [Word8] -> UUID Shared.generateNamed ByteString -> ByteString SHA1.hash Word8 5