|
|
@ -5,6 +5,7 @@ var SSH = require('./ssh.js'); |
|
|
|
var PEM = require('./pem.js'); |
|
|
|
var x509 = require('./x509.js'); |
|
|
|
var ASN1 = require('./asn1.js'); |
|
|
|
var Enc = require('./encoding.js'); |
|
|
|
|
|
|
|
/*global Promise*/ |
|
|
|
RSA.generate = function (opts) { |
|
|
@ -202,3 +203,26 @@ RSA.nueter = function (jwk) { |
|
|
|
}); |
|
|
|
return jwk; |
|
|
|
}; |
|
|
|
|
|
|
|
RSA.__thumbprint = function (jwk) { |
|
|
|
var buf = require('crypto').createHash('sha256') |
|
|
|
// alphabetically sorted keys [ 'e', 'kty', 'n' ]
|
|
|
|
.update('{"e":"' + jwk.e + '","kty":"RSA","n":"' + jwk.n + '"}') |
|
|
|
.digest() |
|
|
|
; |
|
|
|
return Enc.bufToUrlBase64(buf); |
|
|
|
}; |
|
|
|
|
|
|
|
RSA.thumbprint = function (opts) { |
|
|
|
return Promise.resolve().then(function () { |
|
|
|
var jwk; |
|
|
|
if ('RSA' === opts.kty) { |
|
|
|
jwk = opts; |
|
|
|
} else if (opts.jwk) { |
|
|
|
jwk = opts.jwk; |
|
|
|
} else { |
|
|
|
jwk = RSA.importSync(opts); |
|
|
|
} |
|
|
|
return RSA.__thumbprint(jwk); |
|
|
|
}); |
|
|
|
}; |
|
|
|