Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
gzupanda
code-server
提交
7ff41175
C
code-server
项目概览
gzupanda
/
code-server
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
code-server
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
7ff41175
编写于
6月 02, 2021
作者:
J
Joe Previte
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: add getPasswordMethod & test for it
上级
ffa5c16e
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
57 addition
and
1 deletion
+57
-1
src/node/util.ts
src/node/util.ts
+27
-0
test/unit/node/util.test.ts
test/unit/node/util.test.ts
+30
-1
未找到文件。
src/node/util.ts
浏览文件 @
7ff41175
...
...
@@ -162,6 +162,33 @@ export const isHashLegacyMatch = (password: string, hashPassword: string) => {
return
safeCompare
(
hashedWithLegacy
,
hashPassword
)
}
const
passwordMethods
=
[
"
SHA256
"
,
"
ARGON2
"
,
"
PLAIN_TEXT
"
]
as
const
export
type
PasswordMethod
=
typeof
passwordMethods
[
number
]
/**
* Used to determine the password method.
*
* There are three options for the return value:
* 1. "SHA256" -> the legacy hashing algorithm
* 2. "ARGON2" -> the newest hashing algorithm
* 3. "PLAIN_TEXT" -> regular ol' password with no hashing
*
* @returns {PasswordMethod} "SHA256" | "ARGON2" | "PLAIN_TEXT"
*/
export
function
getPasswordMethod
(
hashedPassword
:
string
|
undefined
):
PasswordMethod
{
if
(
!
hashedPassword
)
{
return
"
PLAIN_TEXT
"
}
// This is the new hashing algorithm
if
(
hashedPassword
.
includes
(
"
$argon
"
))
{
return
"
ARGON2
"
}
// This is the legacy hashing algorithm
return
"
SHA256
"
}
const
mimeTypes
:
{
[
key
:
string
]:
string
}
=
{
"
.aac
"
:
"
audio/x-aac
"
,
"
.avi
"
:
"
video/x-msvideo
"
,
...
...
test/unit/node/util.test.ts
浏览文件 @
7ff41175
import
{
hash
,
isHashMatch
,
hashLegacy
,
isHashLegacyMatch
}
from
"
../../../src/node/util
"
import
{
hash
,
isHashMatch
,
PasswordMethod
,
getPasswordMethod
,
hashLegacy
,
isHashLegacyMatch
,
}
from
"
../../../src/node/util
"
describe
(
"
getEnvPaths
"
,
()
=>
{
describe
(
"
on darwin
"
,
()
=>
{
...
...
@@ -203,3 +210,25 @@ describe("isHashLegacyMatch", () => {
expect
(
isHashLegacyMatch
(
password
,
_hash
)).
toBe
(
true
)
})
})
describe
(
"
getPasswordMethod
"
,
()
=>
{
it
(
"
should return PLAIN_TEXT for no hashed password
"
,
()
=>
{
const
hashedPassword
=
undefined
const
passwordMethod
=
getPasswordMethod
(
hashedPassword
)
const
expected
:
PasswordMethod
=
"
PLAIN_TEXT
"
expect
(
passwordMethod
).
toEqual
(
expected
)
})
it
(
"
should return ARGON2 for password with 'argon2'
"
,
()
=>
{
const
hashedPassword
=
"
$argon2i$v=19$m=4096,t=3,p=1$0qR/o+0t00hsbJFQCKSfdQ$oFcM4rL6o+B7oxpuA4qlXubypbBPsf+8L531U7P9HYY
"
const
passwordMethod
=
getPasswordMethod
(
hashedPassword
)
const
expected
:
PasswordMethod
=
"
ARGON2
"
expect
(
passwordMethod
).
toEqual
(
expected
)
})
it
(
"
should return SHA256 for password with legacy hash
"
,
()
=>
{
const
hashedPassword
=
"
936a185caaa266bb9cbe981e9e05cb78cd732b0b3280eb944412bb6f8f8f07af
"
const
passwordMethod
=
getPasswordMethod
(
hashedPassword
)
const
expected
:
PasswordMethod
=
"
SHA256
"
expect
(
passwordMethod
).
toEqual
(
expected
)
})
})
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录