Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
b1a59bac
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看板
体验新版 GitCode,发现更多精彩内容 >>
提交
b1a59bac
编写于
7月 02, 2013
作者:
V
vinnie
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
7165807: Non optimized initialization of NSS crypto library leads to scalability issues
Reviewed-by: mullan, valeriep
上级
df5503a7
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
98 addition
and
27 deletion
+98
-27
make/sun/security/pkcs11/mapfile-vers
make/sun/security/pkcs11/mapfile-vers
+1
-1
makefiles/mapfiles/libj2pkcs11/mapfile-vers
makefiles/mapfiles/libj2pkcs11/mapfile-vers
+2
-2
src/share/classes/sun/security/pkcs11/Config.java
src/share/classes/sun/security/pkcs11/Config.java
+10
-0
src/share/classes/sun/security/pkcs11/Secmod.java
src/share/classes/sun/security/pkcs11/Secmod.java
+11
-4
src/share/classes/sun/security/pkcs11/SunPKCS11.java
src/share/classes/sun/security/pkcs11/SunPKCS11.java
+3
-2
src/share/native/sun/security/pkcs11/j2secmod.c
src/share/native/sun/security/pkcs11/j2secmod.c
+55
-12
src/solaris/native/sun/security/pkcs11/j2secmod_md.h
src/solaris/native/sun/security/pkcs11/j2secmod_md.h
+8
-3
src/windows/native/sun/security/pkcs11/j2secmod_md.h
src/windows/native/sun/security/pkcs11/j2secmod_md.h
+8
-3
未找到文件。
make/sun/security/pkcs11/mapfile-vers
浏览文件 @
b1a59bac
...
...
@@ -102,7 +102,7 @@ SUNWprivate_1.1 {
Java_sun_security_pkcs11_Secmod_nssGetLibraryHandle;
Java_sun_security_pkcs11_Secmod_nssLoadLibrary;
Java_sun_security_pkcs11_Secmod_nssVersionCheck;
Java_sun_security_pkcs11_Secmod_nssInit;
Java_sun_security_pkcs11_Secmod_nssInit
ialize
;
Java_sun_security_pkcs11_Secmod_nssGetModuleList;
local:
...
...
makefiles/mapfiles/libj2pkcs11/mapfile-vers
浏览文件 @
b1a59bac
#
# Copyright (c) 2003, 201
2
, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2003, 201
3
, Oracle and/or its affiliates. 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
...
...
@@ -102,7 +102,7 @@ SUNWprivate_1.1 {
Java_sun_security_pkcs11_Secmod_nssGetLibraryHandle;
Java_sun_security_pkcs11_Secmod_nssLoadLibrary;
Java_sun_security_pkcs11_Secmod_nssVersionCheck;
Java_sun_security_pkcs11_Secmod_nssInit;
Java_sun_security_pkcs11_Secmod_nssInit
ialize
;
Java_sun_security_pkcs11_Secmod_nssGetModuleList;
local:
...
...
src/share/classes/sun/security/pkcs11/Config.java
浏览文件 @
b1a59bac
...
...
@@ -197,6 +197,10 @@ final class Config {
// (false).
private
boolean
useEcX963Encoding
=
false
;
// Flag to indicate whether NSS should favour performance (false) or
// memory footprint (true).
private
boolean
nssOptimizeSpace
=
false
;
private
Config
(
String
filename
,
InputStream
in
)
throws
IOException
{
if
(
in
==
null
)
{
if
(
filename
.
startsWith
(
"--"
))
{
...
...
@@ -329,6 +333,10 @@ final class Config {
return
useEcX963Encoding
;
}
boolean
getNssOptimizeSpace
()
{
return
nssOptimizeSpace
;
}
private
static
String
expand
(
final
String
s
)
throws
IOException
{
try
{
return
PropertyExpander
.
expand
(
s
);
...
...
@@ -451,6 +459,8 @@ final class Config {
nssUseSecmodTrust
=
parseBooleanEntry
(
word
);
}
else
if
(
word
.
equals
(
"useEcX963Encoding"
))
{
useEcX963Encoding
=
parseBooleanEntry
(
word
);
}
else
if
(
word
.
equals
(
"nssOptimizeSpace"
))
{
nssOptimizeSpace
=
parseBooleanEntry
(
word
);
}
else
{
throw
new
ConfigurationException
(
"Unknown keyword '"
+
word
+
"', line "
+
st
.
lineno
());
...
...
src/share/classes/sun/security/pkcs11/Secmod.java
浏览文件 @
b1a59bac
...
...
@@ -158,11 +158,17 @@ public final class Secmod {
*/
public
void
initialize
(
String
configDir
,
String
nssLibDir
)
throws
IOException
{
initialize
(
DbMode
.
READ_WRITE
,
configDir
,
nssLibDir
);
initialize
(
DbMode
.
READ_WRITE
,
configDir
,
nssLibDir
,
false
);
}
public
synchronized
void
initialize
(
DbMode
dbMode
,
String
configDir
,
String
nssLibDir
)
public
void
initialize
(
DbMode
dbMode
,
String
configDir
,
String
nssLibDir
)
throws
IOException
{
initialize
(
dbMode
,
configDir
,
nssLibDir
,
false
);
}
public
synchronized
void
initialize
(
DbMode
dbMode
,
String
configDir
,
String
nssLibDir
,
boolean
nssOptimizeSpace
)
throws
IOException
{
if
(
isInitialized
())
{
throw
new
IOException
(
"NSS is already initialized"
);
}
...
...
@@ -211,7 +217,8 @@ public final class Secmod {
}
if
(
DEBUG
)
System
.
out
.
println
(
"dir: "
+
configDir
);
boolean
initok
=
nssInit
(
dbMode
.
functionName
,
nssHandle
,
configDir
);
boolean
initok
=
nssInitialize
(
dbMode
.
functionName
,
nssHandle
,
configDir
,
nssOptimizeSpace
);
if
(
DEBUG
)
System
.
out
.
println
(
"init: "
+
initok
);
if
(
initok
==
false
)
{
throw
new
IOException
(
"NSS initialization failed"
);
...
...
@@ -764,7 +771,7 @@ public final class Secmod {
private
static
native
boolean
nssVersionCheck
(
long
handle
,
String
minVersion
);
private
static
native
boolean
nssInit
(
String
functionName
,
long
handle
,
String
configDir
);
private
static
native
boolean
nssInit
ialize
(
String
functionName
,
long
handle
,
String
configDir
,
boolean
nssOptimizeSpace
);
private
static
native
Object
nssGetModuleList
(
long
handle
,
String
libDir
);
...
...
src/share/classes/sun/security/pkcs11/SunPKCS11.java
浏览文件 @
b1a59bac
/*
* Copyright (c) 2003, 201
2
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 201
3
, Oracle and/or its affiliates. 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
...
...
@@ -167,6 +167,7 @@ public final class SunPKCS11 extends AuthProvider {
try
{
String
nssLibraryDirectory
=
config
.
getNssLibraryDirectory
();
String
nssSecmodDirectory
=
config
.
getNssSecmodDirectory
();
boolean
nssOptimizeSpace
=
config
.
getNssOptimizeSpace
();
if
(
secmod
.
isInitialized
())
{
if
(
nssSecmodDirectory
!=
null
)
{
...
...
@@ -204,7 +205,7 @@ public final class SunPKCS11 extends AuthProvider {
}
}
secmod
.
initialize
(
nssDbMode
,
nssSecmodDirectory
,
nssLibraryDirectory
);
nssLibraryDirectory
,
nssOptimizeSpace
);
}
}
catch
(
IOException
e
)
{
// XXX which exception to throw
...
...
src/share/native/sun/security/pkcs11/j2secmod.c
浏览文件 @
b1a59bac
/*
* Copyright (c) 2005, 201
1
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2005, 201
3
, Oracle and/or its affiliates. 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
...
...
@@ -51,20 +51,63 @@ JNIEXPORT jboolean JNICALL Java_sun_security_pkcs11_Secmod_nssVersionCheck
return
(
res
==
0
)
?
JNI_FALSE
:
JNI_TRUE
;
}
JNIEXPORT
jboolean
JNICALL
Java_sun_security_pkcs11_Secmod_nssInit
(
JNIEnv
*
env
,
jclass
thisClass
,
jstring
jFunctionName
,
jlong
jHandle
,
jstring
jConfigDir
)
/*
* Initializes NSS.
* The NSS_INIT_OPTIMIZESPACE flag is supplied by the caller.
* The NSS_Init* functions are mapped to the NSS_Initialize function.
*/
JNIEXPORT
jboolean
JNICALL
Java_sun_security_pkcs11_Secmod_nssInitialize
(
JNIEnv
*
env
,
jclass
thisClass
,
jstring
jFunctionName
,
jlong
jHandle
,
jstring
jConfigDir
,
jboolean
jNssOptimizeSpace
)
{
const
char
*
functionName
=
(
*
env
)
->
GetStringUTFChars
(
env
,
jFunctionName
,
NULL
);
const
char
*
configDir
=
(
jConfigDir
==
NULL
)
?
NULL
:
(
*
env
)
->
GetStringUTFChars
(
env
,
jConfigDir
,
NULL
);
FPTR_Init
init
=
(
FPTR_Init
)
findFunction
(
env
,
jHandle
,
functionName
);
int
res
;
(
*
env
)
->
ReleaseStringUTFChars
(
env
,
jFunctionName
,
functionName
);
if
(
init
==
NULL
)
{
return
JNI_FALSE
;
const
char
*
functionName
=
(
*
env
)
->
GetStringUTFChars
(
env
,
jFunctionName
,
NULL
);
const
char
*
configDir
=
(
jConfigDir
==
NULL
)
?
NULL
:
(
*
env
)
->
GetStringUTFChars
(
env
,
jConfigDir
,
NULL
);
FPTR_Initialize
initialize
=
(
FPTR_Initialize
)
findFunction
(
env
,
jHandle
,
"NSS_Initialize"
);
int
res
=
0
;
unsigned
int
flags
=
0x00
;
if
(
jNssOptimizeSpace
==
JNI_TRUE
)
{
flags
=
0x20
;
// NSS_INIT_OPTIMIZESPACE flag
}
res
=
init
(
configDir
);
if
(
initialize
!=
NULL
)
{
/*
* If the NSS_Init function is requested then call NSS_Initialize to
* open the Cert, Key and Security Module databases, read only.
*/
if
(
strcmp
(
"NSS_Init"
,
functionName
)
==
0
)
{
flags
=
flags
|
0x01
;
// NSS_INIT_READONLY flag
res
=
initialize
(
configDir
,
""
,
""
,
"secmod.db"
,
flags
);
/*
* If the NSS_InitReadWrite function is requested then call
* NSS_Initialize to open the Cert, Key and Security Module databases,
* read/write.
*/
}
else
if
(
strcmp
(
"NSS_InitReadWrite"
,
functionName
)
==
0
)
{
res
=
initialize
(
configDir
,
""
,
""
,
"secmod.db"
,
flags
);
/*
* If the NSS_NoDB_Init function is requested then call
* NSS_Initialize without creating Cert, Key or Security Module
* databases.
*/
}
else
if
(
strcmp
(
"NSS_NoDB_Init"
,
functionName
)
==
0
)
{
flags
=
flags
|
0x02
// NSS_INIT_NOCERTDB flag
|
0x04
// NSS_INIT_NOMODDB flag
|
0x08
// NSS_INIT_FORCEOPEN flag
|
0x10
;
// NSS_INIT_NOROOTINIT flag
res
=
initialize
(
""
,
""
,
""
,
""
,
flags
);
}
else
{
res
=
2
;
}
}
else
{
res
=
1
;
}
(
*
env
)
->
ReleaseStringUTFChars
(
env
,
jFunctionName
,
functionName
);
if
(
configDir
!=
NULL
)
{
(
*
env
)
->
ReleaseStringUTFChars
(
env
,
jConfigDir
,
configDir
);
}
...
...
src/solaris/native/sun/security/pkcs11/j2secmod_md.h
浏览文件 @
b1a59bac
/*
* Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2005,
2013,
Oracle and/or its affiliates. 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
...
...
@@ -25,9 +25,14 @@
// in nss.h:
// extern PRBool NSS_VersionCheck(const char *importedVersion);
// extern SECStatus NSS_Init(const char *configdir);
// extern SECStatus NSS_Initialize(const char *configdir,
// const char *certPrefix, const char *keyPrefix,
// const char *secmodName, PRUint32 flags);
typedef
int
(
*
FPTR_VersionCheck
)(
const
char
*
importedVersion
);
typedef
int
(
*
FPTR_Init
)(
const
char
*
configdir
);
typedef
int
(
*
FPTR_Initialize
)(
const
char
*
configdir
,
const
char
*
certPrefix
,
const
char
*
keyPrefix
,
const
char
*
secmodName
,
unsigned
int
flags
);
// in secmod.h
//extern SECMODModule *SECMOD_LoadModule(char *moduleSpec,SECMODModule *parent,
...
...
src/windows/native/sun/security/pkcs11/j2secmod_md.h
浏览文件 @
b1a59bac
/*
* Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2005,
2013,
Oracle and/or its affiliates. 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
...
...
@@ -27,9 +27,14 @@
// in nss.h:
// extern PRBool NSS_VersionCheck(const char *importedVersion);
// extern SECStatus NSS_Init(const char *configdir);
// extern SECStatus NSS_Initialize(const char *configdir,
// const char *certPrefix, const char *keyPrefix,
// const char *secmodName, PRUint32 flags);
typedef
int
__declspec
(
dllimport
)
(
*
FPTR_VersionCheck
)(
const
char
*
importedVersion
);
typedef
int
__declspec
(
dllimport
)
(
*
FPTR_Init
)(
const
char
*
configdir
);
typedef
int
__declspec
(
dllimport
)
(
*
FPTR_Initialize
)(
const
char
*
configdir
,
const
char
*
certPrefix
,
const
char
*
keyPrefix
,
const
char
*
secmodName
,
unsigned
int
flags
);
// in secmod.h
//extern SECMODModule *SECMOD_LoadModule(char *moduleSpec,SECMODModule *parent,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录