{"record":{"id":"835148064c62a188","repo":"AlistGo/alist","slug":"either-keypass-or-saltedkeypass-must-be-not-nil","errorCode":null,"errorMessage":"either keyPass or saltedKeyPass must be not nil","messagePattern":"either keyPass or saltedKeyPass must be not nil","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"drivers/proton_drive/util.go","lineNumber":474,"sourceCode":"\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tparentNodeKR, err := d.getLinkKR(ctx, parentLink)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tsignatureVerificationKR, err := d.getSignatureVerificationKeyring([]string{link.SignatureEmail})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn link.GetKeyRing(parentNodeKR, signatureVerificationKR)\n}\n\nvar (\n\tErrKeyPassOrSaltedKeyPassMustBeNotNil = errors.New(\"either keyPass or saltedKeyPass must be not nil\")\n\tErrFailedToUnlockUserKeys             = errors.New(\"failed to unlock user keys\")\n)\n\nfunc getAccountKRs(ctx context.Context, c *proton.Client, keyPass, saltedKeyPass []byte) (*crypto.KeyRing, map[string]*crypto.KeyRing, map[string]proton.Address, []byte, error) {\n\n\tuser, err := c.GetUser(ctx)\n\tif err != nil {\n\t\treturn nil, nil, nil, nil, err\n\t}\n\t// fmt.Printf(\"user %#v\", user)\n\n\taddrsArr, err := c.GetAddresses(ctx)\n\tif err != nil {\n\t\treturn nil, nil, nil, nil, err\n\t}\n\t// fmt.Printf(\"addr %#v\", addr)\n\n\tif saltedKeyPass == nil {","sourceCodeStart":456,"sourceCodeEnd":492,"githubUrl":"https://github.com/AlistGo/alist/blob/843d9dc8149126976b2625911e45a4d3ffd6f2f5/drivers/proton_drive/util.go#L456-L492","documentation":"Error \"either keyPass or saltedKeyPass must be not nil\" thrown in AlistGo/alist.","triggerScenarios":"Thrown at drivers/proton_drive/util.go:474 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check the storage configuration and the provider's service status, fix the indicated cause, and retry the operation."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"843d9dc8149126976b2625911e45a4d3ffd6f2f5","analyzedAt":"2026-08-15T12:14:11.722Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}