Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
c0f51199
D
dragonwell8_jdk
项目概览
openanolis
/
dragonwell8_jdk
通知
4
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_jdk
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
c0f51199
编写于
9月 04, 2009
作者:
W
weijun
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
6876328: different names for the same digest algorithms breaks jarsigner
Reviewed-by: mullan
上级
654e48d2
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
90 addition
and
9 deletion
+90
-9
src/share/classes/sun/security/tools/JarSigner.java
src/share/classes/sun/security/tools/JarSigner.java
+24
-9
test/sun/security/tools/jarsigner/nameclash.sh
test/sun/security/tools/jarsigner/nameclash.sh
+66
-0
未找到文件。
src/share/classes/sun/security/tools/JarSigner.java
浏览文件 @
c0f51199
...
...
@@ -1978,20 +1978,35 @@ public class JarSigner {
String
[]
base64Digests
=
getDigests
(
ze
,
zf
,
digests
,
encoder
);
for
(
int
i
=
0
;
i
<
digests
.
length
;
i
++)
{
String
name
=
digests
[
i
].
getAlgorithm
()+
"-Digest"
;
String
mfDigest
=
attrs
.
getValue
(
name
);
if
(
mfDigest
==
null
&&
digests
[
i
].
getAlgorithm
().
equalsIgnoreCase
(
"SHA"
))
{
// treat "SHA" and "SHA1" the same
mfDigest
=
attrs
.
getValue
(
"SHA-Digest"
);
}
if
(
mfDigest
==
null
)
{
// compute digest and add it to list of attributes
// The entry name to be written into attrs
String
name
=
null
;
try
{
// Find if the digest already exists
AlgorithmId
aid
=
AlgorithmId
.
get
(
digests
[
i
].
getAlgorithm
());
for
(
Object
key:
attrs
.
keySet
())
{
if
(
key
instanceof
Attributes
.
Name
)
{
String
n
=
((
Attributes
.
Name
)
key
).
toString
();
if
(
n
.
toUpperCase
(
Locale
.
ENGLISH
).
endsWith
(
"-DIGEST"
))
{
String
tmp
=
n
.
substring
(
0
,
n
.
length
()
-
7
);
if
(
AlgorithmId
.
get
(
tmp
).
equals
(
aid
))
{
name
=
n
;
break
;
}
}
}
}
}
catch
(
NoSuchAlgorithmException
nsae
)
{
// Ignored. Writing new digest entry.
}
if
(
name
==
null
)
{
name
=
digests
[
i
].
getAlgorithm
()+
"-Digest"
;
attrs
.
putValue
(
name
,
base64Digests
[
i
]);
update
=
true
;
}
else
{
// compare digests, and replace the one in the manifest
// if they are different
String
mfDigest
=
attrs
.
getValue
(
name
);
if
(!
mfDigest
.
equalsIgnoreCase
(
base64Digests
[
i
]))
{
attrs
.
putValue
(
name
,
base64Digests
[
i
]);
update
=
true
;
...
...
test/sun/security/tools/jarsigner/nameclash.sh
0 → 100644
浏览文件 @
c0f51199
#
# Copyright 2009 Sun Microsystems, Inc. All Rights Reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
# CA 95054 USA or visit www.sun.com if you need additional information or
# have any questions.
#
# @test
# @bug 6876328
# @summary different names for the same digest algorithms breaks jarsigner
#
if
[
"
${
TESTJAVA
}
"
=
""
]
;
then
JAVAC_CMD
=
`
which javac
`
TESTJAVA
=
`
dirname
$JAVAC_CMD
`
/..
fi
# set platform-dependent variables
OS
=
`
uname
-s
`
case
"
$OS
"
in
Windows_
*
)
FS
=
"
\\
"
;;
*
)
FS
=
"/"
;;
esac
KS
=
nc.jks
JFILE
=
nc.jar
KT
=
"
$TESTJAVA
${
FS
}
bin
${
FS
}
keytool -storepass changeit -keypass changeit -keystore
$KS
"
JAR
=
$TESTJAVA
${
FS
}
bin
${
FS
}
jar
JARSIGNER
=
$TESTJAVA
${
FS
}
bin
${
FS
}
jarsigner
rm
$KS
$JFILE
$KT
-alias
a
-dname
CN
=
a
-keyalg
rsa
-genkey
-validity
300
$KT
-alias
b
-dname
CN
=
b
-keyalg
rsa
-genkey
-validity
300
echo
A
>
A
$JAR
cvf
$JFILE
A
$JARSIGNER
-keystore
$KS
-storepass
changeit
$JFILE
a
-digestalg
SHA1
||
exit
1
$JARSIGNER
-keystore
$KS
-storepass
changeit
$JFILE
b
-digestalg
SHA-1
||
exit
2
$JARSIGNER
-keystore
$KS
-verify
-debug
-strict
$JFILE
||
exit
3
exit
0
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录