@transmute/did-key-cipher
Advanced tools
Comparing version 0.2.1-unstable.23 to 0.2.1-unstable.24
@@ -6,2 +6,10 @@ # Change Log | ||
## 0.2.1-unstable.24 (2020-11-08) | ||
**Note:** Version bump only for package @transmute/did-key-cipher | ||
## 0.2.1-unstable.23 (2020-10-14) | ||
@@ -8,0 +16,0 @@ |
@@ -1,3 +0,3 @@ | ||
import { Crypto } from 'node-webcrypto-ossl'; | ||
import { Crypto } from '@peculiar/webcrypto'; | ||
declare let crypto: Crypto; | ||
export default crypto; |
@@ -7,3 +7,3 @@ 'use strict'; | ||
var nodeWebcryptoOssl = require('node-webcrypto-ossl'); | ||
var webcrypto = require('@peculiar/webcrypto'); | ||
var base64url = _interopDefault(require('base64url')); | ||
@@ -21,3 +21,3 @@ var aesKw = require('@stablelib/aes-kw'); | ||
if (isNodejs()) { | ||
crypto = /*#__PURE__*/new nodeWebcryptoOssl.Crypto(); | ||
crypto = /*#__PURE__*/new webcrypto.Crypto(); | ||
} else { | ||
@@ -24,0 +24,0 @@ crypto = window.crypto; |
@@ -1,2 +0,2 @@ | ||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e,r=require("node-webcrypto-ossl"),t=(e=require("base64url"))&&"object"==typeof e&&"default"in e?e.default:e,n=require("@stablelib/aes-kw"),i=require("web-streams-polyfill/ponyfill"),o=require("@stablelib/xchacha20poly1305"),a="object"==typeof process&&"object"==typeof process.versions&&void 0!==process.versions.node?new r.Crypto:window.crypto,s=new Uint8Array(4+"ECDH-ES+A256KW".length);new DataView(s.buffer,s.byteOffset,s.byteLength).setUint32(0,"ECDH-ES+A256KW".length),s.set(Buffer.from("ECDH-ES+A256KW"),4);var c={name:"SHA-256"},f=function(){function e(e){if(32!==e.length)throw new Error("key must be 32 bytes");this.aeskw=new n.AESKW(e),this.algorithm={name:"A256KW"}}var r=e.prototype;return r.wrapKey=function(e){var r=this.aeskw.wrapKey(e.unwrappedKey);return t.encode(Buffer.from(r))},r.unwrapKey=function(e){var r=t.toBuffer(e.wrappedKey);try{return this.aeskw.unwrapKey(r)}catch(e){return console.error(e),null}},e}();function u(){return(u=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e}).apply(this,arguments)}function y(e){if("string"==typeof e)return new Uint8Array(Buffer.from(e));if(!(e instanceof Uint8Array))throw new TypeError('"data" be a string or Uint8Array.');return e}f.createKek=function(e){var r=e.keyData;try{return Promise.resolve(new f(r))}catch(e){return Promise.reject(e)}};var h,p={__proto__:null,decrypt:function(e){var r=e.ciphertext,t=e.iv,n=e.tag,i=e.additionalData,a=e.cek;try{if(!(t instanceof Uint8Array))throw new Error('Invalid or missing "iv".');if(!(r instanceof Uint8Array))throw new Error('Invalid or missing "ciphertext".');if(!(n instanceof Uint8Array))throw new Error('Invalid or missing "tag".');if(!(a instanceof Uint8Array))throw new TypeError('"cek" must be a Uint8Array.');var s=new o.XChaCha20Poly1305(a),c=new Uint8Array(r.length+s.tagLength);return c.set(r),c.set(n,r.length),Promise.resolve(s.open(t,c,i))}catch(e){return Promise.reject(e)}},encrypt:function(e){var r=e.data,t=e.additionalData,n=e.cek;try{if(!(r instanceof Uint8Array))throw new TypeError('"data" must be a Uint8Array.');if(!(n instanceof Uint8Array))throw new TypeError('"cek" must be a Uint8Array.');var i=new o.XChaCha20Poly1305(n),s=a.getRandomValues(new Uint8Array(i.nonceLength)),c=i.seal(s,r,t),f=c.subarray(0,c.length-i.tagLength),u=c.subarray(c.length-i.tagLength);return Promise.resolve({ciphertext:f,iv:s,tag:u})}catch(e){return Promise.reject(e)}},generateKey:function(){try{return Promise.resolve(a.getRandomValues(new Uint8Array(o.KEY_LENGTH)))}catch(e){return Promise.reject(e)}},JWE_ENC:"XC20P"},l=((h={}).XC20P=p,h),d=function(){function e(e){var r=void 0===e?{}:e,t=r.keyAgreementKey,n=r.KeyPairClass;if(!t)throw new TypeError('"keyAgreementKey" is a required parameter.');this.KeyPairClass=n,this.keyAgreementKey=t}var r=e.prototype;return r.transform=function(e,r){try{if(!e||"object"!=typeof e)throw new TypeError('"chunk" must be an object.');return Promise.resolve(this.decrypt(e.jwe)).then((function(e){if(null===e){var t=new Error("Invalid decryption key.");throw t.name="DataError",t}r.enqueue(e)}))}catch(e){return Promise.reject(e)}},r.decrypt=function(e){try{var r,n;if(!e||"object"!=typeof e)throw new TypeError('"jwe" must be an object.');if("string"!=typeof e.protected)throw new TypeError('"jwe.protected" is missing or not a string.');if("string"!=typeof e.iv)throw new Error('Invalid or missing "iv".');if("string"!=typeof e.ciphertext)throw new Error('Invalid or missing "ciphertext".');if("string"!=typeof e.tag)throw new Error('Invalid or missing "tag".');try{n=y(e.protected),r=JSON.parse(t.toBuffer(e.protected).toString())}catch(e){throw new Error('Invalid JWE "protected" header.')}if(!r.enc||"string"!=typeof r.enc)throw new Error('Invalid JWE "enc" header.');var i=l[r.enc];if(!i)throw new Error('Unsupported encryption algorithm "${header.enc}".');if(!Array.isArray(e.recipients))throw new TypeError('"jwe.recipients" must be an array.');var o=this.keyAgreementKey,a=(c=o,e.recipients.find((function(e){return e.header&&e.header.kid===c.id||e.header.kid.split("#").pop()===c.id.split("#").pop()})));if(!a)throw console.log(e.recipients,o),new Error("No matching recipient found for key agreement key.");var s=a.encrypted_key;if("string"!=typeof s)throw new Error('Invalid or missing "encrypted_key".');return Promise.resolve(this.KeyPairClass.kekFromEphemeralPeer({keyAgreementKey:o,epk:a.header.epk})).then((function(r){return Promise.resolve(r.kek.unwrapKey({wrappedKey:s})).then((function(r){if(!r)return null;var o=e.iv,a=e.tag;return i.decrypt({ciphertext:t.toBuffer(e.ciphertext),iv:t.toBuffer(o),tag:t.toBuffer(a),additionalData:n,cek:r})}))}))}catch(e){return Promise.reject(e)}var c},e}();const m=function(){function e(){}return e.prototype.then=function(r,t){const n=new e,i=this.s;if(i){const e=1&i?r:t;if(e){try{v(n,1,e(this.v))}catch(e){v(n,2,e)}return n}return this}return this.o=function(e){try{const i=e.v;1&e.s?v(n,1,r?r(i):i):t?v(n,1,t(i)):v(n,2,i)}catch(e){v(n,2,e)}},n},e}();function v(e,r,t){if(!e.s){if(t instanceof m){if(!t.s)return void(t.o=v.bind(null,e,r));1&r&&(r=t.s),t=t.v}if(t&&t.then)return void t.then(v.bind(null,e,r),v.bind(null,e,2));e.s=r,e.v=t;const n=e.o;n&&n(e)}}function w(e){return e instanceof m&&1&e.s}"undefined"!=typeof Symbol&&(Symbol.iterator||(Symbol.iterator=Symbol("Symbol.iterator"))),"undefined"!=typeof Symbol&&(Symbol.asyncIterator||(Symbol.asyncIterator=Symbol("Symbol.asyncIterator")));var g=function(){function e(e){var r=void 0===e?{}:e,t=r.encodedProtectedHeader,n=r.cipher,i=r.additionalData,o=r.cek,a=r.chunkSize,s=void 0===a?1048576:a;this.recipients=r.recipients,this.encodedProtectedHeader=t,this.cipher=n,this.additionalData=i,this.cek=o,this.chunkSize=s,this.offset=0,this.totalOffset=0,this.index=0}var r=e.prototype;return r.start=function(){this.buffer=new Uint8Array(this.chunkSize)},r.transform=function(e,r){try{var t=this,n=t.buffer;if(!(e instanceof Uint8Array))throw new TypeError('"chunk" must be an object.');return Promise.resolve(function(e,r,t){for(var n;;){var i=e();if(w(i)&&(i=i.v),!i)return o;if(i.then){n=0;break}var o=t();if(o&&o.then){if(!w(o)){n=1;break}o=o.s}}var a=new m,s=v.bind(null,a,2);return(0===n?i.then(f):1===n?o.then(c):(void 0).then((function(){(i=e())?i.then?i.then(f).then(void 0,s):f(i):v(a,1,o)}))).then(void 0,s),a;function c(r){o=r;do{if(!(i=e())||w(i)&&!i.v)return void v(a,1,o);if(i.then)return void i.then(f).then(void 0,s);w(o=t())&&(o=o.v)}while(!o||!o.then);o.then(c).then(void 0,s)}function f(e){e?(o=t())&&o.then?o.then(c).then(void 0,s):c(o):v(a,1,o)}}((function(){return!!e}),0,(function(){var i=n.length-t.offset;if(e.length<=i)n.set(e,t.offset),t.offset+=e.byteLength,t.totalOffset+=e.byteLength,e=null;else{var o=new Uint8Array(e.buffer,e.byteOffset,i);e=new Uint8Array(e.buffer,e.byteOffset+i,e.length-i),n.set(o,t.offset),t.offset+=i,t.totalOffset+=i}var a=function(){if(e)return Promise.resolve(t.flush(r)).then((function(){}))}();if(a&&a.then)return a.then((function(){}))})))}catch(e){return Promise.reject(e)}},r.flush=function(e){try{var r=this;if(0===r.offset)return Promise.resolve();var t=r.buffer,n=new Uint8Array(t.buffer,t.byteOffset,r.offset);return Promise.resolve(r.encrypt(n)).then((function(t){r.offset=0,e.enqueue({index:r.index++,offset:r.totalOffset,jwe:t})}))}catch(e){return Promise.reject(e)}},r.encrypt=function(e){try{var r=this;return Promise.resolve(r.cipher.encrypt({data:e,additionalData:r.additionalData,cek:r.cek})).then((function(e){var n=e.ciphertext,i=e.tag;return{protected:r.encodedProtectedHeader,recipients:r.recipients,iv:t.encode(e.iv),ciphertext:t.encode(n),tag:t.encode(i)}}))}catch(e){return Promise.reject(e)}},e}();exports.Cipher=function(){function e(e){this.KeyPairClass=e,this.version="recommended",this.cipher=p}var r=e.prototype;return r.createEncryptStream=function(e){var r=e.recipients,t=e.keyResolver,n=e.chunkSize;try{return Promise.resolve(this.createEncryptTransformer({recipients:r,keyResolver:t,chunkSize:n})).then((function(e){return new i.TransformStream(e)}))}catch(e){return Promise.reject(e)}},r.createDecryptStream=function(e){var r=e.keyAgreementKey;try{return Promise.resolve(this.createDecryptTransformer({keyAgreementKey:r})).then((function(e){return new i.TransformStream(e)}))}catch(e){return Promise.reject(e)}},r.encrypt=function(e){var r=e.data,t=e.recipients,n=e.keyResolver;try{if(!(r instanceof Uint8Array)&&"string"!=typeof r)throw new TypeError('"data" must be a Uint8Array or a string.');return r&&(r=y(r)),Promise.resolve(this.createEncryptTransformer({recipients:t,keyResolver:n})).then((function(e){return e.encrypt(r)}))}catch(e){return Promise.reject(e)}},r.encryptObject=function(e){var r=e.obj,t=function(e,r){if(null==e)return{};var t,n,i={},o=Object.keys(e);for(n=0;n<o.length;n++)r.indexOf(t=o[n])>=0||(i[t]=e[t]);return i}(e,["obj"]);try{if("object"!=typeof r)throw new TypeError('"obj" must be an object.');return Promise.resolve(this.encrypt(u({data:JSON.stringify(r)},t)))}catch(e){return Promise.reject(e)}},r.decrypt=function(e){var r=e.jwe,t=e.keyAgreementKey;try{return Promise.resolve(this.createDecryptTransformer({keyAgreementKey:t})).then((function(e){return e.decrypt(r)}))}catch(e){return Promise.reject(e)}},r.decryptObject=function(e){var r=e.jwe,t=e.keyAgreementKey;try{return Promise.resolve(this.decrypt({jwe:r,keyAgreementKey:t})).then((function(e){return e?JSON.parse(Buffer.from(e).toString()):null}))}catch(e){return Promise.reject(e)}},r.createEncryptTransformer=function(e){var r=e.recipients,n=e.keyResolver,i=e.chunkSize;try{var o=this;if(!(Array.isArray(r)&&r.length>0))throw new TypeError('"recipients" must be a non-empty array.');var a=o.KeyPairClass.JWE_ALG;if(!r.every((function(e){return e.header&&e.header.alg===a})))throw new Error('All recipients must use the algorithm "'+a+'".');var s=o.cipher;return Promise.resolve(s.generateKey()).then((function(e){return Promise.resolve(Promise.all(r.map((function(e){return n({id:e.header.kid})})))).then((function(n){var a=void 0;return"JsonWebKey2020"===n[0].type&&(a={kty:"EC",crvOrSize:n[0].publicKeyJwk.crv}),Promise.resolve(o.KeyPairClass.generateEphemeralKeyPair(a)).then((function(a){return Promise.resolve(Promise.all(n.map((function(e){return o.KeyPairClass.kekFromStaticPeer({ephemeralKeyPair:a,staticPublicKey:e})})))).then((function(n){return Promise.resolve(Promise.all(r.map((function(t,i){try{var o=n[i],a=o.kek,s=o.epk,c=o.apu,f=o.apv;return r[i]=t={header:u({},t.header)},t.header.epk=s,t.header.apu=c,t.header.apv=f,Promise.resolve(a.wrapKey({unwrappedKey:e})).then((function(e){t.encrypted_key=e}))}catch(e){return Promise.reject(e)}})))).then((function(){var n=JSON.stringify({enc:s.JWE_ENC}),o=t.encode(Buffer.from(y(n))),a=y(o);return new g({recipients:r,encodedProtectedHeader:o,cipher:s,additionalData:a,cek:e,chunkSize:i})}))}))}))}))}))}catch(e){return Promise.reject(e)}},r.createDecryptTransformer=function(e){var r=e.keyAgreementKey;try{return Promise.resolve(new d({KeyPairClass:this.KeyPairClass,keyAgreementKey:r}))}catch(e){return Promise.reject(e)}},e}(),exports.KeyEncryptionKey=f,exports.deriveKey=function(e){var r=e.secret,t=e.producerInfo,n=e.consumerInfo;try{if(!(r instanceof Uint8Array&&r.length>0))throw new TypeError('"secret" must be a non-empty Uint8Array.');if(!(t instanceof Uint8Array&&t.length>0))throw new TypeError('"producerInfo" must be a non-empty Uint8Array.');if(!(n instanceof Uint8Array&&n.length>0))throw new TypeError('"consumerInfo" must be a non-empty Uint8Array.');var i=new Uint8Array(4+r.length+s.length+4+t.length+4+n.length+4),o=0,f=new DataView(i.buffer,i.byteOffset,i.byteLength);return f.setUint32(o,1),i.set(r,o+=4),i.set(s,o+=r.length),f.setUint32(o+=s.length,t.length),i.set(t,o+=4),f.setUint32(o+=t.length,n.length),i.set(n,o+=4),f.setUint32(o+=n.length,256),Promise.resolve(a.subtle.digest(c,i)).then((function(e){return new Uint8Array(e)}))}catch(e){return Promise.reject(e)}},exports.getEpkGenerator=function(e,r){return function(){try{return Promise.resolve(e.generate(r)).then((function(e){return Promise.resolve(e.toJsonWebKeyPair(!0)).then((function(e){return{keypair:e,epk:e.publicKeyJwk}}))}))}catch(e){return Promise.reject(e)}}}; | ||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e,r=require("@peculiar/webcrypto"),t=(e=require("base64url"))&&"object"==typeof e&&"default"in e?e.default:e,n=require("@stablelib/aes-kw"),i=require("web-streams-polyfill/ponyfill"),o=require("@stablelib/xchacha20poly1305"),a="object"==typeof process&&"object"==typeof process.versions&&void 0!==process.versions.node?new r.Crypto:window.crypto,s=new Uint8Array(4+"ECDH-ES+A256KW".length);new DataView(s.buffer,s.byteOffset,s.byteLength).setUint32(0,"ECDH-ES+A256KW".length),s.set(Buffer.from("ECDH-ES+A256KW"),4);var c={name:"SHA-256"},f=function(){function e(e){if(32!==e.length)throw new Error("key must be 32 bytes");this.aeskw=new n.AESKW(e),this.algorithm={name:"A256KW"}}var r=e.prototype;return r.wrapKey=function(e){var r=this.aeskw.wrapKey(e.unwrappedKey);return t.encode(Buffer.from(r))},r.unwrapKey=function(e){var r=t.toBuffer(e.wrappedKey);try{return this.aeskw.unwrapKey(r)}catch(e){return console.error(e),null}},e}();function u(){return(u=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e}).apply(this,arguments)}function y(e){if("string"==typeof e)return new Uint8Array(Buffer.from(e));if(!(e instanceof Uint8Array))throw new TypeError('"data" be a string or Uint8Array.');return e}f.createKek=function(e){var r=e.keyData;try{return Promise.resolve(new f(r))}catch(e){return Promise.reject(e)}};var h,p={__proto__:null,decrypt:function(e){var r=e.ciphertext,t=e.iv,n=e.tag,i=e.additionalData,a=e.cek;try{if(!(t instanceof Uint8Array))throw new Error('Invalid or missing "iv".');if(!(r instanceof Uint8Array))throw new Error('Invalid or missing "ciphertext".');if(!(n instanceof Uint8Array))throw new Error('Invalid or missing "tag".');if(!(a instanceof Uint8Array))throw new TypeError('"cek" must be a Uint8Array.');var s=new o.XChaCha20Poly1305(a),c=new Uint8Array(r.length+s.tagLength);return c.set(r),c.set(n,r.length),Promise.resolve(s.open(t,c,i))}catch(e){return Promise.reject(e)}},encrypt:function(e){var r=e.data,t=e.additionalData,n=e.cek;try{if(!(r instanceof Uint8Array))throw new TypeError('"data" must be a Uint8Array.');if(!(n instanceof Uint8Array))throw new TypeError('"cek" must be a Uint8Array.');var i=new o.XChaCha20Poly1305(n),s=a.getRandomValues(new Uint8Array(i.nonceLength)),c=i.seal(s,r,t),f=c.subarray(0,c.length-i.tagLength),u=c.subarray(c.length-i.tagLength);return Promise.resolve({ciphertext:f,iv:s,tag:u})}catch(e){return Promise.reject(e)}},generateKey:function(){try{return Promise.resolve(a.getRandomValues(new Uint8Array(o.KEY_LENGTH)))}catch(e){return Promise.reject(e)}},JWE_ENC:"XC20P"},l=((h={}).XC20P=p,h),m=function(){function e(e){var r=void 0===e?{}:e,t=r.keyAgreementKey,n=r.KeyPairClass;if(!t)throw new TypeError('"keyAgreementKey" is a required parameter.');this.KeyPairClass=n,this.keyAgreementKey=t}var r=e.prototype;return r.transform=function(e,r){try{if(!e||"object"!=typeof e)throw new TypeError('"chunk" must be an object.');return Promise.resolve(this.decrypt(e.jwe)).then((function(e){if(null===e){var t=new Error("Invalid decryption key.");throw t.name="DataError",t}r.enqueue(e)}))}catch(e){return Promise.reject(e)}},r.decrypt=function(e){try{var r,n;if(!e||"object"!=typeof e)throw new TypeError('"jwe" must be an object.');if("string"!=typeof e.protected)throw new TypeError('"jwe.protected" is missing or not a string.');if("string"!=typeof e.iv)throw new Error('Invalid or missing "iv".');if("string"!=typeof e.ciphertext)throw new Error('Invalid or missing "ciphertext".');if("string"!=typeof e.tag)throw new Error('Invalid or missing "tag".');try{n=y(e.protected),r=JSON.parse(t.toBuffer(e.protected).toString())}catch(e){throw new Error('Invalid JWE "protected" header.')}if(!r.enc||"string"!=typeof r.enc)throw new Error('Invalid JWE "enc" header.');var i=l[r.enc];if(!i)throw new Error('Unsupported encryption algorithm "${header.enc}".');if(!Array.isArray(e.recipients))throw new TypeError('"jwe.recipients" must be an array.');var o=this.keyAgreementKey,a=(c=o,e.recipients.find((function(e){return e.header&&e.header.kid===c.id||e.header.kid.split("#").pop()===c.id.split("#").pop()})));if(!a)throw console.log(e.recipients,o),new Error("No matching recipient found for key agreement key.");var s=a.encrypted_key;if("string"!=typeof s)throw new Error('Invalid or missing "encrypted_key".');return Promise.resolve(this.KeyPairClass.kekFromEphemeralPeer({keyAgreementKey:o,epk:a.header.epk})).then((function(r){return Promise.resolve(r.kek.unwrapKey({wrappedKey:s})).then((function(r){if(!r)return null;var o=e.iv,a=e.tag;return i.decrypt({ciphertext:t.toBuffer(e.ciphertext),iv:t.toBuffer(o),tag:t.toBuffer(a),additionalData:n,cek:r})}))}))}catch(e){return Promise.reject(e)}var c},e}();const d=function(){function e(){}return e.prototype.then=function(r,t){const n=new e,i=this.s;if(i){const e=1&i?r:t;if(e){try{v(n,1,e(this.v))}catch(e){v(n,2,e)}return n}return this}return this.o=function(e){try{const i=e.v;1&e.s?v(n,1,r?r(i):i):t?v(n,1,t(i)):v(n,2,i)}catch(e){v(n,2,e)}},n},e}();function v(e,r,t){if(!e.s){if(t instanceof d){if(!t.s)return void(t.o=v.bind(null,e,r));1&r&&(r=t.s),t=t.v}if(t&&t.then)return void t.then(v.bind(null,e,r),v.bind(null,e,2));e.s=r,e.v=t;const n=e.o;n&&n(e)}}function w(e){return e instanceof d&&1&e.s}"undefined"!=typeof Symbol&&(Symbol.iterator||(Symbol.iterator=Symbol("Symbol.iterator"))),"undefined"!=typeof Symbol&&(Symbol.asyncIterator||(Symbol.asyncIterator=Symbol("Symbol.asyncIterator")));var g=function(){function e(e){var r=void 0===e?{}:e,t=r.encodedProtectedHeader,n=r.cipher,i=r.additionalData,o=r.cek,a=r.chunkSize,s=void 0===a?1048576:a;this.recipients=r.recipients,this.encodedProtectedHeader=t,this.cipher=n,this.additionalData=i,this.cek=o,this.chunkSize=s,this.offset=0,this.totalOffset=0,this.index=0}var r=e.prototype;return r.start=function(){this.buffer=new Uint8Array(this.chunkSize)},r.transform=function(e,r){try{var t=this,n=t.buffer;if(!(e instanceof Uint8Array))throw new TypeError('"chunk" must be an object.');return Promise.resolve(function(e,r,t){for(var n;;){var i=e();if(w(i)&&(i=i.v),!i)return o;if(i.then){n=0;break}var o=t();if(o&&o.then){if(!w(o)){n=1;break}o=o.s}}var a=new d,s=v.bind(null,a,2);return(0===n?i.then(f):1===n?o.then(c):(void 0).then((function(){(i=e())?i.then?i.then(f).then(void 0,s):f(i):v(a,1,o)}))).then(void 0,s),a;function c(r){o=r;do{if(!(i=e())||w(i)&&!i.v)return void v(a,1,o);if(i.then)return void i.then(f).then(void 0,s);w(o=t())&&(o=o.v)}while(!o||!o.then);o.then(c).then(void 0,s)}function f(e){e?(o=t())&&o.then?o.then(c).then(void 0,s):c(o):v(a,1,o)}}((function(){return!!e}),0,(function(){var i=n.length-t.offset;if(e.length<=i)n.set(e,t.offset),t.offset+=e.byteLength,t.totalOffset+=e.byteLength,e=null;else{var o=new Uint8Array(e.buffer,e.byteOffset,i);e=new Uint8Array(e.buffer,e.byteOffset+i,e.length-i),n.set(o,t.offset),t.offset+=i,t.totalOffset+=i}var a=function(){if(e)return Promise.resolve(t.flush(r)).then((function(){}))}();if(a&&a.then)return a.then((function(){}))})))}catch(e){return Promise.reject(e)}},r.flush=function(e){try{var r=this;if(0===r.offset)return Promise.resolve();var t=r.buffer,n=new Uint8Array(t.buffer,t.byteOffset,r.offset);return Promise.resolve(r.encrypt(n)).then((function(t){r.offset=0,e.enqueue({index:r.index++,offset:r.totalOffset,jwe:t})}))}catch(e){return Promise.reject(e)}},r.encrypt=function(e){try{var r=this;return Promise.resolve(r.cipher.encrypt({data:e,additionalData:r.additionalData,cek:r.cek})).then((function(e){var n=e.ciphertext,i=e.tag;return{protected:r.encodedProtectedHeader,recipients:r.recipients,iv:t.encode(e.iv),ciphertext:t.encode(n),tag:t.encode(i)}}))}catch(e){return Promise.reject(e)}},e}();exports.Cipher=function(){function e(e){this.KeyPairClass=e,this.version="recommended",this.cipher=p}var r=e.prototype;return r.createEncryptStream=function(e){var r=e.recipients,t=e.keyResolver,n=e.chunkSize;try{return Promise.resolve(this.createEncryptTransformer({recipients:r,keyResolver:t,chunkSize:n})).then((function(e){return new i.TransformStream(e)}))}catch(e){return Promise.reject(e)}},r.createDecryptStream=function(e){var r=e.keyAgreementKey;try{return Promise.resolve(this.createDecryptTransformer({keyAgreementKey:r})).then((function(e){return new i.TransformStream(e)}))}catch(e){return Promise.reject(e)}},r.encrypt=function(e){var r=e.data,t=e.recipients,n=e.keyResolver;try{if(!(r instanceof Uint8Array)&&"string"!=typeof r)throw new TypeError('"data" must be a Uint8Array or a string.');return r&&(r=y(r)),Promise.resolve(this.createEncryptTransformer({recipients:t,keyResolver:n})).then((function(e){return e.encrypt(r)}))}catch(e){return Promise.reject(e)}},r.encryptObject=function(e){var r=e.obj,t=function(e,r){if(null==e)return{};var t,n,i={},o=Object.keys(e);for(n=0;n<o.length;n++)r.indexOf(t=o[n])>=0||(i[t]=e[t]);return i}(e,["obj"]);try{if("object"!=typeof r)throw new TypeError('"obj" must be an object.');return Promise.resolve(this.encrypt(u({data:JSON.stringify(r)},t)))}catch(e){return Promise.reject(e)}},r.decrypt=function(e){var r=e.jwe,t=e.keyAgreementKey;try{return Promise.resolve(this.createDecryptTransformer({keyAgreementKey:t})).then((function(e){return e.decrypt(r)}))}catch(e){return Promise.reject(e)}},r.decryptObject=function(e){var r=e.jwe,t=e.keyAgreementKey;try{return Promise.resolve(this.decrypt({jwe:r,keyAgreementKey:t})).then((function(e){return e?JSON.parse(Buffer.from(e).toString()):null}))}catch(e){return Promise.reject(e)}},r.createEncryptTransformer=function(e){var r=e.recipients,n=e.keyResolver,i=e.chunkSize;try{var o=this;if(!(Array.isArray(r)&&r.length>0))throw new TypeError('"recipients" must be a non-empty array.');var a=o.KeyPairClass.JWE_ALG;if(!r.every((function(e){return e.header&&e.header.alg===a})))throw new Error('All recipients must use the algorithm "'+a+'".');var s=o.cipher;return Promise.resolve(s.generateKey()).then((function(e){return Promise.resolve(Promise.all(r.map((function(e){return n({id:e.header.kid})})))).then((function(n){var a=void 0;return"JsonWebKey2020"===n[0].type&&(a={kty:"EC",crvOrSize:n[0].publicKeyJwk.crv}),Promise.resolve(o.KeyPairClass.generateEphemeralKeyPair(a)).then((function(a){return Promise.resolve(Promise.all(n.map((function(e){return o.KeyPairClass.kekFromStaticPeer({ephemeralKeyPair:a,staticPublicKey:e})})))).then((function(n){return Promise.resolve(Promise.all(r.map((function(t,i){try{var o=n[i],a=o.kek,s=o.epk,c=o.apu,f=o.apv;return r[i]=t={header:u({},t.header)},t.header.epk=s,t.header.apu=c,t.header.apv=f,Promise.resolve(a.wrapKey({unwrappedKey:e})).then((function(e){t.encrypted_key=e}))}catch(e){return Promise.reject(e)}})))).then((function(){var n=JSON.stringify({enc:s.JWE_ENC}),o=t.encode(Buffer.from(y(n))),a=y(o);return new g({recipients:r,encodedProtectedHeader:o,cipher:s,additionalData:a,cek:e,chunkSize:i})}))}))}))}))}))}catch(e){return Promise.reject(e)}},r.createDecryptTransformer=function(e){var r=e.keyAgreementKey;try{return Promise.resolve(new m({KeyPairClass:this.KeyPairClass,keyAgreementKey:r}))}catch(e){return Promise.reject(e)}},e}(),exports.KeyEncryptionKey=f,exports.deriveKey=function(e){var r=e.secret,t=e.producerInfo,n=e.consumerInfo;try{if(!(r instanceof Uint8Array&&r.length>0))throw new TypeError('"secret" must be a non-empty Uint8Array.');if(!(t instanceof Uint8Array&&t.length>0))throw new TypeError('"producerInfo" must be a non-empty Uint8Array.');if(!(n instanceof Uint8Array&&n.length>0))throw new TypeError('"consumerInfo" must be a non-empty Uint8Array.');var i=new Uint8Array(4+r.length+s.length+4+t.length+4+n.length+4),o=0,f=new DataView(i.buffer,i.byteOffset,i.byteLength);return f.setUint32(o,1),i.set(r,o+=4),i.set(s,o+=r.length),f.setUint32(o+=s.length,t.length),i.set(t,o+=4),f.setUint32(o+=t.length,n.length),i.set(n,o+=4),f.setUint32(o+=n.length,256),Promise.resolve(a.subtle.digest(c,i)).then((function(e){return new Uint8Array(e)}))}catch(e){return Promise.reject(e)}},exports.getEpkGenerator=function(e,r){return function(){try{return Promise.resolve(e.generate(r)).then((function(e){return Promise.resolve(e.toJsonWebKeyPair(!0)).then((function(e){return{keypair:e,epk:e.publicKeyJwk}}))}))}catch(e){return Promise.reject(e)}}}; | ||
//# sourceMappingURL=did-key-cipher.cjs.production.min.js.map |
@@ -1,2 +0,2 @@ | ||
import { Crypto } from 'node-webcrypto-ossl'; | ||
import { Crypto } from '@peculiar/webcrypto'; | ||
import base64url from 'base64url'; | ||
@@ -3,0 +3,0 @@ import { AESKW } from '@stablelib/aes-kw'; |
@@ -5,3 +5,3 @@ { | ||
"module": "dist/did-key-cipher.esm.js", | ||
"version": "0.2.1-unstable.23", | ||
"version": "0.2.1-unstable.24", | ||
"publishConfig": { | ||
@@ -34,9 +34,9 @@ "access": "public" | ||
"dependencies": { | ||
"@peculiar/webcrypto": "^1.1.3", | ||
"@stablelib/aes-kw": "^1.0.0", | ||
"@stablelib/xchacha20poly1305": "^1.0.0", | ||
"@transmute/did-key-common": "^0.2.1-unstable.23", | ||
"node-webcrypto-ossl": "^2.1.2", | ||
"@transmute/did-key-common": "^0.2.1-unstable.24", | ||
"web-streams-polyfill": "^3.0.0" | ||
}, | ||
"gitHead": "f35051ae4fc7b96b522ac650a3eed34207caddeb" | ||
"gitHead": "6934b062f8ac2f58af408a2798f5ac9b48fecb28" | ||
} |
@@ -1,2 +0,2 @@ | ||
import { Crypto } from 'node-webcrypto-ossl'; | ||
import { Crypto } from '@peculiar/webcrypto'; | ||
@@ -16,5 +16,5 @@ function isNodejs() { | ||
} else { | ||
crypto = window.crypto as Crypto; | ||
crypto = window.crypto; | ||
} | ||
export default crypto; |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
360019
+ Added@peculiar/webcrypto@^1.1.3
+ Added@peculiar/webcrypto@1.4.6(transitive)
- Removednode-webcrypto-ossl@^2.1.2
- Removedmkdirp@1.0.4(transitive)
- Removednan@2.19.0(transitive)
- Removednode-webcrypto-ossl@2.1.3(transitive)