+function sign (data) {
+ const sign = crypto.createSign(constants.SIGNATURE_ALGORITHM)
+
+ let dataString
+ if (typeof data === 'string') {
+ dataString = data
+ } else {
+ try {
+ dataString = JSON.stringify(data)
+ } catch (err) {
+ logger.error('Cannot sign data.', { error: err })
+ return ''
+ }
+ }
+
+ sign.update(dataString, 'utf8')
+
+ // TODO: make async
+ const certPath = pathUtils.join(constants.CONFIG.STORAGE.CERT_DIR, constants.PRIVATE_CERT_NAME)
+ const myKey = fs.readFileSync(certPath)
+ const signature = sign.sign(myKey, constants.SIGNATURE_ENCODING)
+
+ return signature
+}
+