This enums specifies the application ID. Two intents in two different
applications (i.e., Iota, Ethereum etc) should never collide, so
that even when a signing key is reused, nobody can take a signature
designated for app_1 and present it as a valid signature for an (any) intent
in app_2.
A 1-byte domain separator for hashing Object ID in Iota. It is starting from
0xf0 to ensure no hashing collision for any ObjectID vs IotaAddress which is
derived as the hash of flag || pubkey
. See
iota_types::crypto::SignatureScheme::flag()
.
This enums specifies the intent scope. Two intents for different scope
should never collide, so no signature provided for one intent scope can be
used for another, even when the serialized data itself may be the same.
The version here is to distinguish between signing different versions of the
struct or enum. Serialized output between two different versions of the same
struct/enum might accidentally (or maliciously on purpose) match.