{"id":150,"name":null,"description":"Ruby One Time Password library","url":"https://github.com/mdp/rotp","last_synced_at":"2026-05-24T05:00:41.775Z","repository":{"id":37934487,"uuid":"1362437","full_name":"mdp/rotp","owner":"mdp","description":"Ruby One Time Password library","archived":false,"fork":false,"pushed_at":"2025-11-24T21:17:25.000Z","size":297,"stargazers_count":1660,"open_issues_count":10,"forks_count":475,"subscribers_count":22,"default_branch":"main","last_synced_at":"2026-05-13T00:05:57.001Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://rubydoc.info/github/mdp/rotp/master/frames","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mdp.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2011-02-13T18:20:59.000Z","updated_at":"2026-05-10T10:54:28.000Z","dependencies_parsed_at":"2024-06-18T10:57:30.381Z","dependency_job_id":"edbb1786-f1ba-42bb-8a28-672b0c13ceb5","html_url":"https://github.com/mdp/rotp","commit_stats":{"total_commits":227,"total_committers":46,"mean_commits":4.934782608695652,"dds":"0.42731277533039647","last_synced_commit":"1fbd30d94e5c986b0e252e3257b2f345735439ce"},"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/mdp/rotp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mdp","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/sbom","scorecard":{"id":633378,"data":{"date":"2025-08-11","repo":{"name":"github.com/mdp/rotp","commit":"bad1a3564fdc030422c2fb009e9341413814e9cb"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.8,"checks":[{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Maintained","score":7,"reason":"9 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 7","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":3,"reason":"Found 6/16 approved changesets -- score normalized to 3","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/release.yaml:1","Warn: no topLevel permission defined: .github/workflows/test.yaml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yaml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/mdp/rotp/release.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yaml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/mdp/rotp/release.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yaml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/mdp/rotp/release.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yaml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/mdp/rotp/test.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yaml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/mdp/rotp/test.yaml/main?enable=pin","Warn: containerImage not pinned by hash: Dockerfile-2.3:1: pin your Docker image by updating ruby:2.3 to ruby:2.3@sha256:78cc821d95c48621e577b6b0d44c9d509f0f2a4e089b9fd0ca2ae86f274773a8","Warn: containerImage not pinned by hash: Dockerfile-2.7:1: pin your Docker image by updating ruby:2.7 to ruby:2.7@sha256:2347de892e419c7160fc21dec721d5952736909f8c3fbb7f84cb4a07aaf9ce7d","Warn: containerImage not pinned by hash: Dockerfile-3.0:1: pin your Docker image by updating ruby:3.0 to ruby:3.0@sha256:dcb8a8a6ee981f949da505cb9f4f15cde696e7bcb088955bc1f92f23a4cd7a72","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   3 third-party GitHubAction dependencies pinned","Info:   0 out of   3 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-21T08:28:14.973Z","repository_id":37934487,"created_at":"2025-08-21T08:28:14.973Z","updated_at":"2025-08-21T08:28:14.973Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33074392,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-15T11:35:32.926Z","status":"ssl_error","status_checked_at":"2026-05-15T11:35:31.362Z","response_time":103,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"owner":{"login":"mdp","name":"Mark Percival","uuid":"2868","kind":"user","description":"","email":"","website":"https://mdp.github.io","location":"Atlanta, GA","twitter":"mdp","company":null,"icon_url":"https://avatars.githubusercontent.com/u/2868?u=90e0995d4bdae3bfdb66b47b3864a423d72398d7\u0026v=4","repositories_count":188,"last_synced_at":"2024-04-14T08:26:15.914Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/mdp","funding_links":[],"total_stars":3878,"followers":323,"following":14,"created_at":"2022-11-02T16:45:21.114Z","updated_at":"2024-04-14T08:26:34.467Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mdp","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mdp/repositories"},"packages":[{"id":13407258,"name":"ruby-rotp","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/mdp/rotp","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/mdp/rotp","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-06T15:56:21.305Z","latest_release_published_at":"2026-02-06T15:56:21.305Z","latest_release_number":"6.2.0-2","last_synced_at":"2026-03-06T16:41:30.730Z","created_at":"2026-02-06T15:56:20.420Z","updated_at":"2026-04-11T11:34:01.823Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-rotp","install_command":"apt-get install ruby-rotp","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-rotp","standards_version":"4.6.0","maintainer":"Debian Ruby Team \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper-compat (= 13), gem2deb, libjs-jquery, rake, ruby-rspec (\u003e= 3.0.0), ruby-timecop, ruby-simplecov, yard","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-04-11T11:34:01.796Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{},"purl":"pkg:deb/ubuntu/ruby-rotp?arch=source\u0026distro=ubuntu-24.04","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-rotp","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-rotp","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-rotp/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-rotp/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-rotp/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-rotp/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-rotp/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-rotp/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages/ruby-rotp/codemeta","maintainers":[],"registry":{"name":"ubuntu-24.04","url":"https://launchpad.net/ubuntu/noble","ecosystem":"ubuntu","default":true,"packages_count":37306,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"ubuntu","metadata":{"codename":"noble"},"icon_url":"https://github.com/ubuntu.png","created_at":"2026-02-04T11:01:45.928Z","updated_at":"2026-04-27T18:20:35.701Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.04/namespaces"}},{"id":8614141,"name":"github.com/mdp/rotp","ecosystem":"go","description":null,"homepage":null,"licenses":"mit","normalized_licenses":["MIT"],"repository_url":"https://github.com/mdp/rotp","keywords_array":[],"namespace":null,"versions_count":19,"first_release_published_at":"2011-09-23T17:46:30.000Z","latest_release_published_at":"2025-06-03T23:49:27.000Z","latest_release_number":"v6.3.1+incompatible","last_synced_at":"2026-05-22T04:02:51.410Z","created_at":"2023-12-02T02:11:59.540Z","updated_at":"2026-05-22T04:02:51.411Z","registry_url":"https://pkg.go.dev/github.com/mdp/rotp","install_command":"go get github.com/mdp/rotp","documentation_url":"https://pkg.go.dev/github.com/mdp/rotp#section-documentation","metadata":{},"repo_metadata":{"id":37934487,"uuid":"1362437","full_name":"mdp/rotp","owner":"mdp","description":"Ruby One Time Password library","archived":false,"fork":false,"pushed_at":"2025-08-12T06:41:47.000Z","size":297,"stargazers_count":1642,"open_issues_count":10,"forks_count":469,"subscribers_count":24,"default_branch":"main","last_synced_at":"2025-10-06T13:43:01.825Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://rubydoc.info/github/mdp/rotp/master/frames","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mdp.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2011-02-13T18:20:59.000Z","updated_at":"2025-10-04T17:34:06.000Z","dependencies_parsed_at":"2024-06-18T10:57:30.381Z","dependency_job_id":"edbb1786-f1ba-42bb-8a28-672b0c13ceb5","html_url":"https://github.com/mdp/rotp","commit_stats":{"total_commits":227,"total_committers":46,"mean_commits":4.934782608695652,"dds":"0.42731277533039647","last_synced_commit":"1fbd30d94e5c986b0e252e3257b2f345735439ce"},"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/mdp/rotp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mdp","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/sbom","scorecard":{"id":633378,"data":{"date":"2025-08-11","repo":{"name":"github.com/mdp/rotp","commit":"bad1a3564fdc030422c2fb009e9341413814e9cb"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.8,"checks":[{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Maintained","score":7,"reason":"9 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 7","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":3,"reason":"Found 6/16 approved changesets -- score normalized to 3","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/release.yaml:1","Warn: no topLevel permission defined: .github/workflows/test.yaml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yaml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/mdp/rotp/release.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yaml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/mdp/rotp/release.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yaml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/mdp/rotp/release.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yaml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/mdp/rotp/test.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yaml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/mdp/rotp/test.yaml/main?enable=pin","Warn: containerImage not pinned by hash: Dockerfile-2.3:1: pin your Docker image by updating ruby:2.3 to ruby:2.3@sha256:78cc821d95c48621e577b6b0d44c9d509f0f2a4e089b9fd0ca2ae86f274773a8","Warn: containerImage not pinned by hash: Dockerfile-2.7:1: pin your Docker image by updating ruby:2.7 to ruby:2.7@sha256:2347de892e419c7160fc21dec721d5952736909f8c3fbb7f84cb4a07aaf9ce7d","Warn: containerImage not pinned by hash: Dockerfile-3.0:1: pin your Docker image by updating ruby:3.0 to ruby:3.0@sha256:dcb8a8a6ee981f949da505cb9f4f15cde696e7bcb088955bc1f92f23a4cd7a72","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   3 third-party GitHubAction dependencies pinned","Info:   0 out of   3 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-21T08:28:14.973Z","repository_id":37934487,"created_at":"2025-08-21T08:28:14.973Z","updated_at":"2025-08-21T08:28:14.973Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278646774,"owners_count":26021511,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-06T02:00:05.630Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"mdp","name":"Mark Percival","uuid":"2868","kind":"user","description":"","email":"","website":"https://mdp.github.io","location":"Atlanta, GA","twitter":"mdp","company":null,"icon_url":"https://avatars.githubusercontent.com/u/2868?u=90e0995d4bdae3bfdb66b47b3864a423d72398d7\u0026v=4","repositories_count":188,"last_synced_at":"2024-04-14T08:26:15.914Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/mdp","funding_links":[],"total_stars":3878,"followers":323,"following":14,"created_at":"2022-11-02T16:45:21.114Z","updated_at":"2024-04-14T08:26:34.467Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mdp","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mdp/repositories"},"tags":[{"name":"v6.3.1","sha":"bad1a3564fdc030422c2fb009e9341413814e9cb","kind":"commit","published_at":"2025-06-03T23:49:27.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v6.3.1","html_url":"https://github.com/mdp/rotp/releases/tag/v6.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v6.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.3.1/manifests"},{"name":"v6.3.0","sha":"131d2c325ba5f94887b27eefe24a214bdbcd0a5c","kind":"commit","published_at":"2023-08-30T18:52:51.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v6.3.0","html_url":"https://github.com/mdp/rotp/releases/tag/v6.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v6.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.3.0/manifests"},{"name":"v6.2.2","sha":"f0624c0fc866f2f7db199925588965217aac3140","kind":"commit","published_at":"2022-12-13T21:50:08.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v6.2.2","html_url":"https://github.com/mdp/rotp/releases/tag/v6.2.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v6.2.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.2.2/manifests"},{"name":"v6.2.1","sha":"703bee153bb814f0b0046bad2e52343dea7384bb","kind":"commit","published_at":"2022-11-11T14:07:05.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v6.2.1","html_url":"https://github.com/mdp/rotp/releases/tag/v6.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v6.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.2.1/manifests"},{"name":"v6.2.0","sha":"62874be71d74380d252c73409dd81da08b021497","kind":"tag","published_at":"2021-01-14T16:52:44.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v6.2.0","html_url":"https://github.com/mdp/rotp/releases/tag/v6.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v6.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.2.0/manifests"},{"name":"v6.1.0","sha":"6b42d17781a55d4fbf992ea25e6f6e742a049cef","kind":"tag","published_at":"2020-08-03T18:00:53.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v6.1.0","html_url":"https://github.com/mdp/rotp/releases/tag/v6.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v6.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.1.0/manifests"},{"name":"v6.0.0","sha":"5cf31c2ca3c9802a8d4876b0cf6ea199f51057b8","kind":"commit","published_at":"2020-04-23T15:53:41.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v6.0.0","html_url":"https://github.com/mdp/rotp/releases/tag/v6.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v6.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.0.0/manifests"},{"name":"v5.1.0","sha":"15d5104e3cb99f97d36c772f8f09cf7e2e77de20","kind":"commit","published_at":"2019-06-27T18:41:18.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v5.1.0","html_url":"https://github.com/mdp/rotp/releases/tag/v5.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v5.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v5.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v5.1.0/manifests"},{"name":"v5.0.0","sha":"c38462855747b62607b8475d9b45c4cfd92ba66b","kind":"commit","published_at":"2019-05-28T13:51:18.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v5.0.0","html_url":"https://github.com/mdp/rotp/releases/tag/v5.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v5.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v5.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v5.0.0/manifests"},{"name":"v4.1.0","sha":"2698c91539cfb868790e8bb7d5d4d8cf78f0bbfc","kind":"commit","published_at":"2019-02-28T16:20:58.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v4.1.0","html_url":"https://github.com/mdp/rotp/releases/tag/v4.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v4.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v4.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v4.1.0/manifests"},{"name":"v4.0.2","sha":"fabd3cb113c709138cdb24c916514dd36dfce14d","kind":"commit","published_at":"2018-11-01T19:01:03.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v4.0.2","html_url":"https://github.com/mdp/rotp/releases/tag/v4.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v4.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v4.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v4.0.2/manifests"},{"name":"v4.0.1","sha":"04e8dc8094f874d9b89b45bc5e75b311423b2bdb","kind":"commit","published_at":"2018-11-01T18:56:49.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v4.0.1","html_url":"https://github.com/mdp/rotp/releases/tag/v4.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v4.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v4.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v4.0.1/manifests"},{"name":"v4.0.0","sha":"52834910b8a621dee14af7a1267aad38618b3031","kind":"commit","published_at":"2018-11-01T17:06:34.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v4.0.0","html_url":"https://github.com/mdp/rotp/releases/tag/v4.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v4.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v4.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v4.0.0/manifests"},{"name":"v3.3.1","sha":"c82113eee6c9e7d0a03df8cf65ea50a2653c3916","kind":"commit","published_at":"2018-03-02T17:23:59.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v3.3.1","html_url":"https://github.com/mdp/rotp/releases/tag/v3.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v3.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v3.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v3.3.1/manifests"},{"name":"v3.3.0","sha":"07c0a732d27471d13719eddda998bde2a300b917","kind":"commit","published_at":"2016-09-23T01:10:41.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v3.3.0","html_url":"https://github.com/mdp/rotp/releases/tag/v3.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v3.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v3.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v3.3.0/manifests"},{"name":"v2.1.2","sha":"ff5ebaf9db0e991b2a6d1e308a74562fa7fb3f7f","kind":"commit","published_at":"2016-04-12T19:38:22.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v2.1.2","html_url":"https://github.com/mdp/rotp/releases/tag/v2.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v2.1.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v2.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v2.1.2/manifests"},{"name":"v2.1.1","sha":"a9a5446e0fa656126996f67577f6d0ee5eec0ccd","kind":"commit","published_at":"2015-06-03T00:17:05.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v2.1.1","html_url":"https://github.com/mdp/rotp/releases/tag/v2.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v2.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v2.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v2.1.1/manifests"},{"name":"v2.1.0","sha":"0e65918ce8695870c99fd04c35a7dae8d4335782","kind":"commit","published_at":"2015-01-26T01:17:57.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v2.1.0","html_url":"https://github.com/mdp/rotp/releases/tag/v2.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v2.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v2.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v2.1.0/manifests"},{"name":"v1.3.1","sha":"941e66c278e5aa0aaacae688052d711de5c3a6dc","kind":"tag","published_at":"2011-09-23T17:46:41.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v1.3.1","html_url":"https://github.com/mdp/rotp/releases/tag/v1.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v1.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v1.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v1.3.1/manifests"}]},"repo_metadata_updated_at":"2026-04-11T11:34:01.845Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":10.801592556016239,"dependent_packages_count":9.575730298247606,"stargazers_count":1.7016039972662096,"forks_count":1.3993638526398913,"docker_downloads_count":null,"average":5.869572676042487},"purl":"pkg:golang/github.com/mdp/rotp","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/go/github.com/mdp/rotp","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/go/github.com/mdp/rotp","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/go/github.com/mdp/rotp/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-10-02T11:06:45.148Z","issues_count":46,"pull_requests_count":91,"avg_time_to_close_issue":6630961.048780488,"avg_time_to_close_pull_request":9228479.775,"issues_closed_count":41,"pull_requests_closed_count":80,"pull_request_authors_count":45,"issue_authors_count":46,"avg_comments_per_issue":2.217391304347826,"avg_comments_per_pull_request":1.10989010989011,"merged_pull_requests_count":60,"bot_issues_count":0,"bot_pull_requests_count":7,"past_year_issues_count":1,"past_year_pull_requests_count":17,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":1144916.7142857143,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":7,"past_year_pull_request_authors_count":7,"past_year_issue_authors_count":1,"past_year_avg_comments_per_issue":0.0,"past_year_avg_comments_per_pull_request":0.9411764705882353,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":3,"past_year_merged_pull_requests_count":5,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/issues","maintainers":[{"login":"mdp","count":25,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mdp"}],"active_maintainers":[{"login":"mdp","count":6,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mdp"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fmdp%2Frotp/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fmdp%2Frotp/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fmdp%2Frotp/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fmdp%2Frotp/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fmdp%2Frotp/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fmdp%2Frotp/codemeta","maintainers":[],"registry":{"name":"proxy.golang.org","url":"https://proxy.golang.org","ecosystem":"go","default":true,"packages_count":2147083,"maintainers_count":0,"namespaces_count":782439,"keywords_count":112823,"github":"golang","metadata":{"funded_packages_count":53495},"icon_url":"https://github.com/golang.png","created_at":"2022-04-04T15:19:22.939Z","updated_at":"2026-04-19T05:14:45.920Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/namespaces"}},{"id":303726,"name":"sjcl","ecosystem":"rubygems","description":"A Ruby library for interopping with SJCL's AES crypto","homepage":"http://github.com/mdp/rotp","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/mdp/rotp","keywords_array":[],"namespace":null,"versions_count":3,"first_release_published_at":"2014-03-17T01:24:53.951Z","latest_release_published_at":"2015-01-08T11:15:44.527Z","latest_release_number":"1.0.1","last_synced_at":"2026-05-22T04:02:41.377Z","created_at":"2022-04-06T11:00:54.223Z","updated_at":"2026-05-22T04:02:41.377Z","registry_url":"https://rubygems.org/gems/sjcl","install_command":"gem install sjcl -s https://rubygems.org","documentation_url":"http://www.rubydoc.info/gems/sjcl/","metadata":{"funding":null},"repo_metadata":{"id":37934487,"uuid":"1362437","full_name":"mdp/rotp","owner":"mdp","description":"Ruby One Time Password library","archived":false,"fork":false,"pushed_at":"2024-08-14T02:22:29.000Z","size":272,"stargazers_count":1597,"open_issues_count":6,"forks_count":443,"subscribers_count":27,"default_branch":"main","last_synced_at":"2024-08-22T18:07:08.075Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://rubydoc.info/github/mdp/rotp/master/frames","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mdp.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2011-02-13T18:20:59.000Z","updated_at":"2024-08-22T14:10:13.000Z","dependencies_parsed_at":"2024-06-18T10:57:30.381Z","dependency_job_id":"edbb1786-f1ba-42bb-8a28-672b0c13ceb5","html_url":"https://github.com/mdp/rotp","commit_stats":{"total_commits":227,"total_committers":46,"mean_commits":4.934782608695652,"dds":"0.42731277533039647","last_synced_commit":"1fbd30d94e5c986b0e252e3257b2f345735439ce"},"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mdp","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":216690347,"owners_count":16065199,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"mdp","name":"Mark Percival","uuid":"2868","kind":"user","description":"","email":"","website":"https://mdp.github.io","location":"Atlanta, GA","twitter":"mdp","company":null,"icon_url":"https://avatars.githubusercontent.com/u/2868?u=90e0995d4bdae3bfdb66b47b3864a423d72398d7\u0026v=4","repositories_count":188,"last_synced_at":"2024-04-14T08:26:15.914Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/mdp","funding_links":[],"total_stars":3878,"followers":323,"following":14,"created_at":"2022-11-02T16:45:21.114Z","updated_at":"2024-04-14T08:26:34.467Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mdp","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mdp/repositories"},"tags":[{"name":"v6.3.0","sha":"131d2c325ba5f94887b27eefe24a214bdbcd0a5c","kind":"commit","published_at":"2023-08-30T18:52:51.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v6.3.0","html_url":"https://github.com/mdp/rotp/releases/tag/v6.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.3.0/manifests"},{"name":"v6.2.2","sha":"f0624c0fc866f2f7db199925588965217aac3140","kind":"commit","published_at":"2022-12-13T21:50:08.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v6.2.2","html_url":"https://github.com/mdp/rotp/releases/tag/v6.2.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.2.2/manifests"},{"name":"v6.2.1","sha":"703bee153bb814f0b0046bad2e52343dea7384bb","kind":"commit","published_at":"2022-11-11T14:07:05.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v6.2.1","html_url":"https://github.com/mdp/rotp/releases/tag/v6.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.2.1/manifests"},{"name":"v6.2.0","sha":"62874be71d74380d252c73409dd81da08b021497","kind":"tag","published_at":"2021-01-14T16:52:44.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v6.2.0","html_url":"https://github.com/mdp/rotp/releases/tag/v6.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.2.0/manifests"},{"name":"v6.1.0","sha":"6b42d17781a55d4fbf992ea25e6f6e742a049cef","kind":"tag","published_at":"2020-08-03T18:00:53.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v6.1.0","html_url":"https://github.com/mdp/rotp/releases/tag/v6.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.1.0/manifests"},{"name":"v6.0.0","sha":"5cf31c2ca3c9802a8d4876b0cf6ea199f51057b8","kind":"commit","published_at":"2020-04-23T15:53:41.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v6.0.0","html_url":"https://github.com/mdp/rotp/releases/tag/v6.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.0.0/manifests"},{"name":"v5.1.0","sha":"15d5104e3cb99f97d36c772f8f09cf7e2e77de20","kind":"commit","published_at":"2019-06-27T18:41:18.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v5.1.0","html_url":"https://github.com/mdp/rotp/releases/tag/v5.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v5.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v5.1.0/manifests"},{"name":"v5.0.0","sha":"c38462855747b62607b8475d9b45c4cfd92ba66b","kind":"commit","published_at":"2019-05-28T13:51:18.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v5.0.0","html_url":"https://github.com/mdp/rotp/releases/tag/v5.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v5.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v5.0.0/manifests"},{"name":"v4.1.0","sha":"2698c91539cfb868790e8bb7d5d4d8cf78f0bbfc","kind":"commit","published_at":"2019-02-28T16:20:58.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v4.1.0","html_url":"https://github.com/mdp/rotp/releases/tag/v4.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v4.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v4.1.0/manifests"},{"name":"v4.0.2","sha":"fabd3cb113c709138cdb24c916514dd36dfce14d","kind":"commit","published_at":"2018-11-01T19:01:03.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v4.0.2","html_url":"https://github.com/mdp/rotp/releases/tag/v4.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v4.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v4.0.2/manifests"},{"name":"v4.0.1","sha":"04e8dc8094f874d9b89b45bc5e75b311423b2bdb","kind":"commit","published_at":"2018-11-01T18:56:49.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v4.0.1","html_url":"https://github.com/mdp/rotp/releases/tag/v4.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v4.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v4.0.1/manifests"},{"name":"v4.0.0","sha":"52834910b8a621dee14af7a1267aad38618b3031","kind":"commit","published_at":"2018-11-01T17:06:34.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v4.0.0","html_url":"https://github.com/mdp/rotp/releases/tag/v4.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v4.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v4.0.0/manifests"},{"name":"v3.3.1","sha":"c82113eee6c9e7d0a03df8cf65ea50a2653c3916","kind":"commit","published_at":"2018-03-02T17:23:59.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v3.3.1","html_url":"https://github.com/mdp/rotp/releases/tag/v3.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v3.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v3.3.1/manifests"},{"name":"v3.3.0","sha":"07c0a732d27471d13719eddda998bde2a300b917","kind":"commit","published_at":"2016-09-23T01:10:41.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v3.3.0","html_url":"https://github.com/mdp/rotp/releases/tag/v3.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v3.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v3.3.0/manifests"},{"name":"v2.1.2","sha":"ff5ebaf9db0e991b2a6d1e308a74562fa7fb3f7f","kind":"commit","published_at":"2016-04-12T19:38:22.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v2.1.2","html_url":"https://github.com/mdp/rotp/releases/tag/v2.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v2.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v2.1.2/manifests"},{"name":"v2.1.1","sha":"a9a5446e0fa656126996f67577f6d0ee5eec0ccd","kind":"commit","published_at":"2015-06-03T00:17:05.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v2.1.1","html_url":"https://github.com/mdp/rotp/releases/tag/v2.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v2.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v2.1.1/manifests"},{"name":"v2.1.0","sha":"0e65918ce8695870c99fd04c35a7dae8d4335782","kind":"commit","published_at":"2015-01-26T01:17:57.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v2.1.0","html_url":"https://github.com/mdp/rotp/releases/tag/v2.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v2.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v2.1.0/manifests"},{"name":"v1.3.1","sha":"941e66c278e5aa0aaacae688052d711de5c3a6dc","kind":"tag","published_at":"2011-09-23T17:46:41.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v1.3.1","html_url":"https://github.com/mdp/rotp/releases/tag/v1.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v1.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v1.3.1/manifests"}]},"repo_metadata_updated_at":"2024-08-31T23:05:39.096Z","dependent_packages_count":0,"downloads":11479,"downloads_period":"total","dependent_repos_count":1,"rankings":{"downloads":48.38246591935041,"dependent_repos_count":21.70572631885911,"dependent_packages_count":15.782006202437232,"stargazers_count":1.287522360607199,"forks_count":1.2735031711406573,"docker_downloads_count":null,"average":17.68624479447892},"purl":"pkg:gem/sjcl","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/rubygems/sjcl","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/rubygems/sjcl","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/rubygems/sjcl/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2024-08-30T17:04:58.925Z","issues_count":44,"pull_requests_count":77,"avg_time_to_close_issue":5902439.25,"avg_time_to_close_pull_request":8521348.175675675,"issues_closed_count":40,"pull_requests_closed_count":74,"pull_request_authors_count":41,"issue_authors_count":44,"avg_comments_per_issue":2.340909090909091,"avg_comments_per_pull_request":1.038961038961039,"merged_pull_requests_count":58,"bot_issues_count":0,"bot_pull_requests_count":4,"past_year_issues_count":3,"past_year_pull_requests_count":9,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":1703964.2857142857,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":7,"past_year_pull_request_authors_count":5,"past_year_issue_authors_count":3,"past_year_avg_comments_per_issue":0.3333333333333333,"past_year_avg_comments_per_pull_request":0.2222222222222222,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":4,"past_year_merged_pull_requests_count":7,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/issues","maintainers":[{"login":"mdp","count":23,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mdp"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/sjcl/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/sjcl/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/sjcl/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/sjcl/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/sjcl/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/sjcl/codemeta","maintainers":[{"uuid":"1075","login":"mdp","name":null,"email":null,"url":null,"packages_count":9,"html_url":"https://rubygems.org/profiles/mdp","role":null,"created_at":"2022-11-09T09:51:33.251Z","updated_at":"2022-11-09T09:51:33.251Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers/mdp/packages"}],"registry":{"name":"rubygems.org","url":"https://rubygems.org","ecosystem":"rubygems","default":true,"packages_count":207303,"maintainers_count":68781,"namespaces_count":0,"keywords_count":18627,"github":"rubygems","metadata":{"funded_packages_count":7375},"icon_url":"https://github.com/rubygems.png","created_at":"2022-04-04T15:19:23.446Z","updated_at":"2026-05-13T05:11:24.133Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/namespaces"}},{"id":12327853,"name":"sjcl","ecosystem":"rubygems","description":"A Ruby library for interopping with SJCL's AES crypto","homepage":"http://github.com/mdp/rotp","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/mdp/rotp","keywords_array":[],"namespace":null,"versions_count":3,"first_release_published_at":"2014-03-17T01:24:53.951Z","latest_release_published_at":"2015-01-08T11:15:44.527Z","latest_release_number":"1.0.1","last_synced_at":"2026-05-22T04:02:50.997Z","created_at":"2025-10-07T06:03:08.674Z","updated_at":"2026-05-22T04:06:41.582Z","registry_url":"https://gem.coop/gems/sjcl","install_command":"gem install sjcl -s https://gem.coop","documentation_url":"http://www.rubydoc.info/gems/sjcl/","metadata":{"funding":null},"repo_metadata":{"id":37934487,"uuid":"1362437","full_name":"mdp/rotp","owner":"mdp","description":"Ruby One Time Password library","archived":false,"fork":false,"pushed_at":"2025-11-24T21:17:25.000Z","size":297,"stargazers_count":1660,"open_issues_count":10,"forks_count":475,"subscribers_count":22,"default_branch":"main","last_synced_at":"2026-05-13T00:05:57.001Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://rubydoc.info/github/mdp/rotp/master/frames","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mdp.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2011-02-13T18:20:59.000Z","updated_at":"2026-05-10T10:54:28.000Z","dependencies_parsed_at":"2024-06-18T10:57:30.381Z","dependency_job_id":"edbb1786-f1ba-42bb-8a28-672b0c13ceb5","html_url":"https://github.com/mdp/rotp","commit_stats":{"total_commits":227,"total_committers":46,"mean_commits":4.934782608695652,"dds":"0.42731277533039647","last_synced_commit":"1fbd30d94e5c986b0e252e3257b2f345735439ce"},"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/mdp/rotp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mdp","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/sbom","scorecard":{"id":633378,"data":{"date":"2025-08-11","repo":{"name":"github.com/mdp/rotp","commit":"bad1a3564fdc030422c2fb009e9341413814e9cb"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.8,"checks":[{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Maintained","score":7,"reason":"9 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 7","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":3,"reason":"Found 6/16 approved changesets -- score normalized to 3","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/release.yaml:1","Warn: no topLevel permission defined: .github/workflows/test.yaml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yaml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/mdp/rotp/release.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yaml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/mdp/rotp/release.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yaml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/mdp/rotp/release.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yaml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/mdp/rotp/test.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yaml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/mdp/rotp/test.yaml/main?enable=pin","Warn: containerImage not pinned by hash: Dockerfile-2.3:1: pin your Docker image by updating ruby:2.3 to ruby:2.3@sha256:78cc821d95c48621e577b6b0d44c9d509f0f2a4e089b9fd0ca2ae86f274773a8","Warn: containerImage not pinned by hash: Dockerfile-2.7:1: pin your Docker image by updating ruby:2.7 to ruby:2.7@sha256:2347de892e419c7160fc21dec721d5952736909f8c3fbb7f84cb4a07aaf9ce7d","Warn: containerImage not pinned by hash: Dockerfile-3.0:1: pin your Docker image by updating ruby:3.0 to ruby:3.0@sha256:dcb8a8a6ee981f949da505cb9f4f15cde696e7bcb088955bc1f92f23a4cd7a72","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   3 third-party GitHubAction dependencies pinned","Info:   0 out of   3 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-21T08:28:14.973Z","repository_id":37934487,"created_at":"2025-08-21T08:28:14.973Z","updated_at":"2025-08-21T08:28:14.973Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33074392,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-15T11:35:32.926Z","status":"ssl_error","status_checked_at":"2026-05-15T11:35:31.362Z","response_time":103,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"mdp","name":"Mark Percival","uuid":"2868","kind":"user","description":"","email":"","website":"https://mdp.github.io","location":"Atlanta, GA","twitter":"mdp","company":null,"icon_url":"https://avatars.githubusercontent.com/u/2868?u=90e0995d4bdae3bfdb66b47b3864a423d72398d7\u0026v=4","repositories_count":188,"last_synced_at":"2024-04-14T08:26:15.914Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/mdp","funding_links":[],"total_stars":3878,"followers":323,"following":14,"created_at":"2022-11-02T16:45:21.114Z","updated_at":"2024-04-14T08:26:34.467Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mdp","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mdp/repositories"},"tags":[{"name":"v6.3.1","sha":"bad1a3564fdc030422c2fb009e9341413814e9cb","kind":"commit","published_at":"2025-06-03T23:49:27.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v6.3.1","html_url":"https://github.com/mdp/rotp/releases/tag/v6.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v6.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.3.1/manifests"},{"name":"v6.3.0","sha":"131d2c325ba5f94887b27eefe24a214bdbcd0a5c","kind":"commit","published_at":"2023-08-30T18:52:51.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v6.3.0","html_url":"https://github.com/mdp/rotp/releases/tag/v6.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v6.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.3.0/manifests"},{"name":"v6.2.2","sha":"f0624c0fc866f2f7db199925588965217aac3140","kind":"commit","published_at":"2022-12-13T21:50:08.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v6.2.2","html_url":"https://github.com/mdp/rotp/releases/tag/v6.2.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v6.2.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.2.2/manifests"},{"name":"v6.2.1","sha":"703bee153bb814f0b0046bad2e52343dea7384bb","kind":"commit","published_at":"2022-11-11T14:07:05.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v6.2.1","html_url":"https://github.com/mdp/rotp/releases/tag/v6.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v6.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.2.1/manifests"},{"name":"v6.2.0","sha":"62874be71d74380d252c73409dd81da08b021497","kind":"tag","published_at":"2021-01-14T16:52:44.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v6.2.0","html_url":"https://github.com/mdp/rotp/releases/tag/v6.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v6.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.2.0/manifests"},{"name":"v6.1.0","sha":"6b42d17781a55d4fbf992ea25e6f6e742a049cef","kind":"tag","published_at":"2020-08-03T18:00:53.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v6.1.0","html_url":"https://github.com/mdp/rotp/releases/tag/v6.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v6.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.1.0/manifests"},{"name":"v6.0.0","sha":"5cf31c2ca3c9802a8d4876b0cf6ea199f51057b8","kind":"commit","published_at":"2020-04-23T15:53:41.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v6.0.0","html_url":"https://github.com/mdp/rotp/releases/tag/v6.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v6.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.0.0/manifests"},{"name":"v5.1.0","sha":"15d5104e3cb99f97d36c772f8f09cf7e2e77de20","kind":"commit","published_at":"2019-06-27T18:41:18.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v5.1.0","html_url":"https://github.com/mdp/rotp/releases/tag/v5.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v5.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v5.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v5.1.0/manifests"},{"name":"v5.0.0","sha":"c38462855747b62607b8475d9b45c4cfd92ba66b","kind":"commit","published_at":"2019-05-28T13:51:18.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v5.0.0","html_url":"https://github.com/mdp/rotp/releases/tag/v5.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v5.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v5.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v5.0.0/manifests"},{"name":"v4.1.0","sha":"2698c91539cfb868790e8bb7d5d4d8cf78f0bbfc","kind":"commit","published_at":"2019-02-28T16:20:58.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v4.1.0","html_url":"https://github.com/mdp/rotp/releases/tag/v4.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v4.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v4.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v4.1.0/manifests"},{"name":"v4.0.2","sha":"fabd3cb113c709138cdb24c916514dd36dfce14d","kind":"commit","published_at":"2018-11-01T19:01:03.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v4.0.2","html_url":"https://github.com/mdp/rotp/releases/tag/v4.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v4.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v4.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v4.0.2/manifests"},{"name":"v4.0.1","sha":"04e8dc8094f874d9b89b45bc5e75b311423b2bdb","kind":"commit","published_at":"2018-11-01T18:56:49.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v4.0.1","html_url":"https://github.com/mdp/rotp/releases/tag/v4.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v4.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v4.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v4.0.1/manifests"},{"name":"v4.0.0","sha":"52834910b8a621dee14af7a1267aad38618b3031","kind":"commit","published_at":"2018-11-01T17:06:34.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v4.0.0","html_url":"https://github.com/mdp/rotp/releases/tag/v4.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v4.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v4.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v4.0.0/manifests"},{"name":"v3.3.1","sha":"c82113eee6c9e7d0a03df8cf65ea50a2653c3916","kind":"commit","published_at":"2018-03-02T17:23:59.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v3.3.1","html_url":"https://github.com/mdp/rotp/releases/tag/v3.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v3.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v3.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v3.3.1/manifests"},{"name":"v3.3.0","sha":"07c0a732d27471d13719eddda998bde2a300b917","kind":"commit","published_at":"2016-09-23T01:10:41.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v3.3.0","html_url":"https://github.com/mdp/rotp/releases/tag/v3.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v3.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v3.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v3.3.0/manifests"},{"name":"v2.1.2","sha":"ff5ebaf9db0e991b2a6d1e308a74562fa7fb3f7f","kind":"commit","published_at":"2016-04-12T19:38:22.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v2.1.2","html_url":"https://github.com/mdp/rotp/releases/tag/v2.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v2.1.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v2.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v2.1.2/manifests"},{"name":"v2.1.1","sha":"a9a5446e0fa656126996f67577f6d0ee5eec0ccd","kind":"commit","published_at":"2015-06-03T00:17:05.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v2.1.1","html_url":"https://github.com/mdp/rotp/releases/tag/v2.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v2.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v2.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v2.1.1/manifests"},{"name":"v2.1.0","sha":"0e65918ce8695870c99fd04c35a7dae8d4335782","kind":"commit","published_at":"2015-01-26T01:17:57.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v2.1.0","html_url":"https://github.com/mdp/rotp/releases/tag/v2.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v2.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v2.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v2.1.0/manifests"},{"name":"v1.3.1","sha":"941e66c278e5aa0aaacae688052d711de5c3a6dc","kind":"tag","published_at":"2011-09-23T17:46:41.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v1.3.1","html_url":"https://github.com/mdp/rotp/releases/tag/v1.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v1.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v1.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v1.3.1/manifests"}]},"repo_metadata_updated_at":"2026-05-22T04:06:41.582Z","dependent_packages_count":0,"downloads":11479,"downloads_period":"total","dependent_repos_count":0,"rankings":{"downloads":47.88076713039811,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":15.960255710132705},"purl":"pkg:gem/sjcl?repository_url=https://gem.coop","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/rubygems/sjcl","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/rubygems/sjcl","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/rubygems/sjcl/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-04-11T09:01:12.539Z","issues_count":46,"pull_requests_count":93,"avg_time_to_close_issue":6630961.048780488,"avg_time_to_close_pull_request":9226129.839506174,"issues_closed_count":41,"pull_requests_closed_count":81,"pull_request_authors_count":45,"issue_authors_count":46,"avg_comments_per_issue":2.217391304347826,"avg_comments_per_pull_request":1.118279569892473,"merged_pull_requests_count":60,"bot_issues_count":0,"bot_pull_requests_count":9,"past_year_issues_count":1,"past_year_pull_requests_count":19,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":2131569.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":8,"past_year_pull_request_authors_count":7,"past_year_issue_authors_count":1,"past_year_avg_comments_per_issue":0.0,"past_year_avg_comments_per_pull_request":1.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":5,"past_year_merged_pull_requests_count":5,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/issues","maintainers":[{"login":"mdp","count":25,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mdp"}],"active_maintainers":[{"login":"mdp","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mdp"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/sjcl/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/sjcl/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/sjcl/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/sjcl/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/sjcl/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/sjcl/codemeta","maintainers":[{"uuid":"1075","login":"mdp","name":null,"email":null,"url":null,"packages_count":9,"html_url":"https://gem.coop/profiles/mdp","role":null,"created_at":"2025-10-09T22:22:37.711Z","updated_at":"2025-10-09T22:22:37.711Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers/mdp/packages"}],"registry":{"name":"gem.coop","url":"https://gem.coop","ecosystem":"rubygems","default":false,"packages_count":192140,"maintainers_count":67790,"namespaces_count":0,"keywords_count":0,"github":"gem-coop","metadata":{"funded_packages_count":6507},"icon_url":"https://github.com/gem-coop.png","created_at":"2025-10-06T17:24:20.932Z","updated_at":"2026-04-03T06:45:05.763Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/namespaces"}},{"id":13805196,"name":"ruby-rotp","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/mdp/rotp","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/mdp/rotp","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-13T18:31:38.021Z","latest_release_published_at":"2026-02-13T18:31:38.021Z","latest_release_number":"6.2.0-2","last_synced_at":"2026-03-14T03:13:38.244Z","created_at":"2026-02-13T18:31:37.805Z","updated_at":"2026-04-11T11:34:01.836Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-rotp","install_command":"apt-get install ruby-rotp","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-rotp","standards_version":"4.6.0","maintainer":"Debian Ruby Team \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper-compat (= 13), gem2deb, libjs-jquery, rake, ruby-rspec (\u003e= 3.0.0), ruby-timecop, ruby-simplecov, yard","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-04-11T11:34:01.816Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/ubuntu/ruby-rotp?arch=source\u0026distro=ubuntu-23.10\u0026repository_url=https://launchpad.net/ubuntu/mantic","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-rotp","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-rotp","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-rotp/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-rotp/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-rotp/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-rotp/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-rotp/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-rotp/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages/ruby-rotp/codemeta","maintainers":[],"registry":{"name":"ubuntu-23.10","url":"https://launchpad.net/ubuntu/mantic","ecosystem":"ubuntu","default":false,"packages_count":36642,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"ubuntu","metadata":{"codename":"mantic","mirror":"http://old-releases.ubuntu.com/ubuntu"},"icon_url":"https://github.com/ubuntu.png","created_at":"2026-02-04T11:01:48.636Z","updated_at":"2026-04-27T18:20:38.051Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.10/namespaces"}},{"id":13606047,"name":"ruby-rotp","ecosystem":"debian","description":null,"homepage":"http://github.com/mdp/rotp","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/mdp/rotp","keywords_array":["misc"],"namespace":"main","versions_count":1,"first_release_published_at":"2026-02-11T11:26:46.554Z","latest_release_published_at":"2026-02-11T11:26:46.554Z","latest_release_number":"2.1.1+dfsg-1","last_synced_at":"2026-03-14T03:02:00.764Z","created_at":"2026-02-11T11:26:46.207Z","updated_at":"2026-04-11T11:34:01.862Z","registry_url":"https://tracker.debian.org/pkg/ruby-rotp","install_command":"apt-get install ruby-rotp","documentation_url":"https://packages.debian.org/buster/ruby-rotp","metadata":{"component":"main","architecture":"all","priority":"optional","binary":"ruby-rotp","standards_version":"3.9.6","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper (\u003e= 7.0.50~), gem2deb, libjs-jquery, rake, ruby-rspec (\u003e= 3.0.0), ruby-timecop, yard","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-04-11T11:34:01.828Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/debian/ruby-rotp?arch=source\u0026distro=debian-10\u0026repository_url=https://packages.debian.org/buster","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/debian/ruby-rotp","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/debian/ruby-rotp","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/debian/ruby-rotp/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages/ruby-rotp/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages/ruby-rotp/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages/ruby-rotp/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages/ruby-rotp/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages/ruby-rotp/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages/ruby-rotp/codemeta","maintainers":[],"registry":{"name":"debian-10","url":"https://packages.debian.org/buster","ecosystem":"debian","default":false,"packages_count":28836,"maintainers_count":0,"namespaces_count":3,"keywords_count":915,"github":"debian","metadata":{"codename":"buster","mirror":"http://archive.debian.org/debian"},"icon_url":"https://github.com/debian.png","created_at":"2026-02-04T11:01:50.156Z","updated_at":"2026-05-22T18:14:24.960Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/debian-10/namespaces"}},{"id":13530921,"name":"ruby-rotp","ecosystem":"debian","description":null,"homepage":"http://github.com/mdp/rotp","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/mdp/rotp","keywords_array":["misc"],"namespace":"main","versions_count":1,"first_release_published_at":"2026-02-10T23:37:57.999Z","latest_release_published_at":"2026-02-10T23:37:57.999Z","latest_release_number":"2.1.1+dfsg-1.1","last_synced_at":"2026-03-14T07:18:03.010Z","created_at":"2026-02-10T23:37:57.818Z","updated_at":"2026-04-11T11:34:01.826Z","registry_url":"https://tracker.debian.org/pkg/ruby-rotp","install_command":"apt-get install ruby-rotp","documentation_url":"https://packages.debian.org/bullseye/ruby-rotp","metadata":{"component":"main","architecture":"all","priority":"optional","binary":"ruby-rotp","standards_version":"3.9.6","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper (\u003e= 7.0.50~), gem2deb, libjs-jquery, rake, ruby-rspec (\u003e= 3.0.0), ruby-timecop, yard","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-04-11T11:34:01.800Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/debian/ruby-rotp?arch=source\u0026distro=debian-11\u0026repository_url=https://packages.debian.org/bullseye","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/debian/ruby-rotp","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/debian/ruby-rotp","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/debian/ruby-rotp/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-rotp/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-rotp/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-rotp/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-rotp/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-rotp/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages/ruby-rotp/codemeta","maintainers":[],"registry":{"name":"debian-11","url":"https://packages.debian.org/bullseye","ecosystem":"debian","default":false,"packages_count":31268,"maintainers_count":0,"namespaces_count":3,"keywords_count":0,"github":"debian","metadata":{"codename":"bullseye"},"icon_url":"https://github.com/debian.png","created_at":"2026-02-04T11:01:49.702Z","updated_at":"2026-04-27T18:20:39.352Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/debian-11/namespaces"}},{"id":13567091,"name":"ruby-rotp","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/mdp/rotp","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/mdp/rotp","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-11T06:48:41.118Z","latest_release_published_at":"2026-02-11T06:48:41.118Z","latest_release_number":"6.2.0-2","last_synced_at":"2026-03-12T01:20:22.756Z","created_at":"2026-02-11T06:48:40.939Z","updated_at":"2026-04-11T11:34:01.849Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-rotp","install_command":"apt-get install ruby-rotp","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-rotp","standards_version":"4.6.0","maintainer":"Debian Ruby Team \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper-compat (= 13), gem2deb, libjs-jquery, rake, ruby-rspec (\u003e= 3.0.0), ruby-timecop, ruby-simplecov, yard","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-04-11T11:34:01.823Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/ubuntu/ruby-rotp?arch=source\u0026distro=ubuntu-23.04\u0026repository_url=https://launchpad.net/ubuntu/lunar","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-rotp","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-rotp","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-rotp/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-rotp/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-rotp/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-rotp/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-rotp/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-rotp/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages/ruby-rotp/codemeta","maintainers":[],"registry":{"name":"ubuntu-23.04","url":"https://launchpad.net/ubuntu/lunar","ecosystem":"ubuntu","default":false,"packages_count":36116,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"ubuntu","metadata":{"codename":"lunar","mirror":"http://old-releases.ubuntu.com/ubuntu"},"icon_url":"https://github.com/ubuntu.png","created_at":"2026-02-04T11:01:49.117Z","updated_at":"2026-04-27T18:20:38.741Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-23.04/namespaces"}},{"id":13779703,"name":"ruby-rotp","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/mdp/rotp","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/mdp/rotp","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-13T13:24:44.519Z","latest_release_published_at":"2026-02-13T13:24:44.519Z","latest_release_number":"6.2.0-2","last_synced_at":"2026-03-13T13:35:52.791Z","created_at":"2026-02-13T13:24:44.316Z","updated_at":"2026-04-11T11:34:02.392Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-rotp","install_command":"apt-get install ruby-rotp","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-rotp","standards_version":"4.6.0","maintainer":"Debian Ruby Team \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper-compat (= 13), gem2deb, libjs-jquery, rake, ruby-rspec (\u003e= 3.0.0), ruby-timecop, ruby-simplecov, yard","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-04-11T11:34:02.364Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/ubuntu/ruby-rotp?arch=source\u0026distro=ubuntu-22.04\u0026repository_url=https://launchpad.net/ubuntu/jammy","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-rotp","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-rotp","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-rotp/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-rotp/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-rotp/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-rotp/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-rotp/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-rotp/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages/ruby-rotp/codemeta","maintainers":[],"registry":{"name":"ubuntu-22.04","url":"https://launchpad.net/ubuntu/jammy","ecosystem":"ubuntu","default":false,"packages_count":34289,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"ubuntu","metadata":{"codename":"jammy"},"icon_url":"https://github.com/ubuntu.png","created_at":"2026-02-04T11:01:46.486Z","updated_at":"2026-04-27T18:20:36.155Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-22.04/namespaces"}},{"id":13467196,"name":"ruby-rotp","ecosystem":"ubuntu","description":null,"homepage":"https://github.com/mdp/rotp","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/mdp/rotp","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-09T17:13:21.761Z","latest_release_published_at":"2026-02-09T17:13:21.761Z","latest_release_number":"6.2.0-2","last_synced_at":"2026-03-09T18:22:46.950Z","created_at":"2026-02-09T17:13:21.450Z","updated_at":"2026-04-11T11:34:01.821Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-rotp","install_command":"apt-get install ruby-rotp","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-rotp","standards_version":"4.6.0","maintainer":"Debian Ruby Team \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper-compat (= 13), gem2deb, libjs-jquery, rake, ruby-rspec (\u003e= 3.0.0), ruby-timecop, ruby-simplecov, yard","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-04-11T11:34:01.802Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/ubuntu/ruby-rotp?arch=source\u0026distro=ubuntu-24.10\u0026repository_url=https://launchpad.net/ubuntu/oracular","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-rotp","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-rotp","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-rotp/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-rotp/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-rotp/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-rotp/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-rotp/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-rotp/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages/ruby-rotp/codemeta","maintainers":[],"registry":{"name":"ubuntu-24.10","url":"https://launchpad.net/ubuntu/oracular","ecosystem":"ubuntu","default":false,"packages_count":38437,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"ubuntu","metadata":{"codename":"oracular","mirror":"http://old-releases.ubuntu.com/ubuntu"},"icon_url":"https://github.com/ubuntu.png","created_at":"2026-02-04T11:01:48.028Z","updated_at":"2026-04-27T18:20:37.303Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-24.10/namespaces"}},{"id":13751665,"name":"ruby-rotp","ecosystem":"ubuntu","description":null,"homepage":"http://github.com/mdp/rotp","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/mdp/rotp","keywords_array":["universe/misc"],"namespace":"universe","versions_count":1,"first_release_published_at":"2026-02-13T07:21:56.841Z","latest_release_published_at":"2026-02-13T07:21:56.841Z","latest_release_number":"2.1.1+dfsg-1","last_synced_at":"2026-03-13T14:25:03.228Z","created_at":"2026-02-13T07:21:56.679Z","updated_at":"2026-04-11T11:34:02.390Z","registry_url":"https://launchpad.net/ubuntu/+source/ruby-rotp","install_command":"apt-get install ruby-rotp","documentation_url":null,"metadata":{"component":"universe","architecture":"all","priority":"optional","binary":"ruby-rotp","standards_version":"3.9.6","maintainer":"Debian Ruby Extras Maintainers \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper (\u003e= 7.0.50~), gem2deb, libjs-jquery, rake, ruby-rspec (\u003e= 3.0.0), ruby-timecop, yard","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-04-11T11:34:02.358Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/ubuntu/ruby-rotp?arch=source\u0026distro=ubuntu-20.04\u0026repository_url=https://launchpad.net/ubuntu/focal","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/ubuntu/ruby-rotp","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/ubuntu/ruby-rotp","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/ubuntu/ruby-rotp/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-rotp/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-rotp/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-rotp/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-rotp/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-rotp/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages/ruby-rotp/codemeta","maintainers":[],"registry":{"name":"ubuntu-20.04","url":"https://launchpad.net/ubuntu/focal","ecosystem":"ubuntu","default":false,"packages_count":30789,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"ubuntu","metadata":{"codename":"focal"},"icon_url":"https://github.com/ubuntu.png","created_at":"2026-02-04T11:01:47.233Z","updated_at":"2026-04-27T18:20:36.874Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/ubuntu-20.04/namespaces"}},{"id":12312930,"name":"rotp","ecosystem":"rubygems","description":"Works for both HOTP and TOTP, and includes QR Code provisioning","homepage":"https://github.com/mdp/rotp","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/mdp/rotp","keywords_array":[],"namespace":null,"versions_count":38,"first_release_published_at":"2011-02-12T23:44:23.538Z","latest_release_published_at":"2023-08-30T19:23:10.162Z","latest_release_number":"6.3.0","last_synced_at":"2026-05-24T04:00:42.780Z","created_at":"2025-10-07T05:32:41.003Z","updated_at":"2026-05-24T04:01:54.971Z","registry_url":"https://gem.coop/gems/rotp","install_command":"gem install rotp -s https://gem.coop","documentation_url":"http://www.rubydoc.info/gems/rotp/","metadata":{"funding":null},"repo_metadata":{"id":37934487,"uuid":"1362437","full_name":"mdp/rotp","owner":"mdp","description":"Ruby One Time Password library","archived":false,"fork":false,"pushed_at":"2025-11-24T21:17:25.000Z","size":297,"stargazers_count":1660,"open_issues_count":10,"forks_count":475,"subscribers_count":22,"default_branch":"main","last_synced_at":"2026-05-13T00:05:57.001Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://rubydoc.info/github/mdp/rotp/master/frames","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mdp.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2011-02-13T18:20:59.000Z","updated_at":"2026-05-10T10:54:28.000Z","dependencies_parsed_at":"2024-06-18T10:57:30.381Z","dependency_job_id":"edbb1786-f1ba-42bb-8a28-672b0c13ceb5","html_url":"https://github.com/mdp/rotp","commit_stats":{"total_commits":227,"total_committers":46,"mean_commits":4.934782608695652,"dds":"0.42731277533039647","last_synced_commit":"1fbd30d94e5c986b0e252e3257b2f345735439ce"},"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/mdp/rotp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mdp","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/sbom","scorecard":{"id":633378,"data":{"date":"2025-08-11","repo":{"name":"github.com/mdp/rotp","commit":"bad1a3564fdc030422c2fb009e9341413814e9cb"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.8,"checks":[{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Maintained","score":7,"reason":"9 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 7","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":3,"reason":"Found 6/16 approved changesets -- score normalized to 3","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/release.yaml:1","Warn: no topLevel permission defined: .github/workflows/test.yaml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yaml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/mdp/rotp/release.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yaml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/mdp/rotp/release.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yaml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/mdp/rotp/release.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yaml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/mdp/rotp/test.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yaml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/mdp/rotp/test.yaml/main?enable=pin","Warn: containerImage not pinned by hash: Dockerfile-2.3:1: pin your Docker image by updating ruby:2.3 to ruby:2.3@sha256:78cc821d95c48621e577b6b0d44c9d509f0f2a4e089b9fd0ca2ae86f274773a8","Warn: containerImage not pinned by hash: Dockerfile-2.7:1: pin your Docker image by updating ruby:2.7 to ruby:2.7@sha256:2347de892e419c7160fc21dec721d5952736909f8c3fbb7f84cb4a07aaf9ce7d","Warn: containerImage not pinned by hash: Dockerfile-3.0:1: pin your Docker image by updating ruby:3.0 to ruby:3.0@sha256:dcb8a8a6ee981f949da505cb9f4f15cde696e7bcb088955bc1f92f23a4cd7a72","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   3 third-party GitHubAction dependencies pinned","Info:   0 out of   3 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-21T08:28:14.973Z","repository_id":37934487,"created_at":"2025-08-21T08:28:14.973Z","updated_at":"2025-08-21T08:28:14.973Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33074392,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-15T11:35:32.926Z","status":"ssl_error","status_checked_at":"2026-05-15T11:35:31.362Z","response_time":103,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"mdp","name":"Mark Percival","uuid":"2868","kind":"user","description":"","email":"","website":"https://mdp.github.io","location":"Atlanta, GA","twitter":"mdp","company":null,"icon_url":"https://avatars.githubusercontent.com/u/2868?u=90e0995d4bdae3bfdb66b47b3864a423d72398d7\u0026v=4","repositories_count":188,"last_synced_at":"2024-04-14T08:26:15.914Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/mdp","funding_links":[],"total_stars":3878,"followers":323,"following":14,"created_at":"2022-11-02T16:45:21.114Z","updated_at":"2024-04-14T08:26:34.467Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mdp","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mdp/repositories"},"tags":[{"name":"v6.3.1","sha":"bad1a3564fdc030422c2fb009e9341413814e9cb","kind":"commit","published_at":"2025-06-03T23:49:27.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v6.3.1","html_url":"https://github.com/mdp/rotp/releases/tag/v6.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v6.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.3.1/manifests"},{"name":"v6.3.0","sha":"131d2c325ba5f94887b27eefe24a214bdbcd0a5c","kind":"commit","published_at":"2023-08-30T18:52:51.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v6.3.0","html_url":"https://github.com/mdp/rotp/releases/tag/v6.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v6.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.3.0/manifests"},{"name":"v6.2.2","sha":"f0624c0fc866f2f7db199925588965217aac3140","kind":"commit","published_at":"2022-12-13T21:50:08.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v6.2.2","html_url":"https://github.com/mdp/rotp/releases/tag/v6.2.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v6.2.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.2.2/manifests"},{"name":"v6.2.1","sha":"703bee153bb814f0b0046bad2e52343dea7384bb","kind":"commit","published_at":"2022-11-11T14:07:05.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v6.2.1","html_url":"https://github.com/mdp/rotp/releases/tag/v6.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v6.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.2.1/manifests"},{"name":"v6.2.0","sha":"62874be71d74380d252c73409dd81da08b021497","kind":"tag","published_at":"2021-01-14T16:52:44.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v6.2.0","html_url":"https://github.com/mdp/rotp/releases/tag/v6.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v6.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.2.0/manifests"},{"name":"v6.1.0","sha":"6b42d17781a55d4fbf992ea25e6f6e742a049cef","kind":"tag","published_at":"2020-08-03T18:00:53.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v6.1.0","html_url":"https://github.com/mdp/rotp/releases/tag/v6.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v6.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.1.0/manifests"},{"name":"v6.0.0","sha":"5cf31c2ca3c9802a8d4876b0cf6ea199f51057b8","kind":"commit","published_at":"2020-04-23T15:53:41.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v6.0.0","html_url":"https://github.com/mdp/rotp/releases/tag/v6.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v6.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.0.0/manifests"},{"name":"v5.1.0","sha":"15d5104e3cb99f97d36c772f8f09cf7e2e77de20","kind":"commit","published_at":"2019-06-27T18:41:18.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v5.1.0","html_url":"https://github.com/mdp/rotp/releases/tag/v5.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v5.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v5.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v5.1.0/manifests"},{"name":"v5.0.0","sha":"c38462855747b62607b8475d9b45c4cfd92ba66b","kind":"commit","published_at":"2019-05-28T13:51:18.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v5.0.0","html_url":"https://github.com/mdp/rotp/releases/tag/v5.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v5.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v5.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v5.0.0/manifests"},{"name":"v4.1.0","sha":"2698c91539cfb868790e8bb7d5d4d8cf78f0bbfc","kind":"commit","published_at":"2019-02-28T16:20:58.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v4.1.0","html_url":"https://github.com/mdp/rotp/releases/tag/v4.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v4.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v4.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v4.1.0/manifests"},{"name":"v4.0.2","sha":"fabd3cb113c709138cdb24c916514dd36dfce14d","kind":"commit","published_at":"2018-11-01T19:01:03.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v4.0.2","html_url":"https://github.com/mdp/rotp/releases/tag/v4.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v4.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v4.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v4.0.2/manifests"},{"name":"v4.0.1","sha":"04e8dc8094f874d9b89b45bc5e75b311423b2bdb","kind":"commit","published_at":"2018-11-01T18:56:49.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v4.0.1","html_url":"https://github.com/mdp/rotp/releases/tag/v4.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v4.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v4.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v4.0.1/manifests"},{"name":"v4.0.0","sha":"52834910b8a621dee14af7a1267aad38618b3031","kind":"commit","published_at":"2018-11-01T17:06:34.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v4.0.0","html_url":"https://github.com/mdp/rotp/releases/tag/v4.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v4.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v4.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v4.0.0/manifests"},{"name":"v3.3.1","sha":"c82113eee6c9e7d0a03df8cf65ea50a2653c3916","kind":"commit","published_at":"2018-03-02T17:23:59.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v3.3.1","html_url":"https://github.com/mdp/rotp/releases/tag/v3.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v3.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v3.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v3.3.1/manifests"},{"name":"v3.3.0","sha":"07c0a732d27471d13719eddda998bde2a300b917","kind":"commit","published_at":"2016-09-23T01:10:41.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v3.3.0","html_url":"https://github.com/mdp/rotp/releases/tag/v3.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v3.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v3.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v3.3.0/manifests"},{"name":"v2.1.2","sha":"ff5ebaf9db0e991b2a6d1e308a74562fa7fb3f7f","kind":"commit","published_at":"2016-04-12T19:38:22.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v2.1.2","html_url":"https://github.com/mdp/rotp/releases/tag/v2.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v2.1.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v2.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v2.1.2/manifests"},{"name":"v2.1.1","sha":"a9a5446e0fa656126996f67577f6d0ee5eec0ccd","kind":"commit","published_at":"2015-06-03T00:17:05.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v2.1.1","html_url":"https://github.com/mdp/rotp/releases/tag/v2.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v2.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v2.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v2.1.1/manifests"},{"name":"v2.1.0","sha":"0e65918ce8695870c99fd04c35a7dae8d4335782","kind":"commit","published_at":"2015-01-26T01:17:57.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v2.1.0","html_url":"https://github.com/mdp/rotp/releases/tag/v2.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v2.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v2.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v2.1.0/manifests"},{"name":"v1.3.1","sha":"941e66c278e5aa0aaacae688052d711de5c3a6dc","kind":"tag","published_at":"2011-09-23T17:46:41.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v1.3.1","html_url":"https://github.com/mdp/rotp/releases/tag/v1.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v1.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v1.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v1.3.1/manifests"}]},"repo_metadata_updated_at":"2026-05-24T04:01:54.971Z","dependent_packages_count":0,"downloads":129555815,"downloads_period":"total","dependent_repos_count":0,"rankings":{"downloads":0.2113913443083827,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":0.13299813478225608,"average":0.0860973697726597},"purl":"pkg:gem/rotp?repository_url=https://gem.coop","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/rubygems/rotp","docker_dependents_count":287,"docker_downloads_count":695222824,"usage_url":"https://repos.ecosyste.ms/usage/rubygems/rotp","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/rubygems/rotp/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-04-11T09:01:12.539Z","issues_count":46,"pull_requests_count":93,"avg_time_to_close_issue":6630961.048780488,"avg_time_to_close_pull_request":9226129.839506174,"issues_closed_count":41,"pull_requests_closed_count":81,"pull_request_authors_count":45,"issue_authors_count":46,"avg_comments_per_issue":2.217391304347826,"avg_comments_per_pull_request":1.118279569892473,"merged_pull_requests_count":60,"bot_issues_count":0,"bot_pull_requests_count":9,"past_year_issues_count":1,"past_year_pull_requests_count":19,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":2131569.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":8,"past_year_pull_request_authors_count":7,"past_year_issue_authors_count":1,"past_year_avg_comments_per_issue":0.0,"past_year_avg_comments_per_pull_request":1.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":5,"past_year_merged_pull_requests_count":5,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/issues","maintainers":[{"login":"mdp","count":25,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mdp"}],"active_maintainers":[{"login":"mdp","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mdp"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/rotp/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/rotp/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/rotp/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/rotp/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/rotp/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages/rotp/codemeta","maintainers":[{"uuid":"1075","login":"mdp","name":null,"email":null,"url":null,"packages_count":9,"html_url":"https://gem.coop/profiles/mdp","role":null,"created_at":"2025-10-08T04:54:59.466Z","updated_at":"2025-10-08T04:54:59.466Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers/mdp/packages"}],"registry":{"name":"gem.coop","url":"https://gem.coop","ecosystem":"rubygems","default":false,"packages_count":192140,"maintainers_count":67790,"namespaces_count":0,"keywords_count":0,"github":"gem-coop","metadata":{"funded_packages_count":6507},"icon_url":"https://github.com/gem-coop.png","created_at":"2025-10-06T17:24:20.932Z","updated_at":"2026-04-03T06:45:05.763Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/gem.coop/namespaces"}},{"id":13713220,"name":"ruby-rotp","ecosystem":"debian","description":null,"homepage":"https://github.com/mdp/rotp","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/mdp/rotp","keywords_array":["misc"],"namespace":"main","versions_count":1,"first_release_published_at":"2026-02-12T23:39:52.698Z","latest_release_published_at":"2026-02-12T23:39:52.698Z","latest_release_number":"6.2.0-2","last_synced_at":"2026-03-13T23:46:13.256Z","created_at":"2026-02-12T23:39:52.470Z","updated_at":"2026-04-11T11:34:01.852Z","registry_url":"https://tracker.debian.org/pkg/ruby-rotp","install_command":"apt-get install ruby-rotp","documentation_url":"https://packages.debian.org/bookworm/ruby-rotp","metadata":{"component":"main","architecture":"all","priority":"optional","binary":"ruby-rotp","standards_version":"4.6.0","maintainer":"Debian Ruby Team \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper-compat (= 13), gem2deb, libjs-jquery, rake, ruby-rspec (\u003e= 3.0.0), ruby-timecop, ruby-simplecov, yard","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-04-11T11:34:01.831Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/debian/ruby-rotp?arch=source\u0026distro=debian-12","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/debian/ruby-rotp","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/debian/ruby-rotp","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/debian/ruby-rotp/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-rotp/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-rotp/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-rotp/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-rotp/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-rotp/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages/ruby-rotp/codemeta","maintainers":[],"registry":{"name":"debian-12","url":"https://packages.debian.org/bookworm","ecosystem":"debian","default":true,"packages_count":34734,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"debian","metadata":{"codename":"bookworm"},"icon_url":"https://github.com/debian.png","created_at":"2026-02-04T11:01:49.459Z","updated_at":"2026-04-27T18:20:38.992Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/debian-12/namespaces"}},{"id":13669457,"name":"ruby-rotp","ecosystem":"debian","description":null,"homepage":"https://github.com/mdp/rotp","licenses":null,"normalized_licenses":[],"repository_url":"https://github.com/mdp/rotp","keywords_array":["misc"],"namespace":"main","versions_count":1,"first_release_published_at":"2026-02-12T12:41:47.592Z","latest_release_published_at":"2026-02-12T12:41:47.592Z","latest_release_number":"6.2.0-2","last_synced_at":"2026-03-14T18:08:16.297Z","created_at":"2026-02-12T12:41:47.396Z","updated_at":"2026-04-11T11:34:01.870Z","registry_url":"https://tracker.debian.org/pkg/ruby-rotp","install_command":"apt-get install ruby-rotp","documentation_url":"https://packages.debian.org/trixie/ruby-rotp","metadata":{"component":"main","architecture":"all","priority":"optional","binary":"ruby-rotp","standards_version":"4.6.0","maintainer":"Debian Ruby Team \u003cpkg-ruby-extras-maintainers@lists.alioth.debian.org\u003e","build_depends":"debhelper-compat (= 13), gem2deb, libjs-jquery, rake, ruby-rspec (\u003e= 3.0.0), ruby-timecop, ruby-simplecov, yard","build_depends_indep":null,"build_depends_arch":null},"repo_metadata":{},"repo_metadata_updated_at":"2026-04-11T11:34:01.850Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:deb/debian/ruby-rotp?arch=source\u0026distro=debian-13\u0026repository_url=https://packages.debian.org/trixie","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/debian/ruby-rotp","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/debian/ruby-rotp","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/debian/ruby-rotp/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-rotp/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-rotp/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-rotp/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-rotp/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-rotp/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages/ruby-rotp/codemeta","maintainers":[],"registry":{"name":"debian-13","url":"https://packages.debian.org/trixie","ecosystem":"debian","default":false,"packages_count":38024,"maintainers_count":0,"namespaces_count":4,"keywords_count":0,"github":"debian","metadata":{"codename":"trixie"},"icon_url":"https://github.com/debian.png","created_at":"2026-02-04T11:01:50.448Z","updated_at":"2026-04-27T18:20:39.853Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/debian-13/namespaces"}},{"id":290048,"name":"rotp","ecosystem":"rubygems","description":"Works for both HOTP and TOTP, and includes QR Code provisioning","homepage":"https://github.com/mdp/rotp","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/mdp/rotp","keywords_array":[],"namespace":null,"versions_count":38,"first_release_published_at":"2011-02-12T23:44:23.538Z","latest_release_published_at":"2023-08-30T19:23:10.162Z","latest_release_number":"6.3.0","last_synced_at":"2026-05-24T01:01:08.899Z","created_at":"2022-04-06T09:35:55.293Z","updated_at":"2026-05-24T01:01:33.971Z","registry_url":"https://rubygems.org/gems/rotp","install_command":"gem install rotp -s https://rubygems.org","documentation_url":"http://www.rubydoc.info/gems/rotp/","metadata":{"funding":null},"repo_metadata":{"id":37934487,"uuid":"1362437","full_name":"mdp/rotp","owner":"mdp","description":"Ruby One Time Password library","archived":false,"fork":false,"pushed_at":"2025-11-24T21:17:25.000Z","size":297,"stargazers_count":1660,"open_issues_count":10,"forks_count":475,"subscribers_count":22,"default_branch":"main","last_synced_at":"2026-05-13T00:05:57.001Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://rubydoc.info/github/mdp/rotp/master/frames","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mdp.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2011-02-13T18:20:59.000Z","updated_at":"2026-05-10T10:54:28.000Z","dependencies_parsed_at":"2024-06-18T10:57:30.381Z","dependency_job_id":"edbb1786-f1ba-42bb-8a28-672b0c13ceb5","html_url":"https://github.com/mdp/rotp","commit_stats":{"total_commits":227,"total_committers":46,"mean_commits":4.934782608695652,"dds":"0.42731277533039647","last_synced_commit":"1fbd30d94e5c986b0e252e3257b2f345735439ce"},"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/mdp/rotp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mdp","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/sbom","scorecard":{"id":633378,"data":{"date":"2025-08-11","repo":{"name":"github.com/mdp/rotp","commit":"bad1a3564fdc030422c2fb009e9341413814e9cb"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.8,"checks":[{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Maintained","score":7,"reason":"9 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 7","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":3,"reason":"Found 6/16 approved changesets -- score normalized to 3","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/release.yaml:1","Warn: no topLevel permission defined: .github/workflows/test.yaml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yaml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/mdp/rotp/release.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yaml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/mdp/rotp/release.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yaml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/mdp/rotp/release.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yaml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/mdp/rotp/test.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yaml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/mdp/rotp/test.yaml/main?enable=pin","Warn: containerImage not pinned by hash: Dockerfile-2.3:1: pin your Docker image by updating ruby:2.3 to ruby:2.3@sha256:78cc821d95c48621e577b6b0d44c9d509f0f2a4e089b9fd0ca2ae86f274773a8","Warn: containerImage not pinned by hash: Dockerfile-2.7:1: pin your Docker image by updating ruby:2.7 to ruby:2.7@sha256:2347de892e419c7160fc21dec721d5952736909f8c3fbb7f84cb4a07aaf9ce7d","Warn: containerImage not pinned by hash: Dockerfile-3.0:1: pin your Docker image by updating ruby:3.0 to ruby:3.0@sha256:dcb8a8a6ee981f949da505cb9f4f15cde696e7bcb088955bc1f92f23a4cd7a72","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   3 third-party GitHubAction dependencies pinned","Info:   0 out of   3 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-21T08:28:14.973Z","repository_id":37934487,"created_at":"2025-08-21T08:28:14.973Z","updated_at":"2025-08-21T08:28:14.973Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33074392,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-15T11:35:32.926Z","status":"ssl_error","status_checked_at":"2026-05-15T11:35:31.362Z","response_time":103,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"mdp","name":"Mark Percival","uuid":"2868","kind":"user","description":"","email":"","website":"https://mdp.github.io","location":"Atlanta, GA","twitter":"mdp","company":null,"icon_url":"https://avatars.githubusercontent.com/u/2868?u=90e0995d4bdae3bfdb66b47b3864a423d72398d7\u0026v=4","repositories_count":188,"last_synced_at":"2024-04-14T08:26:15.914Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/mdp","funding_links":[],"total_stars":3878,"followers":323,"following":14,"created_at":"2022-11-02T16:45:21.114Z","updated_at":"2024-04-14T08:26:34.467Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mdp","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mdp/repositories"},"tags":[{"name":"v6.3.1","sha":"bad1a3564fdc030422c2fb009e9341413814e9cb","kind":"commit","published_at":"2025-06-03T23:49:27.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v6.3.1","html_url":"https://github.com/mdp/rotp/releases/tag/v6.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v6.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.3.1/manifests"},{"name":"v6.3.0","sha":"131d2c325ba5f94887b27eefe24a214bdbcd0a5c","kind":"commit","published_at":"2023-08-30T18:52:51.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v6.3.0","html_url":"https://github.com/mdp/rotp/releases/tag/v6.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v6.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.3.0/manifests"},{"name":"v6.2.2","sha":"f0624c0fc866f2f7db199925588965217aac3140","kind":"commit","published_at":"2022-12-13T21:50:08.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v6.2.2","html_url":"https://github.com/mdp/rotp/releases/tag/v6.2.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v6.2.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.2.2/manifests"},{"name":"v6.2.1","sha":"703bee153bb814f0b0046bad2e52343dea7384bb","kind":"commit","published_at":"2022-11-11T14:07:05.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v6.2.1","html_url":"https://github.com/mdp/rotp/releases/tag/v6.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v6.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.2.1/manifests"},{"name":"v6.2.0","sha":"62874be71d74380d252c73409dd81da08b021497","kind":"tag","published_at":"2021-01-14T16:52:44.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v6.2.0","html_url":"https://github.com/mdp/rotp/releases/tag/v6.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v6.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.2.0/manifests"},{"name":"v6.1.0","sha":"6b42d17781a55d4fbf992ea25e6f6e742a049cef","kind":"tag","published_at":"2020-08-03T18:00:53.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v6.1.0","html_url":"https://github.com/mdp/rotp/releases/tag/v6.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v6.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.1.0/manifests"},{"name":"v6.0.0","sha":"5cf31c2ca3c9802a8d4876b0cf6ea199f51057b8","kind":"commit","published_at":"2020-04-23T15:53:41.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v6.0.0","html_url":"https://github.com/mdp/rotp/releases/tag/v6.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v6.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v6.0.0/manifests"},{"name":"v5.1.0","sha":"15d5104e3cb99f97d36c772f8f09cf7e2e77de20","kind":"commit","published_at":"2019-06-27T18:41:18.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v5.1.0","html_url":"https://github.com/mdp/rotp/releases/tag/v5.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v5.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v5.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v5.1.0/manifests"},{"name":"v5.0.0","sha":"c38462855747b62607b8475d9b45c4cfd92ba66b","kind":"commit","published_at":"2019-05-28T13:51:18.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v5.0.0","html_url":"https://github.com/mdp/rotp/releases/tag/v5.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v5.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v5.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v5.0.0/manifests"},{"name":"v4.1.0","sha":"2698c91539cfb868790e8bb7d5d4d8cf78f0bbfc","kind":"commit","published_at":"2019-02-28T16:20:58.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v4.1.0","html_url":"https://github.com/mdp/rotp/releases/tag/v4.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v4.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v4.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v4.1.0/manifests"},{"name":"v4.0.2","sha":"fabd3cb113c709138cdb24c916514dd36dfce14d","kind":"commit","published_at":"2018-11-01T19:01:03.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v4.0.2","html_url":"https://github.com/mdp/rotp/releases/tag/v4.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v4.0.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v4.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v4.0.2/manifests"},{"name":"v4.0.1","sha":"04e8dc8094f874d9b89b45bc5e75b311423b2bdb","kind":"commit","published_at":"2018-11-01T18:56:49.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v4.0.1","html_url":"https://github.com/mdp/rotp/releases/tag/v4.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v4.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v4.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v4.0.1/manifests"},{"name":"v4.0.0","sha":"52834910b8a621dee14af7a1267aad38618b3031","kind":"commit","published_at":"2018-11-01T17:06:34.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v4.0.0","html_url":"https://github.com/mdp/rotp/releases/tag/v4.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v4.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v4.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v4.0.0/manifests"},{"name":"v3.3.1","sha":"c82113eee6c9e7d0a03df8cf65ea50a2653c3916","kind":"commit","published_at":"2018-03-02T17:23:59.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v3.3.1","html_url":"https://github.com/mdp/rotp/releases/tag/v3.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v3.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v3.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v3.3.1/manifests"},{"name":"v3.3.0","sha":"07c0a732d27471d13719eddda998bde2a300b917","kind":"commit","published_at":"2016-09-23T01:10:41.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v3.3.0","html_url":"https://github.com/mdp/rotp/releases/tag/v3.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v3.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v3.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v3.3.0/manifests"},{"name":"v2.1.2","sha":"ff5ebaf9db0e991b2a6d1e308a74562fa7fb3f7f","kind":"commit","published_at":"2016-04-12T19:38:22.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v2.1.2","html_url":"https://github.com/mdp/rotp/releases/tag/v2.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v2.1.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v2.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v2.1.2/manifests"},{"name":"v2.1.1","sha":"a9a5446e0fa656126996f67577f6d0ee5eec0ccd","kind":"commit","published_at":"2015-06-03T00:17:05.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v2.1.1","html_url":"https://github.com/mdp/rotp/releases/tag/v2.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v2.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v2.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v2.1.1/manifests"},{"name":"v2.1.0","sha":"0e65918ce8695870c99fd04c35a7dae8d4335782","kind":"commit","published_at":"2015-01-26T01:17:57.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v2.1.0","html_url":"https://github.com/mdp/rotp/releases/tag/v2.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v2.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v2.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v2.1.0/manifests"},{"name":"v1.3.1","sha":"941e66c278e5aa0aaacae688052d711de5c3a6dc","kind":"tag","published_at":"2011-09-23T17:46:41.000Z","download_url":"https://codeload.github.com/mdp/rotp/tar.gz/v1.3.1","html_url":"https://github.com/mdp/rotp/releases/tag/v1.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/mdp/rotp@v1.3.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v1.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/tags/v1.3.1/manifests"}]},"repo_metadata_updated_at":"2026-05-24T01:01:33.971Z","dependent_packages_count":64,"downloads":129551250,"downloads_period":"total","dependent_repos_count":3073,"rankings":{"downloads":0.2665001505335578,"dependent_repos_count":0.5625494809379913,"dependent_packages_count":0.4660964975858877,"stargazers_count":1.2878982170136373,"forks_count":1.283437963448222,"docker_downloads_count":0.18565805466040747,"average":0.675356727363284},"purl":"pkg:gem/rotp","advisories":[{"uuid":"GSA_kwCzR0hTQS14Mmg4LXFtajQtZzYyZs4AA6Fh","url":"https://github.com/advisories/GHSA-x2h8-qmj4-g62f","title":"ROTP 6.2.2 and 6.2.1 has 0666 permissions for the .rb files.","description":"The Ruby One Time Password library (ROTP) is an open source library for generating and validating one time passwords. Affected versions had overly permissive default permissions. Users should patch to version 6.3.0. Users unable to patch may correct file permissions after installation.","origin":"UNSPECIFIED","severity":"MODERATE","published_at":"2024-03-18T17:21:46.000Z","withdrawn_at":null,"classification":"GENERAL","cvss_score":5.3,"cvss_vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L","references":["https://github.com/mdp/rotp/security/advisories/GHSA-x2h8-qmj4-g62f","https://nvd.nist.gov/vuln/detail/CVE-2024-28862","https://github.com/rubysec/ruby-advisory-db/blob/master/gems/rotp/CVE-2024-28862.yml","https://github.com/advisories/GHSA-x2h8-qmj4-g62f"],"source_kind":"github","identifiers":["GHSA-x2h8-qmj4-g62f","CVE-2024-28862"],"repository_url":"https://github.com/mdp/rotp","blast_radius":0.0,"created_at":"2024-03-21T20:04:42.474Z","updated_at":"2026-05-09T06:05:20.025Z","epss_percentage":0.00047,"epss_percentile":0.14554,"api_url":"https://advisories.ecosyste.ms/api/v1/advisories/GSA_kwCzR0hTQS14Mmg4LXFtajQtZzYyZs4AA6Fh","html_url":"https://advisories.ecosyste.ms/advisories/GSA_kwCzR0hTQS14Mmg4LXFtajQtZzYyZs4AA6Fh","packages":[{"ecosystem":"rubygems","package_name":"rotp","versions":[{"first_patched_version":"6.3.0","vulnerable_version_range":"\u003e= 6.2.1, \u003c 6.3.0"}],"purl":"pkg:gem/rotp"}],"related_packages_url":"https://advisories.ecosyste.ms/api/v1/advisories/GSA_kwCzR0hTQS14Mmg4LXFtajQtZzYyZs4AA6Fh/related_packages","related_advisories":[]}],"docker_usage_url":"https://docker.ecosyste.ms/usage/rubygems/rotp","docker_dependents_count":287,"docker_downloads_count":695222824,"usage_url":"https://repos.ecosyste.ms/usage/rubygems/rotp","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/rubygems/rotp/dependencies","status":null,"funding_links":[],"critical":true,"issue_metadata":{"last_synced_at":"2026-04-11T09:01:12.539Z","issues_count":46,"pull_requests_count":93,"avg_time_to_close_issue":6630961.048780488,"avg_time_to_close_pull_request":9226129.839506174,"issues_closed_count":41,"pull_requests_closed_count":81,"pull_request_authors_count":45,"issue_authors_count":46,"avg_comments_per_issue":2.217391304347826,"avg_comments_per_pull_request":1.118279569892473,"merged_pull_requests_count":60,"bot_issues_count":0,"bot_pull_requests_count":9,"past_year_issues_count":1,"past_year_pull_requests_count":19,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":2131569.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":8,"past_year_pull_request_authors_count":7,"past_year_issue_authors_count":1,"past_year_avg_comments_per_issue":0.0,"past_year_avg_comments_per_pull_request":1.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":5,"past_year_merged_pull_requests_count":5,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/issues","maintainers":[{"login":"mdp","count":25,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mdp"}],"active_maintainers":[{"login":"mdp","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mdp"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/rotp/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/rotp/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/rotp/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/rotp/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/rotp/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages/rotp/codemeta","maintainers":[{"uuid":"1075","login":"mdp","name":null,"email":null,"url":null,"packages_count":9,"html_url":"https://rubygems.org/profiles/mdp","role":null,"created_at":"2022-11-09T09:48:46.495Z","updated_at":"2022-11-09T09:48:46.495Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers/mdp/packages"}],"registry":{"name":"rubygems.org","url":"https://rubygems.org","ecosystem":"rubygems","default":true,"packages_count":207303,"maintainers_count":68781,"namespaces_count":0,"keywords_count":18627,"github":"rubygems","metadata":{"funded_packages_count":7375},"icon_url":"https://github.com/rubygems.png","created_at":"2022-04-04T15:19:23.446Z","updated_at":"2026-05-13T05:11:24.133Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/rubygems.org/namespaces"}}],"commits":{"id":3367,"full_name":"mdp/rotp","default_branch":"main","total_commits":234,"total_committers":46,"total_bot_commits":3,"total_bot_committers":2,"mean_commits":5.086956521739131,"dds":0.41880341880341876,"past_year_total_commits":5,"past_year_total_committers":1,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":5.0,"past_year_dds":0.0,"last_synced_at":"2026-05-24T01:07:51.537Z","last_synced_commit":"bad1a3564fdc030422c2fb009e9341413814e9cb","created_at":"2023-03-07T09:17:24.885Z","updated_at":"2026-05-24T01:04:55.683Z","committers":[{"name":"Mark Percival","email":"m@mdp.im","login":"mdp","count":136},{"name":"Mark Percival","email":"mark@mpercival.com","login":null,"count":15},{"name":"halo","email":"github@posteo.org","login":"halo","count":14},{"name":"Alex Cruice","email":"alex.cruice@gmail.com","login":"atcruice","count":7},{"name":"David Vrensk","email":"david@vrensk.com","login":"dvrensk","count":6},{"name":"Mark Percival","email":"mark@markpercival.us","login":null,"count":4},{"name":"Asmod4n","email":"Asmod4n","login":"Asmod4n","count":3},{"name":"Sam Clegg","email":"sclegg@omb.eop.gov","login":"sbc100","count":3},{"name":"Gus Bonfant","email":"gbonfant@me.com","login":null,"count":2},{"name":"Keeyan Nejad","email":"keeyan@knejad.co.uk","login":null,"count":2},{"name":"Ilya Sabanin","email":"ilya.sabanin@gmail.com","login":"isabanin","count":2},{"name":"Ivan Povalyukhin","email":"ivanpoval@gmail.com","login":"ipoval","count":2},{"name":"Jeremy Evans","email":"code@jeremyevans.net","login":"jeremyevans","count":2},{"name":"Olle Jonsson","email":"olle.jonsson@gmail.com","login":"olleolleolle","count":2},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":2},{"name":"Shai Rosenfeld \u0026 Michael Brodhead","email":"srosenfeld@engineyard.com","login":"shaiguitar","count":2},{"name":"github-actions[bot]","email":"41898282+github-actions[bot]","login":"github-actions[bot]","count":1},{"name":"amanda","email":"mengfanling825@163.com","login":"amandameng","count":1},{"name":"Tristan Morgan","email":"tristanmorgan","login":"tristanmorgan","count":1},{"name":"Surendra Singhi","email":"ssinghi@kreeti.com","login":"ssinghi","count":1},{"name":"Bruno Oliveira","email":"bruno@abstractj.org","login":null,"count":1},{"name":"Fup Duck","email":"github@duckdalbe.org","login":null,"count":1},{"name":"Guillaume Rose","email":"rose@netxp.fr","login":null,"count":1},{"name":"Joe Faber","email":"jfaber@secureauth.com","login":null,"count":1},{"name":"Micah Gates","email":"github@mgates.com","login":null,"count":1},{"name":"Michael Brodhead \u0026 Shai Rosenfeld","email":"mbrodhead@engineyard.com","login":null,"count":1},{"name":"Nathan Reynolds","email":"github@nreynolds.me.uk","login":null,"count":1},{"name":"Sergey Petrenko","email":"sergey.petrenko@onelogin.com","login":null,"count":1},{"name":"Ylan Segal","email":"ylan.segal@mellmo.com","login":null,"count":1},{"name":"mdp","email":"mdp@yahoo-inc.com","login":null,"count":1},{"name":"Sarah Ridge","email":"sarah@cobalt.io","login":"smridge","count":1},{"name":"Peter Goldstein","email":"peter.m.goldstein@gmail.com","login":"petergoldstein","count":1},{"name":"Masato Ohba","email":"over.rye@gmail.com","login":"ohbarye","count":1},{"name":"Masataka Pocke Kuwabara","email":"kuwabara@pocke.me","login":"pocke","count":1},{"name":"Mark Dodwell","email":"mkdynamic","login":"mkdynamic","count":1},{"name":"Marcel Asio","email":"marcel@asio.se","login":"asio","count":1},{"name":"KANG ONE SUH","email":"kang@neat.hk","login":"ksuh90","count":1},{"name":"Josef Šimánek","email":"josef.simanek@gmail.com","login":"simi","count":1},{"name":"Johnny Shields","email":"johnny.shields@gmail.com","login":"johnnyshields","count":1},{"name":"Igor Victor","email":"gogainda@yandex.ru","login":"gogainda","count":1},{"name":"Akira Matsuda","email":"ronnie@dio.jp","login":"amatsuda","count":1},{"name":"André Luis Leal Cardoso Junior","email":"andrehjr@gmail.com","login":"andrehjr","count":1},{"name":"Bryan Talbot","email":"bryan.talbot@ijji.com","login":"btalbot","count":1},{"name":"Douwe Maan","email":"me@douwe.me","login":"DouweM","count":1},{"name":"Earlopain","email":"14981592+Earlopain","login":"Earlopain","count":1},{"name":"Finnian Anderson","email":"get@finnian.io","login":"developius","count":1}],"past_year_committers":[{"name":"Mark Percival","email":"m@mdp.im","login":"mdp","count":5}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-05-24T00:00:21.472Z","repositories_count":6240132,"commits_count":884573062,"contributors_count":34909567,"owners_count":1156780,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"mdp/rotp","html_url":"https://github.com/mdp/rotp","last_synced_at":"2026-04-11T09:01:12.539Z","status":"error","issues_count":46,"pull_requests_count":93,"avg_time_to_close_issue":6630961.048780488,"avg_time_to_close_pull_request":9226129.839506174,"issues_closed_count":41,"pull_requests_closed_count":81,"pull_request_authors_count":45,"issue_authors_count":46,"avg_comments_per_issue":2.217391304347826,"avg_comments_per_pull_request":1.118279569892473,"merged_pull_requests_count":60,"bot_issues_count":0,"bot_pull_requests_count":9,"past_year_issues_count":1,"past_year_pull_requests_count":19,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":2131569.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":8,"past_year_pull_request_authors_count":7,"past_year_issue_authors_count":1,"past_year_avg_comments_per_issue":0.0,"past_year_avg_comments_per_pull_request":1.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":5,"past_year_merged_pull_requests_count":5,"created_at":"2023-05-12T16:25:41.804Z","updated_at":"2026-04-11T09:01:12.540Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdp%2Frotp/issues","issue_labels_count":{},"pull_request_labels_count":{"dependencies":7,"github_actions":3,"autorelease: pending":2},"issue_author_associations_count":{"NONE":40,"CONTRIBUTOR":5,"OWNER":1},"pull_request_author_associations_count":{"CONTRIBUTOR":44,"NONE":25,"OWNER":24},"issue_authors":{"olleolleolle":1,"kapitolinakuznetsova":1,"evolve2k":1,"samueltangz":1,"fydelio":1,"thomasdziedzic":1,"prvinuch":1,"artmotion":1,"kesha-antonov":1,"btalbot":1,"HParker":1,"ZempTime":1,"braindev":1,"jDessicVaZ92":1,"amitiitm":1,"fltiago":1,"shivanibhanwal":1,"kossy0701":1,"monfresh":1,"zainonrails":1,"mkdynamic":1,"tristanmorgan":1,"hosamaly":1,"askprod":1,"ghost":1,"murphyryan1":1,"jerimiahmilton":1,"Earlopain":1,"mdp":1,"f3ndot":1,"cthungIT":1,"caryfitzhugh":1,"clarkewd":1,"moloch--":1,"codeundercoverdev":1,"Linuus":1,"sahilchopra":1,"omarluq":1,"wdperson":1,"nazarhussain":1,"Nandez89":1,"danlaffan":1,"nvh0412":1,"featheredtoast":1,"awais4123":1,"generationloss":1},"pull_request_authors":{"mdp":24,"dependabot[bot]":7,"olleolleolle":4,"jeremyevans":3,"ssinghi":3,"sbc100":3,"halo":3,"dvrensk":2,"KNejad":2,"tsogbadrakh-qp":2,"wdalzalat":2,"luong-komorebi":2,"Earlopain":2,"github-actions[bot]":2,"hieuk09":2,"developius":1,"amatsuda":1,"ohbarye":1,"asio":1,"etehtsea":1,"brunoocasali":1,"duritong":1,"amandameng":1,"duckdalbe":1,"pocke":1,"I-Iugo":1,"DouweM":1,"btalbot":1,"rodrimaia":1,"abstractj":1,"atcruice":1,"ipoval":1,"petergoldstein":1,"andrehjr":1,"jlfaber":1,"psergus":1,"pstengel":1,"tristanmorgan":1,"levriero":1,"smridge":1,"f3ndot":1,"ksuh90":1,"gogainda":1,"saleh-alhaddad":1,"simi":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-05-22T00:00:21.018Z","repositories_count":14658980,"issues_count":34135763,"pull_requests_count":111716405,"authors_count":11269081,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{"dependencies":3,"github_actions":3},"past_year_issue_author_associations_count":{"NONE":1},"past_year_pull_request_author_associations_count":{"OWNER":5,"CONTRIBUTOR":3},"past_year_issue_authors":{"nvh0412":1},"past_year_pull_request_authors":{"mdp":5,"dependabot[bot]":3},"maintainers":[{"login":"mdp","count":25,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mdp"}],"active_maintainers":[{"login":"mdp","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mdp"}]},"events":{"total":{"PullRequestEvent":15,"ForkEvent":5,"IssuesEvent":2,"WatchEvent":58,"IssueCommentEvent":15,"PushEvent":14,"PullRequestReviewEvent":2,"PullRequestReviewCommentEvent":1,"CreateEvent":7},"last_year":{"PullRequestEvent":5,"ForkEvent":2,"IssuesEvent":1,"WatchEvent":27,"IssueCommentEvent":7,"PushEvent":8,"CreateEvent":4}},"keywords":[],"dependencies":[{"ecosystem":"rubygems","filepath":"rotp.gemspec","sha":null,"kind":"manifest","created_at":"2022-08-26T01:02:08.852Z","updated_at":"2022-08-26T01:02:08.852Z","repository_link":"https://github.com/mdp/rotp/blob/main/rotp.gemspec","dependencies":[{"id":2758981051,"package_name":"rake","ecosystem":"rubygems","requirements":"~\u003e 13.0","direct":true,"kind":"development","optional":false},{"id":2758981052,"package_name":"rspec","ecosystem":"rubygems","requirements":"~\u003e 3.5","direct":true,"kind":"development","optional":false},{"id":2758981053,"package_name":"simplecov","ecosystem":"rubygems","requirements":"~\u003e 0.12","direct":true,"kind":"development","optional":false},{"id":2758981054,"package_name":"timecop","ecosystem":"rubygems","requirements":"~\u003e 0.8","direct":true,"kind":"development","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/test.yaml","sha":null,"kind":"manifest","created_at":"2023-01-28T15:17:31.723Z","updated_at":"2023-01-28T15:17:31.723Z","repository_link":"https://github.com/mdp/rotp/blob/main/.github/workflows/test.yaml","dependencies":[{"id":7209918810,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":7209918811,"package_name":"ruby/setup-ruby","ecosystem":"actions","requirements":"359bebbc29cbe6c87da6bc9ea3bc930432750108","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"docker","filepath":".devcontainer/Dockerfile","sha":null,"kind":"manifest","created_at":"2023-01-28T15:17:31.728Z","updated_at":"2023-01-28T15:17:31.728Z","repository_link":"https://github.com/mdp/rotp/blob/main/.devcontainer/Dockerfile","dependencies":[{"id":7209918812,"package_name":"mcr.microsoft.com/vscode/devcontainers/ruby","ecosystem":"docker","requirements":"0-${VARIANT}","direct":true,"kind":"build","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/release.yaml","sha":null,"kind":"manifest","created_at":"2024-06-18T10:57:30.325Z","updated_at":"2024-06-18T10:57:30.325Z","repository_link":"https://github.com/mdp/rotp/blob/main/.github/workflows/release.yaml","dependencies":[{"id":18674579906,"package_name":"google-github-actions/release-please-action","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":18674579907,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":18674579908,"package_name":"ruby/setup-ruby","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"docker","filepath":"docker-compose.yml","sha":null,"kind":"manifest","created_at":"2024-06-18T10:57:30.340Z","updated_at":"2024-06-18T10:57:30.340Z","repository_link":"https://github.com/mdp/rotp/blob/main/docker-compose.yml","dependencies":[]},{"ecosystem":"rubygems","filepath":"Gemfile","sha":null,"kind":"manifest","created_at":"2024-06-18T10:57:30.345Z","updated_at":"2024-06-18T10:57:30.345Z","repository_link":"https://github.com/mdp/rotp/blob/main/Gemfile","dependencies":[]}],"score":32.473006475473596,"created_at":"2024-12-15T21:38:07.126Z","updated_at":"2026-05-24T05:00:41.786Z","avatar_url":"https://github.com/mdp.png","language":"Ruby","monthly_downloads":0,"readme":"## Webauthn and the future of 2FA\n\nAlthough this library will continue to be maintained, if you're implementing a 2FA solution today, you should take a look at [Webauthn](https://webauthn.guide/). It doesn't involve shared secrets and it's supported by most modern browsers and operating systems.\n\n### Ruby resources for Webauthn\n\n- [Multi-Factor Authentication for Rails With WebAuthn and Devise](https://www.honeybadger.io/blog/multi-factor-2fa-authentication-rails-webauthn-devise/)\n- [Webauthn Ruby Gem](https://github.com/cedarcode/webauthn-ruby)\n- [Rails demo app with Webauthn](https://github.com/cedarcode/webauthn-rails-demo-app)\n\n----\n\n# The Ruby One Time Password Library\n\n[![Build Status](https://github.com/mdp/rotp/actions/workflows/test.yaml/badge.svg)](https://github.com/mdp/rotp/actions/workflows/test.yaml)\n[![Gem Version](https://badge.fury.io/rb/rotp.svg)](https://rubygems.org/gems/rotp)\n[![Documentation](http://img.shields.io/badge/docs-rdoc.info-blue.svg)](https://www.rubydoc.info/github/mdp/rotp/master)\n[![License](https://img.shields.io/badge/license-MIT-blue.svg?style=flat)](https://github.com/mdp/rotp/blob/master/LICENSE)\n\n\nA ruby library for generating and validating one time passwords (HOTP \u0026 TOTP) according to [RFC 4226](https://datatracker.ietf.org/doc/html/rfc4226) and [RFC 6238](https://datatracker.ietf.org/doc/html/rfc6238).\n\nROTP is compatible with [Google Authenticator](https://github.com/google/google-authenticator) available for [Android](https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2) and [iPhone](https://itunes.apple.com/en/app/google-authenticator/id388497605) and any other TOTP based implementations.\n\nMany websites use this for [multi-factor authentication](https://www.youtube.com/watch?v=17rykTIX_HY), such as GMail, Facebook, Amazon EC2, WordPress, and Salesforce. You can find a more complete [list here](https://en.wikipedia.org/wiki/Google_Authenticator#Usage).\n\n## Dependencies\n\n* OpenSSL\n* Ruby 2.3 or higher\n\n## Breaking changes\n\n### Breaking changes in \u003e= 6.0\n\n- Dropping support for Ruby \u003c2.3\n\n### Breaking changes in \u003e= 5.0\n\n- `ROTP::Base32.random_base32` is now `ROTP::Base32.random` and the argument\n  has changed from secret string length to byte length to allow for more\n  precision. There is an alias to allow for `random_base32` for the time being.\n- Cleaned up the Base32 implementation to match Google Authenticator's version.\n\n### Breaking changes in \u003e= 4.0\n\n- Simplified API\n  - `verify` now takes options for `drift` and `after`,`padding` is no longer an option\n  - `verify` returns a timestamp if true, nil if false\n- Dropping support for Ruby \u003c 2.0\n- Docs for 3.x can be found [here](https://github.com/mdp/rotp/tree/v3.x)\n\n## Installation\n\n```bash\ngem install rotp\n```\n\n## Library Usage\n\n### Time based OTP's\n\n```ruby\ntotp = ROTP::TOTP.new(\"base32secret3232\", issuer: \"My Service\")\ntotp.now # =\u003e \"492039\"\n\n# OTP verified for current time - returns timestamp of the current interval\n# period.\ntotp.verify(\"492039\") # =\u003e 1474590700\n\nsleep 30\n\n# OTP fails to verify - returns nil\ntotp.verify(\"492039\") # =\u003e nil\n```\n\n### Counter based OTP's\n\n```ruby\nhotp = ROTP::HOTP.new(\"base32secretkey3232\")\nhotp.at(0) # =\u003e \"786922\"\nhotp.at(1) # =\u003e \"595254\"\nhotp.at(1401) # =\u003e \"259769\"\n\n# OTP verified with a counter\nhotp.verify(\"259769\", 1401) # =\u003e 1401\nhotp.verify(\"259769\", 1402) # =\u003e nil\n```\n\n### Preventing reuse of Time based OTP's\n\nBy keeping track of the last time a user's OTP was verified, we can prevent token reuse during\nthe interval window (default 30 seconds)\n\nThe following is an example of this in action:\n\n```ruby\nuser = User.find(someUserID)\ntotp = ROTP::TOTP.new(user.otp_secret)\ntotp.now # =\u003e \"492039\"\n\n# Let's take a look at the last time the user authenticated with an OTP\nuser.last_otp_at # =\u003e 1432703530\n\n# Verify the OTP\nlast_otp_at = totp.verify(\"492039\", after: user.last_otp_at) #=\u003e 1472145760\n# ROTP returns the timestamp(int) of the current period\n\n# Store this on the user's account\nuser.update(last_otp_at: last_otp_at)\n\n# Someone attempts to reuse the OTP inside the 30s window\nlast_otp_at = totp.verify(\"492039\", after: user.last_otp_at) #=\u003e nil\n# It fails to verify because we are still in the same 30s interval window\n```\n\n### Verifying a Time based OTP with drift\n\nSome users may enter a code just after it has expired. By adding 'drift' you can allow\nfor a recently expired token to remain valid.\n\n```ruby\ntotp = ROTP::TOTP.new(\"base32secret3232\")\nnow = Time.at(1474590600) #2016-09-23 00:30:00 UTC\ntotp.at(now) # =\u003e \"250939\"\n\n# OTP verified for current time along with 15 seconds earlier\n# ie. User enters a code just after it expired\ntotp.verify(\"250939\", drift_behind: 15, at: now + 35) # =\u003e 1474590600\n# User waits too long. Fails to validate previous OTP\ntotp.verify(\"250939\", drift_behind: 15, at: now + 45) # =\u003e nil\n```\n\n### Generating a Base32 Secret key\n\n```ruby\nROTP::Base32.random  # returns a 160 bit (32 character) base32 secret. Compatible with Google Authenticator\n```\n\nNote: The Base32 format conforms to [RFC 4648 Base32](http://en.wikipedia.org/wiki/Base32#RFC_4648_Base32_alphabet)\n\n### Generating QR Codes for provisioning mobile apps\n\nProvisioning URI's generated by ROTP are compatible with most One Time Password applications, including\nGoogle Authenticator.\n\n```ruby\ntotp = ROTP::TOTP.new(\"base32secret3232\", issuer: \"My Service\")\ntotp.provisioning_uri(\"alice@google.com\") # =\u003e 'otpauth://totp/My%20Service:alice%40google.com?secret=base32secret3232\u0026issuer=My%20Service'\n\nhotp = ROTP::HOTP.new(\"base32secret3232\", issuer: \"My Service\")\nhotp.provisioning_uri(\"alice@google.com\", 0) # =\u003e 'otpauth://hotp/My%20Service:alice%40google.com?secret=base32secret3232\u0026issuer=My%20Service\u0026counter=0'\n```\n\nThis can then be rendered as a QR Code which the user can scan using their mobile phone and the appropriate application.\n\n#### Working example\n\nScan the following barcode with your phone, using Google Authenticator\n\n![QR Code for OTP](https://cloud.githubusercontent.com/assets/2868/18771262/54f109dc-80f2-11e6-863f-d2be62ee587a.png)\n\nNow run the following and compare the output\n\n```ruby\nrequire 'rubygems'\nrequire 'rotp'\ntotp = ROTP::TOTP.new(\"JBSWY3DPEHPK3PXP\")\np \"Current OTP: #{totp.now}\"\n```\n\n### Testing\n\n```bash\nbundle install\nbundle exec rspec\n```\n\n### Testing with Docker\n\nIn order to make it easier to test against different ruby version, ROTP comes\nwith a set of Dockerfiles for each version that we test against in Travis\n\n```bash\ndocker build -f Dockerfile-2.6 -t rotp_2.6 .\ndocker run --rm -v $(pwd):/usr/src/app rotp_2.6\n```\n\nAlternately, you may use docker-compose to run all the tests:\n\n```\ndocker-compose up\n```\n\n## Executable Usage\n\nThe rotp rubygem includes CLI version to help with testing and debugging\n\n```bash\n# Try this to get an overview of the commands\nrotp --help\n\n# Examples\nrotp --secret p4ssword                       # Generates a time-based one-time password\nrotp --hmac --secret p4ssword --counter 42   # Generates a counter-based one-time password\n```\n\n## Contributors\n\nHave a look at the [contributors graph](https://github.com/mdp/rotp/graphs/contributors) on Github.\n\n## License\n\nMIT Copyright (C) 2019 by Mark Percival, see [LICENSE](https://github.com/mdp/rotp/blob/master/LICENSE) for details.\n\n## Other implementations\n\nA list can be found at [Wikipedia](https://en.wikipedia.org/wiki/Google_Authenticator#Implementations).\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["rubygem","activerecord","mvc","activejob","rack","gem","rspec","crash-reporting","sinatra","feature-flag"],"project_url":"https://ruby.ecosyste.ms/api/v1/projects/150","html_url":"https://ruby.ecosyste.ms/projects/150"}