Giter VIP home page Giter VIP logo

cose-js's Introduction

Build Status Coverage Status

cose-js

JavaScript implementation of COSE, RFC8152

MAC

const cose = require('cose-js');
try {
  const plaintext = 'Important message!';
  const headers = {
    p: { alg: 'SHA-256_64' },
    u: { kid: 'our-secret' }
  };
  const recipent = {
    key: Buffer.from('231f4c4d4d3051fdc2ec0a3851d5b383', 'hex')
  };
  const buf = await cose.mac.create(headers, plaintext, recipent);
  console.log('MACed message: ' + buf.toString('hex'));
} catch (error) {
  console.log(error);
}

Verify MAC

const cose = require('cose-js');
try {
  const key = Buffer.from('231f4c4d4d3051fdc2ec0a3851d5b383', 'hex');
  const COSEMessage = Buffer.from('d18443a10104a1044a6f75722d73656372657472496d706f7274616e74206d65737361676521488894981d4aa5d614', 'hex');
  const buf = await cose.mac.read(COSEMessage, key);
  console.log('Verified message: ' + buf.toString('utf8'));
} catch (error) {
  console.log(error);
}

Sign

const cose = require('cose-js');
try {
  const plaintext = 'Important message!';
  const headers = {
    p: { alg: 'ES256' },
    u: { kid: '11' }
  };
  const signer = {
    key: {
      d: Buffer.from('6c1382765aec5358f117733d281c1c7bdc39884d04a45a1e6c67c858bc206c19', 'hex')
    }
  };
  const buf = await cose.sign.create(headers, plaintext, signer);
  console.log('Signed message: ' + buf.toString('hex'));
} catch (error) {
  console.log(error);
}

Verify Signature

const cose = require('cose-js');
try {
  const verifier = {
    key: {
      x: Buffer.from('143329cce7868e416927599cf65a34f3ce2ffda55a7eca69ed8919a394d42f0f', 'hex'),
      y: Buffer.from('60f7f1a780d8a783bfb7a2dd6b2796e8128dbbcef9d3d168db9529971a36e7b9', 'hex')
    }
  };
  const COSEMessage = Buffer.from('d28443a10126a10442313172496d706f7274616e74206d6573736167652158404c2b6b66dfedc4cfef0f221cf7ac7f95087a4c4245fef0063a0fd4014b670f642d31e26d38345bb4efcdc7ded3083ab4fe71b62a23f766d83785f044b20534f9', 'hex');
  const buf = await cose.sign.verify(COSEMessage, verifier);
  console.log('Verified message: ' + buf.toString('utf8'));
} catch (error) {
  console.log(error);
}

Encrypt

const cose = require('cose-js');
try {
  const plaintext = 'Secret message!';
  const headers = {
    p: { alg: 'A128GCM' },
    u: { kid: 'our-secret' }
  };
  const recipient = {
    key: Buffer.from('231f4c4d4d3051fdc2ec0a3851d5b383', 'hex')
  };
  const buf = await cose.encrypt.create(headers, plaintext, recipient);
  console.log('Encrypted message: ' + buf.toString('hex'));
} catch (error) {
  console.log(error);
}

Decrypt

const cose = require('cose-js');
try {
  const key = Buffer.from('231f4c4d4d3051fdc2ec0a3851d5b383', 'hex');
  const COSEMessage = Buffer.from('d8608443a10101a2044a6f75722d736563726574054c291a40271067ff57b1623c30581f23b663aaf9dfb91c5a39a175118ad7d72d416385b1b610e28b3b3fd824a397818340a040', 'hex');
  const buf = await cose.encrypt.read(COSEMessage, key);
  console.log('Protected message: ' + buf.toString('utf8'));
} catch (error) {
  console.log(error);
}

Install

npm install cose-js --save

Test

npm test

cose-js's People

Contributors

erdtman avatar hildjj avatar dependabot[bot] avatar letmaik avatar julianhille avatar lukasdietrich93 avatar nodh avatar mancioshell avatar jesusmccloud avatar johannespfeiffer avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.