您的位置:首页 > Web前端

前端签名与加密流程图和代码记载

2015-08-20 16:35 831 查看



<script language="javascript">

// 获取证书 ,初始化选择证书列表
var certs;
function refreshCertList() {
try {
certs = CertStore.listAllCerts();
//清空下拉列表
this.SignForm.CertList.length = 0;
//遍历证书集合
for ( var i = 0; i < certs.size(); i++){
//获取一张证书
var cert = certs.get(i);
//获取证书cn值
var cn = getCNFromSubject(cert);
//获取证书序列号
this.SignForm.CertList.options.add(new Option(
cn,cert.serialNumber()));
}
} catch (e) {
if (e instanceof TCACErr) {
//TCA异常封装
alert(e.toStr());
} else {
//其它异常放行..
alert("Here is Error !!!");
}
}
}

//最终加密文件
function clientSign(){
//判断待加密文件是否存在
if(this.SignForm.SrcFileName.value==""){
this.SignForm.SrcFileName.focus();
alert("请选择加密文件");
}
//设置签名加密文件路径
var destFileName = SignForm.SrcFileName.value+'.sig';
var enFileName = destFileName+'.enc';
//获取个人用签名证书
var cert =getSelectedCert();
//获取签名值
var signresult1 = cert.signFile2File(SignForm.SrcFileName.value,destFileName, "SHA1");
//根据序列号,获取数字信封使用证书
var certencs =certs.bySerialnumber("1D4DB312246B94B2E79C87B5239AD7D469100B5E");
var certenc=certencs.get(0);
//获取数字信封结果
var encresult1 = certenc.encryptFile2File(destFileName,enFileName);
//对数字信封进行签名
var signFileName2=enFileName+".sig";
var signresult2=cert.signFile2File(enFileName,signFileName2, "SHA1");
if(signresult2){
alert("上传成功!");
}
}

//根据序列号获取当前选择的证书
//返回Certificate对象
function getSelectedCert() {
try {
var selectedCertSN = this.SignForm.CertList.value;
var cs = certs.bySerialnumber(selectedCertSN);
return cs.get(0);
} catch (e) {
if (e instanceof TCACErr) {
alert(e.toStr());
} else {
alert("没有找到证书");
}
}
}

// 从Certificate对象中获取CN值
// cert : Certificate对象
function getCNFromSubject(cert) {
try {
var t = cert.subject().match(/(S(?!N)|L|O(?!U)|OU|SN|CN|E)=([^=]+)(?=, |$)/g);
for (var i = 0; i < t.length; i++) {
if (t[i].indexOf("CN=") === 0)
return t[i].substr(3, t[i].length);
}
return null;
} catch (e) {
if (e instanceof TCACErr) {
alert(e.toStr());
} else {
alert("Here is Error !!!");
}
}
}
</script>
<script type="text/javascript">

$(document).ready(function () {
//加载控制值
$('.date-pick').datePicker({clickInput:true});
//加载license值
var config = {
"license": "MIIFTwYJKoZIhvcNAQcCoIIFQDCCBTwCAQExDjAMBggqgRzPVQGDEQUAMIGVBgkqhkiG9w0BBwGggYcEgYR7Iklzc3VlciI6Ii4qTz0uKuWkqeivmuWuieS/oeivleeUqC4qIiwidmVyc2lvbiI6IjEuMC4wLjAiLCJzb2Z0VmVyc2lvbiI6IjMuMS4wLjAiLCJub3RhZnRlciI6IjIwMTYtMDEtMTQiLCJub3RiZWZvcmUiOiIyMDE1LTAxLTEyIn2gggNEMIIDQDCCAuWgAwIBAgIUXyWc2syCu37zBbMAe4uOyb35tfIwDAYIKoEcz1UBg3UFADBVMSYwJAYDVQQDDB3lpKnor5rlronkv6HmtYvor5VTTTLnlKjmiLdDQTEOMAwGA1UECwwFVE9QQ0ExDjAMBgNVBAoMBVRPUENBMQswCQYDVQQGEwJDTjAeFw0xNDA5MjYwNzQ2MDhaFw0xNTA5MjYwNzQ2MDhaMDExGDAWBgNVBAMMD1NpZ25FU0EyMDE0MDkyNzEVMBMGA1UECgwM5aSp6K+a5a6J5L+hMFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAElhZ4UuYjL2ZO535qLQsF4ujGGCc7odxAZuxCGXh+94nOhXHQLLO3/G9ZjnLuXeoDB3n0Bsj4iboW2X/AA5KFiaOCAbMwggGvMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgbAMIGKBggrBgEFBQcBAQR+MHwwegYIKwYBBQUHMAKGbmh0dHA6Ly9Zb3VyX1NlcnZlcl9OYW1lOlBvcnQvVG9wQ0EvdXNlckVucm9sbC9jYUNlcnQ/Y2VydFNlcmlhbE51bWJlcj01QTQ3RUNGMTA1ODA0QTVDNkE1QjIyOTI5Qjc1REYwREZCQzBENzk2MFcGA1UdLgRQME4wTKBKoEiGRlBvcnQvVG9wQ0EvcHVibGljL2l0cnVzY3JsP0NBPTVBNDdFQ0YxMDU4MDRBNUM2QTVCMjI5MjlCNzVERjBERkJDMEQ3OTYwbwYDVR0fBGgwZjBkoGKgYIZeaHR0cDovL1lvdXJfU2VydmVyX05hbWU6UG9ydC9Ub3BDQS9wdWJsaWMvaXRydXNjcmw/Q0E9NUE0N0VDRjEwNTgwNEE1QzZBNUIyMjkyOUI3NURGMERGQkMwRDc5NjAfBgNVHSMEGDAWgBQ9icZHy3GFsNk71kiwidnn/u/a2TAdBgNVHQ4EFgQUSzvtf4eChoegEpKxLuYAJdi1EQAwDAYIKoEcz1UBg3UFAANHADBEAiC9tNcXzI0fmOxsbqvtcvksS6kl3yXzH1qTPyuE7ldhggIg6D6HGfkXjg3n7Bqob7UNuzqb3GIgPzdWQeeam10yhHsxggFFMIIBQQIBATBtMFUxJjAkBgNVBAMMHeWkqeivmuWuieS/oea1i+ivlVNNMueUqOaIt0NBMQ4wDAYDVQQLDAVUT1BDQTEOMAwGA1UECgwFVE9QQ0ExCzAJBgNVBAYTAkNOAhRfJZzazIK7fvMFswB7i47Jvfm18jAMBggqgRzPVQGDEQUAoGkwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMTUwMTEzMTIxMDUwWjAvBgkqhkiG9w0BCQQxIgQgTsHg6rBYG+pioDkYWoKf6xGtsTCRNLMIQXksoRhMkO4wDAYIKoEcz1UBgi0FAARGMEQCIHZPgdw5RZq9XwGdzdc3lKrKrb+xSStLmUWNylP+c7lbAiC7+wkPFWBlMJlTB4gehrgY+kJH19vq7n2ohVqCNHE2MQ==","certDateFmtMode":true,"certDateFmtMode":true};
//测试用

//异常捕捉
try{
TCA.config(config);
refreshCertList();
return ;
}catch(e){
if (e instanceof TCACErr) {
alert(e.toStr());
} else {
alert("Here is Error !!!");
}
}

});
</script>

<script language="javascript">

// 获取证书 ,初始化选择证书列表
var certs;
function refreshCertList() {
try {
certs = CertStore.listAllCerts();
//清空下拉列表
this.SignForm.CertList.length = 0;
//遍历证书集合
for ( var i = 0; i < certs.size(); i++){
//获取一张证书
var cert = certs.get(i);
//获取证书cn值
var cn = getCNFromSubject(cert);
//获取证书序列号
this.SignForm.CertList.options.add(new Option(
cn,cert.serialNumber()));
}
} catch (e) {
if (e instanceof TCACErr) {
//TCA异常封装
alert(e.toStr());
} else {
//其它异常放行..
alert("Here is Error !!!");
}
}
}

//签名方法

function plaintextSign(){
var toSign = this.SignForm.plainText.value;
var cert=getSelectedCert();
var ic_value =this.SignForm.InnerContent.checked;
var pt8_value =this.SignForm.PlainTextUTF8.checked;
var mcs_value =this.SignForm.MinCertStore.checked;

var p7=null;
alert(getCNFromSubject(cert));

if(ic_value == false){
p7 = cert.signMessage(toSign,false);
}else{
p7 = cert.signMessage(toSign);
}
this.SignForm.signature.value=p7;
}

//加密方法
function plaintextEncrypt(){
//获取数字信封公钥
try{
var cert = certs.bySerialnumber("1D4DB312246B94B2E79C87B5239AD7D469100B5E");
var toEnc=this.SignForm.plainText.value;
var p7 = cert.get(0).encryptMessage(toEnc);
this.SignForm.encryptData.value=p7;
}catch(e){

if (e instanceof TCACErr) {
alert(e.toStr());
} else {
alert("Here is Error !!!");
}
}
}

//数字信封签名方法

function enSign(){
if(this.SignForm.encryptData.value==""){
alert("请输入加密信息!");
SignForm.encryptData.focus();
return;
}

var toSign = this.SignForm.encryptData.value;
var cert=getSelectedCert();

var ic_value =this.SignForm.InnerContent.checked;
var pt8_value =this.SignForm.PlainTextUTF8.checked;
var mcs_value =this.SignForm.MinCertStore.checked;

try{

var p7=null;
alert(getCNFromSubject(cert));

if(ic_value == false){
p7 = cert.signMessage(toSign,false);
}else{
p7 = cert.signMessage(toSign);
}
this.SignForm.enSignatrue.value=p7;

}catch(e){

if (e instanceof TCACErr) {
alert(e.toStr());
} else {
alert("Here is Error !!!");
}

}
}

//根据序列号获取当前选择的证书
//返回Certificate对象
function getSelectedCert() {
try {
var selectedCertSN = this.SignForm.CertList.value;
var cs = certs.bySerialnumber(selectedCertSN);
return cs.get(0);
} catch (e) {
if (e instanceof TCACErr) {
alert(e.toStr());
} else {
alert("没有找到证书");
}
}
}

// 从Certificate对象中获取CN值
// cert : Certificate对象
function getCNFromSubject(cert) {
try {
var t = cert.subject().match(/(S(?!N)|L|O(?!U)|OU|SN|CN|E)=([^=]+)(?=, |$)/g);
for (var i = 0; i < t.length; i++) {
if (t[i].indexOf("CN=") === 0)
return t[i].substr(3, t[i].length);
}
return null;
} catch (e) {
if (e instanceof TCACErr) {
alert(e.toStr());
} else {
alert("Here is Error !!!");
}
}
}
</script>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: