browser.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. var ebtk = require('evp_bytestokey')
  2. var aes = require('browserify-aes/browser')
  3. var DES = require('browserify-des')
  4. var desModes = require('browserify-des/modes')
  5. var aesModes = require('browserify-aes/modes')
  6. function createCipher (suite, password) {
  7. var keyLen, ivLen
  8. suite = suite.toLowerCase()
  9. if (aesModes[suite]) {
  10. keyLen = aesModes[suite].key
  11. ivLen = aesModes[suite].iv
  12. } else if (desModes[suite]) {
  13. keyLen = desModes[suite].key * 8
  14. ivLen = desModes[suite].iv
  15. } else {
  16. throw new TypeError('invalid suite type')
  17. }
  18. var keys = ebtk(password, false, keyLen, ivLen)
  19. return createCipheriv(suite, keys.key, keys.iv)
  20. }
  21. function createDecipher (suite, password) {
  22. var keyLen, ivLen
  23. suite = suite.toLowerCase()
  24. if (aesModes[suite]) {
  25. keyLen = aesModes[suite].key
  26. ivLen = aesModes[suite].iv
  27. } else if (desModes[suite]) {
  28. keyLen = desModes[suite].key * 8
  29. ivLen = desModes[suite].iv
  30. } else {
  31. throw new TypeError('invalid suite type')
  32. }
  33. var keys = ebtk(password, false, keyLen, ivLen)
  34. return createDecipheriv(suite, keys.key, keys.iv)
  35. }
  36. function createCipheriv (suite, key, iv) {
  37. suite = suite.toLowerCase()
  38. if (aesModes[suite]) {
  39. return aes.createCipheriv(suite, key, iv)
  40. } else if (desModes[suite]) {
  41. return new DES({
  42. key: key,
  43. iv: iv,
  44. mode: suite
  45. })
  46. } else {
  47. throw new TypeError('invalid suite type')
  48. }
  49. }
  50. function createDecipheriv (suite, key, iv) {
  51. suite = suite.toLowerCase()
  52. if (aesModes[suite]) {
  53. return aes.createDecipheriv(suite, key, iv)
  54. } else if (desModes[suite]) {
  55. return new DES({
  56. key: key,
  57. iv: iv,
  58. mode: suite,
  59. decrypt: true
  60. })
  61. } else {
  62. throw new TypeError('invalid suite type')
  63. }
  64. }
  65. exports.createCipher = exports.Cipher = createCipher
  66. exports.createCipheriv = exports.Cipheriv = createCipheriv
  67. exports.createDecipher = exports.Decipher = createDecipher
  68. exports.createDecipheriv = exports.Decipheriv = createDecipheriv
  69. function getCiphers () {
  70. return Object.keys(desModes).concat(aes.getCiphers())
  71. }
  72. exports.listCiphers = exports.getCiphers = getCiphers