Socket
Socket
Sign inDemoInstall

@transmute/did-key-bls12381

Package Overview
Dependencies
Maintainers
3
Versions
57
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@transmute/did-key-bls12381 - npm Package Compare versions

Comparing version 0.2.1-unstable.25 to 0.2.1-unstable.26

dist/Bls12381G1KeyPair.d.ts

8

CHANGELOG.md

@@ -6,2 +6,10 @@ # Change Log

## 0.2.1-unstable.26 (2020-11-13)
**Note:** Version bump only for package @transmute/did-key-bls12381
## 0.2.1-unstable.25 (2020-11-13)

@@ -8,0 +16,0 @@

2

dist/Bls12381G2KeyPair.d.ts

@@ -12,3 +12,3 @@ /// <reference types="node" />

constructor(options: any);
fingerprint(): string;
fingerprint(): string | undefined;
toKeyPair(exportPrivateKey?: boolean): any;

@@ -15,0 +15,0 @@ toJsonWebKeyPair(exportPrivateKey?: boolean): any;

@@ -5,7 +5,39 @@ 'use strict';

function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
var didKeyCommon = require('@transmute/did-key-common');
var bs58 = _interopDefault(require('bs58'));
var bbsSignatures = require('@mattrglobal/bbs-signatures');
var base64url = _interopDefault(require('base64url'));
var mattr = require('@mattrglobal/bls12381-key-pair');
var bbsSignatures = require('@mattrglobal/bbs-signatures');
var bs58 = require('bs58');
var generateKeyPairs = function generateKeyPairs() {
try {
return Promise.resolve(bbsSignatures.generateBls12381G1KeyPair()).then(function (g1) {
return Promise.resolve(bbsSignatures.generateBls12381G2KeyPair()).then(function (g2) {
var bls12381G1KeyPair = {
id: '',
type: 'Bls12381G1Key2020',
controller: '',
publicKeyBase58: bs58.encode(g1.publicKey),
privateKeyBase58: bs58.encode(g1.secretKey)
};
var bls12381G2KeyPair = {
id: '',
type: 'Bls12381G2Key2020',
controller: '',
publicKeyBase58: bs58.encode(g2.publicKey),
privateKeyBase58: bs58.encode(g2.secretKey)
};
return {
bls12381G1KeyPair: bls12381G1KeyPair,
bls12381G2KeyPair: bls12381G2KeyPair
};
});
});
} catch (e) {
return Promise.reject(e);
}
};
function _extends() {

@@ -29,44 +61,181 @@ _extends = Object.assign || function (target) {

var Bls12381G2KeyPair = /*#__PURE__*/function () {
function Bls12381G2KeyPair(options) {
this.type = 'Bls12381G2Key2020';
// Pulled from https://github.com/mattrglobal/bls12381-key-pair
// License is Apache-2.0
/**
* z represents the multibase encoding scheme of base58 encoding
* @see https://github.com/multiformats/multibase/blob/master/multibase.csv#L18
* @ignore
*/
var MULTIBASE_ENCODED_BASE58_IDENTIFIER = 'z';
/**
* 0x01 indicates the end of the leading bytes according to variable integer spec
* @see https://github.com/multiformats/multicodec
* @ignore
*/
var VARIABLE_INTEGER_TRAILING_BYTE = 0x01;
/**
* 0xea indicates a BLS 12-381 G1 public key
*
*/
var BLS12381G1_MULTICODEC_IDENTIFIER = 0xea;
/**
* 0xeb indicates a BLS 12-381 G2 public key
*
*/
var BLS12381G2_MULTICODEC_IDENTIFIER = 0xeb;
/**
* 0xee indicates a BLS 12-381 G1 concat with BLS 12-381 G2
*
*/
var BLS12381G1ANDG2_MULTICODEC_IDENTIFIER = 0xee;
var BlsCurveName;
(function (BlsCurveName) {
BlsCurveName["G1"] = "BLS12381_G1";
BlsCurveName["G2"] = "BLS12381_G2";
})(BlsCurveName || (BlsCurveName = {}));
var curveMap = {
Bls12381G1Key2020: BlsCurveName.G1,
Bls12381G2Key2020: BlsCurveName.G2
};
var toJsonWebKeyPair = function toJsonWebKeyPair(keypair) {
var jsonWebKeyPair = {
id: keypair.id,
controller: keypair.controller,
type: 'JsonWebKey2020',
publicKeyJwk: {
kty: 'EC',
crv: curveMap[keypair.type],
x: base64url.encode(bs58.decode(keypair.publicKeyBase58))
}
};
if (keypair.privateKeyBase58) {
jsonWebKeyPair.privateKeyJwk = {
kty: 'EC',
crv: curveMap[keypair.type],
x: base64url.encode(bs58.decode(keypair.publicKeyBase58)),
d: base64url.encode(bs58.decode(keypair.privateKeyBase58))
};
}
return jsonWebKeyPair;
};
var fingerprintToJsonWebKeyPair = function fingerprintToJsonWebKeyPair(fingerprint) {
if (fingerprint[0] !== 'z') {
throw new Error('base58 encoded fingerprint must start with "z"');
}
var buffer = bs58.decode(fingerprint.substring(1));
if (buffer[0] === BLS12381G1_MULTICODEC_IDENTIFIER && buffer[1] === VARIABLE_INTEGER_TRAILING_BYTE) {
var kp = toJsonWebKeyPair({
type: 'Bls12381G1Key2020',
publicKeyBase58: bs58.encode(buffer.slice(2))
});
return {
bls12381G1KeyPair: _extends({}, kp, {
id: '#' + fingerprint,
controller: "did:key:" + fingerprint
})
};
}
if (buffer[0] === BLS12381G2_MULTICODEC_IDENTIFIER && buffer[1] === VARIABLE_INTEGER_TRAILING_BYTE) {
var _kp = toJsonWebKeyPair({
type: 'Bls12381G2Key2020',
publicKeyBase58: bs58.encode(buffer.slice(2))
});
return {
bls12381G2KeyPair: _extends({}, _kp, {
id: '#' + fingerprint,
controller: "did:key:" + fingerprint
})
};
}
if (buffer[0] === BLS12381G1ANDG2_MULTICODEC_IDENTIFIER && buffer[1] === VARIABLE_INTEGER_TRAILING_BYTE) {
var g1 = toJsonWebKeyPair({
type: 'Bls12381G1Key2020',
publicKeyBase58: bs58.encode(buffer.slice(2, 50))
});
var g2 = toJsonWebKeyPair({
type: 'Bls12381G2Key2020',
publicKeyBase58: bs58.encode(buffer.slice(50))
});
return {
bls12381G1KeyPair: _extends({}, g1, {
id: '#' + fingerprint,
controller: "did:key:" + fingerprint
}),
bls12381G2KeyPair: _extends({}, g2, {
id: '#' + fingerprint,
controller: "did:key:" + fingerprint
})
};
}
throw new Error('unsupported fingerprint is not g1, g2 or g1 and g2.');
};
var _curveToMulticodecMap;
var curveToMulticodecMap = (_curveToMulticodecMap = {}, _curveToMulticodecMap[BlsCurveName.G1] = BLS12381G1_MULTICODEC_IDENTIFIER, _curveToMulticodecMap[BlsCurveName.G2] = BLS12381G2_MULTICODEC_IDENTIFIER, _curveToMulticodecMap);
var publicKeyJwkToDidKey = function publicKeyJwkToDidKey(publicKeyJwk) {
var publicKey = base64url.toBuffer(publicKeyJwk.x);
var buffer = new Uint8Array(2 + publicKey.length);
buffer[0] = curveToMulticodecMap[publicKeyJwk.crv];
buffer[1] = VARIABLE_INTEGER_TRAILING_BYTE;
buffer.set(publicKey, 2);
return "did:key:" + MULTIBASE_ENCODED_BASE58_IDENTIFIER + bs58.encode(buffer);
};
var Bls12381G1KeyPair = /*#__PURE__*/function () {
function Bls12381G1KeyPair(options) {
this.type = 'Bls12381G1Key2020';
this.id = options.id;
this.type = options.type || 'Bls12381G2Key2020';
this.controller = options.controller;
this.publicKeyBuffer = options.publicKeyBuffer;
this.privateKeyBuffer = options.privateKeyBuffer;
if (options.publicKeyBase58) {
this.publicKeyBuffer = bs58.decode(options.publicKeyBase58);
} else if (options.publicKeyJwk) {
this.publicKeyBuffer = Buffer.from('a');
} else {
throw new Error('Bls12381G2KeyPair requires publicKeyBase58 or publicKeyJwk, recieved neither.');
}
if (!this.controller) {
var _this$toJsonWebKeyPai = this.toJsonWebKeyPair(false),
publicKeyJwk = _this$toJsonWebKeyPai.publicKeyJwk;
if (options.privateKeyBase58) {
this.privateKeyBuffer = bs58.decode(options.privateKeyBase58);
this.controller = publicKeyJwkToDidKey(publicKeyJwk);
}
if (!this.id) {
this.id = '#' + this.fingerprint();
}
var _this$toJsonWebKeyPai2 = this.toJsonWebKeyPair(false),
_publicKeyJwk = _this$toJsonWebKeyPai2.publicKeyJwk;
if (!this.controller) {
this.controller = "did:key:" + this.fingerprint();
this.id = '#' + publicKeyJwkToDidKey(_publicKeyJwk).split('did:key:').pop();
}
}
Bls12381G2KeyPair.generate = function generate() {
Bls12381G1KeyPair.generate = function generate() {
try {
var keyPair = bbsSignatures.generateBls12381KeyPair();
var options = {
privateKeyBase58: bs58.encode(keyPair.secretKey),
publicKeyBase58: bs58.encode(keyPair.publicKey)
};
var fingerprint = mattr.Bls12381G2KeyPair.fingerprintFromPublicKey({
publicKeyBase58: options.publicKeyBase58
return Promise.resolve(generateKeyPairs()).then(function (_ref) {
var bls12381G1KeyPair = _ref.bls12381G1KeyPair;
var _toJsonWebKeyPair2 = toJsonWebKeyPair(bls12381G1KeyPair),
publicKeyJwk = _toJsonWebKeyPair2.publicKeyJwk;
bls12381G1KeyPair.controller = publicKeyJwkToDidKey(publicKeyJwk);
bls12381G1KeyPair.id = '#' + bls12381G1KeyPair.controller.split('did:key:').pop();
return new Bls12381G1KeyPair({
id: bls12381G1KeyPair.id,
controller: bls12381G1KeyPair.controller,
publicKeyBuffer: bs58.decode(bls12381G1KeyPair.publicKeyBase58),
privateKeyBuffer: bs58.decode(bls12381G1KeyPair.privateKeyBase58)
});
});
return Promise.resolve(new Bls12381G2KeyPair(_extends({}, options, {
id: '#' + fingerprint,
controller: "did:key:" + fingerprint
})));
} catch (e) {

@@ -77,13 +246,14 @@ return Promise.reject(e);

Bls12381G2KeyPair.fromFingerprint = function fromFingerprint(_ref) {
var fingerprint = _ref.fingerprint;
Bls12381G1KeyPair.fromFingerprint = function fromFingerprint(_ref2) {
var fingerprint = _ref2.fingerprint;
try {
var keypair = mattr.Bls12381G2KeyPair.fromFingerprint({
fingerprint: fingerprint
});
var options = {
publicKeyBase58: bs58.encode(keypair.publicKeyBuffer)
};
return Promise.resolve(new Bls12381G2KeyPair(options));
var _fingerprintToJsonWeb = fingerprintToJsonWebKeyPair(fingerprint),
bls12381G1KeyPair = _fingerprintToJsonWeb.bls12381G1KeyPair;
return Promise.resolve(new Bls12381G1KeyPair({
id: bls12381G1KeyPair.id,
controller: bls12381G1KeyPair.controller,
publicKeyBuffer: base64url.toBuffer(bls12381G1KeyPair.publicKeyJwk.x)
}));
} catch (e) {

@@ -94,63 +264,33 @@ return Promise.reject(e);

Bls12381G2KeyPair.from = function from(options) {
Bls12381G1KeyPair.from = function from(options) {
try {
var _temp9 = function _temp9() {
function _temp6() {
function _temp4() {
function _temp2() {
var _options = {
publicKeyBase58: bs58.encode(keypair.publicKeyBuffer)
};
if (options.type === 'JsonWebKey2020') {
var opts = {
id: options.id,
controller: options.controller,
publicKeyBuffer: base64url.toBuffer(options.publicKeyJwk.x)
};
if (keypair.privateKeyBuffer) {
_options.privateKeyBase58 = bs58.encode(keypair.privateKeyBuffer);
}
if (options.privateKeyJwk) {
opts.privateKeyBuffer = base64url.toBuffer(options.privateKeyJwk.d);
}
return new Bls12381G2KeyPair(_options);
}
return Promise.resolve(new Bls12381G1KeyPair(opts));
}
var _temp = function () {
if (options.privateKeyBase58) {
return Promise.resolve(mattr.Bls12381G2KeyPair.from(options)).then(function (_mattr$Bls12381G2KeyP4) {
keypair = _mattr$Bls12381G2KeyP4;
});
}
}();
if (options.type === 'Bls12381G1Key2020') {
var _opts = {
id: options.id,
controller: options.controller,
publicKeyBuffer: bs58.decode(options.publicKeyBase58)
};
return _temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp);
}
var _temp3 = function () {
if (options.publicKeyBase58) {
return Promise.resolve(mattr.Bls12381G2KeyPair.from(options)).then(function (_mattr$Bls12381G2KeyP3) {
keypair = _mattr$Bls12381G2KeyP3;
});
}
}();
return _temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3);
if (options.privateKeyBase58) {
_opts.privateKeyBuffer = bs58.decode(options.privateKeyBase58);
}
var _temp5 = function () {
if (options.privateKeyJwk) {
return Promise.resolve(mattr.Bls12381G2KeyPair.fromJwk(options)).then(function (_mattr$Bls12381G2KeyP2) {
keypair = _mattr$Bls12381G2KeyP2;
});
}
}();
return Promise.resolve(new Bls12381G1KeyPair(_opts));
}
return _temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5);
};
var keypair;
var _temp10 = function () {
if (options.publicKeyJwk) {
return Promise.resolve(mattr.Bls12381G2KeyPair.fromJwk(options)).then(function (_mattr$Bls12381G2KeyP) {
keypair = _mattr$Bls12381G2KeyP;
});
}
}();
return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
throw new Error('unsuported key type');
} catch (e) {

@@ -161,9 +301,9 @@ return Promise.reject(e);

var _proto = Bls12381G2KeyPair.prototype;
var _proto = Bls12381G1KeyPair.prototype;
_proto.fingerprint = function fingerprint() {
var fingerprint = mattr.Bls12381G2KeyPair.fingerprintFromPublicKey({
publicKeyBase58: bs58.encode(this.publicKeyBuffer)
});
return fingerprint;
var _this$toJsonWebKeyPai3 = this.toJsonWebKeyPair(false),
publicKeyJwk = _this$toJsonWebKeyPai3.publicKeyJwk;
return publicKeyJwkToDidKey(publicKeyJwk).split('did:key:').pop();
};

@@ -190,3 +330,3 @@

_proto.toJsonWebKeyPair = function toJsonWebKeyPair(exportPrivateKey) {
_proto.toJsonWebKeyPair = function toJsonWebKeyPair$1(exportPrivateKey) {
if (exportPrivateKey === void 0) {

@@ -196,14 +336,146 @@ exportPrivateKey = false;

var mattrKey = new mattr.Bls12381G2KeyPair(this.toKeyPair(exportPrivateKey));
var result = toJsonWebKeyPair(this.toKeyPair(exportPrivateKey));
return result;
};
_proto.verifier = function verifier() {
var key = new mattr.Bls12381G1KeyPair({
publicKeyBase58: bs58.encode(this.publicKeyBuffer)
});
return key.verifier();
};
_proto.signer = function signer() {
var key = new mattr.Bls12381G1KeyPair({
publicKeyBase58: bs58.encode(this.publicKeyBuffer),
privateKeyBase58: bs58.encode(this.privateKeyBuffer)
});
return key.signer();
};
return Bls12381G1KeyPair;
}();
var Bls12381G2KeyPair = /*#__PURE__*/function () {
function Bls12381G2KeyPair(options) {
this.type = 'Bls12381G2Key2020';
this.id = options.id;
this.controller = options.controller;
this.publicKeyBuffer = options.publicKeyBuffer;
this.privateKeyBuffer = options.privateKeyBuffer;
if (!this.controller) {
var _this$toJsonWebKeyPai = this.toJsonWebKeyPair(false),
publicKeyJwk = _this$toJsonWebKeyPai.publicKeyJwk;
this.controller = publicKeyJwkToDidKey(publicKeyJwk);
}
if (!this.id) {
var _this$toJsonWebKeyPai2 = this.toJsonWebKeyPair(false),
_publicKeyJwk = _this$toJsonWebKeyPai2.publicKeyJwk;
this.id = '#' + publicKeyJwkToDidKey(_publicKeyJwk).split('did:key:').pop();
}
}
Bls12381G2KeyPair.generate = function generate() {
try {
return Promise.resolve(generateKeyPairs()).then(function (_ref) {
var bls12381G2KeyPair = _ref.bls12381G2KeyPair;
var _toJsonWebKeyPair2 = toJsonWebKeyPair(bls12381G2KeyPair),
publicKeyJwk = _toJsonWebKeyPair2.publicKeyJwk;
bls12381G2KeyPair.controller = publicKeyJwkToDidKey(publicKeyJwk);
bls12381G2KeyPair.id = '#' + bls12381G2KeyPair.controller.split('did:key:').pop();
return new Bls12381G2KeyPair({
id: bls12381G2KeyPair.id,
controller: bls12381G2KeyPair.controller,
publicKeyBuffer: bs58.decode(bls12381G2KeyPair.publicKeyBase58),
privateKeyBuffer: bs58.decode(bls12381G2KeyPair.privateKeyBase58)
});
});
} catch (e) {
return Promise.reject(e);
}
};
Bls12381G2KeyPair.fromFingerprint = function fromFingerprint(_ref2) {
var fingerprint = _ref2.fingerprint;
try {
var _fingerprintToJsonWeb = fingerprintToJsonWebKeyPair(fingerprint),
bls12381G2KeyPair = _fingerprintToJsonWeb.bls12381G2KeyPair;
return Promise.resolve(new Bls12381G2KeyPair({
id: bls12381G2KeyPair.id,
controller: bls12381G2KeyPair.controller,
publicKeyBuffer: base64url.toBuffer(bls12381G2KeyPair.publicKeyJwk.x)
}));
} catch (e) {
return Promise.reject(e);
}
};
Bls12381G2KeyPair.from = function from(options) {
try {
if (options.type === 'JsonWebKey2020') {
var opts = {
id: options.id,
controller: options.controller,
publicKeyBuffer: base64url.toBuffer(options.publicKeyJwk.x)
};
if (options.privateKeyJwk) {
opts.privateKeyBuffer = base64url.toBuffer(options.privateKeyJwk.d);
}
return Promise.resolve(new Bls12381G2KeyPair(opts));
}
if (options.type === 'Bls12381G2Key2020') {
var _opts = {
id: options.id,
controller: options.controller,
publicKeyBuffer: bs58.decode(options.publicKeyBase58)
};
if (options.privateKeyBase58) {
_opts.privateKeyBuffer = bs58.decode(options.privateKeyBase58);
}
return Promise.resolve(new Bls12381G2KeyPair(_opts));
}
throw new Error('unsuported key type');
} catch (e) {
return Promise.reject(e);
}
};
var _proto = Bls12381G2KeyPair.prototype;
_proto.fingerprint = function fingerprint() {
var _this$toJsonWebKeyPai3 = this.toJsonWebKeyPair(false),
publicKeyJwk = _this$toJsonWebKeyPai3.publicKeyJwk;
return publicKeyJwkToDidKey(publicKeyJwk).split('did:key:').pop();
};
_proto.toKeyPair = function toKeyPair(exportPrivateKey) {
if (exportPrivateKey === void 0) {
exportPrivateKey = false;
}
var kp = {
id: this.id,
type: 'JsonWebKey2020',
type: this.type,
controller: this.controller,
publicKeyJwk: mattrKey.publicKeyJwk
publicKeyBase58: bs58.encode(this.publicKeyBuffer)
};
delete kp.publicKeyJwk.kid;
if (exportPrivateKey) {
kp.privateKeyJwk = mattrKey.privateKeyJwk;
delete kp.privateKeyJwk.kid;
kp.privateKeyBase58 = bs58.encode(this.privateKeyBuffer);
}

@@ -214,10 +486,23 @@

_proto.toJsonWebKeyPair = function toJsonWebKeyPair$1(exportPrivateKey) {
if (exportPrivateKey === void 0) {
exportPrivateKey = false;
}
return toJsonWebKeyPair(this.toKeyPair(exportPrivateKey));
};
_proto.verifier = function verifier() {
var mattrKey = new mattr.Bls12381G2KeyPair(this.toKeyPair(false));
return mattrKey.verifier();
var key = new mattr.Bls12381G2KeyPair({
publicKeyBase58: bs58.encode(this.publicKeyBuffer)
});
return key.verifier();
};
_proto.signer = function signer() {
var mattrKey = new mattr.Bls12381G2KeyPair(this.toKeyPair(true));
return mattrKey.signer();
var key = new mattr.Bls12381G2KeyPair({
publicKeyBase58: bs58.encode(this.publicKeyBuffer),
privateKeyBase58: bs58.encode(this.privateKeyBuffer)
});
return key.signer();
};

@@ -228,3 +513,237 @@

var resolve = /*#__PURE__*/didKeyCommon.getResolve(Bls12381G2KeyPair);
var Bls12381KeyPairs = /*#__PURE__*/function () {
function Bls12381KeyPairs(options) {
this.type = 'Bls12381KeyPairs2020';
this.id = options.id;
this.controller = options.controller;
this.g1KeyPair = options.g1KeyPair;
this.g2KeyPair = options.g2KeyPair;
if (!this.id) {
this.id = '#' + this.fingerprint();
}
if (!this.controller) {
this.controller = 'did:key:' + this.fingerprint();
}
this.g1KeyPair.controller = this.controller;
this.g2KeyPair.controller = this.controller;
}
Bls12381KeyPairs.generate = function generate() {
try {
return Promise.resolve(generateKeyPairs()).then(function (_ref) {
var bls12381G1KeyPair = _ref.bls12381G1KeyPair,
bls12381G2KeyPair = _ref.bls12381G2KeyPair;
var options = {
id: '',
controller: '',
g1KeyPair: new Bls12381G1KeyPair({
id: bls12381G1KeyPair.id,
publicKeyBuffer: bs58.decode(bls12381G1KeyPair.publicKeyBase58),
privateKeyBuffer: bs58.decode(bls12381G1KeyPair.privateKeyBase58)
}),
g2KeyPair: new Bls12381G2KeyPair({
id: bls12381G2KeyPair.id,
publicKeyBuffer: bs58.decode(bls12381G2KeyPair.publicKeyBase58),
privateKeyBuffer: bs58.decode(bls12381G2KeyPair.privateKeyBase58)
})
};
return new Bls12381KeyPairs(options);
});
} catch (e) {
return Promise.reject(e);
}
};
Bls12381KeyPairs.fromFingerprint = function fromFingerprint(_ref2) {
var fingerprint = _ref2.fingerprint;
try {
var _temp3 = function _temp3(_result) {
if (_exit2) return _result;
if (fingerprint.indexOf('z3t') === 0) {
return Bls12381G1KeyPair.fromFingerprint({
fingerprint: fingerprint
});
}
if (fingerprint.indexOf('zUC') === 0) {
return Bls12381G2KeyPair.fromFingerprint({
fingerprint: fingerprint
});
}
throw new Error('Bls12381KeyPairs only supports g1, g2 and g1 and g2 mulicodec fingerprints.');
};
var _exit2 = false;
var _temp4 = function () {
if (fingerprint.indexOf('z5Tc') === 0) {
var _fingerprintToJsonWeb = fingerprintToJsonWebKeyPair(fingerprint),
bls12381G1KeyPair = _fingerprintToJsonWeb.bls12381G1KeyPair,
bls12381G2KeyPair = _fingerprintToJsonWeb.bls12381G2KeyPair;
delete bls12381G1KeyPair.id;
delete bls12381G2KeyPair.id;
var controller = 'did:key:' + fingerprint;
bls12381G1KeyPair.controller = controller;
bls12381G2KeyPair.controller = controller;
_exit2 = true;
return Promise.resolve(Bls12381G1KeyPair.from(bls12381G1KeyPair)).then(function (_Bls12381G1KeyPair$fr) {
return Promise.resolve(Bls12381G2KeyPair.from(bls12381G2KeyPair)).then(function (_Bls12381G2KeyPair$fr) {
return new Bls12381KeyPairs({
id: '#' + fingerprint,
controller: controller,
g1KeyPair: _Bls12381G1KeyPair$fr,
g2KeyPair: _Bls12381G2KeyPair$fr
});
});
});
}
}();
return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
} catch (e) {
return Promise.reject(e);
}
};
var _proto = Bls12381KeyPairs.prototype;
_proto.fingerprint = function fingerprint() {
var g1Buffer = this.g1KeyPair.publicKeyBuffer;
var g2Buffer = this.g2KeyPair.publicKeyBuffer;
var g1AndG2 = Buffer.concat([g1Buffer, g2Buffer]);
var buffer = new Uint8Array(2 + g1AndG2.length);
buffer[0] = BLS12381G1ANDG2_MULTICODEC_IDENTIFIER;
buffer[1] = VARIABLE_INTEGER_TRAILING_BYTE;
buffer.set(g1AndG2, 2);
return "" + MULTIBASE_ENCODED_BASE58_IDENTIFIER + bs58.encode(buffer);
};
_proto["export"] = function _export(exportPrivate) {
if (exportPrivate === void 0) {
exportPrivate = false;
}
return {
fingerprint: this.fingerprint(),
g1: this.g1KeyPair.toJsonWebKeyPair(exportPrivate),
g2: this.g2KeyPair.toJsonWebKeyPair(exportPrivate)
};
};
return Bls12381KeyPairs;
}();
var getVerificationMethod = function getVerificationMethod(didKeyPairInstance, contentType) {
if (contentType === void 0) {
contentType = 'application/did+ld+json';
}
var externalKeyRepresentation;
switch (contentType) {
case 'application/did+json':
{
externalKeyRepresentation = didKeyPairInstance.toJsonWebKeyPair();
break;
}
case '*/*':
case 'application/did+ld+json':
{
externalKeyRepresentation = didKeyPairInstance.toKeyPair();
break;
}
default:
{
throw new Error('This implementation of did:key does not support: ' + contentType);
}
}
return externalKeyRepresentation;
};
var keyToDidDoc = function keyToDidDoc(didKeyPairInstance, contentType) {
if (contentType === void 0) {
contentType = 'application/did+ld+json';
}
try {
var verificationRelationships = {
verificationMethod: []
};
var did = "did:key:" + didKeyPairInstance.fingerprint();
if (didKeyPairInstance.type === 'Bls12381KeyPairs2020') {
var g1 = getVerificationMethod(didKeyPairInstance.g1KeyPair, contentType);
var g2 = getVerificationMethod(didKeyPairInstance.g2KeyPair, contentType);
verificationRelationships.verificationMethod.push(g1);
verificationRelationships.verificationMethod.push(g2);
verificationRelationships = _extends({}, verificationRelationships, {
authentication: [g1.id, g2.id],
assertionMethod: [g1.id, g2.id],
capabilityInvocation: [g1.id, g2.id],
capabilityDelegation: [g1.id, g2.id]
});
} else {
var vm = getVerificationMethod(didKeyPairInstance, contentType);
verificationRelationships.verificationMethod.push(vm);
verificationRelationships = _extends({}, verificationRelationships, {
authentication: [vm.id],
assertionMethod: [vm.id],
capabilityInvocation: [vm.id],
capabilityDelegation: [vm.id]
});
}
var didDocument = _extends({
'@context': ['https://www.w3.org/ns/did/v1', {
'@base': did
}],
id: did
}, verificationRelationships);
return Promise.resolve(didDocument);
} catch (e) {
return Promise.reject(e);
}
};
var getResolve = function getResolve() {
var resolve = function resolve(didUri, resolutionMetaData) {
if (resolutionMetaData === void 0) {
resolutionMetaData = {
accept: 'application/did+ld+json'
};
}
try {
var fingerprint = didUri.split('#')[0].split('did:key:').pop();
return Promise.resolve(Bls12381KeyPairs.fromFingerprint({
fingerprint: fingerprint
})).then(function (publicKey) {
return Promise.resolve(keyToDidDoc(publicKey, resolutionMetaData.accept)).then(function (_keyToDidDoc) {
return {
didDocument: _keyToDidDoc,
didDocumentMetaData: {
'content-type': resolutionMetaData.accept
},
didResolutionMetaData: {}
};
});
});
} catch (e) {
return Promise.reject(e);
}
};
return resolve;
};
var resolve = /*#__PURE__*/getResolve();
var get = /*#__PURE__*/didKeyCommon.getGet(resolve);

@@ -234,2 +753,3 @@

__proto__: null,
getResolve: getResolve,
resolve: resolve,

@@ -239,4 +759,6 @@ get: get

exports.Bls12381G1KeyPair = Bls12381G1KeyPair;
exports.Bls12381G2KeyPair = Bls12381G2KeyPair;
exports.Bls12381KeyPairs = Bls12381KeyPairs;
exports.driver = driver;
//# sourceMappingURL=did-key-bls12381.cjs.development.js.map

@@ -1,2 +0,2 @@

"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@transmute/did-key-common"),r=require("@mattrglobal/bls12381-key-pair"),i=require("@mattrglobal/bbs-signatures"),t=require("bs58");function n(){return(n=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var i=arguments[r];for(var t in i)Object.prototype.hasOwnProperty.call(i,t)&&(e[t]=i[t])}return e}).apply(this,arguments)}var o=function(){function e(e){if(this.type="Bls12381G2Key2020",this.id=e.id,this.type=e.type||"Bls12381G2Key2020",this.controller=e.controller,e.publicKeyBase58)this.publicKeyBuffer=t.decode(e.publicKeyBase58);else{if(!e.publicKeyJwk)throw new Error("Bls12381G2KeyPair requires publicKeyBase58 or publicKeyJwk, recieved neither.");this.publicKeyBuffer=Buffer.from("a")}e.privateKeyBase58&&(this.privateKeyBuffer=t.decode(e.privateKeyBase58)),this.id||(this.id="#"+this.fingerprint()),this.controller||(this.controller="did:key:"+this.fingerprint())}e.generate=function(){try{var o=i.generateBls12381KeyPair(),s={privateKeyBase58:t.encode(o.secretKey),publicKeyBase58:t.encode(o.publicKey)},u=r.Bls12381G2KeyPair.fingerprintFromPublicKey({publicKeyBase58:s.publicKeyBase58});return Promise.resolve(new e(n({},s,{id:"#"+u,controller:"did:key:"+u})))}catch(e){return Promise.reject(e)}},e.fromFingerprint=function(i){var n=i.fingerprint;try{var o=r.Bls12381G2KeyPair.fromFingerprint({fingerprint:n}),s={publicKeyBase58:t.encode(o.publicKeyBuffer)};return Promise.resolve(new e(s))}catch(e){return Promise.reject(e)}},e.from=function(i){try{var n,o=function(){function o(){function o(){function o(){var r={publicKeyBase58:t.encode(n.publicKeyBuffer)};return n.privateKeyBuffer&&(r.privateKeyBase58=t.encode(n.privateKeyBuffer)),new e(r)}var s=function(){if(i.privateKeyBase58)return Promise.resolve(r.Bls12381G2KeyPair.from(i)).then((function(e){n=e}))}();return s&&s.then?s.then(o):o()}var s=function(){if(i.publicKeyBase58)return Promise.resolve(r.Bls12381G2KeyPair.from(i)).then((function(e){n=e}))}();return s&&s.then?s.then(o):o()}var s=function(){if(i.privateKeyJwk)return Promise.resolve(r.Bls12381G2KeyPair.fromJwk(i)).then((function(e){n=e}))}();return s&&s.then?s.then(o):o()},s=function(){if(i.publicKeyJwk)return Promise.resolve(r.Bls12381G2KeyPair.fromJwk(i)).then((function(e){n=e}))}();return Promise.resolve(s&&s.then?s.then(o):o())}catch(e){return Promise.reject(e)}};var o=e.prototype;return o.fingerprint=function(){return r.Bls12381G2KeyPair.fingerprintFromPublicKey({publicKeyBase58:t.encode(this.publicKeyBuffer)})},o.toKeyPair=function(e){void 0===e&&(e=!1);var r={id:this.id,type:this.type,controller:this.controller,publicKeyBase58:t.encode(this.publicKeyBuffer)};return e&&(r.privateKeyBase58=t.encode(this.privateKeyBuffer)),r},o.toJsonWebKeyPair=function(e){void 0===e&&(e=!1);var i=new r.Bls12381G2KeyPair(this.toKeyPair(e)),t={id:this.id,type:"JsonWebKey2020",controller:this.controller,publicKeyJwk:i.publicKeyJwk};return delete t.publicKeyJwk.kid,e&&(t.privateKeyJwk=i.privateKeyJwk,delete t.privateKeyJwk.kid),t},o.verifier=function(){return new r.Bls12381G2KeyPair(this.toKeyPair(!1)).verifier()},o.signer=function(){return new r.Bls12381G2KeyPair(this.toKeyPair(!0)).signer()},e}(),s=e.getResolve(o),u={__proto__:null,resolve:s,get:e.getGet(s)};exports.Bls12381G2KeyPair=o,exports.driver=u;
"use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var r,i=require("@transmute/did-key-common"),t=e(require("bs58")),n=require("@mattrglobal/bbs-signatures"),o=e(require("base64url")),c=require("@mattrglobal/bls12381-key-pair"),s=function(){try{return Promise.resolve(n.generateBls12381G1KeyPair()).then((function(e){return Promise.resolve(n.generateBls12381G2KeyPair()).then((function(r){return{bls12381G1KeyPair:{id:"",type:"Bls12381G1Key2020",controller:"",publicKeyBase58:t.encode(e.publicKey),privateKeyBase58:t.encode(e.secretKey)},bls12381G2KeyPair:{id:"",type:"Bls12381G2Key2020",controller:"",publicKeyBase58:t.encode(r.publicKey),privateKeyBase58:t.encode(r.secretKey)}}}))}))}catch(e){return Promise.reject(e)}};function l(){return(l=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var i=arguments[r];for(var t in i)Object.prototype.hasOwnProperty.call(i,t)&&(e[t]=i[t])}return e}).apply(this,arguments)}!function(e){e.G1="BLS12381_G1",e.G2="BLS12381_G2"}(r||(r={}));var a,u={Bls12381G1Key2020:r.G1,Bls12381G2Key2020:r.G2},y=function(e){var r={id:e.id,controller:e.controller,type:"JsonWebKey2020",publicKeyJwk:{kty:"EC",crv:u[e.type],x:o.encode(t.decode(e.publicKeyBase58))}};return e.privateKeyBase58&&(r.privateKeyJwk={kty:"EC",crv:u[e.type],x:o.encode(t.decode(e.publicKeyBase58)),d:o.encode(t.decode(e.privateKeyBase58))}),r},p=function(e){if("z"!==e[0])throw new Error('base58 encoded fingerprint must start with "z"');var r=t.decode(e.substring(1));if(234===r[0]&&1===r[1])return{bls12381G1KeyPair:l({},y({type:"Bls12381G1Key2020",publicKeyBase58:t.encode(r.slice(2))}),{id:"#"+e,controller:"did:key:"+e})};if(235===r[0]&&1===r[1])return{bls12381G2KeyPair:l({},y({type:"Bls12381G2Key2020",publicKeyBase58:t.encode(r.slice(2))}),{id:"#"+e,controller:"did:key:"+e})};if(238===r[0]&&1===r[1]){var i=y({type:"Bls12381G1Key2020",publicKeyBase58:t.encode(r.slice(2,50))}),n=y({type:"Bls12381G2Key2020",publicKeyBase58:t.encode(r.slice(50))});return{bls12381G1KeyPair:l({},i,{id:"#"+e,controller:"did:key:"+e}),bls12381G2KeyPair:l({},n,{id:"#"+e,controller:"did:key:"+e})}}throw new Error("unsupported fingerprint is not g1, g2 or g1 and g2.")},d=((a={})[r.G1]=234,a[r.G2]=235,a),f=function(e){var r=o.toBuffer(e.x),i=new Uint8Array(2+r.length);return i[0]=d[e.crv],i[1]=1,i.set(r,2),"did:key:z"+t.encode(i)},K=function(){function e(e){if(this.type="Bls12381G1Key2020",this.id=e.id,this.controller=e.controller,this.publicKeyBuffer=e.publicKeyBuffer,this.privateKeyBuffer=e.privateKeyBuffer,!this.controller){var r=this.toJsonWebKeyPair(!1);this.controller=f(r.publicKeyJwk)}if(!this.id){var i=this.toJsonWebKeyPair(!1);this.id="#"+f(i.publicKeyJwk).split("did:key:").pop()}}e.generate=function(){try{return Promise.resolve(s()).then((function(r){var i=r.bls12381G1KeyPair,n=y(i);return i.controller=f(n.publicKeyJwk),i.id="#"+i.controller.split("did:key:").pop(),new e({id:i.id,controller:i.controller,publicKeyBuffer:t.decode(i.publicKeyBase58),privateKeyBuffer:t.decode(i.privateKeyBase58)})}))}catch(e){return Promise.reject(e)}},e.fromFingerprint=function(r){var i=r.fingerprint;try{var t=p(i).bls12381G1KeyPair;return Promise.resolve(new e({id:t.id,controller:t.controller,publicKeyBuffer:o.toBuffer(t.publicKeyJwk.x)}))}catch(e){return Promise.reject(e)}},e.from=function(r){try{if("JsonWebKey2020"===r.type){var i={id:r.id,controller:r.controller,publicKeyBuffer:o.toBuffer(r.publicKeyJwk.x)};return r.privateKeyJwk&&(i.privateKeyBuffer=o.toBuffer(r.privateKeyJwk.d)),Promise.resolve(new e(i))}if("Bls12381G1Key2020"===r.type){var n={id:r.id,controller:r.controller,publicKeyBuffer:t.decode(r.publicKeyBase58)};return r.privateKeyBase58&&(n.privateKeyBuffer=t.decode(r.privateKeyBase58)),Promise.resolve(new e(n))}throw new Error("unsuported key type")}catch(e){return Promise.reject(e)}};var r=e.prototype;return r.fingerprint=function(){var e=this.toJsonWebKeyPair(!1);return f(e.publicKeyJwk).split("did:key:").pop()},r.toKeyPair=function(e){void 0===e&&(e=!1);var r={id:this.id,type:this.type,controller:this.controller,publicKeyBase58:t.encode(this.publicKeyBuffer)};return e&&(r.privateKeyBase58=t.encode(this.privateKeyBuffer)),r},r.toJsonWebKeyPair=function(e){return void 0===e&&(e=!1),y(this.toKeyPair(e))},r.verifier=function(){return new c.Bls12381G1KeyPair({publicKeyBase58:t.encode(this.publicKeyBuffer)}).verifier()},r.signer=function(){return new c.Bls12381G1KeyPair({publicKeyBase58:t.encode(this.publicKeyBuffer),privateKeyBase58:t.encode(this.privateKeyBuffer)}).signer()},e}(),v=function(){function e(e){if(this.type="Bls12381G2Key2020",this.id=e.id,this.controller=e.controller,this.publicKeyBuffer=e.publicKeyBuffer,this.privateKeyBuffer=e.privateKeyBuffer,!this.controller){var r=this.toJsonWebKeyPair(!1);this.controller=f(r.publicKeyJwk)}if(!this.id){var i=this.toJsonWebKeyPair(!1);this.id="#"+f(i.publicKeyJwk).split("did:key:").pop()}}e.generate=function(){try{return Promise.resolve(s()).then((function(r){var i=r.bls12381G2KeyPair,n=y(i);return i.controller=f(n.publicKeyJwk),i.id="#"+i.controller.split("did:key:").pop(),new e({id:i.id,controller:i.controller,publicKeyBuffer:t.decode(i.publicKeyBase58),privateKeyBuffer:t.decode(i.privateKeyBase58)})}))}catch(e){return Promise.reject(e)}},e.fromFingerprint=function(r){var i=r.fingerprint;try{var t=p(i).bls12381G2KeyPair;return Promise.resolve(new e({id:t.id,controller:t.controller,publicKeyBuffer:o.toBuffer(t.publicKeyJwk.x)}))}catch(e){return Promise.reject(e)}},e.from=function(r){try{if("JsonWebKey2020"===r.type){var i={id:r.id,controller:r.controller,publicKeyBuffer:o.toBuffer(r.publicKeyJwk.x)};return r.privateKeyJwk&&(i.privateKeyBuffer=o.toBuffer(r.privateKeyJwk.d)),Promise.resolve(new e(i))}if("Bls12381G2Key2020"===r.type){var n={id:r.id,controller:r.controller,publicKeyBuffer:t.decode(r.publicKeyBase58)};return r.privateKeyBase58&&(n.privateKeyBuffer=t.decode(r.privateKeyBase58)),Promise.resolve(new e(n))}throw new Error("unsuported key type")}catch(e){return Promise.reject(e)}};var r=e.prototype;return r.fingerprint=function(){var e=this.toJsonWebKeyPair(!1);return f(e.publicKeyJwk).split("did:key:").pop()},r.toKeyPair=function(e){void 0===e&&(e=!1);var r={id:this.id,type:this.type,controller:this.controller,publicKeyBase58:t.encode(this.publicKeyBuffer)};return e&&(r.privateKeyBase58=t.encode(this.privateKeyBuffer)),r},r.toJsonWebKeyPair=function(e){return void 0===e&&(e=!1),y(this.toKeyPair(e))},r.verifier=function(){return new c.Bls12381G2KeyPair({publicKeyBase58:t.encode(this.publicKeyBuffer)}).verifier()},r.signer=function(){return new c.Bls12381G2KeyPair({publicKeyBase58:t.encode(this.publicKeyBuffer),privateKeyBase58:t.encode(this.privateKeyBuffer)}).signer()},e}(),h=function(){function e(e){this.type="Bls12381KeyPairs2020",this.id=e.id,this.controller=e.controller,this.g1KeyPair=e.g1KeyPair,this.g2KeyPair=e.g2KeyPair,this.id||(this.id="#"+this.fingerprint()),this.controller||(this.controller="did:key:"+this.fingerprint()),this.g1KeyPair.controller=this.controller,this.g2KeyPair.controller=this.controller}e.generate=function(){try{return Promise.resolve(s()).then((function(r){var i=r.bls12381G1KeyPair,n=r.bls12381G2KeyPair;return new e({id:"",controller:"",g1KeyPair:new K({id:i.id,publicKeyBuffer:t.decode(i.publicKeyBase58),privateKeyBuffer:t.decode(i.privateKeyBase58)}),g2KeyPair:new v({id:n.id,publicKeyBuffer:t.decode(n.publicKeyBase58),privateKeyBuffer:t.decode(n.privateKeyBase58)})})}))}catch(e){return Promise.reject(e)}},e.fromFingerprint=function(r){var i=r.fingerprint;try{var t=function(e){if(n)return e;if(0===i.indexOf("z3t"))return K.fromFingerprint({fingerprint:i});if(0===i.indexOf("zUC"))return v.fromFingerprint({fingerprint:i});throw new Error("Bls12381KeyPairs only supports g1, g2 and g1 and g2 mulicodec fingerprints.")},n=!1,o=function(){if(0===i.indexOf("z5Tc")){var r=p(i),t=r.bls12381G1KeyPair,o=r.bls12381G2KeyPair;delete t.id,delete o.id;var c="did:key:"+i;return t.controller=c,o.controller=c,n=!0,Promise.resolve(K.from(t)).then((function(r){return Promise.resolve(v.from(o)).then((function(t){return new e({id:"#"+i,controller:c,g1KeyPair:r,g2KeyPair:t})}))}))}}();return Promise.resolve(o&&o.then?o.then(t):t(o))}catch(e){return Promise.reject(e)}};var r=e.prototype;return r.fingerprint=function(){var e=Buffer.concat([this.g1KeyPair.publicKeyBuffer,this.g2KeyPair.publicKeyBuffer]),r=new Uint8Array(2+e.length);return r[0]=238,r[1]=1,r.set(e,2),"z"+t.encode(r)},r.export=function(e){return void 0===e&&(e=!1),{fingerprint:this.fingerprint(),g1:this.g1KeyPair.toJsonWebKeyPair(e),g2:this.g2KeyPair.toJsonWebKeyPair(e)}},e}(),B=function(e,r){var i;switch(void 0===r&&(r="application/did+ld+json"),r){case"application/did+json":i=e.toJsonWebKeyPair();break;case"*/*":case"application/did+ld+json":i=e.toKeyPair();break;default:throw new Error("This implementation of did:key does not support: "+r)}return i},b=function(){return function(e,r){void 0===r&&(r={accept:"application/did+ld+json"});try{var i=e.split("#")[0].split("did:key:").pop();return Promise.resolve(h.fromFingerprint({fingerprint:i})).then((function(e){return Promise.resolve(function(e,r){void 0===r&&(r="application/did+ld+json");try{var i={verificationMethod:[]},t="did:key:"+e.fingerprint();if("Bls12381KeyPairs2020"===e.type){var n=B(e.g1KeyPair,r),o=B(e.g2KeyPair,r);i.verificationMethod.push(n),i.verificationMethod.push(o),i=l({},i,{authentication:[n.id,o.id],assertionMethod:[n.id,o.id],capabilityInvocation:[n.id,o.id],capabilityDelegation:[n.id,o.id]})}else{var c=B(e,r);i.verificationMethod.push(c),i=l({},i,{authentication:[c.id],assertionMethod:[c.id],capabilityInvocation:[c.id],capabilityDelegation:[c.id]})}var s=l({"@context":["https://www.w3.org/ns/did/v1",{"@base":t}],id:t},i);return Promise.resolve(s)}catch(e){return Promise.reject(e)}}(e,r.accept)).then((function(e){return{didDocument:e,didDocumentMetaData:{"content-type":r.accept},didResolutionMetaData:{}}}))}))}catch(e){return Promise.reject(e)}}},P=b(),g={__proto__:null,getResolve:b,resolve:P,get:i.getGet(P)};exports.Bls12381G1KeyPair=K,exports.Bls12381G2KeyPair=v,exports.Bls12381KeyPairs=h,exports.driver=g;
//# sourceMappingURL=did-key-bls12381.cjs.production.min.js.map

@@ -1,6 +0,36 @@

import { getResolve, getGet } from '@transmute/did-key-common';
import { Bls12381G2KeyPair as Bls12381G2KeyPair$1 } from '@mattrglobal/bls12381-key-pair';
import { generateBls12381KeyPair } from '@mattrglobal/bbs-signatures';
import { encode, decode } from 'bs58';
import { getGet } from '@transmute/did-key-common';
import bs58 from 'bs58';
import { generateBls12381G1KeyPair, generateBls12381G2KeyPair } from '@mattrglobal/bbs-signatures';
import base64url from 'base64url';
import { Bls12381G1KeyPair as Bls12381G1KeyPair$1, Bls12381G2KeyPair as Bls12381G2KeyPair$1 } from '@mattrglobal/bls12381-key-pair';
var generateKeyPairs = function generateKeyPairs() {
try {
return Promise.resolve(generateBls12381G1KeyPair()).then(function (g1) {
return Promise.resolve(generateBls12381G2KeyPair()).then(function (g2) {
var bls12381G1KeyPair = {
id: '',
type: 'Bls12381G1Key2020',
controller: '',
publicKeyBase58: bs58.encode(g1.publicKey),
privateKeyBase58: bs58.encode(g1.secretKey)
};
var bls12381G2KeyPair = {
id: '',
type: 'Bls12381G2Key2020',
controller: '',
publicKeyBase58: bs58.encode(g2.publicKey),
privateKeyBase58: bs58.encode(g2.secretKey)
};
return {
bls12381G1KeyPair: bls12381G1KeyPair,
bls12381G2KeyPair: bls12381G2KeyPair
};
});
});
} catch (e) {
return Promise.reject(e);
}
};
function _extends() {

@@ -24,44 +54,181 @@ _extends = Object.assign || function (target) {

var Bls12381G2KeyPair = /*#__PURE__*/function () {
function Bls12381G2KeyPair(options) {
this.type = 'Bls12381G2Key2020';
// Pulled from https://github.com/mattrglobal/bls12381-key-pair
// License is Apache-2.0
/**
* z represents the multibase encoding scheme of base58 encoding
* @see https://github.com/multiformats/multibase/blob/master/multibase.csv#L18
* @ignore
*/
var MULTIBASE_ENCODED_BASE58_IDENTIFIER = 'z';
/**
* 0x01 indicates the end of the leading bytes according to variable integer spec
* @see https://github.com/multiformats/multicodec
* @ignore
*/
var VARIABLE_INTEGER_TRAILING_BYTE = 0x01;
/**
* 0xea indicates a BLS 12-381 G1 public key
*
*/
var BLS12381G1_MULTICODEC_IDENTIFIER = 0xea;
/**
* 0xeb indicates a BLS 12-381 G2 public key
*
*/
var BLS12381G2_MULTICODEC_IDENTIFIER = 0xeb;
/**
* 0xee indicates a BLS 12-381 G1 concat with BLS 12-381 G2
*
*/
var BLS12381G1ANDG2_MULTICODEC_IDENTIFIER = 0xee;
var BlsCurveName;
(function (BlsCurveName) {
BlsCurveName["G1"] = "BLS12381_G1";
BlsCurveName["G2"] = "BLS12381_G2";
})(BlsCurveName || (BlsCurveName = {}));
var curveMap = {
Bls12381G1Key2020: BlsCurveName.G1,
Bls12381G2Key2020: BlsCurveName.G2
};
var toJsonWebKeyPair = function toJsonWebKeyPair(keypair) {
var jsonWebKeyPair = {
id: keypair.id,
controller: keypair.controller,
type: 'JsonWebKey2020',
publicKeyJwk: {
kty: 'EC',
crv: curveMap[keypair.type],
x: base64url.encode(bs58.decode(keypair.publicKeyBase58))
}
};
if (keypair.privateKeyBase58) {
jsonWebKeyPair.privateKeyJwk = {
kty: 'EC',
crv: curveMap[keypair.type],
x: base64url.encode(bs58.decode(keypair.publicKeyBase58)),
d: base64url.encode(bs58.decode(keypair.privateKeyBase58))
};
}
return jsonWebKeyPair;
};
var fingerprintToJsonWebKeyPair = function fingerprintToJsonWebKeyPair(fingerprint) {
if (fingerprint[0] !== 'z') {
throw new Error('base58 encoded fingerprint must start with "z"');
}
var buffer = bs58.decode(fingerprint.substring(1));
if (buffer[0] === BLS12381G1_MULTICODEC_IDENTIFIER && buffer[1] === VARIABLE_INTEGER_TRAILING_BYTE) {
var kp = toJsonWebKeyPair({
type: 'Bls12381G1Key2020',
publicKeyBase58: bs58.encode(buffer.slice(2))
});
return {
bls12381G1KeyPair: _extends({}, kp, {
id: '#' + fingerprint,
controller: "did:key:" + fingerprint
})
};
}
if (buffer[0] === BLS12381G2_MULTICODEC_IDENTIFIER && buffer[1] === VARIABLE_INTEGER_TRAILING_BYTE) {
var _kp = toJsonWebKeyPair({
type: 'Bls12381G2Key2020',
publicKeyBase58: bs58.encode(buffer.slice(2))
});
return {
bls12381G2KeyPair: _extends({}, _kp, {
id: '#' + fingerprint,
controller: "did:key:" + fingerprint
})
};
}
if (buffer[0] === BLS12381G1ANDG2_MULTICODEC_IDENTIFIER && buffer[1] === VARIABLE_INTEGER_TRAILING_BYTE) {
var g1 = toJsonWebKeyPair({
type: 'Bls12381G1Key2020',
publicKeyBase58: bs58.encode(buffer.slice(2, 50))
});
var g2 = toJsonWebKeyPair({
type: 'Bls12381G2Key2020',
publicKeyBase58: bs58.encode(buffer.slice(50))
});
return {
bls12381G1KeyPair: _extends({}, g1, {
id: '#' + fingerprint,
controller: "did:key:" + fingerprint
}),
bls12381G2KeyPair: _extends({}, g2, {
id: '#' + fingerprint,
controller: "did:key:" + fingerprint
})
};
}
throw new Error('unsupported fingerprint is not g1, g2 or g1 and g2.');
};
var _curveToMulticodecMap;
var curveToMulticodecMap = (_curveToMulticodecMap = {}, _curveToMulticodecMap[BlsCurveName.G1] = BLS12381G1_MULTICODEC_IDENTIFIER, _curveToMulticodecMap[BlsCurveName.G2] = BLS12381G2_MULTICODEC_IDENTIFIER, _curveToMulticodecMap);
var publicKeyJwkToDidKey = function publicKeyJwkToDidKey(publicKeyJwk) {
var publicKey = base64url.toBuffer(publicKeyJwk.x);
var buffer = new Uint8Array(2 + publicKey.length);
buffer[0] = curveToMulticodecMap[publicKeyJwk.crv];
buffer[1] = VARIABLE_INTEGER_TRAILING_BYTE;
buffer.set(publicKey, 2);
return "did:key:" + MULTIBASE_ENCODED_BASE58_IDENTIFIER + bs58.encode(buffer);
};
var Bls12381G1KeyPair = /*#__PURE__*/function () {
function Bls12381G1KeyPair(options) {
this.type = 'Bls12381G1Key2020';
this.id = options.id;
this.type = options.type || 'Bls12381G2Key2020';
this.controller = options.controller;
this.publicKeyBuffer = options.publicKeyBuffer;
this.privateKeyBuffer = options.privateKeyBuffer;
if (options.publicKeyBase58) {
this.publicKeyBuffer = decode(options.publicKeyBase58);
} else if (options.publicKeyJwk) {
this.publicKeyBuffer = Buffer.from('a');
} else {
throw new Error('Bls12381G2KeyPair requires publicKeyBase58 or publicKeyJwk, recieved neither.');
}
if (!this.controller) {
var _this$toJsonWebKeyPai = this.toJsonWebKeyPair(false),
publicKeyJwk = _this$toJsonWebKeyPai.publicKeyJwk;
if (options.privateKeyBase58) {
this.privateKeyBuffer = decode(options.privateKeyBase58);
this.controller = publicKeyJwkToDidKey(publicKeyJwk);
}
if (!this.id) {
this.id = '#' + this.fingerprint();
}
var _this$toJsonWebKeyPai2 = this.toJsonWebKeyPair(false),
_publicKeyJwk = _this$toJsonWebKeyPai2.publicKeyJwk;
if (!this.controller) {
this.controller = "did:key:" + this.fingerprint();
this.id = '#' + publicKeyJwkToDidKey(_publicKeyJwk).split('did:key:').pop();
}
}
Bls12381G2KeyPair.generate = function generate() {
Bls12381G1KeyPair.generate = function generate() {
try {
var keyPair = generateBls12381KeyPair();
var options = {
privateKeyBase58: encode(keyPair.secretKey),
publicKeyBase58: encode(keyPair.publicKey)
};
var fingerprint = Bls12381G2KeyPair$1.fingerprintFromPublicKey({
publicKeyBase58: options.publicKeyBase58
return Promise.resolve(generateKeyPairs()).then(function (_ref) {
var bls12381G1KeyPair = _ref.bls12381G1KeyPair;
var _toJsonWebKeyPair2 = toJsonWebKeyPair(bls12381G1KeyPair),
publicKeyJwk = _toJsonWebKeyPair2.publicKeyJwk;
bls12381G1KeyPair.controller = publicKeyJwkToDidKey(publicKeyJwk);
bls12381G1KeyPair.id = '#' + bls12381G1KeyPair.controller.split('did:key:').pop();
return new Bls12381G1KeyPair({
id: bls12381G1KeyPair.id,
controller: bls12381G1KeyPair.controller,
publicKeyBuffer: bs58.decode(bls12381G1KeyPair.publicKeyBase58),
privateKeyBuffer: bs58.decode(bls12381G1KeyPair.privateKeyBase58)
});
});
return Promise.resolve(new Bls12381G2KeyPair(_extends({}, options, {
id: '#' + fingerprint,
controller: "did:key:" + fingerprint
})));
} catch (e) {

@@ -72,13 +239,14 @@ return Promise.reject(e);

Bls12381G2KeyPair.fromFingerprint = function fromFingerprint(_ref) {
var fingerprint = _ref.fingerprint;
Bls12381G1KeyPair.fromFingerprint = function fromFingerprint(_ref2) {
var fingerprint = _ref2.fingerprint;
try {
var keypair = Bls12381G2KeyPair$1.fromFingerprint({
fingerprint: fingerprint
});
var options = {
publicKeyBase58: encode(keypair.publicKeyBuffer)
};
return Promise.resolve(new Bls12381G2KeyPair(options));
var _fingerprintToJsonWeb = fingerprintToJsonWebKeyPair(fingerprint),
bls12381G1KeyPair = _fingerprintToJsonWeb.bls12381G1KeyPair;
return Promise.resolve(new Bls12381G1KeyPair({
id: bls12381G1KeyPair.id,
controller: bls12381G1KeyPair.controller,
publicKeyBuffer: base64url.toBuffer(bls12381G1KeyPair.publicKeyJwk.x)
}));
} catch (e) {

@@ -89,63 +257,33 @@ return Promise.reject(e);

Bls12381G2KeyPair.from = function from(options) {
Bls12381G1KeyPair.from = function from(options) {
try {
var _temp9 = function _temp9() {
function _temp6() {
function _temp4() {
function _temp2() {
var _options = {
publicKeyBase58: encode(keypair.publicKeyBuffer)
};
if (options.type === 'JsonWebKey2020') {
var opts = {
id: options.id,
controller: options.controller,
publicKeyBuffer: base64url.toBuffer(options.publicKeyJwk.x)
};
if (keypair.privateKeyBuffer) {
_options.privateKeyBase58 = encode(keypair.privateKeyBuffer);
}
if (options.privateKeyJwk) {
opts.privateKeyBuffer = base64url.toBuffer(options.privateKeyJwk.d);
}
return new Bls12381G2KeyPair(_options);
}
return Promise.resolve(new Bls12381G1KeyPair(opts));
}
var _temp = function () {
if (options.privateKeyBase58) {
return Promise.resolve(Bls12381G2KeyPair$1.from(options)).then(function (_mattr$Bls12381G2KeyP4) {
keypair = _mattr$Bls12381G2KeyP4;
});
}
}();
if (options.type === 'Bls12381G1Key2020') {
var _opts = {
id: options.id,
controller: options.controller,
publicKeyBuffer: bs58.decode(options.publicKeyBase58)
};
return _temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp);
}
var _temp3 = function () {
if (options.publicKeyBase58) {
return Promise.resolve(Bls12381G2KeyPair$1.from(options)).then(function (_mattr$Bls12381G2KeyP3) {
keypair = _mattr$Bls12381G2KeyP3;
});
}
}();
return _temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3);
if (options.privateKeyBase58) {
_opts.privateKeyBuffer = bs58.decode(options.privateKeyBase58);
}
var _temp5 = function () {
if (options.privateKeyJwk) {
return Promise.resolve(Bls12381G2KeyPair$1.fromJwk(options)).then(function (_mattr$Bls12381G2KeyP2) {
keypair = _mattr$Bls12381G2KeyP2;
});
}
}();
return Promise.resolve(new Bls12381G1KeyPair(_opts));
}
return _temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5);
};
var keypair;
var _temp10 = function () {
if (options.publicKeyJwk) {
return Promise.resolve(Bls12381G2KeyPair$1.fromJwk(options)).then(function (_mattr$Bls12381G2KeyP) {
keypair = _mattr$Bls12381G2KeyP;
});
}
}();
return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
throw new Error('unsuported key type');
} catch (e) {

@@ -156,9 +294,9 @@ return Promise.reject(e);

var _proto = Bls12381G2KeyPair.prototype;
var _proto = Bls12381G1KeyPair.prototype;
_proto.fingerprint = function fingerprint() {
var fingerprint = Bls12381G2KeyPair$1.fingerprintFromPublicKey({
publicKeyBase58: encode(this.publicKeyBuffer)
});
return fingerprint;
var _this$toJsonWebKeyPai3 = this.toJsonWebKeyPair(false),
publicKeyJwk = _this$toJsonWebKeyPai3.publicKeyJwk;
return publicKeyJwkToDidKey(publicKeyJwk).split('did:key:').pop();
};

@@ -175,7 +313,7 @@

controller: this.controller,
publicKeyBase58: encode(this.publicKeyBuffer)
publicKeyBase58: bs58.encode(this.publicKeyBuffer)
};
if (exportPrivateKey) {
kp.privateKeyBase58 = encode(this.privateKeyBuffer);
kp.privateKeyBase58 = bs58.encode(this.privateKeyBuffer);
}

@@ -186,3 +324,3 @@

_proto.toJsonWebKeyPair = function toJsonWebKeyPair(exportPrivateKey) {
_proto.toJsonWebKeyPair = function toJsonWebKeyPair$1(exportPrivateKey) {
if (exportPrivateKey === void 0) {

@@ -192,14 +330,146 @@ exportPrivateKey = false;

var mattrKey = new Bls12381G2KeyPair$1(this.toKeyPair(exportPrivateKey));
var result = toJsonWebKeyPair(this.toKeyPair(exportPrivateKey));
return result;
};
_proto.verifier = function verifier() {
var key = new Bls12381G1KeyPair$1({
publicKeyBase58: bs58.encode(this.publicKeyBuffer)
});
return key.verifier();
};
_proto.signer = function signer() {
var key = new Bls12381G1KeyPair$1({
publicKeyBase58: bs58.encode(this.publicKeyBuffer),
privateKeyBase58: bs58.encode(this.privateKeyBuffer)
});
return key.signer();
};
return Bls12381G1KeyPair;
}();
var Bls12381G2KeyPair = /*#__PURE__*/function () {
function Bls12381G2KeyPair(options) {
this.type = 'Bls12381G2Key2020';
this.id = options.id;
this.controller = options.controller;
this.publicKeyBuffer = options.publicKeyBuffer;
this.privateKeyBuffer = options.privateKeyBuffer;
if (!this.controller) {
var _this$toJsonWebKeyPai = this.toJsonWebKeyPair(false),
publicKeyJwk = _this$toJsonWebKeyPai.publicKeyJwk;
this.controller = publicKeyJwkToDidKey(publicKeyJwk);
}
if (!this.id) {
var _this$toJsonWebKeyPai2 = this.toJsonWebKeyPair(false),
_publicKeyJwk = _this$toJsonWebKeyPai2.publicKeyJwk;
this.id = '#' + publicKeyJwkToDidKey(_publicKeyJwk).split('did:key:').pop();
}
}
Bls12381G2KeyPair.generate = function generate() {
try {
return Promise.resolve(generateKeyPairs()).then(function (_ref) {
var bls12381G2KeyPair = _ref.bls12381G2KeyPair;
var _toJsonWebKeyPair2 = toJsonWebKeyPair(bls12381G2KeyPair),
publicKeyJwk = _toJsonWebKeyPair2.publicKeyJwk;
bls12381G2KeyPair.controller = publicKeyJwkToDidKey(publicKeyJwk);
bls12381G2KeyPair.id = '#' + bls12381G2KeyPair.controller.split('did:key:').pop();
return new Bls12381G2KeyPair({
id: bls12381G2KeyPair.id,
controller: bls12381G2KeyPair.controller,
publicKeyBuffer: bs58.decode(bls12381G2KeyPair.publicKeyBase58),
privateKeyBuffer: bs58.decode(bls12381G2KeyPair.privateKeyBase58)
});
});
} catch (e) {
return Promise.reject(e);
}
};
Bls12381G2KeyPair.fromFingerprint = function fromFingerprint(_ref2) {
var fingerprint = _ref2.fingerprint;
try {
var _fingerprintToJsonWeb = fingerprintToJsonWebKeyPair(fingerprint),
bls12381G2KeyPair = _fingerprintToJsonWeb.bls12381G2KeyPair;
return Promise.resolve(new Bls12381G2KeyPair({
id: bls12381G2KeyPair.id,
controller: bls12381G2KeyPair.controller,
publicKeyBuffer: base64url.toBuffer(bls12381G2KeyPair.publicKeyJwk.x)
}));
} catch (e) {
return Promise.reject(e);
}
};
Bls12381G2KeyPair.from = function from(options) {
try {
if (options.type === 'JsonWebKey2020') {
var opts = {
id: options.id,
controller: options.controller,
publicKeyBuffer: base64url.toBuffer(options.publicKeyJwk.x)
};
if (options.privateKeyJwk) {
opts.privateKeyBuffer = base64url.toBuffer(options.privateKeyJwk.d);
}
return Promise.resolve(new Bls12381G2KeyPair(opts));
}
if (options.type === 'Bls12381G2Key2020') {
var _opts = {
id: options.id,
controller: options.controller,
publicKeyBuffer: bs58.decode(options.publicKeyBase58)
};
if (options.privateKeyBase58) {
_opts.privateKeyBuffer = bs58.decode(options.privateKeyBase58);
}
return Promise.resolve(new Bls12381G2KeyPair(_opts));
}
throw new Error('unsuported key type');
} catch (e) {
return Promise.reject(e);
}
};
var _proto = Bls12381G2KeyPair.prototype;
_proto.fingerprint = function fingerprint() {
var _this$toJsonWebKeyPai3 = this.toJsonWebKeyPair(false),
publicKeyJwk = _this$toJsonWebKeyPai3.publicKeyJwk;
return publicKeyJwkToDidKey(publicKeyJwk).split('did:key:').pop();
};
_proto.toKeyPair = function toKeyPair(exportPrivateKey) {
if (exportPrivateKey === void 0) {
exportPrivateKey = false;
}
var kp = {
id: this.id,
type: 'JsonWebKey2020',
type: this.type,
controller: this.controller,
publicKeyJwk: mattrKey.publicKeyJwk
publicKeyBase58: bs58.encode(this.publicKeyBuffer)
};
delete kp.publicKeyJwk.kid;
if (exportPrivateKey) {
kp.privateKeyJwk = mattrKey.privateKeyJwk;
delete kp.privateKeyJwk.kid;
kp.privateKeyBase58 = bs58.encode(this.privateKeyBuffer);
}

@@ -210,10 +480,23 @@

_proto.toJsonWebKeyPair = function toJsonWebKeyPair$1(exportPrivateKey) {
if (exportPrivateKey === void 0) {
exportPrivateKey = false;
}
return toJsonWebKeyPair(this.toKeyPair(exportPrivateKey));
};
_proto.verifier = function verifier() {
var mattrKey = new Bls12381G2KeyPair$1(this.toKeyPair(false));
return mattrKey.verifier();
var key = new Bls12381G2KeyPair$1({
publicKeyBase58: bs58.encode(this.publicKeyBuffer)
});
return key.verifier();
};
_proto.signer = function signer() {
var mattrKey = new Bls12381G2KeyPair$1(this.toKeyPair(true));
return mattrKey.signer();
var key = new Bls12381G2KeyPair$1({
publicKeyBase58: bs58.encode(this.publicKeyBuffer),
privateKeyBase58: bs58.encode(this.privateKeyBuffer)
});
return key.signer();
};

@@ -224,3 +507,237 @@

var resolve = /*#__PURE__*/getResolve(Bls12381G2KeyPair);
var Bls12381KeyPairs = /*#__PURE__*/function () {
function Bls12381KeyPairs(options) {
this.type = 'Bls12381KeyPairs2020';
this.id = options.id;
this.controller = options.controller;
this.g1KeyPair = options.g1KeyPair;
this.g2KeyPair = options.g2KeyPair;
if (!this.id) {
this.id = '#' + this.fingerprint();
}
if (!this.controller) {
this.controller = 'did:key:' + this.fingerprint();
}
this.g1KeyPair.controller = this.controller;
this.g2KeyPair.controller = this.controller;
}
Bls12381KeyPairs.generate = function generate() {
try {
return Promise.resolve(generateKeyPairs()).then(function (_ref) {
var bls12381G1KeyPair = _ref.bls12381G1KeyPair,
bls12381G2KeyPair = _ref.bls12381G2KeyPair;
var options = {
id: '',
controller: '',
g1KeyPair: new Bls12381G1KeyPair({
id: bls12381G1KeyPair.id,
publicKeyBuffer: bs58.decode(bls12381G1KeyPair.publicKeyBase58),
privateKeyBuffer: bs58.decode(bls12381G1KeyPair.privateKeyBase58)
}),
g2KeyPair: new Bls12381G2KeyPair({
id: bls12381G2KeyPair.id,
publicKeyBuffer: bs58.decode(bls12381G2KeyPair.publicKeyBase58),
privateKeyBuffer: bs58.decode(bls12381G2KeyPair.privateKeyBase58)
})
};
return new Bls12381KeyPairs(options);
});
} catch (e) {
return Promise.reject(e);
}
};
Bls12381KeyPairs.fromFingerprint = function fromFingerprint(_ref2) {
var fingerprint = _ref2.fingerprint;
try {
var _temp3 = function _temp3(_result) {
if (_exit2) return _result;
if (fingerprint.indexOf('z3t') === 0) {
return Bls12381G1KeyPair.fromFingerprint({
fingerprint: fingerprint
});
}
if (fingerprint.indexOf('zUC') === 0) {
return Bls12381G2KeyPair.fromFingerprint({
fingerprint: fingerprint
});
}
throw new Error('Bls12381KeyPairs only supports g1, g2 and g1 and g2 mulicodec fingerprints.');
};
var _exit2 = false;
var _temp4 = function () {
if (fingerprint.indexOf('z5Tc') === 0) {
var _fingerprintToJsonWeb = fingerprintToJsonWebKeyPair(fingerprint),
bls12381G1KeyPair = _fingerprintToJsonWeb.bls12381G1KeyPair,
bls12381G2KeyPair = _fingerprintToJsonWeb.bls12381G2KeyPair;
delete bls12381G1KeyPair.id;
delete bls12381G2KeyPair.id;
var controller = 'did:key:' + fingerprint;
bls12381G1KeyPair.controller = controller;
bls12381G2KeyPair.controller = controller;
_exit2 = true;
return Promise.resolve(Bls12381G1KeyPair.from(bls12381G1KeyPair)).then(function (_Bls12381G1KeyPair$fr) {
return Promise.resolve(Bls12381G2KeyPair.from(bls12381G2KeyPair)).then(function (_Bls12381G2KeyPair$fr) {
return new Bls12381KeyPairs({
id: '#' + fingerprint,
controller: controller,
g1KeyPair: _Bls12381G1KeyPair$fr,
g2KeyPair: _Bls12381G2KeyPair$fr
});
});
});
}
}();
return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
} catch (e) {
return Promise.reject(e);
}
};
var _proto = Bls12381KeyPairs.prototype;
_proto.fingerprint = function fingerprint() {
var g1Buffer = this.g1KeyPair.publicKeyBuffer;
var g2Buffer = this.g2KeyPair.publicKeyBuffer;
var g1AndG2 = Buffer.concat([g1Buffer, g2Buffer]);
var buffer = new Uint8Array(2 + g1AndG2.length);
buffer[0] = BLS12381G1ANDG2_MULTICODEC_IDENTIFIER;
buffer[1] = VARIABLE_INTEGER_TRAILING_BYTE;
buffer.set(g1AndG2, 2);
return "" + MULTIBASE_ENCODED_BASE58_IDENTIFIER + bs58.encode(buffer);
};
_proto["export"] = function _export(exportPrivate) {
if (exportPrivate === void 0) {
exportPrivate = false;
}
return {
fingerprint: this.fingerprint(),
g1: this.g1KeyPair.toJsonWebKeyPair(exportPrivate),
g2: this.g2KeyPair.toJsonWebKeyPair(exportPrivate)
};
};
return Bls12381KeyPairs;
}();
var getVerificationMethod = function getVerificationMethod(didKeyPairInstance, contentType) {
if (contentType === void 0) {
contentType = 'application/did+ld+json';
}
var externalKeyRepresentation;
switch (contentType) {
case 'application/did+json':
{
externalKeyRepresentation = didKeyPairInstance.toJsonWebKeyPair();
break;
}
case '*/*':
case 'application/did+ld+json':
{
externalKeyRepresentation = didKeyPairInstance.toKeyPair();
break;
}
default:
{
throw new Error('This implementation of did:key does not support: ' + contentType);
}
}
return externalKeyRepresentation;
};
var keyToDidDoc = function keyToDidDoc(didKeyPairInstance, contentType) {
if (contentType === void 0) {
contentType = 'application/did+ld+json';
}
try {
var verificationRelationships = {
verificationMethod: []
};
var did = "did:key:" + didKeyPairInstance.fingerprint();
if (didKeyPairInstance.type === 'Bls12381KeyPairs2020') {
var g1 = getVerificationMethod(didKeyPairInstance.g1KeyPair, contentType);
var g2 = getVerificationMethod(didKeyPairInstance.g2KeyPair, contentType);
verificationRelationships.verificationMethod.push(g1);
verificationRelationships.verificationMethod.push(g2);
verificationRelationships = _extends({}, verificationRelationships, {
authentication: [g1.id, g2.id],
assertionMethod: [g1.id, g2.id],
capabilityInvocation: [g1.id, g2.id],
capabilityDelegation: [g1.id, g2.id]
});
} else {
var vm = getVerificationMethod(didKeyPairInstance, contentType);
verificationRelationships.verificationMethod.push(vm);
verificationRelationships = _extends({}, verificationRelationships, {
authentication: [vm.id],
assertionMethod: [vm.id],
capabilityInvocation: [vm.id],
capabilityDelegation: [vm.id]
});
}
var didDocument = _extends({
'@context': ['https://www.w3.org/ns/did/v1', {
'@base': did
}],
id: did
}, verificationRelationships);
return Promise.resolve(didDocument);
} catch (e) {
return Promise.reject(e);
}
};
var getResolve = function getResolve() {
var resolve = function resolve(didUri, resolutionMetaData) {
if (resolutionMetaData === void 0) {
resolutionMetaData = {
accept: 'application/did+ld+json'
};
}
try {
var fingerprint = didUri.split('#')[0].split('did:key:').pop();
return Promise.resolve(Bls12381KeyPairs.fromFingerprint({
fingerprint: fingerprint
})).then(function (publicKey) {
return Promise.resolve(keyToDidDoc(publicKey, resolutionMetaData.accept)).then(function (_keyToDidDoc) {
return {
didDocument: _keyToDidDoc,
didDocumentMetaData: {
'content-type': resolutionMetaData.accept
},
didResolutionMetaData: {}
};
});
});
} catch (e) {
return Promise.reject(e);
}
};
return resolve;
};
var resolve = /*#__PURE__*/getResolve();
var get = /*#__PURE__*/getGet(resolve);

@@ -230,2 +747,3 @@

__proto__: null,
getResolve: getResolve,
resolve: resolve,

@@ -235,3 +753,3 @@ get: get

export { Bls12381G2KeyPair, driver };
export { Bls12381G1KeyPair, Bls12381G2KeyPair, Bls12381KeyPairs, driver };
//# sourceMappingURL=did-key-bls12381.esm.js.map

@@ -0,1 +1,8 @@

export declare const getResolve: () => (didUri: string, resolutionMetaData?: any) => Promise<{
didDocument: any;
didDocumentMetaData: {
'content-type': any;
};
didResolutionMetaData: {};
}>;
export declare const resolve: (didUri: string, resolutionMetaData?: any) => Promise<{

@@ -2,0 +9,0 @@ didDocument: any;

import * as driver from './driver';
export * from './Bls12381G1KeyPair';
export * from './Bls12381G2KeyPair';
export * from './Bls12381KeyPairs';
export { driver };

@@ -5,3 +5,3 @@ {

"module": "dist/bls12381.esm.js",
"version": "0.2.1-unstable.25",
"version": "0.2.1-unstable.26",
"license": "Apache-2.0",

@@ -28,3 +28,3 @@ "main": "dist/index.js",

"devDependencies": {
"@transmute/did-key-test-vectors": "^0.2.1-unstable.25",
"@transmute/did-key-test-vectors": "^0.2.1-unstable.26",
"tsdx": "^0.13.2",

@@ -35,8 +35,9 @@ "tslib": "^2.0.0",

"dependencies": {
"@mattrglobal/bbs-signatures": "^0.3.0",
"@mattrglobal/bls12381-key-pair": "v0.4.1-unstable.aeea218",
"@transmute/did-key-common": "^0.2.1-unstable.25",
"@mattrglobal/bbs-signatures": "^0.4.0",
"@mattrglobal/bls12381-key-pair": "^0.4.1-unstable.256739c",
"@transmute/did-key-common": "^0.2.1-unstable.26",
"base64url": "^3.0.1",
"bs58": "^4.0.1"
},
"gitHead": "7fc46c1bb7c802191ce46fb4648e6f11c6252b77"
"gitHead": "33d765d3415bc917c21fed0f01b1dd7f89d161d0"
}

@@ -0,6 +1,9 @@

import bs58 from 'bs58';
import base64url from 'base64url';
import * as mattr from '@mattrglobal/bls12381-key-pair';
import { generateKeyPairs } from './functions/generateKeyPairs';
import { toJsonWebKeyPair } from './functions/toJsonWebKeyPair';
import { publicKeyJwkToDidKey } from './functions/publicKeyJwkToDidKey';
import { fingerprintToJsonWebKeyPair } from './functions/fingerprintToJsonWebKeyPair';
import { generateBls12381KeyPair } from '@mattrglobal/bbs-signatures';
import * as bs58 from 'bs58';
export class Bls12381G2KeyPair {

@@ -14,14 +17,12 @@ public id: string;

static async generate() {
const keyPair = generateBls12381KeyPair();
let options = {
privateKeyBase58: bs58.encode(keyPair.secretKey as Uint8Array),
publicKeyBase58: bs58.encode(keyPair.publicKey),
};
const fingerprint = mattr.Bls12381G2KeyPair.fingerprintFromPublicKey({
publicKeyBase58: options.publicKeyBase58,
});
const { bls12381G2KeyPair } = await generateKeyPairs();
const { publicKeyJwk } = toJsonWebKeyPair(bls12381G2KeyPair);
bls12381G2KeyPair.controller = publicKeyJwkToDidKey(publicKeyJwk);
bls12381G2KeyPair.id =
'#' + bls12381G2KeyPair.controller.split('did:key:').pop();
return new Bls12381G2KeyPair({
...options,
id: '#' + fingerprint,
controller: `did:key:${fingerprint}`,
id: bls12381G2KeyPair.id,
controller: bls12381G2KeyPair.controller,
publicKeyBuffer: bs58.decode(bls12381G2KeyPair.publicKeyBase58),
privateKeyBuffer: bs58.decode(bls12381G2KeyPair.privateKeyBase58),
});

@@ -31,37 +32,36 @@ }

static async fromFingerprint({ fingerprint }: any) {
const keypair = mattr.Bls12381G2KeyPair.fromFingerprint({
fingerprint,
const { bls12381G2KeyPair } = fingerprintToJsonWebKeyPair(fingerprint);
return new Bls12381G2KeyPair({
id: bls12381G2KeyPair.id,
controller: bls12381G2KeyPair.controller,
publicKeyBuffer: base64url.toBuffer(bls12381G2KeyPair.publicKeyJwk.x),
});
const options = {
publicKeyBase58: bs58.encode(keypair.publicKeyBuffer),
};
return new Bls12381G2KeyPair(options);
}
static async from(options: any) {
let keypair;
if (options.publicKeyJwk) {
keypair = await mattr.Bls12381G2KeyPair.fromJwk(options);
if (options.type === 'JsonWebKey2020') {
let opts: any = {
id: options.id,
controller: options.controller,
publicKeyBuffer: base64url.toBuffer(options.publicKeyJwk.x),
};
if (options.privateKeyJwk) {
opts.privateKeyBuffer = base64url.toBuffer(options.privateKeyJwk.d);
}
return new Bls12381G2KeyPair(opts);
}
if (options.privateKeyJwk) {
keypair = await mattr.Bls12381G2KeyPair.fromJwk(options);
}
if (options.publicKeyBase58) {
keypair = await mattr.Bls12381G2KeyPair.from(options);
if (options.type === 'Bls12381G2Key2020') {
let opts: any = {
id: options.id,
controller: options.controller,
publicKeyBuffer: bs58.decode(options.publicKeyBase58),
};
if (options.privateKeyBase58) {
opts.privateKeyBuffer = bs58.decode(options.privateKeyBase58);
}
return new Bls12381G2KeyPair(opts);
}
if (options.privateKeyBase58) {
keypair = await mattr.Bls12381G2KeyPair.from(options);
}
let _options: any = {
publicKeyBase58: bs58.encode((keypair as any).publicKeyBuffer),
};
if ((keypair as any).privateKeyBuffer) {
_options.privateKeyBase58 = bs58.encode(
(keypair as any).privateKeyBuffer
);
}
return new Bls12381G2KeyPair(_options);
throw new Error('unsuported key type');
}

@@ -71,29 +71,25 @@

this.id = options.id;
this.type = options.type || 'Bls12381G2Key2020';
this.controller = options.controller;
if (options.publicKeyBase58) {
this.publicKeyBuffer = bs58.decode(options.publicKeyBase58);
} else if (options.publicKeyJwk) {
this.publicKeyBuffer = Buffer.from('a');
} else {
throw new Error(
'Bls12381G2KeyPair requires publicKeyBase58 or publicKeyJwk, recieved neither.'
);
this.publicKeyBuffer = options.publicKeyBuffer;
this.privateKeyBuffer = options.privateKeyBuffer;
if (!this.controller) {
const { publicKeyJwk } = this.toJsonWebKeyPair(false);
this.controller = publicKeyJwkToDidKey(publicKeyJwk);
}
if (options.privateKeyBase58) {
this.privateKeyBuffer = bs58.decode(options.privateKeyBase58);
}
if (!this.id) {
this.id = '#' + this.fingerprint();
const { publicKeyJwk } = this.toJsonWebKeyPair(false);
this.id =
'#' +
publicKeyJwkToDidKey(publicKeyJwk)
.split('did:key:')
.pop();
}
if (!this.controller) {
this.controller = `did:key:${this.fingerprint()}`;
}
}
fingerprint() {
const fingerprint = mattr.Bls12381G2KeyPair.fingerprintFromPublicKey({
publicKeyBase58: bs58.encode(this.publicKeyBuffer),
});
return fingerprint;
const { publicKeyJwk } = this.toJsonWebKeyPair(false);
return publicKeyJwkToDidKey(publicKeyJwk)
.split('did:key:')
.pop();
}

@@ -116,26 +112,19 @@

toJsonWebKeyPair(exportPrivateKey = false) {
const mattrKey = new mattr.Bls12381G2KeyPair(
this.toKeyPair(exportPrivateKey)
);
const kp: any = {
id: this.id,
type: 'JsonWebKey2020',
controller: this.controller,
publicKeyJwk: mattrKey.publicKeyJwk,
};
delete kp.publicKeyJwk.kid;
if (exportPrivateKey) {
kp.privateKeyJwk = mattrKey.privateKeyJwk;
delete kp.privateKeyJwk.kid;
}
return kp;
return toJsonWebKeyPair(this.toKeyPair(exportPrivateKey));
}
verifier() {
const mattrKey = new mattr.Bls12381G2KeyPair(this.toKeyPair(false));
return mattrKey.verifier();
const key = new mattr.Bls12381G2KeyPair({
publicKeyBase58: bs58.encode(this.publicKeyBuffer),
});
return key.verifier();
}
signer() {
const mattrKey = new mattr.Bls12381G2KeyPair(this.toKeyPair(true));
return mattrKey.signer();
const key = new mattr.Bls12381G2KeyPair({
publicKeyBase58: bs58.encode(this.publicKeyBuffer),
privateKeyBase58: bs58.encode(this.privateKeyBuffer),
});
return key.signer();
}
}

@@ -1,6 +0,28 @@

import { getResolve, getGet } from '@transmute/did-key-common';
import { getGet } from '@transmute/did-key-common';
import { Bls12381G2KeyPair } from './Bls12381G2KeyPair';
import { Bls12381KeyPairs } from './Bls12381KeyPairs';
import { keyToDidDoc } from './functions/keyToDidDoc';
export const resolve = getResolve(Bls12381G2KeyPair);
export const getResolve = () => {
const resolve = async (
didUri: string,
resolutionMetaData: any = { accept: 'application/did+ld+json' }
) => {
const fingerprint = didUri
.split('#')[0]
.split('did:key:')
.pop();
const publicKey = await Bls12381KeyPairs.fromFingerprint({ fingerprint });
return {
didDocument: await keyToDidDoc(publicKey, resolutionMetaData.accept),
didDocumentMetaData: {
'content-type': resolutionMetaData.accept,
},
didResolutionMetaData: {},
};
};
return resolve;
};
export const resolve = getResolve();
export const get = getGet(resolve);
import * as driver from './driver';
export * from './Bls12381G1KeyPair';
export * from './Bls12381G2KeyPair';
export * from './Bls12381KeyPairs';
export { driver };

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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc