LockerKeyBackup locker.key-backup@1
Generated at from
openvibe-contracts v0.419.0 and
openvibe-sdk v0.161.0.
- Version
- 1.0.0
- Owner
- network
- Visibility
- public
- Status
- active
- Compatibility
- backward
- Schema
https://openvibe.network/contracts/locker/key-backup.v1.json
locker.key-backup@1: the person's private keys, wrapped. The wrapping key comes from the locker passphrase with PBKDF2-SHA-256, so the server stores bytes it cannot open; a passkey (WebAuthn PRF) may wrap the same bytes later without changing this shape.
Fields
| Field | Type | Required | Description | Constraints |
|---|---|---|---|---|
method | enum | yes | How the private keys are wrapped. A passkey-only locker comes later. |
|
kdf | const | yes |
| |
iterations | integer | yes |
| |
salt | string | yes | Sixteen random bytes, base64. |
|
nonce | string | yes | Twelve random bytes, base64: the AES-GCM nonce of the wrapped keys. |
|
wrapped_keys | string | yes | The two private keys as JWKs, sealed with AES-256-GCM under the derived key, base64. |
|
Examples
From the contract's own test fixtures: valid ones validate, rejected ones must fail.
Valid: example
{
"method": "passphrase",
"kdf": "PBKDF2-SHA-256",
"iterations": 600000,
"salt": "c3Nzc3Nzc3Nzc3Nzc3Nzcw==",
"nonce": "bm5ubm5ubm5ubm5u",
"wrapped_keys": "d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3"
}Rejected: weak-iterations
{
"method": "passphrase",
"kdf": "PBKDF2-SHA-256",
"iterations": 10000,
"salt": "c3Nzc3Nzc3Nzc3Nzc3Nzcw==",
"nonce": "bm5ubm5ubm5ubm5u",
"wrapped_keys": "d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3"
}Validate
const contracts = require('openvibe-contracts');
contracts.validate('locker.key-backup@1', value); // { valid, errors: [{ path, message }] }