Skip to content

EKEY控制相关属性

EkeyType

说明:
数值型;可读写;支持EKEY的类型。

语法:

javascript
// 设置
Obj.EkeyType = 1;  // 1-15

// 读取
var ekeyType = Obj.EkeyType;

HTML参数设置:

html
<param name="EkeyType" value="1" />

EKEY类型对照表:

EKEY类型说明
1海泰海泰EKEY
2明华明华EKEY
3大明五洲大明五洲EKEY
4飞天epas3000飞天epas3000
5飞天(深圳CA)飞天(深圳CA)
6九思泰达(深圳CA)九思泰达(深圳CA)
7飞天epas2000飞天epas2000
8华申华大华申华大EKEY
9东方中讯东方中讯EKEY
10握奇握奇EKEY
11贵州黔南HTK贵州黔南HTK
12飞天(上海格尔)飞天(上海格尔)
13飞天(坚石诚信)飞天(坚石诚信)
14龙脉龙脉EKEY
15龙脉天威定制龙脉天威定制

使用示例:

javascript
// 设置海泰EKEY类型
Obj.EkeyType = 1;

// 设置明华EKEY类型
Obj.EkeyType = 2;

// 设置飞天epas3000类型
Obj.EkeyType = 4;

// 读取当前EKEY类型
var currentType = Obj.EkeyType;
console.log("当前EKEY类型:", currentType);

IsCheckEkey

说明:
布尔型;可读写;读取/设置文档控件是否检查EKEY及驱动文件。默认值为false,表示不检查。

语法:

javascript
// 设置
Obj.IsCheckEkey = true;  // 或 false

// 读取
var checkEkey = Obj.IsCheckEkey;

使用示例:

javascript
// 启用EKEY检查
Obj.IsCheckEkey = true;

// 禁用EKEY检查
Obj.IsCheckEkey = false;

console.log("EKEY检查状态:", Obj.IsCheckEkey);

注意: 必须先设置本属性值为True后,IsEkeyConnected属性才会去检测是否有EKEY连接到计算机。否则IsEkeyConnected属性会永远返回False。

IsEkeyConnected

说明:
布尔型;只读;判别NTKO EKEY是否已经连接到计算机。如果已连接返回true,否则返回false。

语法:

javascript
// 读取
var isConnected = Obj.IsEkeyConnected;

使用示例:

javascript
// 检查EKEY连接状态
var isConnected = Obj.IsEkeyConnected;

if (isConnected) {
    console.log("EKEY已连接到计算机");
} else {
    console.log("EKEY未连接到计算机");
}

EkeySN

说明:
String型字符串;只读;获取系统连接的EKEY的序列号。如果没有EKEY连接到系统,返回空值。

语法:

javascript
// 读取
var ekeySN = Obj.EkeySN;

使用示例:

javascript
// 获取EKEY序列号
var ekeySN = Obj.EkeySN;

if (ekeySN) {
    console.log("EKEY序列号:", ekeySN);
} else {
    console.log("未检测到EKEY或序列号为空");
}

综合使用示例

EKEY初始化配置

javascript
// 配置EKEY相关属性
function configureEkey() {
    try {
        // 设置EKEY类型(海泰)
        Obj.EkeyType = 1;
        
        // 启用EKEY检查
        Obj.IsCheckEkey = true;
        
        console.log("EKEY配置完成");
        console.log("EKEY类型:", Obj.EkeyType);
        console.log("EKEY检查状态:", Obj.IsCheckEkey);
        
    } catch (error) {
        console.error("EKEY配置失败:", error.message);
    }
}

EKEY状态检查

javascript
// 检查EKEY状态
function checkEkeyStatus() {
    // 确保启用了EKEY检查
    if (!Obj.IsCheckEkey) {
        Obj.IsCheckEkey = true;
        console.log("已启用EKEY检查");
    }
    
    // 检查EKEY连接状态
    var isConnected = Obj.IsEkeyConnected;
    var ekeySN = Obj.EkeySN;
    
    console.log("EKEY状态检查:");
    console.log("连接状态:", isConnected ? "已连接" : "未连接");
    console.log("序列号:", ekeySN || "无");
    
    return {
        isConnected: isConnected,
        serialNumber: ekeySN
    };
}

EKEY类型选择器

javascript
// 动态设置EKEY类型
function setEkeyType(typeName) {
    var typeMap = {
        '海泰': 1,
        '明华': 2,
        '大明五洲': 3,
        '飞天epas3000': 4,
        '飞天(深圳CA)': 5,
        '九思泰达(深圳CA)': 6,
        '飞天epas2000': 7,
        '华申华大': 8,
        '东方中讯': 9,
        '握奇': 10,
        '贵州黔南HTK': 11,
        '飞天(上海格尔)': 12,
        '飞天(坚石诚信)': 13,
        '龙脉': 14,
        '龙脉天威定制': 15
    };
    
    var typeValue = typeMap[typeName];
    if (typeValue) {
        Obj.EkeyType = typeValue;
        console.log("EKEY类型已设置为:", typeName);
        return true;
    } else {
        console.log("未知的EKEY类型:", typeName);
        return false;
    }
}

// 使用示例
setEkeyType('海泰');
setEkeyType('明华');
setEkeyType('飞天epas3000');

完整的EKEY管理

javascript
// 完整的EKEY管理功能
function manageEkey() {
    try {
        // 1. 设置EKEY类型
        Obj.EkeyType = 1;  // 海泰
        
        // 2. 启用EKEY检查
        Obj.IsCheckEkey = true;
        
        // 3. 等待一段时间让系统检测
        setTimeout(function() {
            // 4. 检查连接状态
            var isConnected = Obj.IsEkeyConnected;
            var ekeySN = Obj.EkeySN;
            
            if (isConnected) {
                console.log("EKEY管理成功:");
                console.log("类型:", Obj.EkeyType);
                console.log("连接状态: 已连接");
                console.log("序列号:", ekeySN);
            } else {
                console.log("EKEY未连接,请检查:");
                console.log("1. EKEY是否插入");
                console.log("2. 驱动是否安装");
                console.log("3. EKEY类型是否正确");
            }
        }, 1000);
        
    } catch (error) {
        console.error("EKEY管理失败:", error.message);
    }
}

属性分类总结

分类属性功能类型说明
EKEY类型EkeyType设置EKEY类型Integer1-15,对应不同厂商
检查控制IsCheckEkey启用/禁用EKEY检查Boolean必须为true才能检测连接
连接状态IsEkeyConnected检查EKEY连接状态Boolean只读,是否已连接
序列号EkeySN获取EKEY序列号String只读,EKEY的唯一标识

EKEY类型详细说明

厂商产品名称适用场景
海泰1海泰EKEY通用场景
明华2明华EKEY金融行业
大明五洲3大明五洲EKEY政府机构
飞天4-7, 12-13飞天系列多种CA场景
九思泰达6九思泰达(深圳CA)深圳地区
华申华大8华申华大EKEY特定行业
东方中讯9东方中讯EKEY企业应用
握奇10握奇EKEY高安全场景
龙脉14-15龙脉系列定制化应用

使用流程

1. EKEY初始化阶段

javascript
// 初始化EKEY设置
function initializeEkey() {
    // 设置EKEY类型
    Obj.EkeyType = 1;  // 根据实际使用的EKEY类型设置
    
    // 启用EKEY检查
    Obj.IsCheckEkey = true;
    
    console.log("EKEY初始化完成");
}

2. EKEY检测阶段

javascript
// 检测EKEY状态
function detectEkey() {
    // 检查连接状态
    var isConnected = Obj.IsEkeyConnected;
    
    if (isConnected) {
        // 获取序列号
        var ekeySN = Obj.EkeySN;
        console.log("EKEY检测成功,序列号:", ekeySN);
        return true;
    } else {
        console.log("EKEY未连接");
        return false;
    }
}

3. EKEY使用阶段

javascript
// 使用EKEY进行签名等操作
function useEkey() {
    if (detectEkey()) {
        // 执行需要EKEY的操作
        console.log("可以执行EKEY相关操作");
        // 例如:数字签名、加密等
    } else {
        console.log("无法执行EKEY操作,请检查EKEY连接");
    }
}

注意事项

  1. 检查顺序:必须先设置IsCheckEkey为true,才能正确检测EKEY连接状态
  2. 类型匹配:EkeyType必须与实际的EKEY硬件类型匹配
  3. 驱动安装:确保相应的EKEY驱动已正确安装
  4. 连接状态:IsEkeyConnected和EkeySN属性依赖于IsCheckEkey设置
  5. 序列号获取:只有在EKEY连接时才能获取到有效的序列号
  6. 错误处理:实现完善的EKEY检测和错误处理机制
  7. 兼容性:不同厂商的EKEY可能有不同的兼容性要求

错误处理

javascript
// EKEY错误处理
function handleEkeyError() {
    try {
        // 检查EKEY设置
        if (!Obj.IsCheckEkey) {
            console.log("EKEY检查未启用,正在启用...");
            Obj.IsCheckEkey = true;
        }
        
        // 检查连接状态
        var isConnected = Obj.IsEkeyConnected;
        if (!isConnected) {
            console.log("EKEY未连接,请检查:");
            console.log("1. EKEY是否插入USB端口");
            console.log("2. 驱动是否安装");
            console.log("3. EKEY类型设置是否正确");
            return false;
        }
        
        // 检查序列号
        var ekeySN = Obj.EkeySN;
        if (!ekeySN) {
            console.log("无法获取EKEY序列号");
            return false;
        }
        
        console.log("EKEY状态正常");
        return true;
        
    } catch (error) {
        console.error("EKEY错误处理失败:", error.message);
        return false;
    }
}

最佳实践

  1. 类型选择:根据实际使用的EKEY硬件选择正确的类型
  2. 检查启用:在使用EKEY相关功能前确保IsCheckEkey为true
  3. 状态验证:定期检查EKEY连接状态
  4. 错误处理:实现完善的EKEY检测和错误处理机制
  5. 用户提示:为用户提供清晰的EKEY状态提示
  6. 兼容性测试:在不同环境下测试EKEY功能