corda / net.corda.core.contracts / PrivacySalt

PrivacySalt

class PrivacySalt : OpaqueBytes

A privacy salt is required to compute nonces per transaction component in order to ensure that an adversary cannot use brute force techniques and reveal the content of a Merkle-leaf hashed value. Because this salt serves the role of the seed to compute nonces, its size and entropy should be equal to the underlying hash function used for Merkle tree generation, currently SecureHash.SHA256, which has an output of 32 bytes. There are two constructors, one that generates a new 32-bytes random salt, and another that takes a ByteArray input. The latter is required in cases where the salt value needs to be pre-generated (agreed between transacting parties), but it is highlighted that one should always ensure it has sufficient entropy.

Constructors

<init>

Constructs a salt with a randomly-generated saltLength byte value.

PrivacySalt(saltLength: Int)

Constructs a salt with a randomly-generated 32 byte value.

PrivacySalt()

A privacy salt is required to compute nonces per transaction component in order to ensure that an adversary cannot use brute force techniques and reveal the content of a Merkle-leaf hashed value. Because this salt serves the role of the seed to compute nonces, its size and entropy should be equal to the underlying hash function used for Merkle tree generation, currently SecureHash.SHA256, which has an output of 32 bytes. There are two constructors, one that generates a new 32-bytes random salt, and another that takes a ByteArray input. The latter is required in cases where the salt value needs to be pre-generated (agreed between transacting parties), but it is highlighted that one should always ensure it has sufficient entropy.

PrivacySalt(bytes: ByteArray)

Companion Object Functions

createFor

fun createFor(algorithm: String): PrivacySalt

Extension Properties

isZero

val OpaqueBytes.isZero: Boolean

Extension Functions

deserialize

Convenience extension method for deserializing a ByteSequence, utilising the defaults.

fun <T : Any> ByteSequence.deserialize(serializationFactory: SerializationFactory = SerializationFactory.defaultFactory, context: SerializationContext = serializationFactory.defaultContext): T

deserializeWithCompatibleContext

Additionally returns SerializationContext which was used for encoding. It might be helpful to know SerializationContext to use the same encoding in the reply.

fun <T : Any> ByteSequence.deserializeWithCompatibleContext(serializationFactory: SerializationFactory = SerializationFactory.defaultFactory, context: SerializationContext = serializationFactory.defaultContext): ObjectWithCompatibleContext<T>

hashAs

Compute the algorithm hash for the contents of the OpaqueBytes.

fun OpaqueBytes.hashAs(algorithm: String): SecureHash

sha256

Compute the SHA-256 hash for the contents of the OpaqueBytes.

fun OpaqueBytes.sha256(): SHA256