Changeset 0d48c0c in portal_2019
- Timestamp:
- Aug 23, 2019, 10:51:48 AM (5 years ago)
- Branches:
- desarrollo
- Children:
- 65da7cc
- Parents:
- 520961f
- Location:
- pruebas_web_crypto_api
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
pruebas_web_crypto_api/FirmandoConMurachiModificado.html
r520961f r0d48c0c 245 245 console.log("sign()" + importarLlave); 246 246 $.ajax({ 247 type: 'POST', 248 contentType: 'application/json', 247 249 url:"https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/pdfs/resenas", 248 type: 'POST',249 250 dataType: 'json', 250 data: JSON.stringify({ 'signature':importarLlave}),251 contentType: 'application/json',251 data: JSON.stringify({"signature":importarLlave}), 252 xhrFields: { withCredentials: true }, 252 253 headers: {"Authorization":"Basic YWRtaW46YWRtaW4="}, 253 xhrFields: { withCredentials: true },254 254 success: function(data, textStatus, jqXHR){ 255 255 var responseString = JSON.stringify(data); -
pruebas_web_crypto_api/testingDigitalSignatureWebCryptography.html
r9bc9e0d r0d48c0c 1 <!-- Prueba: Este código contiene dos pruebas 2 1.- Verificar y firmar el Hash usando la claves asimétricas generadas por la librería javascript Cryptography API Supported y usando los algoritmo de firma RSASSA-PKCS1-v1₅ y RSA-PSS 3 4 2.- Verificar y firmar el Hash usando la información gestionada del archivo .p12 por la librería javascript Forge y exportando dicha información a Cryptography API Supported, se probo usando los algoritmo de firma RSASSA-PKCS1-v1₅ y RSA-PSS 5 6 para ver los resultados debe activar la consola web del navegador 7 --> 8 1 9 <!DOCTYPE html> 2 10 <html lang="es"> … … 15 23 </form> 16 24 <section id="resultados"> 25 <br> 17 26 <div id="seccion1"></div> 27 <br> 18 28 <div id="seccion2"></div> 29 <br> 19 30 <div id="seccion3"></div> 31 <br> 20 32 <div id="seccion4"></div> 21 33 </section> … … 40 52 privateKeyRSAPSS = null, 41 53 publicKeyRSAPSS = null, 54 publicKeyRSASSAPKCS1v1_5 = null, 42 55 importarLlave = null; 43 44 45 56 46 57 /* ----- Funciones ----- */ … … 107 118 for ( var sbi = 0; sbi < safeContents.safeBags.length; ++sbi ) { 108 119 var safeBag = safeContents.safeBags[sbi]; 109 //if (safeBag.cert != undefined) {110 //console.log("antes de llamar safeBag.cert.publicKey")111 //var publicKey = safeBag.cert.publicKey;112 //console.log("**** publickey ****");113 //console.log(publicKey);114 //console.log("**** publickey ****");115 //}116 117 120 if ( safeBag.type === forge.pki.oids.keyBag ) { 118 121 privateKey = safeBag.key; … … 124 127 return privateKey; 125 128 } 126 //var rsaPublicKey = pki.publicKeyToAsn1(publicKey);127 128 129 // Función para convertir la llave publica a PKCS#8 129 130 function publicKeyToPkcs8 ( publicKeyP12 ) { … … 153 154 154 155 // Función para importar la llave privada with RSASSA-PKCS1-v1_5 155 /*156 156 157 function importarLlavePrivada ( llavePrivada ) { 157 158 var qweasd = crypto.subtle.importKey( … … 174 175 } 175 176 176 177 */ 177 /* 178 178 // Función para importar la llave privada with RSA-PSS 179 179 function importarLlavePrivada ( llavePrivada ) { … … 199 199 }); 200 200 } 201 201 */ 202 /* 202 203 // Función para importar la llave publica with RSA-PSS 203 204 function importarLlavePublica ( llavePublica ) { … … 225 226 }); 226 227 } 228 */ 229 // Función para importar la llave publica with RSASSA-PKCS1-v1_5 230 function importarLlavePublica ( llavePublica ) { 231 console.log("importarLlavePublica llavePublica"); 232 console.log(llavePublica); 233 console.log("importarLlavePublica llavePublica"); 234 var qweasd = crypto.subtle.importKey( 235 "spki", //can be "jwk" (public or private), "spki" (public only), or "pkcs8" (private only) 236 llavePublica, 237 { //these are the algorithm options 238 name: "RSASSA-PKCS1-v1_5", 239 hash: { name: "SHA-256" }, //can be "SHA-1", "SHA-256", "SHA-384", or "SHA-512" 240 }, 241 false, //whether the key is extractable (i.e. can be used in exportKey) 242 ["verify"] //"verify" for public key import, "sign" for private key imports 243 ).then(function(publicKey){ 244 //returns a publicKey (or privateKey if you are importing a private key)} 245 console.log("llavePublica importada"); 246 console.log(publicKey); 247 console.log("llavePublica importada"); 248 publicKeyRSASSAPKCS1v1_5 = publicKey; 249 }) 250 .catch(function(err){ 251 console.error(err); 252 }); 253 } 227 254 // Función para convertir el certificado .p12 en hexadecimal 228 255 function convertirPKCS12aHexadecimal ( pkcs12 ) { … … 246 273 return certBytesHex; 247 274 } 248 249 250 275 // Función para leer el .p12 luego de cargarlo 251 276 function leerCertificadoPKCS12 () { … … 276 301 /* ----- Eventos ----- */ 277 302 278 279 280 303 281 304 function convertStringToArrayBufferView(str) 282 305 { … … 296 319 var private_key_object = null; 297 320 var public_key_object = null; 298 299 //var data = "QNimate";300 321 var data = "7a42eea172776c7a6de6d57aa9958d9654410934f5cfbf483b6135a24543f51c"; 301 302 322 var encrypted_hash = null; 303 323 var encrypt_promise = null; 304 305 324 var signature = null; 306 307 325 var decrypt_promise = null; 308 326 309 327 // Usando el algoritmo RSA-PSS 310 328 /* 311 329 if(crypto.subtle) 312 330 { … … 318 336 promise_key.then(function(key){ 319 337 private_key_object = key.privateKey; 320 console.log("****** // public_key_object //******");338 console.log("****** public_key_object ******"); 321 339 console.log(public_key_object); 322 console.log("****** // public_key_object //******");340 console.log("****** public_key_object ******"); 323 341 public_key_object = key.publicKey; 324 342 console.log("****.. antes del encrypt_data()..****"); … … 389 407 if(publicKeyRSAPSS == null) { 390 408 console.log("function decrypt_data()"); 391 console.log("****** // public_key_object decrypt_data() //******");409 console.log("****** public_key_object decrypt_data() ******"); 392 410 console.log(public_key_object); 393 console.log("****** // public_key_object decrypt_data() //******");411 console.log("****** public_key_object decrypt_data() ******"); 394 412 decrypt_promise = crypto.subtle.verify({name: "RSA-PSS", saltLength: 128, }, public_key_object, signature, convertStringToArrayBufferView(data)); 395 413 … … 405 423 else { 406 424 console.log("function decrypt_data()"); 407 console.log("****** // publicKeyRSAPSS decrypt_data() //******");425 console.log("****** publicKeyRSAPSS decrypt_data() ******"); 408 426 console.log(publicKeyRSAPSS); 409 console.log("****** // publicKeyRSAPSS decrypt_data() //******");427 console.log("****** publicKeyRSAPSS decrypt_data() ******"); 410 428 decrypt_promise = crypto.subtle.verify({name: "RSA-PSS", saltLength: 128, }, publicKeyRSAPSS, signature, convertStringToArrayBufferView(data)); 411 429 decrypt_promise.then( … … 421 439 422 440 } 423 /* 441 442 */ 424 443 // Usando el algoritmo RSASSA-PKCS1-v1_5 425 444 if(crypto.subtle) 426 445 { 427 446 console.log("Antes del alert"); 428 alert("Cryptography API Supported ");447 alert("Cryptography API Supported... Prueba 1 usando las claves generadas"); 429 448 430 449 promise_key = crypto.subtle.generateKey({name: "RSASSA-PKCS1-v1_5", modulusLength: 2048, publicExponent: new Uint8Array([1, 0, 1]), hash: {name: "SHA-256"}}, false, ["sign", "verify"]); … … 447 466 } 448 467 468 //Función para realizar la firma del hash usando las claves asimetricas generdas por Cryptography y por la clave privada gestionado del archivo .p12 469 // 449 470 function encrypt_data() 450 471 { … … 457 478 console.log(privateKeyRSASSAPKCS1v1_5); 458 479 console.log("*** fin privatekey ***"); 459 480 document.getElementById("seccion1").innerHTML = data; 481 //evalua si la clave privada extraída del .p12 es nula para firma usando la clave asimetrica generada con Cryptography API clave privada = private_key_object 460 482 if(privateKeyRSASSAPKCS1v1_5 == null) { 461 483 encrypt_promise = crypto.subtle.sign({name: "RSASSA-PKCS1-v1_5"}, private_key_object, convertStringToArrayBufferView(data)); … … 468 490 console.log("**************************************"); 469 491 console.log("****.. antes del decrypt_data()..****"); 470 decrypt_data(); 492 document.getElementById("seccion2").innerHTML = signature; 493 decrypt_data(); //Llamado para verificaar la firma (hash firmado) 471 494 }, 472 495 function(e){ 473 496 console.log(e); 474 497 } 475 ); 476 } else {477 console.log("privateKey != Null");498 ); 499 500 } else { //la clave privada del extraída .p12 no es null por lo tanto se realiza la firma usando la clave del archivo .p12 478 501 encrypt_promise = crypto.subtle.sign({name: "RSASSA-PKCS1-v1_5"}, privateKeyRSASSAPKCS1v1_5, convertStringToArrayBufferView(data)); 479 502 … … 485 508 console.log("**************************************"); 486 509 console.log("****.. antes del decrypt_data()..****"); 487 decrypt_data(); 510 document.getElementById("seccion2").innerHTML = signature; 511 decrypt_data(); //Llamado para verificaar la firma (hash firmado) 488 512 }, 489 513 function(e){ … … 491 515 } 492 516 ); 493 } 494 } 495 517 518 } 519 } 520 521 //Función para realizar la verificación de la firma del hash usando las claves asimetricas generdas por Cryptography y por la clave publica gestionado del archivo .p12 522 // 496 523 function decrypt_data() 497 524 { 498 console.log("function decrypt_data()"); 525 console.log("function decrypt_data()"); 526 //evalua si la clave publica del .p12 esta vacia para realziar la verificación usando la clave asimetrica generada con Cryptography API clave privada = private_key_object 527 if(publicKeyRSASSAPKCS1v1_5 == null) { 528 529 console.log("****** public_key_object decrypt_data() ******"); 530 console.log(public_key_object); 531 console.log("****** public_key_object decrypt_data() ******"); 499 532 decrypt_promise = crypto.subtle.verify({name: "RSASSA-PKCS1-v1_5"}, public_key_object, signature, convertStringToArrayBufferView(data)); 500 533 501 534 decrypt_promise.then( 502 function(result){ 503 console.log(result);//true or false 504 }, 505 function(e){ 506 console.log(e.message); 507 } 535 function(result){ 536 console.log(result);//true or false 537 document.getElementById("seccion3").innerHTML = result; 538 }, 539 function(e){ 540 console.log(e.message); 541 } 508 542 ); 509 } 510 */ 543 document.getElementById("seccion4").innerHTML = "Para la segunda prueba carga el pdf y el archivo .p12 usando el formulaio"; 544 } else { //evalua si la clave publica del .p12 no esta vacia para realizar la verificación usando la clave pública extraída del .p12 545 546 console.log("****** publicKeyRSASSAPKCS1v1_5 decrypt_data() ******"); 547 console.log(publicKeyRSASSAPKCS1v1_5); 548 console.log("****** publicKeyRSASSAPKCS1v1_5 decrypt_data() ******"); 549 550 decrypt_promise = crypto.subtle.verify({name: "RSASSA-PKCS1-v1_5"}, publicKeyRSASSAPKCS1v1_5, signature, convertStringToArrayBufferView(data)); 551 552 decrypt_promise.then( 553 function(result){ 554 console.log(result);//true or false 555 document.getElementById("seccion3").innerHTML = result; 556 }, 557 function(e){ 558 console.log(e.message); 559 } 560 ); 561 document.getElementById("seccion4").innerHTML = ""; 562 } 563 } 511 564 512 565 buttonsubmit3.addEventListener('click', function() {
Note: See TracChangeset
for help on using the changeset viewer.