shadowsocks / shadowsocks/shadowsocks-org

Define encoding of "password" to UTF-8

Open
#169 5 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
HTML
Stars
1k
Forks
694
PR merge metrics
No merged PRs in 30d

Description

Problem

The "password" could be passed in various ways, basic configration file, SIP008 online configuration, command line options, and other customized ways. Currently, the encoding of "password" is defined by implementations, for example

  • shadowsocks-libev: UTF-8 in basic configuration file, but undefined in command line options
  • shadowsocks-rust: UTF-8
  • go-shadowsocks2: Undefined, os.Args in Go is a string[], which is an array of byte arrays of input arguments

So it is possible that if user uses libev with command line options and specifies "password" in UTF-16BE, and it shouldn't work with the rust version, because the "password"s are not the same in byte level.

Proposal

  1. The "password" is a "string" in UTF-8 encoding
  2. Implementations are allowed to accept "password" in other encoding, but they have to convert it to UTF-8 before set to ciphers

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the proposal in this issue and review the described password-handling behavior in shadowsocks-libev, shadowsocks-rust, and go-shadowsocks2. Check the existing five-comment discussion before changing the specification; done means the accepted encoding rule and conversion requirement are clearly documented for implementations.

Written by the indexing model from the issue text.

Assessment

Tech stack
go, rust
Domain
networking
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.