Файловый менеджер - Редактировать - /home/freeclou/app.optimyar.com/front-web/build/assets/fonts/iran-yekan/MobileFonts/wgdpf7/test.tar
Назад
1024.priv 0000664 00000001624 15103224244 0006036 0 ustar 00 -----BEGIN PRIVATE KEY----- MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAKulUTZ8B1qccZ8c DXRGSY08gW8KvLlcxxxGC4gZHNT3CBUF8n5R4KE30aZyYZ/rtsQZu05juZJxaJ0q mbe75dlQ5d+Xc9BMXeQg/MpTZw5TAN7OIdGYYpFBe+1PLZ6wEfjkYrMqMUcfq2Lq hTLdAbvBJnuRcYZLqmBeOQ8FTrKrAgMBAAECgYEAnkHRbEPU3/WISSQrP36iyCb2 S/SBZwKkzmvCrBxDWhPeDswp9c/2JY76rNWfLzy8iXgUG8WUzvHje61Qh3gmBcKe bUaTGl4Vy8Ha1YBADo5RfRrdm0FE4tvgvu/TkqFqpBBZweu54285hk5zlG7n/D7Y dnNXUpu5MlNb5x3gW0kCQQDUL//cwcXUxY/evaJP4jSe+ZwEQZo+zXRLiPUulBoV aw28CVMuxdgwqAo1X1IKefPeUaf7RQu8gCKaRnpGuEuXAkEAzxZTfMmvmCUDIew4 5Gk6bK265XQWdhcgiq254lpBGOYmDj9yCE7yA+zmASQwMsXTdQOi1hOCEyrXuSJ5 c++EDQJAFh3WrnzoEPByuYXMmET8tSFRWMQ5vpgNqh3haHR5b4gUC2hxaiunCBNL 1RpVY9AoUiDywGcG/SPh93CnKB3niwJBAKP7AtsifZgVXtiizB4aMThTjVYaSZrz D0Kg9DuHylpkDChmFu77TGrNUQgAVuYtfhb/bRblVa/F0hJ4eQHT3JUCQBVT68tb OgRUk0aP9tC3021VN82X6+klowSQN8oBPX8+TfDWSUilp/+j24Hky+Z29Do7yR/R qutnL92CvBlVLV4= -----END PRIVATE KEY----- 1024.pub 0000664 00000000420 15103224244 0005635 0 ustar 00 -----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrpVE2fAdanHGfHA10RkmNPIFv Cry5XMccRguIGRzU9wgVBfJ+UeChN9GmcmGf67bEGbtOY7mScWidKpm3u+XZUOXf l3PQTF3kIPzKU2cOUwDeziHRmGKRQXvtTy2esBH45GKzKjFHH6ti6oUy3QG7wSZ7 kXGGS6pgXjkPBU6yqwIDAQAB -----END PUBLIC KEY----- ec.pass.priv 0000664 00000000573 15103224244 0007006 0 ustar 00 -----BEGIN ENCRYPTED PRIVATE KEY----- MIHeMEkGCSqGSIb3DQEFDTA8MBsGCSqGSIb3DQEFDDAOBAi9LqZQx4JFXAICCAAw HQYJYIZIAWUDBAECBBA+js1fG4Rv/yRN7oZvxbgyBIGQ/D4yj86M1x8lMsnAHQ/K 7/ryb/baDNHqN9LTZanEGBuyxgrTzt08SiL+h91yFGMoaly029K1VgEI8Lxu5Np/ A+LK7ewh73ABzsbuxYdcXI+rKnrvLN9Tt6veDs4GlqTTsWwq5wF0C+6gaYRBXA74 T1b6NykGh2UNL5U5pHZEYdOVLz+lRJL7gYqlweNHP/S3 -----END ENCRYPTED PRIVATE KEY----- ec.priv 0000664 00000000337 15103224244 0006037 0 ustar 00 -----BEGIN EC PRIVATE KEY----- MHQCAQEEIDF6Xv8Sv//wGUWD+c780ppGrU0QdZWCAzxAQPQX8r/uoAcGBSuBBAAK oUQDQgAEIZeowDylls4K/wfBjO18bYo7gGx8nYQRija4e/qEMikOHJai7geeUreU r5Xky/Ax7s2dGtegsPNsPgGe5MpQvg== -----END EC PRIVATE KEY----- ec.pub 0000664 00000000256 15103224244 0005645 0 ustar 00 -----BEGIN PUBLIC KEY----- MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEIZeowDylls4K/wfBjO18bYo7gGx8nYQR ija4e/qEMikOHJai7geeUreUr5Xky/Ax7s2dGtegsPNsPgGe5MpQvg== -----END PUBLIC KEY----- index.js 0000664 00000010230 15103224244 0006204 0 ustar 00 var test = require('tape') var fs = require('fs') var parseKeys = require('parse-asn1') var Buffer = require('safe-buffer').Buffer var path = require('path') require('./nodeTests') var rsa1024 = { private: fs.readFileSync(path.join(__dirname, 'rsa.1024.priv')), public: fs.readFileSync(path.join(__dirname, 'rsa.1024.pub')) } var rsa1024priv = { private: fs.readFileSync(path.join(__dirname, 'rsa.1024.priv')), public: fs.readFileSync(path.join(__dirname, 'rsa.1024.priv')) } var rsa2028 = { private: fs.readFileSync(path.join(__dirname, 'rsa.2028.priv')), public: fs.readFileSync(path.join(__dirname, 'rsa.2028.pub')) } var nonrsa1024 = { private: fs.readFileSync(path.join(__dirname, '1024.priv')), public: fs.readFileSync(path.join(__dirname, '1024.pub')) } var nonrsa1024str = { private: fs.readFileSync(path.join(__dirname, '1024.priv')).toString(), public: fs.readFileSync(path.join(__dirname, '1024.pub')).toString() } var pass1024 = { private: { passphrase: 'fooo', key: fs.readFileSync(path.join(__dirname, 'pass.1024.priv')) }, public: fs.readFileSync(path.join(__dirname, 'pass.1024.pub')) } var pass2028 = { private: { passphrase: 'password', key: fs.readFileSync(path.join(__dirname, 'rsa.pass.priv')) }, public: fs.readFileSync(path.join(__dirname, 'rsa.pass.pub')) } var nodeCrypto = require('../') var myCrypto = require('../browser') function _testIt (keys, message, t) { var pub = keys.public var priv = keys.private t.test(message.toString(), function (t) { t.plan(8) var myEnc = myCrypto.publicEncrypt(pub, message) var nodeEnc = nodeCrypto.publicEncrypt(pub, message) t.equals(myCrypto.privateDecrypt(priv, myEnc).toString('hex'), message.toString('hex'), 'my decrypter my message') t.equals(myCrypto.privateDecrypt(priv, nodeEnc).toString('hex'), message.toString('hex'), 'my decrypter node\'s message') t.equals(nodeCrypto.privateDecrypt(priv, myEnc).toString('hex'), message.toString('hex'), 'node decrypter my message') t.equals(nodeCrypto.privateDecrypt(priv, nodeEnc).toString('hex'), message.toString('hex'), 'node decrypter node\'s message') myEnc = myCrypto.privateEncrypt(priv, message) nodeEnc = nodeCrypto.privateEncrypt(priv, message) t.equals(myCrypto.publicDecrypt(pub, myEnc).toString('hex'), message.toString('hex'), 'reverse methods my decrypter my message') t.equals(myCrypto.publicDecrypt(pub, nodeEnc).toString('hex'), message.toString('hex'), 'reverse methods my decrypter node\'s message') t.equals(nodeCrypto.publicDecrypt(pub, myEnc).toString('hex'), message.toString('hex'), 'reverse methods node decrypter my message') t.equals(nodeCrypto.publicDecrypt(pub, nodeEnc).toString('hex'), message.toString('hex'), 'reverse methods node decrypter node\'s message') }) } function testIt (keys, message, t) { _testIt(keys, message, t) _testIt(paddingObject(keys, 1), Buffer.concat([message, Buffer.from(' with RSA_PKCS1_PADDING')]), t) var parsedKey = parseKeys(keys.public) var k = parsedKey.modulus.byteLength() var zBuf = Buffer.alloc(k) var msg = Buffer.concat([zBuf, message, Buffer.from(' with no padding')]).slice(-k) _testIt(paddingObject(keys, 3), msg, t) } function paddingObject (keys, padding) { return { public: addPadding(keys.public, padding), private: addPadding(keys.private, padding) } } function addPadding (key, padding) { if (typeof key === 'string' || Buffer.isBuffer(key)) { return { key: key, padding: padding } } var out = { key: key.key, padding: padding } if ('passphrase' in key) { out.passphrase = key.passphrase } return out } function testRun (i) { test('run ' + i, function (t) { testIt(rsa1024priv, Buffer.from('1024 2 private keys'), t) testIt(rsa1024, Buffer.from('1024 keys'), t) testIt(rsa2028, Buffer.from('2028 keys'), t) testIt(nonrsa1024, Buffer.from('1024 keys non-rsa key'), t) testIt(pass1024, Buffer.from('1024 keys and password'), t) testIt(nonrsa1024str, Buffer.from('1024 keys non-rsa key as a string'), t) testIt(pass2028, Buffer.from('2028 rsa key with variant passwords'), t) }) } var i = 0 var num = 20 while (++i <= num) { testRun(i) } nodeTests.js 0000664 00000003352 15103224244 0007054 0 ustar 00 var crypto = require('../browser') var test = require('tape') var fs = require('fs') var Buffer = require('safe-buffer').Buffer var path = require('path') // Test RSA encryption/decryption test('node tests', function (t) { var keyPem = fs.readFileSync(path.join(__dirname, 'test_key.pem'), 'ascii') var rsaPubPem = fs.readFileSync(path.join(__dirname, 'test_rsa_pubkey.pem'), 'ascii') var rsaKeyPem = fs.readFileSync(path.join(__dirname, 'test_rsa_privkey.pem'), 'ascii') var rsaKeyPemEncrypted = fs.readFileSync(path.join( __dirname, 'test_rsa_privkey_encrypted.pem'), 'ascii') var input = 'I AM THE WALRUS' var bufferToEncrypt = Buffer.from(input) var encryptedBuffer = crypto.publicEncrypt(rsaPubPem, bufferToEncrypt) var decryptedBuffer = crypto.privateDecrypt(rsaKeyPem, encryptedBuffer) t.equal(input, decryptedBuffer.toString()) var decryptedBufferWithPassword = crypto.privateDecrypt({ key: rsaKeyPemEncrypted, passphrase: 'password' }, encryptedBuffer) t.equal(input, decryptedBufferWithPassword.toString()) // encryptedBuffer = crypto.publicEncrypt(certPem, bufferToEncrypt); // decryptedBuffer = crypto.privateDecrypt(keyPem, encryptedBuffer); // t.equal(input, decryptedBuffer.toString()); encryptedBuffer = crypto.publicEncrypt(keyPem, bufferToEncrypt) decryptedBuffer = crypto.privateDecrypt(keyPem, encryptedBuffer) t.equal(input, decryptedBuffer.toString()) encryptedBuffer = crypto.privateEncrypt(keyPem, bufferToEncrypt) decryptedBuffer = crypto.publicDecrypt(keyPem, encryptedBuffer) t.equal(input, decryptedBuffer.toString()) t.throws(function () { crypto.privateDecrypt({ key: rsaKeyPemEncrypted, passphrase: 'wrong' }, encryptedBuffer) }) t.end() }) pass.1024.priv 0000664 00000002036 15103224244 0007001 0 ustar 00 -----BEGIN ENCRYPTED PRIVATE KEY----- MIICzzBJBgkqhkiG9w0BBQ0wPDAbBgkqhkiG9w0BBQwwDgQIji3ZZ6JbsA4CAggA MB0GCWCGSAFlAwQBFgQQC6MKblq8zyX90/KmgotsMQSCAoDghNf+yxPC/KRh7F3O k0lMgtDkV+wCLDv7aBvUqy8Ry2zqFPIlfLb8XtSW943XEu6KUI13IZPEr8p9h1ve Iye6L0g6uAgbFxBE2DwBBSI7mYr7lokr4v0k+inMKf4JeRdI9XWgwOILKTGf1vH7 PhvBnqLhOg6BIOuF426qpiyYlmRda74d0Th4o6ZyhyMSzPI1XbWSg719Ew3N/tLe OHdYl0eFrgNjq+xO4Ev+W7eNIh/XBMQtk9wo+mxeNdldRnX822HxTsL8fSSPs+9T W5M/2EBTJMSsswSjZyFkq8ehtxovI2u0IBX1IiPulyUZLnSNPDV1eUVClK6rk+q1 kVsfJhUr2qvIjNlQWlbEXQj4VwGtgl0++l8vdpj59MuN2J3Nx5TNMLjA6BYAa/tr Bu928QoT7ET+SGx5XKCwKb5fwXmDlV5zZC4kZWTaF/d/Icvj5F+fDZuYFg1JOXNZ +q2oA1qMYaHGX6lF3pbO84ebg1iwQTDM8iIqFeSMGUJTnk/3a7sqfaWQbEQwGb+X fXnSTwkF+wO2rriPbFvWyzecWu67zDCP0ZWUgGb86sSJCM7xRGShESwCjOrb88F1 5SZjyIqogrkc3IWiLH9gc5U8d86qoFjJnP6BfwYks1UIyXNGKfZTCqICpMphV+IS b0N2jprjLTkWR6nxYGSH1bkKMs7x1M0FBLWWLAZqPn9X3pe6JwIBds04O6XjF0un oxwDjcJdoxVs7PgRiM5d1Tubqu2zmpCCmXNiqi9B0+rV9/jHg9IA5gUfvYdCcEv+ oAr90I+2+PuBFa9lgdbDV6DtZk4bSYluqamxVeLPg/vrewYfVfDv6jftfY1D0DEy 69H0 -----END ENCRYPTED PRIVATE KEY----- pass.1024.pub 0000664 00000000420 15103224244 0006602 0 ustar 00 -----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDSK/7i5BV0x+gmX16Wrm7kRkCZ y1QUt6wiM2g+SAZTYR0381VnSMX2cv7CpN3499lZj1rL5S7YTaZZwX3RvU5fz56/ eDX6ciL/PZsbclN2KdkMWYgmcb9J1zUeoMQ3cjfFUCdQZ/ZvDWa+wY2Zg8os2Bow AoufHtYHm3eOly/cWwIDAQAB -----END PUBLIC KEY----- rsa.1024.priv 0000664 00000001553 15103224244 0006623 0 ustar 00 -----BEGIN RSA PRIVATE KEY----- MIICVAIBAAJ/OwswbFo/uyC8ltGf/yA1A+gV5IGdnAgPbUSI3GzbHCA+x+TLG/tL vbRw3r1smppY/jkkpiVW1ErSMuN0uixp5gb78Z9rH1XpWb5WWgp3WaY/9EHMjMdO kQ/9LVZvRvl/M/Fi6owP+q+amJI1BEjECYfbhGL3rmlVdq4qXc40QwIDAQABAn8I VZ0BPoAOhyF33KFMHxy8r28fsVgxJUYgM3NqQgdv4fFawCYXjhJz9duU5YJGFJGJ WUGeHlkyYFlpi4f3m7tY7JawmQUWB0MNSoKHI3cgDX4/tfBN8ni+cO0eSoR5czBY EsAHBU47p1awNFAHwd+ZEuv9H4RmMn7p279rQTtpAkAH3Nqs2/vrRF2cZUN4fIXf 4xHsQBByUayGq8a3J0UGaSFWv68zTUKFherr9uZotNp7NJ4jBXiARw0q8docXUG1 AkAHgmOKHoORtAmikqpmFEJZOtsXMaLCIm4EszPo5ciYoLMBcVit09AdiQlt7ZJL DY02svU1b0agCZ97kDkmHDkXAkACa8M9JELuDs/P/vIGYDkMVatIFfW6bWF02eFG taWwMqCcSEsWvbw0xqYt34jURpNbCjmCyQVwYfAw/+TLhP9dAkAFwRjdwjw37qpj ddg1mNiu37b7swFxmkiMOXZRxaNNsfb56A14RpN3zob3QdGUybGodMIKTFbmU/lu CjqAxafJAkAG2yf6RWbwFIWfMyt7WYCh0VaGBCcgy574AinVieEo3ZZyFfC63+xm 3uoaNy4iLoJv4GCjqUBz3ZfcVaO/DDWG -----END RSA PRIVATE KEY----- rsa.1024.pub 0000664 00000000367 15103224244 0006433 0 ustar 00 -----BEGIN RSA PUBLIC KEY----- MIGGAn87CzBsWj+7ILyW0Z//IDUD6BXkgZ2cCA9tRIjcbNscID7H5Msb+0u9tHDe vWyamlj+OSSmJVbUStIy43S6LGnmBvvxn2sfVelZvlZaCndZpj/0QcyMx06RD/0t Vm9G+X8z8WLqjA/6r5qYkjUESMQJh9uEYveuaVV2ripdzjRDAgMBAAE= -----END RSA PUBLIC KEY----- rsa.2028.priv 0000664 00000003163 15103224244 0006627 0 ustar 00 -----BEGIN RSA PRIVATE KEY----- MIIEjwIBAAKB/gy7mjaWgPeFdVYDZWRCA9BNiv3pPb0es27+FKY0hszLaOw47ExC tAWpDsH48TXAfyHBYwBLguayfk4LGIupxb+CGMbRo3xEp0CbfY1Jby26T9vGjRC1 foHDDUJG84uaRbyHqaf4i6zt4gVR+xlAEIjkaFAAK8cOoXAT1CVqGLLljUCchL8P jaHj/yriZ/S7rdwlI3LnABxwwmLrmR/v71WtpmO/aNG8N+1po+QwaghTkyQ59E/Z vAuOkFWHok2q/R6PYAa2jdZ9zim0FqOP+nkQaEDRbBFBmBqTv5fFGfk2WsAfKf/R G0/VFd+ZeM5251TeTvXH695nlSGauVl9AgMBAAECgf4LrWHY/l54ouThZWvvbrug pfz6sJX2g9l7yXmWlEWsPECVo/7SUbpYFpt6OZy99zSg+IKbGqWKfdhoKrTwIVtC L0YZ0NlmdnANSIz0roxQG7ZxkL5+vHSw/PmD9x4Uwf+Cz8hATCmNBv1qc60dkyuW 4CLqe72qaTiVWRoO1iagQghNcLoo6vSy65ExLaCDTPha7yu2vw4hFZpWiEjW4dxf rFdLiix52BC86YlAlxME/rLg8IJVvilbyo9aWdXmxOaUTLRv6PkFD1/gVdw8V9Qr SLN9FlK2kkjiX0dzoibvZw3tMnt3yydAx0X87+sMRVahC1bp3kVPz4Hy0EWX4QJ/ PM31vGiuITk2NCd51DXt1Ltn2OP5FaJSmCaEjh0XkU4qouYyjXWt8Bu6BTCl2vua Fg0Uji9C+IkPLmaUMbMIOwaTk8cWqLthSxsLe70J5OkGrgfKUM/w+BHH1Pt/Pjzj C++l0kiFaOVDVaAV9GpLPLCBoK/PC9Rb/rxMMoCCNwJ/NZuedIny2w3LMii77h/T zSvergNGhjY6Rnva8lLXJ6dlrkcPAyps3gWwxqj4NR0T+GM0bDUPVLb7M07XV7SX v7VJGm52JbRGwM1ss+r8XTTNemeGk+WRxG7TgtsMqYGXLfB8Qxk/f5/Mcc00Tl8u wXFNsfxJxmt6AbsTr3g36wJ/IhOnibz9Ad+nchlBnN3QeW3CKHqzaR18voqvtVm2 kJfHK15prH/sSGmxmiEGgrCJTZxtDbaNCO7/VBjnKudUUIhCAwsLtuq0/zub9vAd 8G1scfIpv5qaSNzmKoX8bOwArvrS6wP7yKrcTsuWIlHD8rJVI7IEDnQoTp5G8fK1 hwJ/MIh8M5v0r5dUYEv6oIJWGcle6AH1JmsP5WIafgq72Z2288pHcCFHwNY8Dg9J 76QswVLnUhPTlmm3EOOPGEtam2iAD5r0Afytlb4lbNoQsj2szeXONDXB+6oueajh VNELUr8HcSP5lgzRZjJW6aFIzj9LDRmQnUAOjGSXVOQtEwJ/MCQZ7N/v4dIKeDRA 8d8UExZ3+gGHumziztGRJ0tQryZH2PakP5I7V+1l7qEUnJ2c3mF+e1v41Ep9LCvh bzrPKw9dxh18g4b+7bMpsWPnsraKh6ipxc7aaOaZV0Dxgez4zcZu0P1olO0cN3KM nxJ0Pds3R8bAhNCDdS2JZaRp5Q== -----END RSA PRIVATE KEY----- rsa.2028.pub 0000664 00000000646 15103224244 0006440 0 ustar 00 -----BEGIN RSA PUBLIC KEY----- MIIBBgKB/gy7mjaWgPeFdVYDZWRCA9BNiv3pPb0es27+FKY0hszLaOw47ExCtAWp DsH48TXAfyHBYwBLguayfk4LGIupxb+CGMbRo3xEp0CbfY1Jby26T9vGjRC1foHD DUJG84uaRbyHqaf4i6zt4gVR+xlAEIjkaFAAK8cOoXAT1CVqGLLljUCchL8PjaHj /yriZ/S7rdwlI3LnABxwwmLrmR/v71WtpmO/aNG8N+1po+QwaghTkyQ59E/ZvAuO kFWHok2q/R6PYAa2jdZ9zim0FqOP+nkQaEDRbBFBmBqTv5fFGfk2WsAfKf/RG0/V Fd+ZeM5251TeTvXH695nlSGauVl9AgMBAAE= -----END RSA PUBLIC KEY----- rsa.pass.priv 0000664 00000003322 15103224244 0007177 0 ustar 00 -----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED DEK-Info: AES-256-CBC,7A6A055AD675947A657041422F06D439 HQdjzAKUuqqKhZHmpzzY/monfqFhiHnZ5c24jtR9fM4aQJXf/e1fz6MEhyIz6XON sb4CnXZstnxUuVWDkHEu6KWQ/dKALgiDUuT+UdMawVoVPGdgyWZp35pQPWi3fT2V XZn58YkG8bO3Y403eZPyhadOefD1VtuFuK6/f90jjzx6ZDnwveXpYgFV7Jy1/pFd cLLMf07C+hbk416nX6UVipWe4GH+ADFom5ZCfAaUotM7n8i149dULNF4YYi2wP31 1YaDH5vf1CqiaieDY7xLzpEixwJz6ZEg3gLXaUvz2MpF8owiGI3eP0g7voWp3xt4 TQx/qDURlaXiaRriWdWtpKyW1MFuJ5+KdNtR1/kXr2BLPB/ZLwyqtynUy8ZYpb4+ WIRYpUGeb//ZHGhlCH7CRMdABsal4wTwnzi9fW4Ax96ecJ2SlwCuKxwS7iEq2y1/ FAfGwsE+XufHhme5p6XjKfiHx+zJMIB2NMkrm+wm4PbMTrGVnw5/41/r6XxOB8fe iKi12Jth4dusc1vYGYfzKop9uEM6CZ6+Chqzb+Zyh/xUiZVlCX/BYnxr7yXUm9aR PHQgxkn2Act8FgQB3Kgs3jCiCRIJrlsnybeWzQ3YO9TjC4MxygmmwODDBpsOKnEi kXXS54+cZFjcsva4uJVwhAywRPVUkLzmTkH0tGiwCHjeQNECm+TLahkkEIXrVTb9 c9creNXMgE6jVVz+R43HXsGvTcgMcBLyFRQJe2nVaj/dQ5JbF4uqNnQzRjAbD34K uTpFaJ/kmlgcmeScRLnwaoYwFlmhSC+bK0dfY1Jr6AQRA6IDP7nIjqWNDCHNBB8r Qj1v2KWoVQe3xNHaXhkbJPbA2DKlUIqffkBVtMKtt9KuG3Rccf3bVYAW6oid73/D z7DMAF5G/OpVR8VbGh1WxXuR7zEVDUwpwsp9ek5dqN8BnBz1ppdZNIKqzszneckU s2l/6mZBmgV1Nfy/cQU6U5s3S1Xc75UDQVLms3CIOpFTRIpecNTdfa31fYy/svy0 M2lWTbCva0dOyuvMUhTgBL4I7Qa2dUMPXHMZatV5ooHYq/BZJA1r84C5cM5r+umE 2LLv/BlUr7RaQHhaKGn4Qhpzo5yRDE9mEqDpLVkbg8SxMsdf/pEF5/VyUwA9t8RT fKVsInRd386tDqJSDbSFqKTvLztr/5YCyzZzvC2YB1voko/caOGd2d/G51Ij+bXU xEN8U4fHDBsHwPUGb31uZUhTXpL37KiOqZmXFoH2usmuvx882XvyGcV0F4tstMaR KLKzl2PwqzAYGFexLkYKMz0TYIeN6h3b86ETazPPU49nkaEU23Dx21J2Rb3UlH+I lDQF3wuH1QlYiTnlcVa/Zu4QQg0/iP8ALkZ06mvn9e9mOtnA8gsh4B2oLqc19VLU bcpv40dV1H3W9Lcx9B8JYUp0c/Oyno1D7Yj3tjGcwMKECmUpHi4kksehVo0/P933 xmFmC6eyWYVdO9upvY/vKSB7b1dMt85iWr3gnMsSfRYc6jsbSxdjOPST46UsIzjx wa1DS6+Bv5tiaC4uC6X+0tCAZo+UOQMYUbTGRR/7g/c= -----END RSA PRIVATE KEY----- rsa.pass.pub 0000664 00000000677 15103224244 0007017 0 ustar 00 -----BEGIN PUBLIC KEY----- MIIBHjANBgkqhkiG9w0BAQEFAAOCAQsAMIIBBgKB/gy7mjaWgPeFdVYDZWRCA9BN iv3pPb0es27+FKY0hszLaOw47ExCtAWpDsH48TXAfyHBYwBLguayfk4LGIupxb+C GMbRo3xEp0CbfY1Jby26T9vGjRC1foHDDUJG84uaRbyHqaf4i6zt4gVR+xlAEIjk aFAAK8cOoXAT1CVqGLLljUCchL8PjaHj/yriZ/S7rdwlI3LnABxwwmLrmR/v71Wt pmO/aNG8N+1po+QwaghTkyQ59E/ZvAuOkFWHok2q/R6PYAa2jdZ9zim0FqOP+nkQ aEDRbBFBmBqTv5fFGfk2WsAfKf/RG0/VFd+ZeM5251TeTvXH695nlSGauVl9AgMB AAE= -----END PUBLIC KEY----- test_cert.pem 0000664 00000002310 15103224244 0007236 0 ustar 00 -----BEGIN CERTIFICATE----- MIIDXDCCAsWgAwIBAgIJAKL0UG+mRkSPMA0GCSqGSIb3DQEBBQUAMH0xCzAJBgNV BAYTAlVLMRQwEgYDVQQIEwtBY2tuYWNrIEx0ZDETMBEGA1UEBxMKUmh5cyBKb25l czEQMA4GA1UEChMHbm9kZS5qczEdMBsGA1UECxMUVGVzdCBUTFMgQ2VydGlmaWNh dGUxEjAQBgNVBAMTCWxvY2FsaG9zdDAeFw0wOTExMTEwOTUyMjJaFw0yOTExMDYw OTUyMjJaMH0xCzAJBgNVBAYTAlVLMRQwEgYDVQQIEwtBY2tuYWNrIEx0ZDETMBEG A1UEBxMKUmh5cyBKb25lczEQMA4GA1UEChMHbm9kZS5qczEdMBsGA1UECxMUVGVz dCBUTFMgQ2VydGlmaWNhdGUxEjAQBgNVBAMTCWxvY2FsaG9zdDCBnzANBgkqhkiG 9w0BAQEFAAOBjQAwgYkCgYEA8d8Hc6atq78Jt1HLp9agA/wpQfsFvkYUdZ1YsdvO kL2janjwHQgMMCy/Njal3FUEW0OLPebKZUJ8L44JBXSlVxU4zyiiSOWld8EkTetR AVT3WKQq3ud+cnxv7g8rGRQp1UHZwmdbZ1wEfAYq8QjYx6m1ciMgRo7DaDQhD29k d+UCAwEAAaOB4zCB4DAdBgNVHQ4EFgQUL9miTJn+HKNuTmx/oMWlZP9cd4QwgbAG A1UdIwSBqDCBpYAUL9miTJn+HKNuTmx/oMWlZP9cd4ShgYGkfzB9MQswCQYDVQQG EwJVSzEUMBIGA1UECBMLQWNrbmFjayBMdGQxEzARBgNVBAcTClJoeXMgSm9uZXMx EDAOBgNVBAoTB25vZGUuanMxHTAbBgNVBAsTFFRlc3QgVExTIENlcnRpZmljYXRl MRIwEAYDVQQDEwlsb2NhbGhvc3SCCQCi9FBvpkZEjzAMBgNVHRMEBTADAQH/MA0G CSqGSIb3DQEBBQUAA4GBADRXXA2xSUK5W1i3oLYWW6NEDVWkTQ9RveplyeS9MOkP e7yPcpz0+O0ZDDrxR9chAiZ7fmdBBX1Tr+pIuCrG/Ud49SBqeS5aMJGVwiSd7o1n dhU2Sz3Q60DwJEL1VenQHiVYlWWtqXBThe9ggqRPnCfsCRTP8qifKkjk45zWPcpN -----END CERTIFICATE----- test_key.pem 0000664 00000001567 15103224244 0007106 0 ustar 00 -----BEGIN RSA PRIVATE KEY----- MIICXQIBAAKBgQDx3wdzpq2rvwm3Ucun1qAD/ClB+wW+RhR1nVix286QvaNqePAd CAwwLL82NqXcVQRbQ4s95splQnwvjgkFdKVXFTjPKKJI5aV3wSRN61EBVPdYpCre 535yfG/uDysZFCnVQdnCZ1tnXAR8BirxCNjHqbVyIyBGjsNoNCEPb2R35QIDAQAB AoGBAJNem9C4ftrFNGtQ2DB0Udz7uDuucepkErUy4MbFsc947GfENjDKJXr42Kx0 kYx09ImS1vUpeKpH3xiuhwqe7tm4FsCBg4TYqQle14oxxm7TNeBwwGC3OB7hiokb aAjbPZ1hAuNs6ms3Ybvvj6Lmxzx42m8O5DXCG2/f+KMvaNUhAkEA/ekrOsWkNoW9 2n3m+msdVuxeek4B87EoTOtzCXb1dybIZUVv4J48VAiM43hhZHWZck2boD/hhwjC M5NWd4oY6QJBAPPcgBVNdNZSZ8hR4ogI4nzwWrQhl9MRbqqtfOn2TK/tjMv10ALg lPmn3SaPSNRPKD2hoLbFuHFERlcS79pbCZ0CQQChX3PuIna/gDitiJ8oQLOg7xEM wk9TRiDK4kl2lnhjhe6PDpaQN4E4F0cTuwqLAoLHtrNWIcOAQvzKMrYdu1MhAkBm Et3qDMnjDAs05lGT72QeN90/mPAcASf5eTTYGahv21cb6IBxM+AnwAPpqAAsHhYR 9h13Y7uYbaOjvuF23LRhAkBoI9eaSMn+l81WXOVUHnzh3ZwB4GuTyxMXXNOhuiFd 0z4LKAMh99Z4xQmqSoEkXsfM4KPpfhYjF/bwIcP5gOei -----END RSA PRIVATE KEY----- test_rsa_privkey.pem 0000664 00000001573 15103224244 0010651 0 ustar 00 -----BEGIN RSA PRIVATE KEY----- MIICXgIBAAKBgQDCFENGw33yGihy92pDjZQhl0C36rPJj+CvfSC8+q28hxA161QF NUd13wuCTUcq0Qd2qsBe/2hFyc2DCJJg0h1L78+6Z4UMR7EOcpfdUE9Hf3m/hs+F UR45uBJeDK1HSFHD8bHKD6kv8FPGfJTotc+2xjJwoYi+1hqp1fIekaxsyQIDAQAB AoGBAJR8ZkCUvx5kzv+utdl7T5MnordT1TvoXXJGXK7ZZ+UuvMNUCdN2QPc4sBiA QWvLw1cSKt5DsKZ8UETpYPy8pPYnnDEz2dDYiaew9+xEpubyeW2oH4Zx71wqBtOK kqwrXa/pzdpiucRRjk6vE6YY7EBBs/g7uanVpGibOVAEsqH1AkEA7DkjVH28WDUg f1nqvfn2Kj6CT7nIcE3jGJsZZ7zlZmBmHFDONMLUrXR/Zm3pR5m0tCmBqa5RK95u 412jt1dPIwJBANJT3v8pnkth48bQo/fKel6uEYyboRtA5/uHuHkZ6FQF7OUkGogc mSJluOdc5t6hI1VsLn0QZEjQZMEOWr+wKSMCQQCC4kXJEsHAve77oP6HtG/IiEn7 kpyUXRNvFsDE0czpJJBvL/aRFUJxuRK91jhjC68sA7NsKMGg5OXb5I5Jj36xAkEA gIT7aFOYBFwGgQAQkWNKLvySgKbAZRTeLBacpHMuQdl1DfdntvAyqpAZ0lY0RKmW G6aFKaqQfOXKCyWoUiVknQJAXrlgySFci/2ueKlIE1QqIiLSZ8V8OlpFLRnb1pzI 7U1yQXnTAEFYM560yJlzUpOb1V4cScGd365tiSMvxLOvTA== -----END RSA PRIVATE KEY----- test_rsa_privkey_encrypted.pem 0000664 00000001732 15103224244 0012723 0 ustar 00 -----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED DEK-Info: AES-128-CBC,9D916E00476DFF9E70FA4BA9E3A6CB0E oj0VC35ShSEqlfJ0rLGgkqJCyIK+mXSsa/X/xAur+lI/RVOVTWd7oQQGTdI/0rLX PdQR02Na3X9Rptezh6J04PfMGeFysxdT6RpC+rkHRPVbN0F4TqxSNNXzkwK70+EF dSuDMyVKv9YN4wWDf0g6VKe4ShAH/sqICQBrVyzWyYLvH/hwZmZZ1QEab6ylIKtb EJunwu9BxVVA04bbuATKkKjJOqDn0fG8hb4bYbyD02dJwgLePzzn36F31kcBCEHI tESlD3RsS+EtfpfgPkplXNOhqYzkD9auDb7Zy+ZwL20fjnJb75OSGu8gOg3KTljt mApZOg0nJ5Jk9ATAdyzyVSFOM1Hhcw12ws06Dq9KRnXgO6bbuadLTFRDdvSYDFvD ijUb+97UolQfYIXQMqXli3EIvHr7CTWe/3mpoDgK1mtr0+923Bm97XgE7KSr0L46 n5QpNjCZf1vbXldNmW+TRifiJMgtVdS7x0N4vqDPNEe+FelVv3U4Pz3HIOtFuWLr ZCxlgVxJY4IsyYlV0ItQjIv8fJiAyemZdO2lA9K6h0eEF+9Apr3i79JGWUi74p5D Ooak4le0Va9O34f6FxCGn/a54A6bhKu24Ub/0gr/e4WRa7693euEdgIAZXhtMu2Z taU5SKjjXPzjmRCM2kINHTCENlaU4oFzTmj3TYY/jdKyNP1bHa07NhlomladkIHK GD6HaYkcbuwvh8hOPsopSwuS+NqjnGPq9Vv4ecBC+9veDEmpIE1iR6FK9Hjrre88 kLoMQNmA+vuc8jG4/FIHM3SauQiR1ZJ6+zkz97kcmOf+X7LRaS4j6lfFR6qHiJ6y -----END RSA PRIVATE KEY----- test_rsa_pubkey.pem 0000664 00000000420 15103224244 0010445 0 ustar 00 -----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDCFENGw33yGihy92pDjZQhl0C3 6rPJj+CvfSC8+q28hxA161QFNUd13wuCTUcq0Qd2qsBe/2hFyc2DCJJg0h1L78+6 Z4UMR7EOcpfdUE9Hf3m/hs+FUR45uBJeDK1HSFHD8bHKD6kv8FPGfJTotc+2xjJw oYi+1hqp1fIekaxsyQIDAQAB -----END PUBLIC KEY----- bonjour.js 0000664 00000011573 15103347733 0006577 0 ustar 00 'use strict' var os = require('os') var dgram = require('dgram') var tape = require('tape') var afterAll = require('after-all') var Service = require('../lib/service') var Bonjour = require('../') var getAddresses = function () { var addresses = [] var itrs = os.networkInterfaces() for (var i in itrs) { var addrs = itrs[i] for (var j in addrs) { if (addrs[j].internal === false) { addresses.push(addrs[j].address) } } } return addresses } var port = function (cb) { var s = dgram.createSocket('udp4') s.bind(0, function () { var port = s.address().port s.on('close', function () { cb(port) }) s.close() }) } var test = function (name, fn) { tape(name, function (t) { port(function (p) { fn(Bonjour({ ip: '127.0.0.1', port: p, multicast: false }), t) }) }) } test('bonjour.publish', function (bonjour, t) { var service = bonjour.publish({ name: 'foo', type: 'bar', port: 3000 }) t.ok(service instanceof Service) t.equal(service.published, false) service.on('up', function () { t.equal(service.published, true) bonjour.destroy() t.end() }) }) test('bonjour.unpublishAll', function (bonjour, t) { t.test('published services', function (t) { var service = bonjour.publish({ name: 'foo', type: 'bar', port: 3000 }) service.on('up', function () { bonjour.unpublishAll(function (err) { t.error(err) t.equal(service.published, false) bonjour.destroy() t.end() }) }) }) t.test('no published services', function (t) { bonjour.unpublishAll(function (err) { t.error(err) t.end() }) }) }) test('bonjour.find', function (bonjour, t) { var next = afterAll(function () { var browser = bonjour.find({ type: 'test' }) var ups = 0 browser.on('up', function (s) { if (s.name === 'Foo Bar') { t.equal(s.name, 'Foo Bar') t.equal(s.fqdn, 'Foo Bar._test._tcp.local') t.deepEqual(s.txt, {}) t.deepEqual(s.rawTxt, new Buffer('00', 'hex')) } else { t.equal(s.name, 'Baz') t.equal(s.fqdn, 'Baz._test._tcp.local') t.deepEqual(s.txt, { foo: 'bar' }) t.deepEqual(s.rawTxt, new Buffer('07666f6f3d626172', 'hex')) } t.equal(s.host, os.hostname()) t.equal(s.port, 3000) t.equal(s.type, 'test') t.equal(s.protocol, 'tcp') t.equal(s.referer.address, '127.0.0.1') t.equal(s.referer.family, 'IPv4') t.ok(Number.isFinite(s.referer.port)) t.ok(Number.isFinite(s.referer.size)) t.deepEqual(s.subtypes, []) t.deepEqual(s.addresses.sort(), getAddresses().sort()) if (++ups === 2) { // use timeout in an attempt to make sure the invalid record doesn't // bubble up setTimeout(function () { bonjour.destroy() t.end() }, 50) } }) }) bonjour.publish({ name: 'Foo Bar', type: 'test', port: 3000 }).on('up', next()) bonjour.publish({ name: 'Invalid', type: 'test2', port: 3000 }).on('up', next()) bonjour.publish({ name: 'Baz', type: 'test', port: 3000, txt: { foo: 'bar' } }).on('up', next()) }) test('bonjour.find - binary txt', function (bonjour, t) { var next = afterAll(function () { var browser = bonjour.find({ type: 'test', txt: { binary: true } }) browser.on('up', function (s) { t.equal(s.name, 'Foo') t.deepEqual(s.txt, { bar: new Buffer('buz') }) t.deepEqual(s.rawTxt, new Buffer('076261723d62757a', 'hex')) bonjour.destroy() t.end() }) }) bonjour.publish({ name: 'Foo', type: 'test', port: 3000, txt: { bar: new Buffer('buz') } }).on('up', next()) }) test('bonjour.find - down event', function (bonjour, t) { var service = bonjour.publish({ name: 'Foo Bar', type: 'test', port: 3000 }) service.on('up', function () { var browser = bonjour.find({ type: 'test' }) browser.on('up', function (s) { t.equal(s.name, 'Foo Bar') service.stop() }) browser.on('down', function (s) { t.equal(s.name, 'Foo Bar') bonjour.destroy() t.end() }) }) }) test('bonjour.findOne - callback', function (bonjour, t) { var next = afterAll(function () { bonjour.findOne({ type: 'test' }, function (s) { t.equal(s.name, 'Callback') bonjour.destroy() t.end() }) }) bonjour.publish({ name: 'Invalid', type: 'test2', port: 3000 }).on('up', next()) bonjour.publish({ name: 'Callback', type: 'test', port: 3000 }).on('up', next()) }) test('bonjour.findOne - emitter', function (bonjour, t) { var next = afterAll(function () { var browser = bonjour.findOne({ type: 'test' }) browser.on('up', function (s) { t.equal(s.name, 'Emitter') bonjour.destroy() t.end() }) }) bonjour.publish({ name: 'Emitter', type: 'test', port: 3000 }).on('up', next()) bonjour.publish({ name: 'Invalid', type: 'test2', port: 3000 }).on('up', next()) }) service.js 0000664 00000005532 15103347733 0006557 0 ustar 00 'use strict' var os = require('os') var test = require('tape') var Service = require('../lib/service') var getAddressesRecords = function (host) { var addresses_records = [] var itrs = os.networkInterfaces() for (var i in itrs) { var addrs = itrs[i] for (var j in addrs) { if (addrs[j].internal === false) { addresses_records.push({ data: addrs[j].address, name: host, ttl: 120, type: addrs[j].family === 'IPv4' ? 'A' : 'AAAA' }) } } } return addresses_records } test('no name', function (t) { t.throws(function () { new Service({ type: 'http', port: 3000 }) // eslint-disable-line no-new }, 'Required name not given') t.end() }) test('no type', function (t) { t.throws(function () { new Service({ name: 'Foo Bar', port: 3000 }) // eslint-disable-line no-new }, 'Required type not given') t.end() }) test('no port', function (t) { t.throws(function () { new Service({ name: 'Foo Bar', type: 'http' }) // eslint-disable-line no-new }, 'Required port not given') t.end() }) test('minimal', function (t) { var s = new Service({ name: 'Foo Bar', type: 'http', port: 3000 }) t.equal(s.name, 'Foo Bar') t.equal(s.protocol, 'tcp') t.equal(s.type, '_http._tcp') t.equal(s.host, os.hostname()) t.equal(s.port, 3000) t.equal(s.fqdn, 'Foo Bar._http._tcp.local') t.equal(s.txt, null) t.equal(s.subtypes, null) t.equal(s.published, false) t.end() }) test('protocol', function (t) { var s = new Service({ name: 'Foo Bar', type: 'http', port: 3000, protocol: 'udp' }) t.deepEqual(s.protocol, 'udp') t.end() }) test('host', function (t) { var s = new Service({ name: 'Foo Bar', type: 'http', port: 3000, host: 'example.com' }) t.deepEqual(s.host, 'example.com') t.end() }) test('txt', function (t) { var s = new Service({ name: 'Foo Bar', type: 'http', port: 3000, txt: { foo: 'bar' } }) t.deepEqual(s.txt, { foo: 'bar' }) t.end() }) test('_records() - minimal', function (t) { var s = new Service({ name: 'Foo Bar', type: 'http', protocol: 'tcp', port: 3000 }) t.deepEqual(s._records(), [ { data: s.fqdn, name: '_http._tcp.local', ttl: 28800, type: 'PTR' }, { data: { port: 3000, target: os.hostname() }, name: s.fqdn, ttl: 120, type: 'SRV' }, { data: new Buffer('00', 'hex'), name: s.fqdn, ttl: 4500, type: 'TXT' } ].concat(getAddressesRecords(s.host))) t.end() }) test('_records() - everything', function (t) { var s = new Service({ name: 'Foo Bar', type: 'http', protocol: 'tcp', port: 3000, host: 'example.com', txt: { foo: 'bar' } }) t.deepEqual(s._records(), [ { data: s.fqdn, name: '_http._tcp.local', ttl: 28800, type: 'PTR' }, { data: { port: 3000, target: 'example.com' }, name: s.fqdn, ttl: 120, type: 'SRV' }, { data: new Buffer('07666f6f3d626172', 'hex'), name: s.fqdn, ttl: 4500, type: 'TXT' } ].concat(getAddressesRecords(s.host))) t.end() }) i18n.base.js 0000664 00000002734 15103436141 0006600 0 ustar 00 // Run $ expresso var I18n = require('../i18n'), assert = require('assert'); module.exports = { 'check base': function () { var i18n = new I18n({ locales: ['at-de'], base: function(locale) { return locale.slice(-2); } }); i18n.setLocale('at-de'); assert.equal(i18n.__('Hello'), 'Hallo'); assert.equal(i18n.__('Hello %s, how are you today? How was your %s.', 'Marcus'), 'Hallo Marcus, wie geht es dir heute? Wie war Ihre Reise nach Wien.'); }, 'check base - returning nothing reads locale safely': function () { var i18n = new I18n({ locales: ['at-de'], base: function() {} }); i18n.setLocale('at-de'); assert.equal(i18n.__('Hello %s, how are you today? How was your %s.', 'Marcus'), 'Hallo Marcus, wie geht es dir heute? Wie war Ihre Reise nach Wien.'); }, 'check base - returning not a string reads locale safely': function () { var i18n = new I18n({ locales: ['at-de'], base: function() { return {}; } }); i18n.setLocale('at-de'); assert.equal(i18n.__('Hello %s, how are you today? How was your %s.', 'Marcus'), 'Hallo Marcus, wie geht es dir heute? Wie war Ihre Reise nach Wien.'); }, 'check base - throwing exception reads locale safely': function () { var i18n = new I18n({ locales: ['at-de'], base: function() { throw new Error(); } }); i18n.setLocale('at-de'); assert.equal(i18n.__('Hello %s, how are you today? How was your %s.', 'Marcus'), 'Hallo Marcus, wie geht es dir heute? Wie war Ihre Reise nach Wien.'); } }; i18n.configure.js 0000664 00000004200 15103436141 0007635 0 ustar 00 // Run $ expresso var I18n = require('../i18n'), assert = require('assert'), fs = require('fs'); module.exports = { 'check set/getLocale': function () { var i18n = new I18n({ locales: ['en', 'de'], directory: './testlocales', extension: '.json' }); var loc = i18n.getLocale(); assert.equal('en', i18n.getLocale(), 'should return default setting'); assert.equal('de', i18n.setLocale('de'), 'should return the new setting'); assert.equal('de', i18n.getLocale(), 'should return the new setting'); }, 'check set defaultLocale when no default supplied': function () { var i18n = new I18n({ locales: ['en', 'de'], directory: './testlocales', extension: '.json' }); var loc = i18n.getLocale(); assert.equal('en', i18n.getLocale(), 'should return first locale setting from locales'); }, 'check set defaultLocale when default supplied': function () { var i18n = new I18n({ locales: ['en', 'de'], directory: './testlocales', extension: '.json', defaultLocale: 'de' }); var loc = i18n.getLocale(); assert.equal('de', i18n.getLocale(), 'should return default locale setting'); }, 'check singular': function () { var i18n = new I18n({ locales: ['en', 'de'], directory: './testlocales', extension: '.json' }); i18n.setLocale('en'); assert.equal(i18n.__('Hello'), 'Hello'); assert.equal(i18n.__('Hello %s, how are you today?', 'Marcus'), 'Hello Marcus, how are you today?'); assert.equal(i18n.__('Hello %s, how are you today? How was your %s.', 'Marcus', i18n.__('weekend')), 'Hello Marcus, how are you today? How was your weekend.'); }, 'check setLocale from environment variable': function () { var i18n = new I18n({ locales: ['en', 'de'], directory: './testlocales', extension: '.json' }); var defaultLang = process.env.LANG; try { process.env.LANG = "de_DE.UTF-8"; i18n.setLocaleFromEnvironmentVariable(); assert.equal('de', i18n.getLocale(), 'should return the new setting'); } finally { process.env.LANG = defaultLang; } } }; i18n.test.js 0000664 00000012722 15103436141 0006643 0 ustar 00 // Run $ expresso var fs = require('fs'), I18n = require('../i18n'), assert = require('assert'), yaml = require('js-yaml'); module.exports = { 'check version': function () { assert.equal(I18n.version, '0.4.7'); }, 'check set/getLocale': function () { var i18n = new I18n({ locales: ['en', 'de'] }); assert.equal('en', i18n.getLocale(), 'should return default setting'); assert.equal('de', i18n.setLocale('de'), 'should return the new setting'); assert.equal('de', i18n.getLocale(), 'should return the new setting'); assert.equal('de', i18n.getLocale(), 'should return the previous default setting'); }, 'check singular': function () { var i18n = new I18n({ locales: ['en', 'de'] }); i18n.setLocale('en'); assert.equal(i18n.__('Hello'), 'Hello'); assert.equal(i18n.__('Hello %s, how are you today?', 'Marcus'), 'Hello Marcus, how are you today?'); assert.equal(i18n.__('Hello %s, how are you today? How was your %s.', 'Marcus', i18n.__('weekend')), 'Hello Marcus, how are you today? How was your weekend.'); i18n.setLocale('de'); assert.equal(i18n.__('Hello'), 'Hallo'); assert.equal(i18n.__('Hello %s, how are you today?', 'Marcus'), 'Hallo Marcus, wie geht es dir heute?'); assert.equal(i18n.__('Hello %s, how are you today? How was your %s.', 'Marcus', i18n.__('weekend')), 'Hallo Marcus, wie geht es dir heute? Wie war dein Wochenende.'); }, 'check plural': function () { var i18n = new I18n({ locales: ['en', 'de'] }); i18n.setLocale('en'); var singular = i18n.__n('%s cat', '%s cats', 1); var plural = i18n.__n('%s cat', '%s cats', 3); assert.equal(singular, '1 cat'); assert.equal(plural, '3 cats'); i18n.setLocale('de'); singular = i18n.__n('%s cat', '%s cats', 1); plural = i18n.__n('%s cat', '%s cats', 3); assert.equal(singular, '1 Katze'); assert.equal(plural, '3 Katzen'); }, 'check nested plural': function () { var i18n = new I18n({ locales: ['en', 'de'] }); i18n.setLocale('en'); var singular = i18n.__n('There is one monkey in the %%s', 'There are %d monkeys in the %%s', 1, i18n.__('tree')); var plural = i18n.__n('There is one monkey in the %%s', 'There are %d monkeys in the %%s', 3, i18n.__('tree')); assert.equal(singular, 'There is one monkey in the tree'); assert.equal(plural, 'There are 3 monkeys in the tree'); i18n.setLocale('de'); singular = i18n.__n('There is one monkey in the %%s', 'There are %d monkeys in the %%s', 1, i18n.__('tree')); plural = i18n.__n('There is one monkey in the %%s', 'There are %d monkeys in the %%s', 3, i18n.__('tree')); assert.equal(singular, 'Im Baum sitzt ein Affe'); assert.equal(plural, 'Im Baum sitzen 3 Affen'); }, 'check variables': function () { var i18n = new I18n({ locales: ['en', 'de'] }); var i = 0; i18n.setLocale('en'); var greetings = ['Hi', 'Hello', 'Howdy']; for (i = 0; i < greetings.length; i++) { assert.equal(greetings[i], i18n.__(greetings[i])); }; i18n.setLocale('de'); var greetingsDE = ['Hi', 'Hallo', 'Hallöchen']; for (i = 0; i < greetings.length; i++) { assert.equal(greetingsDE[i], i18n.__(greetings[i])); }; }, 'check without files': function () { var i18n = new I18n({ devMode: false, locales: { en: { "Hello": "Hello", "Hello %s, how are you today?": "Hello %s, how are you today?", "weekend": "weekend" }, de: { "Hello": "Hallo", "Hello %s, how are you today?": "Hallo %s, wie geht es dir heute?", "weekend": "Wochenende", "nested": { "foo": "bar" }, "%s cat": { "one": "%s cat", "other": "%s cats" } } } }); i18n.setLocale('de'); assert.equal('Hallo', i18n.__('Hallo')); assert.equal('bar', i18n.__('nested.foo')); assert.equal('0 cat', i18n.__n('%s cat', 0)); assert.equal('1 cat', i18n.__n('%s cat', 1)); assert.equal('2 cats', i18n.__n('%s cat', 2)); }, 'check parse': function () { var i18n = new I18n({ locales: ['en', 'de'], extension: '.yml', parse: function (data) { return yaml.safeLoad(data); }, dump: function (data) { return yaml.safeDump(data); } }); i18n.setLocale('en'); assert.equal(i18n.__('Hello'), 'Hello'); assert.equal(i18n.__('Hello %s, how are you today?', 'Marcus'), 'Hello Marcus, how are you today?'); assert.equal(i18n.__('Hello %s, how are you today? How was your %s.', 'Marcus', i18n.__('weekend')), 'Hello Marcus, how are you today? How was your weekend.'); }, 'check dump': function () { var i18n = new I18n({ locales: ['en', 'de'], extension: '.yml', parse: function (data) { return yaml.safeLoad(data); }, dump: function (data) { return yaml.safeDump(data); } }); i18n.setLocale('de'); assert.equal(i18n.__('Hello'), 'Hallo'); assert.equal(i18n.__('Hello %s, how are you today?', 'Marcus'), 'Hallo Marcus, wie geht es dir heute?'); assert.equal(i18n.__('Hello %s, how are you today? How was your %s.', 'Marcus', i18n.__('weekend')), 'Hallo Marcus, wie geht es dir heute? Wie war dein Wochenende.'); assert.deepEqual(yaml.safeLoad(fs.readFileSync('./locales/de.yml')), i18n.locales['de']); }, 'check strings save': function () { var i18n = new I18n({ locales: ['en', 'de'], devMode: true }); i18n.setLocale('en'); var testString = 'New string'; assert.equal(undefined, i18n.locales['en'][testString]); i18n.__(testString); assert.equal(testString, i18n.locales['en'][testString]); // Remove the new string delete i18n.locales['en'][testString]; i18n.writeFile('en'); } }; buffer-test.js 0000664 00000020204 15104167412 0007331 0 ustar 00 var assert = require('assert'); var OffsetBuffer = require('../'); describe('OffsetBuffer', function() { var o; beforeEach(function() { o = new OffsetBuffer(); }); describe('.take()', function() { it('should return empty buffer', function() { var b = new Buffer('hello world'); o.push(b); var r = o.take(0); assert.equal(r.length, 0); assert.equal(o.size, b.length); }); it('should return the first buffer itself', function() { var b = new Buffer('hello world'); o.push(b); var r = o.take(b.length); assert(r === b); assert(o.isEmpty()); }); it('should return the slice of the buffer ', function() { var b = new Buffer('hello world'); o.push(b); assert.equal(o.take(5).toString(), 'hello'); assert.equal(o.take(1).toString(), ' '); assert.equal(o.take(5).toString(), 'world'); assert(o.isEmpty()); }); it('should concat buffers', function() { o.push(new Buffer('hello')); o.push(new Buffer(' ')); o.push(new Buffer('world!')); assert.equal(o.take(11).toString(), 'hello world'); assert.equal(o.take(1).toString(), '!'); assert(o.isEmpty()); }); }); describe('.skip', function() { it('should skip bytes', function() { o.push(new Buffer('hello ')); o.push(new Buffer('world')); o.push(new Buffer(' oh gosh')); assert.equal(o.take(2).toString(), 'he'); o.skip(1); assert.equal(o.take(2).toString(), 'lo'); o.skip(1); assert.equal(o.take(2).toString(), 'wo'); o.skip(4); assert.equal(o.take(7).toString(), 'oh gosh'); assert(o.isEmpty()); }); }); describe('.peekUInt8', function() { it('should return and not move by one byte', function() { o.push(new Buffer([ 0x1, 0x2 ])); assert.equal(o.peekUInt8(), 1); assert.equal(o.readUInt8(), 1); assert.equal(o.peekUInt8(), 2); assert.equal(o.readUInt8(), 2); assert(o.isEmpty()); }); }); describe('.peekInt8', function() { it('should return signed number', function() { o.push(new Buffer([ 0x80 ])); assert.equal(o.peekInt8(), -128); assert.equal(o.readInt8(), -128); assert(o.isEmpty()); }); }); describe('.readUInt8', function() { it('should return and move by one byte', function() { o.push(new Buffer([ 0x1, 0x2 ])); o.push(new Buffer([ 0x3, 0x4 ])); assert.equal(o.readUInt8(), 1); assert.equal(o.readUInt8(), 2); assert.equal(o.readUInt8(), 3); assert.equal(o.readUInt8(), 4); assert(o.isEmpty()); }); }); describe('.readInt8', function() { it('should return signed number', function() { o.push(new Buffer([ 0x8f, 0x7f ])); assert.equal(o.readInt8(), -113); assert.equal(o.readInt8(), 127); assert(o.isEmpty()); }); }); describe('.readUInt16LE', function() { it('should return and move by two bytes', function() { o.push(new Buffer([ 0x1, 0x2, 0x3 ])); o.push(new Buffer([ 0x4, 0x5, 0x6 ])); assert.equal(o.readUInt16LE(), 0x0201); assert.equal(o.readUInt16LE(), 0x0403); assert.equal(o.readUInt16LE(), 0x0605); assert(o.isEmpty()); }); it('should return and move by two bytes (regression #1)', function() { o.push(new Buffer([ 0x1 ])); o.push(new Buffer([ 0x2, 0x3, 0x4 ])); assert.equal(o.readUInt16LE(), 0x0201); assert.equal(o.readUInt16LE(), 0x0403); assert(o.isEmpty()); }); }); describe('.readInt16LE', function() { it('should return signed number', function() { o.push(new Buffer([ 0x23, 0x81 ])); assert.equal(o.readInt16LE(), -32477); assert(o.isEmpty()); }); }); describe('.readUInt24LE', function() { it('should return and move by three bytes', function() { o.push(new Buffer([ 0x1, 0x2, 0x3, 0x4, 0x5 ])); o.push(new Buffer([ 0x6, 0x7 ])); o.push(new Buffer([ 0x8, 0x9 ])); assert.equal(o.readUInt24LE(), 0x030201); assert.equal(o.readUInt24LE(), 0x060504); assert.equal(o.readUInt24LE(), 0x090807); assert(o.isEmpty()); }); it('should return and move by three bytes (regression #1)', function() { o.push(new Buffer([ 0x1, 0x2 ])); o.push(new Buffer([ 0x3 ])); assert.equal(o.readUInt24LE(), 0x030201); assert.equal(o.buffers.length, 0); assert(o.isEmpty()); }); }); describe('.readInt24LE', function() { it('should return signed number', function() { o.push(new Buffer([ 0x23, 0x45, 0x81 ])); assert.equal(o.readInt24LE(), -8305373); assert(o.isEmpty()); }); }); describe('.readUInt32LE', function() { it('should return and move by four bytes', function() { o.push(new Buffer([ 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7 ])); o.push(new Buffer([ 0x8, 0x9, 0xa ])); o.push(new Buffer([ 0xb, 0xc, 0xd ])); o.push(new Buffer([ 0xe, 0xf, 0x10 ])); assert.equal(o.readUInt32LE(), 0x04030201); assert.equal(o.readUInt32LE(), 0x08070605); assert.equal(o.readUInt32LE(), 0x0c0b0a09); assert.equal(o.readUInt32LE(), 0x100f0e0d); assert(o.isEmpty()); }); it('should return and move by four bytes (regression #1)', function() { o.push(new Buffer([ 0x1, 0x2, 0x3 ])); o.push(new Buffer([ 0x4 ])); assert.equal(o.readUInt32LE(), 0x04030201); assert.equal(o.buffers.length, 0); assert(o.isEmpty()); }); }); describe('.readInt32LE', function() { it('should return signed number', function() { o.push(new Buffer([ 0xff, 0xff, 0xff, 0xff ])); assert.equal(o.readInt32LE(), -1); assert(o.isEmpty()); }); }); describe('.readUInt16BE', function() { it('should return and move by two bytes', function() { o.push(new Buffer([ 0x1, 0x2, 0x3 ])); o.push(new Buffer([ 0x4, 0x5, 0x6 ])); assert.equal(o.readUInt16BE(), 0x0102); assert.equal(o.readUInt16BE(), 0x0304); assert.equal(o.readUInt16BE(), 0x0506); assert(o.isEmpty()); }); }); describe('.readInt16BE', function() { it('should return signed number', function() { o.push(new Buffer([ 0x81, 0x23 ])); assert.equal(o.readInt16BE(), -32477); assert(o.isEmpty()); }); }); describe('.readUInt24BE', function() { it('should return and move by three bytes', function() { o.push(new Buffer([ 0x1, 0x2, 0x3, 0x4, 0x5 ])); o.push(new Buffer([ 0x6, 0x7 ])); o.push(new Buffer([ 0x8, 0x9 ])); assert.equal(o.readUInt24BE(), 0x010203); assert.equal(o.readUInt24BE(), 0x040506); assert.equal(o.readUInt24BE(), 0x070809); assert(o.isEmpty()); }); }); describe('.readInt24BE', function() { it('should return signed number', function() { o.push(new Buffer([ 0x81, 0x45, 0x23 ])); assert.equal(o.readInt24BE(), -8305373); assert(o.isEmpty()); }); }); describe('.readUInt32BE', function() { it('should return and move by four bytes', function() { o.push(new Buffer([ 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7 ])); o.push(new Buffer([ 0x8, 0x9, 0xa ])); o.push(new Buffer([ 0xb, 0xc, 0xd ])); o.push(new Buffer([ 0xe, 0xf, 0x10 ])); assert.equal(o.readUInt32BE(), 0x01020304); assert.equal(o.readUInt32BE(), 0x05060708); assert.equal(o.readUInt32BE(), 0x090a0b0c); assert.equal(o.readUInt32BE(), 0x0d0e0f10); assert(o.isEmpty()); }); it('should return positive values', function() { o.push(new Buffer([ 0xff, 0xff, 0xff, 0xff ])); assert.equal(o.readUInt32BE(), 0xffffffff); assert(o.isEmpty()); }); }); describe('.readInt32BE', function() { it('should return signed number', function() { o.push(new Buffer([ 0xff, 0xff, 0xff, 0xff ])); assert.equal(o.readInt32BE(), -1); assert(o.isEmpty()); }); }); describe('.has', function() { it('should properly check the amount of the remaining bytes', function() { o.push(new Buffer([ 1, 2, 3 ])); assert(o.has(3)); assert.equal(o.readUInt8(), 0x01); assert(!o.has(3)); assert(o.has(2)); assert.equal(o.readUInt16BE(), 0x0203); assert(!o.has(1)); }); }); });
| ver. 1.4 |
Github
|
.
| PHP 8.1.33 | Генерация страницы: 0.01 |
proxy
|
phpinfo
|
Настройка