{-# LANGUAGE OverloadedStrings #-}
module Naming.Register
( insertApprovalDomain
, insertApprovalName
, registryAssetId
, representativeName
, overMarkerFor
) where
import Crypto.Hash (Blake2b_256, Digest, hash)
import Data.ByteArray (convert)
import Data.ByteString (ByteString)
import Data.ByteString qualified as BS
insertApprovalDomain :: ByteString
insertApprovalDomain :: ByteString
insertApprovalDomain = ByteString
"singular/naming/insert-approval/v1"
insertApprovalName :: ByteString -> ByteString -> ByteString
insertApprovalName :: ByteString -> ByteString -> ByteString
insertApprovalName ByteString
control ByteString
commitment =
Digest Blake2b_256 -> ByteString
forall bin bout.
(ByteArrayAccess bin, ByteArray bout) =>
bin -> bout
convert
( ByteString -> Digest Blake2b_256
forall ba a.
(ByteArrayAccess ba, HashAlgorithm a) =>
ba -> Digest a
hash
( ByteString
insertApprovalDomain
ByteString -> ByteString -> ByteString
forall a. Semigroup a => a -> a -> a
<> Word8 -> ByteString
BS.singleton Word8
0x00
ByteString -> ByteString -> ByteString
forall a. Semigroup a => a -> a -> a
<> ByteString
control
ByteString -> ByteString -> ByteString
forall a. Semigroup a => a -> a -> a
<> ByteString
commitment
)
:: Digest Blake2b_256
)
registryAssetId :: ByteString -> ByteString -> ByteString
registryAssetId :: ByteString -> ByteString -> ByteString
registryAssetId ByteString
policyBytes ByteString
tokenName
| ByteString -> Int
BS.length ByteString
policyBytes Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
28 = ByteString
policyBytes ByteString -> ByteString -> ByteString
forall a. Semigroup a => a -> a -> a
<> ByteString
tokenName
| Bool
otherwise = String -> ByteString
forall a. HasCallStack => String -> a
error String
"registryAssetId: state policy bytes must be 28"
representativeName :: ByteString -> ByteString
representativeName :: ByteString -> ByteString
representativeName ByteString
spelling = Digest Blake2b_256 -> ByteString
forall bin bout.
(ByteArrayAccess bin, ByteArray bout) =>
bin -> bout
convert (ByteString -> Digest Blake2b_256
forall ba a.
(ByteArrayAccess ba, HashAlgorithm a) =>
ba -> Digest a
hash ByteString
spelling :: Digest Blake2b_256)
overMarkerFor :: ByteString -> ByteString
overMarkerFor :: ByteString -> ByteString
overMarkerFor ByteString
rep = ByteString
"over" ByteString -> ByteString -> ByteString
forall a. Semigroup a => a -> a -> a
<> ByteString
rep