source: aportesmurachi/tahel/Murachi-pre/pruebasign.html

Last change on this file was 12e6ddf, checked in by Antonio Araujo <aaraujo@…>, 7 years ago

Agregados los directorio de aportes de Tahel al control de versiones.

  • Property mode set to 100644
File size: 4.9 KB
Line 
1<!DOCTYPE html>
2<!-- release v4.1.8, copyright 2014 - 2015 Kartik Visweswaran -->
3<html lang="es">
4    <head> <!--Inicio del head  -->
5        <meta charset="UTF-8"/>
6        <script type="text/javascript" src="js/jquery.min.js"></script>
7        <script type="text/javascript" src="js/hwcrypto-legacy.js"></script>
8        <script type="text/javascript" src="js/hwcrypto.js"></script>
9        <script type="text/javascript" src="js/hex2base.js"></script>
10        <script type="text/javascript" src="js/forge.min.js"></script>
11       
12        <script type="text/javascript" charset="utf-8">
13            $(document).ready(function() {
14                $("#botonCertificado").click(FindCertificateByHash);
15            })
16            function signDigest(text){
17                if(window.event){
18                    window.event.cancelBubble = true;
19
20                    var dest = sign(text); //TODO
21                    alert(dest);
22                    return dest;
23                }
24            }
25 
26            // CAPICOM constants
27            var CAPICOM_STORE_OPEN_READ_ONLY = 0;
28            var CAPICOM_CURRENT_USER_STORE = 2;
29            var CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0;
30            var CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY = 6;
31            var CAPICOM_CERTIFICATE_FIND_TIME_VALID = 9;
32            var CAPICOM_CERTIFICATE_FIND_KEY_USAGE = 12;
33            var CAPICOM_DIGITAL_SIGNATURE_KEY_USAGE = 0x00000080;
34            var CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;
35            var CAPICOM_INFO_SUBJECT_SIMPLE_NAME = 0;
36            var CAPICOM_ENCODE_BASE64 = 0;
37            var CAPICOM_E_CANCELLED = -2138568446;
38            var CERT_KEY_SPEC_PROP_ID = 6;
39 
40            function IsCAPICOMInstalled(){
41                if(typeof(oCAPICOM) == "object"){
42                    if( (oCAPICOM.object != null) ){
43                    // We found CAPICOM!
44                        return true;
45                    }
46                }
47            }
48 
49            function FindCertificateByHash(){
50                try{
51                    // instantiate the CAPICOM objects
52                    var MyStore = new ActiveXObject("CAPICOM.Store");
53                    // open the current users personal certificate store
54                    MyStore.Open(CAPICOM_CURRENT_USER_STORE, "My", CAPICOM_STORE_OPEN_READ_ONLY);
55
56                    // find all of the certificates that have the specified hash
57                    var FilteredCertificates = MyStore.Certificates.Find(CAPICOM_CERTIFICATE_FIND_SHA1_HASH, strUserCertigicateThumbprint);
58
59                    var Signer = new ActiveXObject("CAPICOM.Signer");
60                    Signer.Certificate = FilteredCertificates.Item(1);
61                    return Signer;
62
63                    // Clean Up
64                    MyStore = null;
65                    FilteredCertificates = null;
66                }catch (e){
67                    if (e.number != CAPICOM_E_CANCELLED){
68                        return new ActiveXObject("CAPICOM.Signer");
69                    }
70                }
71            }
72 
73            function sign(src){
74                if(window.crypto && window.crypto.signText){
75                    return sign_NS(src);
76                }
77                return sign_IE(src);
78            }
79 
80            function sign_NS(src){
81                var s = crypto.signText(src, "ask" );
82                return s;
83            }
84 
85            function sign_IE(src){
86                try{
87                    // instantiate the CAPICOM objects
88                    var SignedData = new ActiveXObject("CAPICOM.SignedData");
89                    var TimeAttribute = new ActiveXObject("CAPICOM.Attribute");
90
91                    // Set the data that we want to sign
92                    SignedData.Content = src;
93                    var Signer = FindCertificateByHash();
94
95                    // Set the time in which we are applying the signature
96                    var Today = new Date();
97                    TimeAttribute.Name = CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME;
98                    TimeAttribute.Value = Today.getVarDate();
99                    Today = null;
100                    Signer.AuthenticatedAttributes.Add(TimeAttribute);
101
102                    // Do the Sign operation
103                    var szSignature = SignedData.Sign(Signer, true, CAPICOM_ENCODE_BASE64);
104                    return szSignature;
105                }catch (e){
106                    if (e.number != CAPICOM_E_CANCELLED){
107                        alert("An error occurred when attempting to sign the content, the errot was: " + e.description);
108                    }
109                }
110                return "";
111            }
112        </script>
113
114        </head> 
115
116
117    <body>
118        <br>
119        <button type="button" class="button" name="botonCertificado" id="botonCertificado">Obtiene Certificado</button>
120        <br>
121                <div id="respuesta"></div>
122        <div id="progresoupload"></div>
123        <div id="progresodownload"></div>
124       
125        </body>
126</html>
Note: See TracBrowser for help on using the repository browser.