siyuan-note/siyuan · error
Conf.Language(316)
Error message
Conf.Language(316)
What it means
ImportNotebookCryptoBackup compatibility check surfaced as localized message Conf.Language(316) (key mismatch): the password-derived KEK passes the verifier but cannot decrypt the WrappedDEKs of existing notebooks or deleted-notebook history. The backup belongs to a different key lineage, and importing it would orphan existing encrypted data.
Source
Thrown at kernel/model/crypto.go:357
if validErr != nil {
return errors.New(Conf.Language(317))
}
kek := util.DeriveKey(password, nc.MasterSalt, params)
defer zeroAndClear(kek)
if nc.Checksum != computeBackupChecksum(nc) {
return errors.New(Conf.Language(317))
}
if !verifyKEKMAC(nc, kek) {
return errors.New(Conf.Language(317))
}
decrypted, dErr := util.DecryptWithAAD(kek, nc.KEKVerifier, []byte("siyuan:kek-verifier"))
if dErr != nil || string(decrypted) != string(kekVerifierMagic) {
return errors.New(Conf.Language(311)) // 主密码错误
}
// 校验 KEK 能解密现存笔记本和已删除笔记本历史中的 WrappedDEK,避免导入不匹配的备份。
if !verifyKEKAgainstExistingBoxes(kek, nc) || !verifyKEKAgainstEncryptedHistory(kek, nc) {
return errors.New(Conf.Language(316)) // 密钥不匹配
}
nc.KDFParams = params // 确保写回 Conf 的参数已经通过完整校验。
nc.Enabled = true
// 先写 backup,再提交 conf;backup 失败时 conf 尚未改变,可重试
if err := writeNotebookCryptoBackupData(nc, kek); err != nil {
return fmt.Errorf("failed to persist key backup: %w", err)
}
Conf.m.Lock()
*Conf.NotebookCrypto = *nc
Conf.m.Unlock()
Conf.Save()
IncSync()
return nil
}
// saveNotebookCryptoBackup 把当前 NotebookCrypto(含 MasterSalt/KEKVerifier/KDFParams)备份到 DataDir。View on GitHub (pinned to 8641553a1f)
Solutions
- Import into the workspace whose keys match the backup lineage
- Use the documented recovery flow instead of forcing the import
- Preserve the existing envelopes; do not discard keys to proceed
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at kernel/model/crypto.go:357 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of siyuan-note/siyuan@8641553a1f (2026-09-11).
Data as JSON: /api/errors/67d51c67d2af84f7.
Report an issue: GitHub.