示例#1
0
exports.decryptJoin = function(packet, AppKey) {
    var pktBufs = packet.getBuffers();
    checkBuffer(pktBufs.MACPayloadWithMIC, "parsed packet");

    checkBufferLength(AppKey, "AppKey", 16);

    // TODO is there a better way to get cryptojs to ingest message/key?
    var cipherstream = CryptoJS.AES.decrypt(
        { ciphertext: CryptoJS.enc.Hex.parse(pktBufs.MACPayloadWithMIC.toString('hex')) },
        CryptoJS.enc.Hex.parse(AppKey.toString('hex')), 
        {
            mode: CryptoJS.mode.ECB,
            padding: CryptoJS.pad.NoPadding
        }
    );
    return new Buffer(CryptoJS.enc.Hex.stringify(cipherstream), 'hex');
};
示例#2
0
				return new Promise(function (resolve, reject) {
					try {
						var decodedJWT = jwt.verify(token, 'qwerty098');
						var bytes = cryptojs.AES.decrypt(decodedJWT.token, 'abc123!@#');
						var tokenData = JSON.parse(bytes.toString(cryptojs.enc.Utf8));

						User.findById(tokenData.id).then(function onSuccess(user) {
							if (user) {
								resolve(user);
							}
						}, function onError(error) {
							reject();
						});
					} catch (error) {
						reject();
					}
				});
示例#3
0
			generateToken: function(type) {
				if(!_.isString(type)) {
					return undefined;
				}

				try {
					var stringData = JSON.stringify({id: this.get('id'), type: type});
					var encryptedData = cryptojs.AES.encrypt(stringData, 'abc123!@#!').toString();
					var token = jwt.sign({
						token: encryptedData
					}, 'qwerty098');
					
					return token;
				} catch (e) {
					return undefined;
				}
			}
示例#4
0
function serverResponse(req, res, status, obj) {
    if (config.crypto.enabled) {
        var CryptoJS = require('crypto-js');

        var encrypted = CryptoJS.AES.encrypt(JSON.stringify(obj), config.crypto.secret);
        obj = {data: String(encrypted)};

        var result = ")]}',\n"+JSON.stringify(obj);

        res.status(status).send(result);
    }
    else {
        var result = ")]}',\n"+JSON.stringify(obj);

        res.status(status).send(result);
    }
}
示例#5
0
文件: user.js 项目: vforv/Chat-App
                    return new Promise(function(resolve, reject) {
                        try{

                            var jwtGet = jwt.verify(token, 'newpassforjwt');
                            var decryptData = cryptojs.AES.decrypt(jwtGet.token, 'tokenpassword123321');
                            var tokenData = JSON.parse(decryptData.toString(cryptojs.enc.Utf8));

                            user.findById(tokenData.id)
                            .then(function (user) {
                                resolve(user);
                            }, function() {
                                
                                reject();
                            });
                        }catch(e) {
                            reject();
                        }
                    });
示例#6
0
    mcryptDecrypt:function(value, iv)
	{
		try
		{
		    switch(CryptMap.cipher[this.cipher]){
			    case 'crypto-js':
				  return (cryptojs.AES.decrypt(value, this.key, {iv:iv, mode:cryptojs.mode[this.mode.toUpperCase()], padding:cryptojs.pad.PKcs7}) || []).toString(cryptojs.enc.Utf8);
				break;
				case 'mcrypt-js':
				  return this.stripPKCS7Padding(mcryptjs.Decrypt(value, iv, this.key, this.cipher.toLowerCase().replace('mcrypt-', ''), this.mode));
				break;
			}
		}
		catch (e)
		{
			throw new CryptError(e.message);
		}
	},
示例#7
0
			generateToken: function (type) {
				if (!_.isString(type)) {
					return undefined;
				}

				try {
					var stringData = JSON.stringify({id: this.get('id'), type: type}); // We declare this variable because AES.encrypt can only take a string.
					var encryptedData = cryptojs.AES.encrypt(stringData, 'abc123').toString(); // Returns encrypted ID and secret as a string.
					var token = jwt.sign({
						token: encryptedData
					}, 'qwerty098');
					console.log(token);
					return token;

				} catch (e) {
					return undefined;
				}
			}
示例#8
0
文件: user.js 项目: sostrovs/Todo-Api
				return new Promise(function(resolve, reject) {
					try {
						var decodedJWT =jwt.verify(token, 'qwerty098')
						var bytes = cryptojs.AES.decrypt(decodedJWT.token, 'abc123!@#!')
						var tokenData = JSON.parse(bytes.toString(cryptojs.enc.Utf8))
						user.findById(tokenData.id).then(function(user){
							if(user) {
								resolve(user)
							} else {
								reject()
							}
						}, function(e) {
							reject()
						})
					} catch(e) {
						reject()
					}
				})
示例#9
0
exports.decrypt = function(packet, AppSKey, NwkSKey) {
    var pktBufs = packet.getBuffers();
    checkBuffer(pktBufs.PHYPayload, "parsed packet");

    // calc number of (16-byte/128-bit) blocks
    var blocks = Math.ceil(pktBufs.FRMPayload.length / 16);

    // create what LoRaWAN calls "Sequence S"
    // TODO this should be (at least) in a Uint8Array for ease of import to cryptojs
    var plain_S = new Buffer(16 * blocks);
    for (var block = 0; block < blocks; block++) {
        var Ai = _metadataBlock_Ai(packet, block);
        Ai.copy(plain_S, block * 16);
    }

    // encrypt "Sequence S" with key to create cipherstream

    // #4.3.3  key depends on port
    var key = packet.getFPort() === 0 ? NwkSKey : AppSKey;
    checkBufferLength(key, "appropriate key", 16);

    // TODO is there a better way to get cryptojs to ingest message/key?
    var cipherstream_base64 = CryptoJS.AES.encrypt(
        CryptoJS.enc.Hex.parse(plain_S.toString('hex')),
        CryptoJS.enc.Hex.parse(key.toString('hex')), {
            mode: CryptoJS.mode.ECB,
            iv: LORA_IV,
            padding: CryptoJS.pad.NoPadding
        });
    var cipherstream = new Buffer(cipherstream_base64.toString(), 'base64');

    // create buffer for decrypted message
    var plaintextPayload = new Buffer(pktBufs.FRMPayload.length);

    // xor the cipherstream with payload to create plaintext
    for (var i = 0; i < pktBufs.FRMPayload.length; i++) {
        var Si = cipherstream.readUInt8(i);
        plaintextPayload.writeUInt8(Si ^ pktBufs.FRMPayload.readUInt8(i), i);
    }

    // TODO? provide a convenience conversion to UTF-8

    return plaintextPayload;
};
示例#10
0
            Subject.findOne({_id: req.body.subject}, function(err, subject){
                if(!subject){
                    res.status(404).send('Subject not found selectsubject');
                } else {
                    var blindedPseudonym = bigInt(req.body.blindedPseudonym);
                    console.log("Blinded pseudonym",blindedPseudonym);
                    var blindedSignedPs = blindedPseudonym.modPow(subject.d,subject.n);
                    console.log("blinded signed ps", blindedSignedPs);
                    var hash = CryptoJS.SHA1(blindedSignedPs.toString(10)).toString(),
                        identData = createId(),
                        keyMsg = createId(),
                        proofString = "SERVER" + "AAA" + identData + "AAA" + hash,
                        proofBigInt = bigInt(proofString.toString('hex'), 16),
                        proofOrg = keys.privateKey.encrypt(proofBigInt),
                        msgEncrypt = CryptoJS.AES.encrypt(blindedSignedPs.toString(10), keyMsg).toString(),
                        message = {
                            "identData": identData,
                            "data": msgEncrypt,
                            "PO": proofOrg,
                            "publicKey": keys.publicKey
                        };

                    var newMessageNR = new MessageNR({
                        source: "TTPServer",
                        destiny: req.body.blindedPseudonym,
                        dataC: msgEncrypt,
                        key: keyMsg,
                        dataCK: blindedSignedPs.toString(10),
                        identData: identData
                    });
                    
                    newMessageNR.save(function (err) {
                        if (!err) {
                            res.status(200).send(message);
                        } else {
                            if (err.name == 'ValidationError') {
                                res.status(400).send('Validation error');
                            } else {
                                res.status(500).send('Server error');
                            }
                        }
                    });
                }
            });
示例#11
0
generateToken = function(user,type){
  if (!_.isString(type)){
    return undefined;
  }

  try {
    //Convert user data to a JSON string
    var stringData = JSON.stringify({id: user._id, type: type});
    var encryptedData = cryptojs.AES.encrypt(stringData, process.env.TOKEN_ENCRYPT.toString()).toString();
    //Create JSON web token
    var token = jwt.sign({
      token: encryptedData
    }, process.env.TOKEN_DECRYPT.toString());
    return token;
  } catch (e) {
    console.error(e);
    return undefined;
  }
};
示例#12
0
 generateToken : function (type){
   console.log("hello");
   if (!_.isString(type)){
     return undefined;
   }
   try{
     var stringData = JSON.stringify({id:this.get('id'),type:type});
     //console.log(stringData);
     var encryptedData = cryptojs.AES.encrypt(stringData,'abc123!@#').toString();
     var token = jwt.sign({
       token:encryptedData
     }, 'azerty');
     console.log(token);
     return token;
   }catch(e){
     console.error(e);
     return undefined;
   }
 }
示例#13
0
function createAccount(account){
	var accounts = storage.getItemSync('accounts');

	if(typeof accounts === 'undefined')
	{
		accounts = [];
	}else{
		var bytes = crypto.AES.decrypt(accounts,account.masterPassword);

		accounts = JSON.parse(bytes.toString(crypto.enc.Utf8));
	}

	accounts.push(account);

	saveAccounts(accounts,account.masterPassword);


	return account;
}
示例#14
0
文件: user.js 项目: viggyr/todo-api
				return new Promise(function(resolve, reject) {
					try {
						var decodedJwt = jwt.verify(token, 'qwerty098');

						var bytes = cryptojs.AES.decrypt(decodedJwt.token, 'abc123');
						var tokenData = JSON.parse(bytes.toString(cryptojs.enc.Utf8));
						users.findById(tokenData.id).then(function(user) {
							if (user)
								resolve(user);
							

						}, function(err) {
							reject(500);
						});
						//takes the token and the secret key
					} catch (err) {
						reject();
					}
				});
示例#15
0
export function decryptKey (sharekey, a) {
  let x = []

  for (var i = 0; i < a.length; i += 4) {
    x = x.concat(CryptoJS.AES.decrypt(
      CryptoJS.lib.CipherParams.create({
        ciphertext: CryptoJS.lib.WordArray.create([a[i], a[i + 1], a[i + 2], a[i + 3]])
      }),
      CryptoJS.lib.WordArray.create(sharekey), {
        iv: CryptoJS.lib.WordArray.create([0, 0, 0, 0]),
        padding: {
          pad: function () {},
          unpad: function () {}
        }
      }).words)
  }

  return x
}
示例#16
0
 generateToken: function (type) {
     if (!_.isString(type)) {
         return undefined;
     }
     try {
         var stringData = JSON.stringify({
             id: this.get('id'),
             type: type
         })
         var encryptedData = cryptjs.AES.encrypt(stringData, 'abc123!').toString();
         var token = jwt.sign({
             token: encryptedData
         }, 'qwerty')
         return token
     } catch (e) {
         // console.error(e)
         return undefined
     }
 }
示例#17
0
文件: user.js 项目: mtdtao/TodoServer
				return new Promise(function(resolve, reject) {
					try {
						var decodedJWT = jwt.verify(token, 'whatebeas23f3');
						var bytes = cryptojs.AES.decrypt(decodedJWT.token, 'abc123($#%');
						var tokenData = JSON.parse(bytes.toString(cryptojs.enc.Utf8));

						user.findById(tokenData.id).then(function(user) {
							if (user) {
								resolve(user);
							} else {
								reject();
							}
						}, function() {
							reject();
						})
					} catch (e) {
						reject();
					}
				});
示例#18
0
				return new Promise(function (resolve, reject) {
					try {
						var decodedJWT = jwt.verify(token, 'qwerty098'); // decodedJWT now has the value of token in the generateToken instance method after jwt.verify verifies it hasn't been modified. 
						var bytes = cryptojs.AES.decrypt(decodedJWT.token, 'abc123'); // bytes now has the value of encryptedData because we are accessing the token property of the token variable (see generateToken method). That data contains user id and the type.
						var tokenData = JSON.parse(bytes.toString(cryptojs.enc.Utf8)); //JSON.parse takes string JSON and turns it into a javascript object, in generateToken the var stringData was passed to JSON.stringify(), so it must be converted back to an object.

					    user.findById(tokenData.id).then(function (user) { //Retrieves the user based on the id which was extracted from the decrypted token.
					    	if (user) {
					    		resolve(user);
					    	} else {
					    		reject();
					    	}
					    }, function (e) {
					    	reject();
					    })	
					} catch (e) {
						reject();
					}
				});
示例#19
0
    o.decode = function(recipientPrivate, senderPublic, payload) {
        var binPayload = convert.hex2ua(payload);
        var salt = new Uint8Array(binPayload.buffer, 0, 32);
        var iv = new Uint8Array(binPayload.buffer, 32, 16);
        var payload = new Uint8Array(binPayload.buffer, 48);

        var sk = convert.hex2ua_reversed(recipientPrivate);
        var pk = convert.hex2ua(senderPublic);
        var shared = new Uint8Array(32);
        var r = key_derive(shared, salt, sk, pk);

        var encKey = r;
        var encIv = { iv: ua2words(iv, 16) };

        var encrypted = {"ciphertext":ua2words(payload, payload.length)};
        var plain = CryptoJS.AES.decrypt(encrypted, encKey, encIv);
        var hexplain = CryptoJS.enc.Hex.stringify(plain);
        return hexplain;
    };
示例#20
0
                return new Promise(function(resolve, reject){
                    try {
                        var decodedJWT = jwt.verify(token, process.env.JWT_SIGNING_KEY);
                        var bytes = cryptojs.AES.decrypt(decodedJWT.token, process.env.TOKEN_ENCRYPTION_KEY);
                        var tokenData = JSON.parse(bytes.toString(cryptojs.enc.Utf8));

                        user.findById(tokenData.id).then(function(user) {
                            if(user) {
                                resolve(user);
                            } else {
                                reject();
                            }
                        }, function(e) {
                           reject(e);
                        });
                    } catch(e) {
                        reject(e);
                    }
                });
示例#21
0
				return new Promise(function(resolve, reject) {
					try {
						var decodedJWT = jwt.verify(token, JWT_SECRET_KEY);
						var bytes = cryptojs.AES.decrypt(decodedJWT.token, CJS_SECRET_KEY);
						var tokenData = JSON.parse(bytes.toString(cryptojs.enc.Utf8));

						user.findById(tokenData.id).then(function (user) {
							if(user) {
								resolve(user);
							} else {
								reject();
							}
						}).catch(function(e) {
							reject();
						}); 
					} catch (e) {
						reject();
					}
				});
示例#22
0
文件: wsck.js 项目: zslx/nodejs
function login(ws, req) {
    console.log('登录信息',req);
    console.log('login info', userinfo);
    
    const secuser = req.u,
          secpwd = req.p,
          ki = req.i;

    if(seckeys[ki]!==undefined) {
        var kv = seckeys[ki];
    }else{
        // 非法登录
        ws.send('登录错误');
        return;
    }

    // 必须指定编码
    const user = cryptojs.AES.decrypt(secuser, kv).toString(cryptojs.enc.Utf8);
    let uo = userinfo[user];
    if(uo === undefined){
        ws.send('用户名错误');
        return;
    }
    if(md5(uo.pwd+kv) !== secpwd){
        ws.send('密码错误');
        return;
    }

    crypto.randomBytes(16, (err, buf) => {
        if (err) {
            console.log('randomBytes err:',err);
        }else{
            let session = buf.toString('hex');
            console.log(`${buf.length}bytes random str:${session}`);
            console.log('delete seckey',ki);
            delete seckeys[ki];
            loginsessions[session] = {user, ws};
            uo.ws = ws;
            ws.send(['loginOK',session].join('\r\n'));
        }
    });    
}
示例#23
0
accountMethods.register = (req, res) => {
  let { username, email, password, passwordConfirm } = req.body

  if (!username || !email || !password || !passwordConfirm) {
    return res.status(400).json({ message: res.__('ALL_REGISTRATION_DATA_REQUIRED') })
  }

  username = username.toLowerCase()
  email = email.toLowerCase()

  if (password !== passwordConfirm) {
    return res.status(400).json({ message: res.__('PASSWORD_DID_NOT_MATCH') })
  }

  if (password.length < 6) {
    return res.status(400).json({ message: res.__('PASSWORD_AT_LEAST_6_CHARS') })
  }

  password = CryptoJS.AES.encrypt(password, config.DATABASE.SECRET)

  User.findOne({ $or: [{username}, {email}] })
    .then(user => {
      if (user) return res.status(400).json({ message: res.__('DATA_IN_USE') })

      const account = new User({
        username,
        email,
        password
      })

      account.save()
        .then(() => {
          return res.status(201).json({ message: res.__('ACCOUNT_CREATED') })
        })
        .catch(error => {
          if (error) return res.status(400).json({ message: error })
        })
    })
    .catch(error => {
      if (error) return res.status(400).json({ message: error })
    })
}
示例#24
0
            generateToken: function (type) {
                var encryptedData,
                    stringData = JSON.stringify({id: this.get('id'), type: type}),
                    token;
                if (!_.isString(type)) {
                    return undefined;
                }

                try {
                    encryptedData = cryptojs.AES.encrypt(stringData, 'token').toString();
                    token = jwt.sign({
                        token: encryptedData
                    }, 'encrypt');

                    return token;
                } catch(e) {
                    console.log('Failure to create token', e);
                    return undefined;
                }
            }
示例#25
0
文件: user.js 项目: belcurv/Todo-App
                generateToken: function (type) {
                    // if type doesn't exist
                    if (!_.isString(type)) {
                        return undefined;
                    }

                    // if everything goes well, try & catch
                    try {
                        var stringData = JSON.stringify({ id: this.get('id'), type: type }),
                            encryptedData = CryptoJS.AES.encrypt(stringData, 'abc123!@#!').toString(),
                            token = jwt.sign({             // jwt.sign takes 2 arguments:
                                token: encryptedData       // the body
                            }, 'qwerty098');               // the jwt password

                        return token;
                    } catch (err) {
                        console.error(err);
                        return undefined;
                    }
                }
示例#26
0
				return new Promise(function(resolve, reject) {
					try {
						//take the jwt and get back the original data
						var decodedJWT = jwt.verify(token ,'qwerty098');
						var bytes = cryptojs.AES.decrypt(decodedJWT.token, 'abc123!@#!');
						var tokenData = JSON.parse(bytes.toString(cryptojs.enc.Utf8));

						user.findById(tokenData.id).then(function(user){
							if(user){
								resolve(user);
							} else {
								reject();
							}
						}, function (e){
							reject();
						});
					} catch (e) {
						reject();
					}
				});
示例#27
0
文件: user.js 项目: jyleong/todoAPI
			generateToken: function(type) {
				if (!_.isString(type)) {
					return undefined;
				}
				try {
					var stringData = JSON.stringify({
						id: this.get('id'),
						type: type
					});
					var encryptedData = cryptojs.AES.encrypt(stringData, 'abc123!').toString();
					// now create json web token
					var token = jwt.sign({
						token: encryptedData
					}, 'password1');
					console.log(token);
					return token;
				} catch (e) {
					return undefined;
				}
			}
示例#28
0
文件: user.js 项目: jyleong/todoAPI
				return new Promise(function(resolve, reject) {
					// do opposite of geenrate token
					try {
						var decodedJWT = jwt.verify(token, 'password1');
						//decryt the data
						var bytes = cryptojs.AES.decrypt(decodedJWT.token, 'abc123!');
						var tokenData = JSON.parse(bytes.toString(cryptojs.enc.Utf8));
						user.findById(tokenData.id).then(function(user) {
							if (user) {
								resolve(user);
							} else {
								reject();
							}
						}, function(e) {
							reject();
						});
					} catch (e) {
						reject(e);
					}
				});
示例#29
0
    padAndMcrypt:function(value, iv)
	{
		value = this.addPadding(phpjs.serialize(value));

		try
		{
		    switch(CryptMap.cipher[this.cipher]){
			    case 'crypto-js':
				  return (cryptojs.AES.encrypt(value, this.key, {iv:iv, mode:cryptojs.mode[this.mode.toUpperCase()]}) || []).toString();
				break;
				case 'mcrypt-js':
				  return mcryptjs.Encrypt(value, iv, this.key, this.cipher.toLowerCase().replace('mcrypt-', ''), this.mode);
				break;
			}
		}
		catch (e)
		{
			throw new CryptError(e.message);
		}
	},
示例#30
0
                return new Promise(function(resolve, reject) {
                    try {
                        var decodedJWT = jwt.verify(token, 'zxcvb012');
                        var bytes = cryptojs.AES.decrypt(decodedJWT.token, 'xyz987!@#!');
                        var tokenData = JSON.parse(bytes.toString(cryptojs.enc.Utf8));

                        deliveryman.findById(tokenData.id).then(function(deliveryman) {
                            if (deliveryman) {
                                resolve(deliveryman);
                            } else {
                                reject();
                            }
                        }, function(e) {
                            reject();
                        });

                    } catch (e) {
                        reject();
                    }
                });