test ecdsa support, spaces for whitespace
This commit is contained in:
		
							parent
							
								
									2cc5a41268
								
							
						
					
					
						commit
						a7462db2c8
					
				| @ -14,6 +14,32 @@ | ||||
|   var PromiseA = window.Promise; | ||||
|   var crypto = window.crypto; | ||||
| 
 | ||||
|   function testEcdsaSupport() { | ||||
|     var opts = { | ||||
|       type: 'ECDSA' | ||||
|     , bitlength: '256' | ||||
|     }; | ||||
|     return BACME.accounts.generateKeypair(opts).then(function (jwk) { | ||||
|       return crypto.subtle.importKey( | ||||
|         "jwk" | ||||
|       , jwk | ||||
|       , { name: "ECDSA", namedCurve: "P-256" } | ||||
|       , true | ||||
|       , ["sign"] | ||||
|       ).then(function (privateKey) { | ||||
|         return window.crypto.subtle.exportKey("pkcs8", privateKey); | ||||
|       }); | ||||
|     }); | ||||
|   } | ||||
|   testEcdsaSupport().then(function () { | ||||
|     console.log("supports ECDSA"); | ||||
|     BROWSER_SUPPORTS_ECDSA = true; | ||||
|   }).catch(function () { | ||||
|     console.log("DOES NOT supports ECDSA"); | ||||
|     BROWSER_SUPPORTS_ECDSA = false; | ||||
|   }); | ||||
|   // TODO test RSA support
 | ||||
| 
 | ||||
|   var apiUrl = 'https://acme-{{env}}.api.letsencrypt.org/directory'; | ||||
|   function updateApiType() { | ||||
|     console.log("type updated"); | ||||
| @ -497,36 +523,36 @@ | ||||
|           "data:text/octet-stream;base64," + window.btoa(certs); | ||||
| 
 | ||||
|         // https://stackoverflow.com/questions/40314257/export-webcrypto-key-to-pem-format
 | ||||
| 				function spkiToPEM(keydata){ | ||||
| 						var keydataS = arrayBufferToString(keydata); | ||||
| 						var keydataB64 = window.btoa(keydataS); | ||||
| 						var keydataB64Pem = formatAsPem(keydataB64); | ||||
| 						return keydataB64Pem; | ||||
| 				} | ||||
|         function spkiToPEM(keydata){ | ||||
|             var keydataS = arrayBufferToString(keydata); | ||||
|             var keydataB64 = window.btoa(keydataS); | ||||
|             var keydataB64Pem = formatAsPem(keydataB64); | ||||
|             return keydataB64Pem; | ||||
|         } | ||||
| 
 | ||||
| 				function arrayBufferToString( buffer ) { | ||||
| 						var binary = ''; | ||||
| 						var bytes = new Uint8Array( buffer ); | ||||
| 						var len = bytes.byteLength; | ||||
| 						for (var i = 0; i < len; i++) { | ||||
| 								binary += String.fromCharCode( bytes[ i ] ); | ||||
| 						} | ||||
| 						return binary; | ||||
| 				} | ||||
|         function arrayBufferToString( buffer ) { | ||||
|             var binary = ''; | ||||
|             var bytes = new Uint8Array( buffer ); | ||||
|             var len = bytes.byteLength; | ||||
|             for (var i = 0; i < len; i++) { | ||||
|                 binary += String.fromCharCode( bytes[ i ] ); | ||||
|             } | ||||
|             return binary; | ||||
|         } | ||||
| 
 | ||||
| 
 | ||||
| 				function formatAsPem(str) { | ||||
| 						var finalString = '-----BEGIN ' + pemName + ' PRIVATE KEY-----\n'; | ||||
|         function formatAsPem(str) { | ||||
|             var finalString = '-----BEGIN ' + pemName + ' PRIVATE KEY-----\n'; | ||||
| 
 | ||||
| 						while(str.length > 0) { | ||||
| 								finalString += str.substring(0, 64) + '\n'; | ||||
| 								str = str.substring(64); | ||||
| 						} | ||||
|             while(str.length > 0) { | ||||
|                 finalString += str.substring(0, 64) + '\n'; | ||||
|                 str = str.substring(64); | ||||
|             } | ||||
| 
 | ||||
| 						finalString = finalString + '-----END ' + pemName + ' PRIVATE KEY-----'; | ||||
|             finalString = finalString + '-----END ' + pemName + ' PRIVATE KEY-----'; | ||||
| 
 | ||||
| 						return finalString; | ||||
| 				} | ||||
|             return finalString; | ||||
|         } | ||||
| 
 | ||||
|         var wcOpts; | ||||
|         var pemName; | ||||
| @ -543,23 +569,23 @@ | ||||
|           , namedCurve: "P-256" | ||||
|           }; | ||||
|         } | ||||
| 				return crypto.subtle.importKey( | ||||
|         return crypto.subtle.importKey( | ||||
|           "jwk" | ||||
|         , info.serverJwk | ||||
|         , wcOpts | ||||
|         , true | ||||
|         , ["sign"] | ||||
| 				).then(function (privateKey) { | ||||
|         ).then(function (privateKey) { | ||||
|           return window.crypto.subtle.exportKey("pkcs8", privateKey); | ||||
| 				}).then (function (keydata) { | ||||
| 					var pem = spkiToPEM(keydata); | ||||
| 					$qs('#js-privkey').innerHTML = pem; | ||||
|         }).then (function (keydata) { | ||||
|           var pem = spkiToPEM(keydata); | ||||
|           $qs('#js-privkey').innerHTML = pem; | ||||
|           $qs("#js-download-privkey-link").href = | ||||
|             "data:text/octet-stream;base64," + window.btoa(pem); | ||||
|           steps[i](); | ||||
|         }).catch(function(err){ | ||||
|           console.error(err.toString()); | ||||
| 				}); | ||||
|         }); | ||||
|       }); | ||||
|     }); | ||||
|   }; | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user