)]}'
{"doc/source/admin.rst":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9049213cfded4a38390c154e82461729ea29148d","unresolved":false,"context_lines":[{"line_number":241,"context_line":"disabled::"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    [genericswitch:device-hostname]"},{"line_number":244,"context_line":"    ngs_ssh_allowed_algorithms \u003d kex:curve25519-sha256@libssh.org, ciphers:aes256-gcm@openssh.com, ciphers:aes256-ctr, macs:hmac-sha2-256-etm@openssh.com, macs:hmac-sha2-512-etm@openssh.com"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"Both options can be used together. The allowlist is applied first"},{"line_number":247,"context_line":"(computing the set of algorithms to disable), then"}],"source_content_type":"text/x-rst","patch_set":1,"id":"be66ade0_dc5ca1ce","line":244,"updated":"2026-07-15 15:34:40.000000000","message":"maybe call it \"enabled\" since the old option was called \"disabled\"?","commit_id":"ee19e52a2403d71e0b4f233d848235c104f3a497"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9049213cfded4a38390c154e82461729ea29148d","unresolved":false,"context_lines":[{"line_number":251,"context_line":""},{"line_number":252,"context_line":"    [genericswitch:device-hostname]"},{"line_number":253,"context_line":"    ngs_ssh_allowed_algorithms \u003d ciphers:aes256-ctr, ciphers:aes256-gcm@openssh.com, ciphers:aes128-ctr"},{"line_number":254,"context_line":"    ngs_ssh_disabled_algorithms \u003d ciphers:aes128-ctr"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"Discovering available algorithm names"},{"line_number":257,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":1,"id":"2552061e_5786de5a","line":254,"updated":"2026-07-15 15:34:40.000000000","message":"This is an odd example, why would anyone do it vs just omitting this one from the enabled list? Are there any realistic examples we could provide?","commit_id":"ee19e52a2403d71e0b4f233d848235c104f3a497"}],"networking_generic_switch/devices/netmiko_devices/__init__.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9049213cfded4a38390c154e82461729ea29148d","unresolved":false,"context_lines":[{"line_number":268,"context_line":"        allowed \u003d self._get_ssh_allowed_algorithms()"},{"line_number":269,"context_line":"        preferred \u003d {"},{"line_number":270,"context_line":"            \u0027ciphers\u0027: ("},{"line_number":271,"context_line":"                paramiko.Transport._preferred_ciphers),"},{"line_number":272,"context_line":"            \u0027macs\u0027: ("},{"line_number":273,"context_line":"                paramiko.Transport._preferred_macs),"},{"line_number":274,"context_line":"            \u0027keys\u0027: ("}],"source_content_type":"text/x-python","patch_set":1,"id":"52bdcee3_c8f57d65","line":271,"updated":"2026-07-15 15:34:40.000000000","message":"Can we talk them into making these public? We cannot rely on private properties. Worst case scenario, guard the entire block with try..except and do something reasonable in case of a failure.","commit_id":"ee19e52a2403d71e0b4f233d848235c104f3a497"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"265319875163f8c34fb4824732bdbd1e2cc06f51","unresolved":false,"context_lines":[{"line_number":268,"context_line":"        allowed \u003d self._get_ssh_allowed_algorithms()"},{"line_number":269,"context_line":"        preferred \u003d {"},{"line_number":270,"context_line":"            \u0027ciphers\u0027: ("},{"line_number":271,"context_line":"                paramiko.Transport._preferred_ciphers),"},{"line_number":272,"context_line":"            \u0027macs\u0027: ("},{"line_number":273,"context_line":"                paramiko.Transport._preferred_macs),"},{"line_number":274,"context_line":"            \u0027keys\u0027: ("}],"source_content_type":"text/x-python","patch_set":1,"id":"8493e564_f52951c1","line":271,"in_reply_to":"52bdcee3_c8f57d65","updated":"2026-07-15 23:44:42.000000000","message":"Eh, we\u0027re in a odd state with netmiko in the middle. The easiest thing to do is likely to leverage the property values for ciphers and macs.","commit_id":"ee19e52a2403d71e0b4f233d848235c104f3a497"}],"releasenotes/notes/ssh-allowed-algorithms-0374d6905c04475b.yaml":[{"author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"change_message_id":"80d1461135014099f31db59398ac4ab4fe7bebe3","unresolved":true,"context_lines":[{"line_number":13,"context_line":"    cryptography readiness, where a denylist approach"},{"line_number":14,"context_line":"    (``ngs_ssh_disabled_algorithms``) is insufficient."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"    Both options can be used together: the allowlist is applied first,"},{"line_number":17,"context_line":"    then explicit disables are merged on top."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"    Additionally, the plugin now logs available SSH algorithms at"},{"line_number":20,"context_line":"    DEBUG level on startup, and logs the effective algorithm set at"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"1109e979_f2d76763","line":17,"range":{"start_line":16,"start_character":0,"end_line":17,"end_character":45},"updated":"2026-06-02 21:49:10.000000000","message":"I wonder, would it be better to deprecate the ngs_ssh_disabled_algorithms now? And drop the used togheter logic? e.g ngs_ssh_disabled_algorithms works during deprecation period, but if ngs_ssh_allowed_algorithms is used that wins (is the one used)?","commit_id":"ee19e52a2403d71e0b4f233d848235c104f3a497"}]}
