r-lib/keyring

Error when using key_set()

marcusyoung opened this issue · 5 comments

I'm getting this error after running:

key_set("service", "password")

Error: yml must be a named list of length 3 with entries ‘c’, ‘keyring_info’, ‘items’

Using v.1.2.0.

Any ideas what the problem is? Never had an issue before with this.

I don't know, but you can run traceback() right after the error to get a stack trace.
I suppose you are using the encrypted file backend?

Hello,
Same problem here.
I have the problem on my Ubuntu machine, since this afternoon. The only thing I can think of are some routine updates that I run this morning. I tried v.1.1.0 and v.1.2.0 and both give the same error.
On macOSX I don't have the problem.

Here's the traceback on Ubuntu:

12: stop(e)
11: value[[3L]](cond)
10: tryCatchOne(expr, names, parentenv, handlers[[1L]])
9: tryCatchList(expr, classes, parentenv, handlers)
8: tryCatch({
       cached <- private$get_cache(keyring)
       b_file_secret_decrypt(cached$check, cached$nonce, private$get_keyring_pass(keyring))
       FALSE
   }, error = function(e) {
       if (conditionMessage(e) == "Failed to decrypt") 
           TRUE
       else stop(e)
   })
7: b_file_keyring_is_locked(self, private, keyring)
6: self$keyring_is_locked(keyring)
5: b_file_keyring_unlock(self, private, keyring, password)
4: self$keyring_unlock(keyring)
3: b_file_get(self, private, service, username, keyring)
2: keyring::backend_file$new()$get(service = db_credentials$dbname, 
       user = db_credentials$user, keyring = db_credentials$dbname)

My session's info:

R version 4.0.2 (2020-06-22)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Pop!_OS 20.10

Matrix products: default
BLAS:   /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.9.0
LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.9.0

locale:
 [1] LC_CTYPE=en_GB.UTF-8       LC_NUMERIC=C               LC_TIME=en_GB.UTF-8        LC_COLLATE=en_GB.UTF-8    
 [5] LC_MONETARY=en_GB.UTF-8    LC_MESSAGES=en_GB.UTF-8    LC_PAPER=en_GB.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C             LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices datasets  utils     methods   base     

other attached packages:
[1] here_1.0.1        dplyr_1.0.6       magrittr_2.0.1    sf_0.9-8          data.table_1.14.0 devtools_2.4.1    usethis_2.0.1    

loaded via a namespace (and not attached):
 [1] tidyselect_1.1.1   remotes_2.3.0      purrr_0.3.4        sodium_1.1         vctrs_0.3.8        generics_0.1.0    
 [7] testthat_3.0.2     yaml_2.2.1         utf8_1.2.1         blob_1.2.1         rlang_0.4.11       pkgbuild_1.2.0    
[13] e1071_1.7-7        pillar_1.6.1       glue_1.4.2         withr_2.4.2        DBI_1.1.1          rappdirs_0.3.3    
[19] bit64_4.0.5        sessioninfo_1.1.1  lifecycle_1.0.0    zip_2.1.1          memoise_2.0.0      callr_3.7.0       
[25] fastmap_1.1.0      ps_1.6.0           class_7.3-17       fansi_0.5.0        Rcpp_1.0.6         KernSmooth_2.23-17
[31] filelock_1.0.2     renv_0.13.2        classInt_0.4-3     cachem_1.0.5       desc_1.3.0         pkgload_1.2.1     
[37] fs_1.5.0           bit_4.0.4          askpass_1.1        hms_1.1.0          stringi_1.6.2      openxlsx_4.2.3    
[43] keyring_1.2.0      processx_3.5.2     grid_4.0.2         rprojroot_2.0.2    cli_2.5.0          tools_4.0.2       
[49] proxy_0.4-25       s4c_1.3.0.9000     tibble_3.1.2       crayon_1.4.1       pkgconfig_2.0.3    ellipsis_0.3.2    
[55] prettyunits_1.1.1  assertthat_0.2.1   rstudioapi_0.13    RPostgres_1.3.2    lgr_0.4.2          R6_2.5.0          
[61] units_0.7-1        compiler_4.0.2  

I suspect it is an error that comes from some mistake in my script (typo, missing keyring,wrong password, I don't know), because I tried it in a different project on the same machine and it works.

If you still have this issue, then could you try to create a short script that reproduces it? Thanks.

I don't have this problem any more. It was an error in my code but I don't have access to it any more. Thank you