Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
fd0f7831
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看板
提交
fd0f7831
编写于
12月 19, 2008
作者:
T
tbell
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
bad65d29
9b6a4623
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
125 addition
and
61 deletion
+125
-61
src/share/classes/sun/security/ssl/CipherBox.java
src/share/classes/sun/security/ssl/CipherBox.java
+18
-1
src/share/classes/sun/security/ssl/SSLEngineImpl.java
src/share/classes/sun/security/ssl/SSLEngineImpl.java
+29
-1
src/share/classes/sun/security/ssl/SSLSocketImpl.java
src/share/classes/sun/security/ssl/SSLSocketImpl.java
+26
-0
src/share/classes/sun/tools/jar/Main.java
src/share/classes/sun/tools/jar/Main.java
+52
-59
未找到文件。
src/share/classes/sun/security/ssl/CipherBox.java
浏览文件 @
fd0f7831
/*
* Copyright 1996-200
7
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1996-200
8
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
...
...
@@ -486,4 +486,21 @@ final class CipherBox {
return
newlen
;
}
/*
* Dispose of any intermediate state in the underlying cipher.
* For PKCS11 ciphers, this will release any attached sessions, and
* thus make finalization faster.
*/
void
dispose
()
{
try
{
if
(
cipher
!=
null
)
{
// ignore return value.
cipher
.
doFinal
();
}
}
catch
(
GeneralSecurityException
e
)
{
// swallow for now.
}
}
}
src/share/classes/sun/security/ssl/SSLEngineImpl.java
浏览文件 @
fd0f7831
/*
* Copyright 2003-200
7
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 2003-200
8
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
...
...
@@ -547,6 +547,8 @@ final public class SSLEngineImpl extends SSLEngine {
// ... create decompressor
CipherBox
oldCipher
=
readCipher
;
try
{
readCipher
=
handshaker
.
newReadCipher
();
readMAC
=
handshaker
.
newReadMAC
();
...
...
@@ -555,6 +557,16 @@ final public class SSLEngineImpl extends SSLEngine {
throw
(
SSLException
)
new
SSLException
(
"Algorithm missing: "
).
initCause
(
e
);
}
/*
* Dispose of any intermediate state in the underlying cipher.
* For PKCS11 ciphers, this will release any attached sessions,
* and thus make finalization faster.
*
* Since MAC's doFinal() is called for every SSL/TLS packet, it's
* not necessary to do the same with MAC's.
*/
oldCipher
.
dispose
();
}
/*
...
...
@@ -572,6 +584,8 @@ final public class SSLEngineImpl extends SSLEngine {
// ... create compressor
CipherBox
oldCipher
=
writeCipher
;
try
{
writeCipher
=
handshaker
.
newWriteCipher
();
writeMAC
=
handshaker
.
newWriteMAC
();
...
...
@@ -580,6 +594,9 @@ final public class SSLEngineImpl extends SSLEngine {
throw
(
SSLException
)
new
SSLException
(
"Algorithm missing: "
).
initCause
(
e
);
}
// See comment above.
oldCipher
.
dispose
();
}
/*
...
...
@@ -1231,6 +1248,9 @@ final public class SSLEngineImpl extends SSLEngine {
break
;
}
// See comment in changeReadCiphers()
writeCipher
.
dispose
();
connectionState
=
cs_CLOSED
;
}
...
...
@@ -1271,6 +1291,10 @@ final public class SSLEngineImpl extends SSLEngine {
closeOutboundInternal
();
inboundDone
=
true
;
// See comment in changeReadCiphers()
readCipher
.
dispose
();
connectionState
=
cs_CLOSED
;
}
...
...
@@ -1457,6 +1481,10 @@ final public class SSLEngineImpl extends SSLEngine {
connectionState
=
cs_CLOSED
;
// See comment in changeReadCiphers()
readCipher
.
dispose
();
writeCipher
.
dispose
();
if
(
cause
instanceof
RuntimeException
)
{
throw
(
RuntimeException
)
cause
;
}
else
{
...
...
src/share/classes/sun/security/ssl/SSLSocketImpl.java
浏览文件 @
fd0f7831
...
...
@@ -1427,6 +1427,10 @@ final public class SSLSocketImpl extends BaseSSLSocketImpl {
waitForClose
(
false
);
}
// See comment in changeReadCiphers()
readCipher
.
dispose
();
writeCipher
.
dispose
();
// state will be set to cs_CLOSED in the finally block below
break
;
...
...
@@ -1633,6 +1637,11 @@ final public class SSLSocketImpl extends BaseSSLSocketImpl {
* Clean up our side.
*/
closeSocket
();
// See comment in changeReadCiphers()
readCipher
.
dispose
();
writeCipher
.
dispose
();
connectionState
=
(
oldState
==
cs_APP_CLOSED
)
?
cs_APP_CLOSED
:
cs_CLOSED
;
throw
closeReason
;
...
...
@@ -1763,6 +1772,8 @@ final public class SSLSocketImpl extends BaseSSLSocketImpl {
// ... create decompressor
CipherBox
oldCipher
=
readCipher
;
try
{
readCipher
=
handshaker
.
newReadCipher
();
readMAC
=
handshaker
.
newReadMAC
();
...
...
@@ -1771,6 +1782,16 @@ final public class SSLSocketImpl extends BaseSSLSocketImpl {
throw
(
SSLException
)
new
SSLException
(
"Algorithm missing: "
).
initCause
(
e
);
}
/*
* Dispose of any intermediate state in the underlying cipher.
* For PKCS11 ciphers, this will release any attached sessions,
* and thus make finalization faster.
*
* Since MAC's doFinal() is called for every SSL/TLS packet, it's
* not necessary to do the same with MAC's.
*/
oldCipher
.
dispose
();
}
// used by Handshaker
...
...
@@ -1783,6 +1804,8 @@ final public class SSLSocketImpl extends BaseSSLSocketImpl {
// ... create compressor
CipherBox
oldCipher
=
writeCipher
;
try
{
writeCipher
=
handshaker
.
newWriteCipher
();
writeMAC
=
handshaker
.
newWriteMAC
();
...
...
@@ -1791,6 +1814,9 @@ final public class SSLSocketImpl extends BaseSSLSocketImpl {
throw
(
SSLException
)
new
SSLException
(
"Algorithm missing: "
).
initCause
(
e
);
}
// See comment above.
oldCipher
.
dispose
();
}
/*
...
...
src/share/classes/sun/tools/jar/Main.java
浏览文件 @
fd0f7831
...
...
@@ -46,9 +46,18 @@ class Main {
String
zname
=
""
;
String
[]
files
;
String
rootjar
=
null
;
Hashtable
filesTable
=
new
Hashtable
();
Vector
paths
=
new
Vector
();
Vector
v
;
// An entryName(path)->File map generated during "expand", it helps to
// decide whether or not an existing entry in a jar file needs to be
// replaced, during the "update" operation.
Map
<
String
,
File
>
entryMap
=
new
HashMap
<
String
,
File
>();
// All files need to be added/updated.
Set
<
File
>
entries
=
new
LinkedHashSet
<
File
>();
// Directories specified by "-C" operation.
List
<
String
>
paths
=
new
ArrayList
<
String
>();
CRC32
crc32
=
new
CRC32
();
/*
* cflag: create
...
...
@@ -175,7 +184,8 @@ class Main {
vflag
=
false
;
}
}
create
(
new
BufferedOutputStream
(
out
),
expand
(
files
),
manifest
);
expand
(
null
,
files
,
false
);
create
(
new
BufferedOutputStream
(
out
,
4096
),
manifest
);
if
(
in
!=
null
)
{
in
.
close
();
}
...
...
@@ -198,8 +208,8 @@ class Main {
}
InputStream
manifest
=
(!
Mflag
&&
(
mname
!=
null
))
?
(
new
FileInputStream
(
mname
))
:
null
;
expand
(
files
);
boolean
updateOk
=
update
(
in
,
new
BufferedOutputStream
(
out
),
manifest
);
expand
(
null
,
files
,
true
);
boolean
updateOk
=
update
(
in
,
new
BufferedOutputStream
(
out
),
manifest
,
null
);
if
(
ok
)
{
ok
=
updateOk
;
}
...
...
@@ -354,7 +364,7 @@ class Main {
while
(
dir
.
indexOf
(
"//"
)
>
-
1
)
{
dir
=
dir
.
replace
(
"//"
,
"/"
);
}
paths
.
add
Element
(
dir
.
replace
(
File
.
separatorChar
,
'/'
));
paths
.
add
(
dir
.
replace
(
File
.
separatorChar
,
'/'
));
nameBuf
[
k
++]
=
dir
+
args
[++
i
];
}
else
{
nameBuf
[
k
++]
=
args
[
i
];
...
...
@@ -387,17 +397,7 @@ class Main {
* Expands list of files to process into full list of all files that
* can be found by recursively descending directories.
*/
String
[]
expand
(
String
[]
files
)
{
v
=
new
Vector
();
expand
(
null
,
files
,
v
,
filesTable
);
files
=
new
String
[
v
.
size
()];
for
(
int
i
=
0
;
i
<
files
.
length
;
i
++)
{
files
[
i
]
=
((
File
)
v
.
elementAt
(
i
)).
getPath
();
}
return
files
;
}
void
expand
(
File
dir
,
String
[]
files
,
Vector
v
,
Hashtable
t
)
{
void
expand
(
File
dir
,
String
[]
files
,
boolean
isUpdate
)
{
if
(
files
==
null
)
{
return
;
}
...
...
@@ -409,17 +409,20 @@ class Main {
f
=
new
File
(
dir
,
files
[
i
]);
}
if
(
f
.
isFile
())
{
if
(
!
t
.
contains
(
f
))
{
t
.
put
(
entryName
(
f
.
getPath
()),
f
);
v
.
addElement
(
f
);
if
(
entries
.
add
(
f
))
{
if
(
isUpdate
)
entryMap
.
put
(
entryName
(
f
.
getPath
()),
f
);
}
}
else
if
(
f
.
isDirectory
())
{
String
dirPath
=
f
.
getPath
();
dirPath
=
(
dirPath
.
endsWith
(
File
.
separator
))
?
dirPath
:
(
dirPath
+
File
.
separator
);
t
.
put
(
entryName
(
dirPath
),
f
);
v
.
addElement
(
f
);
expand
(
f
,
f
.
list
(),
v
,
t
);
if
(
entries
.
add
(
f
))
{
if
(
isUpdate
)
{
String
dirPath
=
f
.
getPath
();
dirPath
=
(
dirPath
.
endsWith
(
File
.
separator
))
?
dirPath
:
(
dirPath
+
File
.
separator
);
entryMap
.
put
(
entryName
(
dirPath
),
f
);
}
expand
(
f
,
f
.
list
(),
isUpdate
);
}
}
else
{
error
(
formatMsg
(
"error.nosuch.fileordir"
,
String
.
valueOf
(
f
)));
ok
=
false
;
...
...
@@ -430,7 +433,7 @@ class Main {
/*
* Creates a new JAR file.
*/
void
create
(
OutputStream
out
,
String
[]
files
,
Manifest
manifest
)
void
create
(
OutputStream
out
,
Manifest
manifest
)
throws
IOException
{
ZipOutputStream
zos
=
new
JarOutputStream
(
out
);
...
...
@@ -455,8 +458,8 @@ class Main {
manifest
.
write
(
zos
);
zos
.
closeEntry
();
}
for
(
int
i
=
0
;
i
<
files
.
length
;
i
++
)
{
addFile
(
zos
,
new
File
(
files
[
i
])
);
for
(
File
file:
entries
)
{
addFile
(
zos
,
file
);
}
zos
.
close
();
}
...
...
@@ -465,10 +468,9 @@ class Main {
* update an existing jar file.
*/
boolean
update
(
InputStream
in
,
OutputStream
out
,
InputStream
newManifest
)
throws
IOException
InputStream
newManifest
,
JarIndex
jarIndex
)
throws
IOException
{
Hashtable
t
=
filesTable
;
Vector
v
=
this
.
v
;
ZipInputStream
zis
=
new
ZipInputStream
(
in
);
ZipOutputStream
zos
=
new
JarOutputStream
(
out
);
ZipEntry
e
=
null
;
...
...
@@ -477,8 +479,8 @@ class Main {
int
n
=
0
;
boolean
updateOk
=
true
;
if
(
t
.
containsKey
(
INDEX
)
)
{
addIndex
(
(
JarIndex
)
t
.
get
(
INDEX
)
,
zos
);
if
(
jarIndex
!=
null
)
{
addIndex
(
jarIndex
,
zos
);
}
// put the old entries first, replace if necessary
...
...
@@ -488,9 +490,8 @@ class Main {
boolean
isManifestEntry
=
name
.
toUpperCase
(
java
.
util
.
Locale
.
ENGLISH
).
equals
(
MANIFEST
);
if
((
name
.
toUpperCase
().
equals
(
INDEX
)
&&
t
.
containsKey
(
INDEX
))
||
(
Mflag
&&
isManifestEntry
))
{
if
((
name
.
toUpperCase
().
equals
(
INDEX
)
&&
jarIndex
!=
null
)
||
(
Mflag
&&
isManifestEntry
))
{
continue
;
}
else
if
(
isManifestEntry
&&
((
newManifest
!=
null
)
||
(
ename
!=
null
)))
{
...
...
@@ -514,8 +515,7 @@ class Main {
}
updateManifest
(
old
,
zos
);
}
else
{
if
(!
t
.
containsKey
(
name
))
{
// copy the old stuff
if
(!
entryMap
.
containsKey
(
name
))
{
// copy the old stuff
// do our own compression
ZipEntry
e2
=
new
ZipEntry
(
name
);
e2
.
setMethod
(
e
.
getMethod
());
...
...
@@ -531,21 +531,17 @@ class Main {
zos
.
write
(
buf
,
0
,
n
);
}
}
else
{
// replace with the new files
addFile
(
zos
,
(
File
)(
t
.
get
(
name
)));
t
.
remove
(
name
);
File
f
=
entryMap
.
get
(
name
);
addFile
(
zos
,
f
);
entryMap
.
remove
(
name
);
entries
.
remove
(
f
);
}
}
}
t
.
remove
(
INDEX
);
// add the remaining new files
if
(!
t
.
isEmpty
())
{
for
(
int
i
=
0
;
i
<
v
.
size
();
i
++)
{
File
f
=
(
File
)
v
.
elementAt
(
i
);
if
(
t
.
containsValue
(
f
))
{
addFile
(
zos
,
f
);
}
}
for
(
File
f:
entries
)
{
addFile
(
zos
,
f
);
}
if
(!
foundManifest
)
{
if
(
newManifest
!=
null
)
{
...
...
@@ -611,8 +607,7 @@ class Main {
private
String
entryName
(
String
name
)
{
name
=
name
.
replace
(
File
.
separatorChar
,
'/'
);
String
matchPath
=
""
;
for
(
int
i
=
0
;
i
<
paths
.
size
();
i
++)
{
String
path
=
(
String
)
paths
.
elementAt
(
i
);
for
(
String
path
:
paths
)
{
if
(
name
.
startsWith
(
path
)
&&
(
path
.
length
()
>
matchPath
.
length
()))
{
matchPath
=
path
;
}
...
...
@@ -669,7 +664,6 @@ class Main {
void
addFile
(
ZipOutputStream
zos
,
File
file
)
throws
IOException
{
String
name
=
file
.
getPath
();
boolean
isDir
=
file
.
isDirectory
();
if
(
isDir
)
{
name
=
name
.
endsWith
(
File
.
separator
)
?
name
:
(
name
+
File
.
separator
);
...
...
@@ -704,7 +698,7 @@ class Main {
}
zos
.
putNextEntry
(
e
);
if
(!
isDir
)
{
byte
[]
buf
=
new
byte
[
1024
];
byte
[]
buf
=
new
byte
[
8192
];
int
len
;
InputStream
is
=
new
BufferedInputStream
(
new
FileInputStream
(
file
));
while
((
len
=
is
.
read
(
buf
,
0
,
buf
.
length
))
!=
-
1
)
{
...
...
@@ -749,7 +743,7 @@ class Main {
*/
private
void
crc32File
(
ZipEntry
e
,
File
f
)
throws
IOException
{
InputStream
is
=
new
BufferedInputStream
(
new
FileInputStream
(
f
));
byte
[]
buf
=
new
byte
[
1024
];
byte
[]
buf
=
new
byte
[
8192
];
crc32
.
reset
();
int
r
=
0
;
int
nread
=
0
;
...
...
@@ -772,7 +766,7 @@ class Main {
void
extract
(
InputStream
in
,
String
files
[])
throws
IOException
{
ZipInputStream
zis
=
new
ZipInputStream
(
in
);
ZipEntry
e
;
// Set of all directory entries specified in archive. Dis
s
allows
// Set of all directory entries specified in archive. Disallows
// null entries. Disallows all entries if using pre-6.0 behavior.
Set
<
ZipEntry
>
dirs
=
new
HashSet
<
ZipEntry
>()
{
public
boolean
add
(
ZipEntry
e
)
{
...
...
@@ -897,17 +891,16 @@ class Main {
}
}
/**
* Output the class index table to the INDEX.LIST file of the
* root jar file.
*/
void
dumpIndex
(
String
rootjar
,
JarIndex
index
)
throws
IOException
{
filesTable
.
put
(
INDEX
,
index
);
File
scratchFile
=
File
.
createTempFile
(
"scratch"
,
null
,
new
File
(
"."
));
File
jarFile
=
new
File
(
rootjar
);
boolean
updateOk
=
update
(
new
FileInputStream
(
jarFile
),
new
FileOutputStream
(
scratchFile
),
null
);
new
FileOutputStream
(
scratchFile
),
null
,
index
);
jarFile
.
delete
();
if
(!
scratchFile
.
renameTo
(
jarFile
))
{
scratchFile
.
delete
();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录