]>
git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/helpers/peertube-crypto.js
302ddca58d4bf111267271dbf8c918307ae3fc8e
3 const bcrypt
= require('bcrypt')
4 const crypto
= require('crypto')
5 const fs
= require('fs')
6 const openssl
= require('openssl-wrapper')
7 const ursa
= require('ursa')
9 const constants
= require('../initializers/constants')
10 const logger
= require('./logger')
12 const peertubeCrypto
= {
15 createCertsIfNotExist
,
20 function checkSignature (publicKey
, rawData
, hexSignature
) {
21 const crt
= ursa
.createPublicKey(publicKey
)
22 const isValid
= crt
.hashAndVerify('sha256', new Buffer(rawData
).toString('hex'), hexSignature
, 'hex')
26 function comparePassword (plainPassword
, hashPassword
, callback
) {
27 bcrypt
.compare(plainPassword
, hashPassword
, function (err
, isPasswordMatch
) {
28 if (err
) return callback(err
)
30 return callback(null, isPasswordMatch
)
34 function createCertsIfNotExist (callback
) {
35 certsExist(function (exist
) {
40 createCerts(function (err
) {
46 function cryptPassword (password
, callback
) {
47 bcrypt
.genSalt(constants
.BCRYPT_SALT_SIZE
, function (err
, salt
) {
48 if (err
) return callback(err
)
50 bcrypt
.hash(password
, salt
, function (err
, hash
) {
51 return callback(err
, hash
)
56 function sign (data
) {
57 const myKey
= ursa
.createPrivateKey(fs
.readFileSync(constants
.CONFIG
.STORAGE
.CERT_DIR
+ 'peertube.key.pem'))
58 const signature
= myKey
.hashAndSign('sha256', data
, 'utf8', 'hex')
63 // ---------------------------------------------------------------------------
65 module
.exports
= peertubeCrypto
67 // ---------------------------------------------------------------------------
69 function certsExist (callback
) {
70 fs
.exists(constants
.CONFIG
.STORAGE
.CERT_DIR
+ 'peertube.key.pem', function (exists
) {
71 return callback(exists
)
75 function createCerts (callback
) {
76 certsExist(function (exist
) {
78 const string
= 'Certs already exist.'
79 logger
.warning(string
)
80 return callback(new Error(string
))
83 logger
.info('Generating a RSA key...')
86 'out': constants
.CONFIG
.STORAGE
.CERT_DIR
+ 'peertube.key.pem',
89 openssl
.exec('genrsa', options
, function (err
) {
91 logger
.error('Cannot create private key on this pod.')
94 logger
.info('RSA key generated.')
97 'in': constants
.CONFIG
.STORAGE
.CERT_DIR
+ 'peertube.key.pem',
99 'out': constants
.CONFIG
.STORAGE
.CERT_DIR
+ 'peertube.pub'
101 logger
.info('Manage public key...')
102 openssl
.exec('rsa', options
, function (err
) {
104 logger
.error('Cannot create public key on this pod.')
108 logger
.info('Public key managed.')
109 return callback(null)