{- | Module : Data.UUID.V3 Copyright : (c) 2010,2012 Antoine Latter License : BSD-style Maintainer : aslatter@gmail.com Stability : experimental Portability : portable NOTE\: This module uses MD5 hashing. Unless you know you need to use this module, you should probably be using "Data.UUID.V5", which offers the same sort of functionality as this module except implemented with SHA-1 hashing. This module implements Version 3 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.V3 (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.MD5 as MD5 -- |Generate a 'UUID' within the specified namespace out of the given -- object. -- -- Uses an MD5 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 MD5.hash Word8 3