zcash-android-wallet-sdk/sdk-lib/src/main/java/cash/z/ecc/android/sdk/model/UnifiedSpendingKey.kt

33 lines
1.2 KiB
Kotlin
Raw Normal View History

package cash.z.ecc.android.sdk.model
/**
* A [ZIP 316](https://zips.z.cash/zip-0316) Unified Spending Key.
*
* This is the spend authority for an account under the wallet's seed.
*
* An instance of this class contains all of the per-pool spending keys that could be
* derived at the time of its creation. As such, it is not suitable for long-term storage,
* export/import, or backup purposes.
*/
data class UnifiedSpendingKey internal constructor(
/**
* A [ZIP 316](https://zips.z.cash/zip-0316) account identifier.
*/
val account: Int,
/**
* The binary encoding of the [ZIP 316](https://zips.z.cash/zip-0316) Unified Spending
* Key for [account].
*
* This encoding **MUST NOT** be exposed to users. It is an internal encoding that is
* inherently unstable, and only intended to be passed between the SDK and the storage
* backend. Wallets **MUST NOT** allow this encoding to be exported or imported.
*/
internal val bytes: FirstClassByteArray
) {
// Override to prevent leaking key to logs
override fun toString() = "UnifiedSpendingKey(account=$account)"
fun copyBytes() = bytes.byteArray.copyOf()
}