Skip to main content

Import

Import takes a previously exported blob and runs an internal keygen that derives a fresh device-side share from the encrypted material. The output is a wallet with the same keyId, public key, and blockchain address as the original — but the on-disk share bytes are new.

For the SDK contract see Import Key (Kotlin) and Import Key (Swift).

How the example does it

vault/.../session/VaultSessionManager.kt
suspend fun importKeyshare(privateKey: ByteArray, keyType: KeyType): KeyResult {
val keyshare = sessionFor(keyType).import(
keysharePrivateKey = privateKey,
rootChainCode = DEFAULT_CHAIN_CODE
).getOrThrow()

val keyId = extractKeyId(keyType, keyshare)
val publicKey = extractPublicKey(keyType, keyshare)
return KeyResult(keyId, publicKey)
}

The SDK auto-persists the new keyshare via the registered storage client, same as keygen. The privateKey parameter is the raw hex bytes from the export blob's exportDataHex field, and keyType comes from the JSON entry's keyType string.

Import screen