Socket
Socket
Sign inDemoInstall

arbundles

Package Overview
Dependencies
Maintainers
2
Versions
90
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

arbundles - npm Package Compare versions

Comparing version 0.3.0 to 0.3.1

6

build/ar-data-base.d.ts
import DataItem from './DataItem';
/**
* Options for creation of a DataItem
*/
export interface DataItemCreateOptions {
/**
* @deprecated
*/
data?: never;

@@ -4,0 +10,0 @@ target?: string;

27

build/ar-data-base.js
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getSignatureData = void 0;
const tslib_1 = require("tslib");
const web = tslib_1.__importStar(require("arweave/web/lib/deepHash"));
const web = __importStar(require("arweave/web/lib/deepHash"));
const utils_1 = require("arweave/web/lib/utils");
const utils_2 = require("./utils");
const deepHash_1 = tslib_1.__importDefault(require("./deepHash"));
const deepHash_1 = __importDefault(require("./deepHash"));
async function getSignatureData(item) {

@@ -10,0 +31,0 @@ if (utils_2.isBrowser) {

@@ -6,4 +6,31 @@ /// <reference types="node" />

import { Signer } from './signing/Signer';
/**
* Unbundles a transaction into an Array of DataItems.
*
* Takes either a json string or object. Will throw if given an invalid json
* string but otherwise, it will return an empty array if
*
* a) the json object is the wrong format
* b) the object contains no valid DataItems.
*
* It will verify all DataItems and discard ones that don't pass verification.
*
* @param txData
*/
export declare function unbundleData(txData: Buffer): Bundle;
/**
* Verifies all data items and returns a json object with an items array.
* Throws if any of the data items fail verification.
*
* @param dataItems
* @param signer
*/
export declare function bundleAndSignData(dataItems: DataItem[], signer: Signer): Promise<Bundle>;
/**
* Signs a single
*
* @param item
* @param signer
* @returns signings - signature and id in byte-arrays
*/
export declare function getSignatureAndId(item: DataItem, signer: Signer): Promise<{

@@ -13,2 +40,8 @@ signature: Buffer;

}>;
/**
* Signs and returns item id
*
* @param item
* @param jwk
*/
export declare function sign(item: DataItem, signer: Signer): Promise<Buffer>;
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.sign = exports.getSignatureAndId = exports.bundleAndSignData = exports.unbundleData = void 0;
const tslib_1 = require("tslib");
const ar_data_base_1 = require("./ar-data-base");
const utils_1 = require("./utils");
const arweave_1 = tslib_1.__importDefault(require("arweave"));
const Bundle_1 = tslib_1.__importDefault(require("./Bundle"));
const arweave_1 = __importDefault(require("arweave"));
const Bundle_1 = __importDefault(require("./Bundle"));
const buffer_1 = require("buffer");
/**
* Unbundles a transaction into an Array of DataItems.
*
* Takes either a json string or object. Will throw if given an invalid json
* string but otherwise, it will return an empty array if
*
* a) the json object is the wrong format
* b) the object contains no valid DataItems.
*
* It will verify all DataItems and discard ones that don't pass verification.
*
* @param txData
*/
function unbundleData(txData) {

@@ -14,15 +29,26 @@ return new Bundle_1.default(txData);

exports.unbundleData = unbundleData;
/**
* Verifies all data items and returns a json object with an items array.
* Throws if any of the data items fail verification.
*
* @param dataItems
* @param signer
*/
async function bundleAndSignData(dataItems, signer) {
const headers = new Uint8Array(64 * dataItems.length);
const binaries = await Promise.all(dataItems.map(async (d, index) => {
// Sign DataItem
const id = d.isSigned() ? d.rawId : await sign(d, signer);
// Create header array
const header = new Uint8Array(64);
// Set offset
header.set(utils_1.longTo32ByteArray(d.getRaw().byteLength), 0);
// Set id
header.set(id, 32);
// Add header to array of headers
headers.set(header, 64 * index);
// Convert to array for flattening
return d.getRaw();
})).then((a) => {
return a.reduce((previousValue, currentValue) => {
return buffer_1.Buffer.concat([previousValue, currentValue]);
}, buffer_1.Buffer.allocUnsafe(0));
return buffer_1.Buffer.concat(a);
});

@@ -37,2 +63,9 @@ const buffer = buffer_1.Buffer.from([

exports.bundleAndSignData = bundleAndSignData;
/**
* Signs a single
*
* @param item
* @param signer
* @returns signings - signature and id in byte-arrays
*/
async function getSignatureAndId(item, signer) {

@@ -45,2 +78,8 @@ const signatureData = await ar_data_base_1.getSignatureData(item);

exports.getSignatureAndId = getSignatureAndId;
/**
* Signs and returns item id
*
* @param item
* @param jwk
*/
async function sign(item, signer) {

@@ -47,0 +86,0 @@ const { signature, id } = await getSignatureAndId(item, signer);

import { DataItemCreateOptions } from "./ar-data-base";
import DataItem from "./DataItem";
import { Signer } from './signing';
import { Signer } from "./signing";
/**
* This will create a single DataItem in binary format (Uint8Array)
*
* @param data
* @param opts - Options involved in creating data items
* @param signer
*/
export declare function createData(data: string | Uint8Array, signer: Signer, opts?: DataItemCreateOptions): DataItem;
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.createData = void 0;
const tslib_1 = require("tslib");
const assert_1 = tslib_1.__importDefault(require("assert"));
const base64url_1 = tslib_1.__importDefault(require("base64url"));
const assert_1 = __importDefault(require("assert"));
const base64url_1 = __importDefault(require("base64url"));
const utils_1 = require("./utils");
const DataItem_1 = tslib_1.__importDefault(require("./DataItem"));
const DataItem_1 = __importDefault(require("./DataItem"));
const parser_1 = require("./parser");
/**
* This will create a single DataItem in binary format (Uint8Array)
*
* @param data
* @param opts - Options involved in creating data items
* @param signer
*/
function createData(data, signer, opts) {
// TODO: Add asserts
// Parse all values to a buffer and
const _owner = signer.publicKey;

@@ -20,2 +31,3 @@ const _target = opts?.target ? base64url_1.default.toBuffer(opts.target) : null;

const data_length = _data.byteLength;
// See [https://github.com/joshbenaron/arweave-standards/blob/ans104/ans/ANS-104.md#13-dataitem-format]
const length = 2 +

@@ -28,13 +40,22 @@ signer.signatureLength +

data_length;
// Create array with set length
const bytes = Buffer.alloc(length);
bytes.set(utils_1.shortTo2ByteArray(signer.signatureType), 0);
// Push bytes for `signature`
bytes.set(new Uint8Array(signer.signatureLength).fill(0), 2);
assert_1.default(_owner.byteLength == signer.ownerLength, new Error(`Owner must be ${signer.ownerLength} bytes`));
// // Push bytes for `id`
// bytes.set(EMPTY_ARRAY, 32);
// Push bytes for `owner`
assert_1.default(_owner.byteLength == signer.ownerLength, new Error(`Owner must be ${signer.ownerLength} bytes, but was incorrectly ${_owner.byteLength}`));
bytes.set(_owner, 2 + signer.signatureLength);
const position = 2 + signer.signatureLength + signer.ownerLength;
// Push `presence byte` and push `target` if present
// 64 + OWNER_LENGTH
bytes[position] = _target ? 1 : 0;
if (_target) {
assert_1.default(_target.byteLength == 32, new Error("Target must be 32 bytes"));
assert_1.default(_target.byteLength == 32, new Error("Target must be 32 bytes but was incorrectly ${_target.byteLength}"));
bytes.set(_target, position + 1);
}
// Push `presence byte` and push `anchor` if present
// 64 + OWNER_LENGTH
const anchor_start = position + target_length;

@@ -41,0 +62,0 @@ let tags_start = anchor_start + 1;

19

build/Bundle.d.ts

@@ -5,10 +5,14 @@ /// <reference types="node" />

import Arweave from "arweave";
import { BundleInterface } from './BundleInterface';
import { JWKInterface } from './interface-jwk';
import { BundleInterface } from "./BundleInterface";
import { JWKInterface } from "./interface-jwk";
export default class Bundle implements BundleInterface {
readonly binary: Buffer;
length: number;
items: DataItem[];
protected binary: Buffer;
constructor(binary: Buffer);
get length(): number;
get items(): DataItem[];
getRaw(): Buffer;
/**
* Get a DataItem by index (`number`) or by txId (`string`)
* @param index
*/
get(index: number | string): DataItem;

@@ -21,2 +25,7 @@ getSizes(): number[];

private getOffset;
/**
* UNSAFE! Assumes index < length
* @param index
* @private
*/
private getByIndex;

@@ -23,0 +32,0 @@ private getById;

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const base64url_1 = tslib_1.__importDefault(require("base64url"));
const base64url_1 = __importDefault(require("base64url"));
const utils_1 = require("./utils");
const DataItem_1 = tslib_1.__importDefault(require("./DataItem"));
const crypto = tslib_1.__importStar(require("crypto"));
const DataItem_1 = __importDefault(require("./DataItem"));
const crypto_1 = require("crypto");
const HEADER_START = 32;
class Bundle {
binary;
constructor(binary) {
this.binary = binary;
this.length = this.getDataItemCount();
this.items = this.getItems();
}
get length() { return this.getDataItemCount(); }
get items() { return this.getItems(); }
getRaw() { return this.binary; }
getRaw() {
return this.binary;
}
/**
* Get a DataItem by index (`number`) or by txId (`string`)
* @param index
*/
get(index) {

@@ -30,3 +37,3 @@ if (typeof index === "number") {

const ids = [];
for (let i = HEADER_START; i < (HEADER_START + (64 * this.length)); i += 64) {
for (let i = HEADER_START; i < HEADER_START + 64 * this.length; i += 64) {
ids.push(utils_1.byteArrayToLong(this.binary.subarray(i, i + 32)));

@@ -38,3 +45,3 @@ }

const ids = [];
for (let i = HEADER_START; i < (HEADER_START + (64 * this.length)); i += 64) {
for (let i = HEADER_START; i < HEADER_START + 64 * this.length; i += 64) {
ids.push(base64url_1.default.encode(this.binary.subarray(i + 32, i + 64)));

@@ -48,3 +55,3 @@ }

}
const start = 64 + (64 * index);
const start = 64 + 64 * index;
return base64url_1.default.encode(this.binary.subarray(start, start + 32));

@@ -54,3 +61,3 @@ }

const tx = await arweave.createTransaction({
data: this.binary
data: this.binary,
}, jwk);

@@ -62,6 +69,5 @@ tx.addTag("Bundle-Format", "binary");

async verify() {
const items = this.getItems();
for (const item of items) {
for (const item of this.items) {
const valid = await item.isValid();
const expected = base64url_1.default(crypto.createHash("sha256").update(item.rawSignature).digest());
const expected = base64url_1.default(crypto_1.createHash("sha256").update(item.rawSignature).digest());
if (!(valid && item.id === expected)) {

@@ -75,3 +81,3 @@ return false;

let offset = 0;
for (let i = HEADER_START; i < (HEADER_START + (64 * this.length)); i += 64) {
for (let i = HEADER_START; i < HEADER_START + 64 * this.length; i += 64) {
const _offset = utils_1.byteArrayToLong(this.binary.subarray(i, i + 32));

@@ -86,8 +92,14 @@ offset += _offset;

}
// TODO: Test this
/**
* UNSAFE! Assumes index < length
* @param index
* @private
*/
getByIndex(index) {
let offset = 0;
const headerStart = 32 + (64 * index);
const headerStart = 32 + 64 * index;
const dataItemSize = utils_1.byteArrayToLong(this.binary.subarray(headerStart, headerStart + 32));
let counter = 0;
for (let i = HEADER_START; i < (HEADER_START + (64 * this.length)); i += 64) {
for (let i = HEADER_START; i < HEADER_START + 64 * this.length; i += 64) {
if (counter == index) {

@@ -104,3 +116,3 @@ break;

const item = new DataItem_1.default(slice);
item.rawId = this.binary.slice(32 + (64 * index), 64 + (64 * index));
item.rawId = this.binary.slice(32 + 64 * index, 64 + 64 * index);
return item;

@@ -122,3 +134,3 @@ }

getBundleStart() {
return 32 + (64 * this.length);
return 32 + 64 * this.length;
}

@@ -130,3 +142,3 @@ getItems() {

let counter = 0;
for (let i = HEADER_START; i < (HEADER_START + (64 * this.length)); i += 64) {
for (let i = HEADER_START; i < HEADER_START + 64 * this.length; i += 64) {
const _offset = utils_1.byteArrayToLong(this.binary.subarray(i, i + 32));

@@ -133,0 +145,0 @@ const _id = this.binary.subarray(i + 32, i + 64);

@@ -5,17 +5,2 @@ "use strict";

class BundleItem {
signatureType;
rawSignature;
signature;
signatureLength;
rawOwner;
owner;
ownerLength;
rawTarget;
target;
rawAnchor;
anchor;
rawTags;
tags;
rawData;
data;
static async verify(..._) {

@@ -22,0 +7,0 @@ throw new Error("You must implement `verify`");

@@ -1,14 +0,11 @@

export declare const SIG_CONFIG: {
1: {
sigLength: number;
pubLength: number;
};
2: {
sigLength: number;
pubLength: number;
};
3: {
sigLength: number;
pubLength: number;
};
};
export declare enum SignatureConfig {
ARWEAVE = 1,
SOLANA = 2,
ETHERIUM = 3
}
interface SignatureMeta {
sigLength: number;
pubLength: number;
}
export declare const SIG_CONFIG: Record<SignatureConfig, SignatureMeta>;
export {};
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.SIG_CONFIG = void 0;
exports.SIG_CONFIG = exports.SignatureConfig = void 0;
var SignatureConfig;
(function (SignatureConfig) {
SignatureConfig[SignatureConfig["ARWEAVE"] = 1] = "ARWEAVE";
SignatureConfig[SignatureConfig["SOLANA"] = 2] = "SOLANA";
SignatureConfig[SignatureConfig["ETHERIUM"] = 3] = "ETHERIUM";
})(SignatureConfig = exports.SignatureConfig || (exports.SignatureConfig = {}));
exports.SIG_CONFIG = {
1: {
// Arweave
[SignatureConfig.ARWEAVE]: {
sigLength: 512,
pubLength: 512
pubLength: 512,
},
2: {
// ed25519 - Solana
[SignatureConfig.SOLANA]: {
sigLength: 64,
pubLength: 32
pubLength: 32,
},
3: {
// Ethereum
[SignatureConfig.ETHERIUM]: {
sigLength: 64,
pubLength: 65
}
pubLength: 65,
},
};
//# sourceMappingURL=constants.js.map

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

import { AxiosResponse } from "axios";
import { SignatureConfig } from "./constants";
export declare const MIN_BINARY_SIZE = 80;

@@ -13,3 +14,3 @@ export default class DataItem implements BundleItem {

static isDataItem(obj: any): boolean;
get signatureType(): number;
get signatureType(): SignatureConfig;
isValid(): Promise<boolean>;

@@ -42,5 +43,12 @@ get id(): string;

get data(): string;
/**
* UNSAFE!!
* DO NOT MUTATE THE BINARY ARRAY. THIS WILL CAUSE UNDEFINED BEHAVIOUR.
*/
getRaw(): Buffer;
sign(signer: Signer): Promise<Buffer>;
isSigned(): boolean;
/**
* Returns a JSON representation of a DataItem
*/
toJSON(): {

@@ -56,7 +64,31 @@ owner: string;

};
/**
* @deprecated Since version 0.3.0. Will be deleted in version 0.4.0. Use @bundlr-network/client package instead to interact with Bundlr
*/
sendToBundler(bundler: string): Promise<AxiosResponse>;
/**
* Verifies a `Buffer` and checks it fits the format of a DataItem
*
* A binary is valid iff:
* - the tags are encoded correctly
*/
static verify(buffer: Buffer): Promise<boolean>;
/**
* Returns the start byte of the tags section (number of tags)
*
* @private
*/
private getTagsStart;
/**
* Returns the start byte of the tags section (number of tags)
*
* @private
*/
private getTargetStart;
/**
* Returns the start byte of the tags section (number of tags)
*
* @private
*/
private getAnchorStart;
}
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.MIN_BINARY_SIZE = void 0;
const tslib_1 = require("tslib");
const utils_1 = require("./utils");
const parser_1 = require("./parser");
const base64url_1 = tslib_1.__importDefault(require("base64url"));
const base64url_1 = __importDefault(require("base64url"));
const buffer_1 = require("buffer");

@@ -12,8 +14,6 @@ const ar_data_bundle_1 = require("./ar-data-bundle");

const ar_data_base_1 = require("./ar-data-base");
const axios_1 = tslib_1.__importDefault(require("axios"));
const axios_1 = __importDefault(require("axios"));
const constants_1 = require("./constants");
exports.MIN_BINARY_SIZE = 80;
class DataItem {
binary;
_id;
constructor(binary) {

@@ -26,3 +26,17 @@ this.binary = binary;

get signatureType() {
return utils_1.byteArrayToLong(this.binary.subarray(0, 2));
const signatureTypeVal = utils_1.byteArrayToLong(this.binary.subarray(0, 2));
switch (signatureTypeVal) {
case 1: {
return constants_1.SignatureConfig.ARWEAVE;
}
case 2: {
return constants_1.SignatureConfig.SOLANA;
}
case 3: {
return constants_1.SignatureConfig.ETHERIUM;
}
default: {
throw new Error("Unknown signature type: " + signatureTypeVal);
}
}
}

@@ -54,6 +68,3 @@ async isValid() {

get signatureLength() {
const length = constants_1.SIG_CONFIG[this.signatureType]?.sigLength;
if (!length)
throw new Error("Signature type not supported");
return length;
return constants_1.SIG_CONFIG[this.signatureType].sigLength;
}

@@ -67,6 +78,3 @@ get rawOwner() {

get ownerLength() {
const length = constants_1.SIG_CONFIG[this.signatureType]?.pubLength;
if (!length)
throw new Error("Signature type not supported");
return length;
return constants_1.SIG_CONFIG[this.signatureType].pubLength;
}

@@ -130,2 +138,6 @@ get rawTarget() {

}
/**
* UNSAFE!!
* DO NOT MUTATE THE BINARY ARRAY. THIS WILL CAUSE UNDEFINED BEHAVIOUR.
*/
getRaw() {

@@ -141,2 +153,5 @@ return this.binary;

}
/**
* Returns a JSON representation of a DataItem
*/
toJSON() {

@@ -154,2 +169,5 @@ return {

}
/**
* @deprecated Since version 0.3.0. Will be deleted in version 0.4.0. Use @bundlr-network/client package instead to interact with Bundlr
*/
async sendToBundler(bundler) {

@@ -165,3 +183,3 @@ const headers = {

maxBodyLength: Infinity,
validateStatus: (status) => (status > 200 && status < 300) || status !== 402
validateStatus: (status) => (status > 200 && status < 300) || status !== 402,
});

@@ -172,4 +190,10 @@ if (response.status === 402)

}
/**
* Verifies a `Buffer` and checks it fits the format of a DataItem
*
* A binary is valid iff:
* - the tags are encoded correctly
*/
static async verify(buffer) {
if (buffer.length < exports.MIN_BINARY_SIZE) {
if (buffer.byteLength < exports.MIN_BINARY_SIZE) {
return false;

@@ -200,2 +224,7 @@ }

}
/**
* Returns the start byte of the tags section (number of tags)
*
* @private
*/
getTagsStart() {

@@ -209,5 +238,15 @@ const targetStart = this.getTargetStart();

}
/**
* Returns the start byte of the tags section (number of tags)
*
* @private
*/
getTargetStart() {
return 2 + this.signatureLength + this.ownerLength;
}
/**
* Returns the start byte of the tags section (number of tags)
*
* @private
*/
getAnchorStart() {

@@ -214,0 +253,0 @@ let anchorStart = this.getTargetStart() + 1;

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.hashStream = void 0;
const tslib_1 = require("tslib");
const arweave_1 = tslib_1.__importDefault(require("arweave"));
const crypto = tslib_1.__importStar(require("crypto"));
// In TypeScript 3.7, could be written as a single type:
// `type DeepHashChunk = Uint8Array | DeepHashChunk[];`
const arweave_1 = __importDefault(require("arweave"));
const crypto_1 = require("crypto");
async function deepHash(data) {

@@ -11,3 +15,3 @@ if (typeof data[Symbol.asyncIterator] ===

const _data = data;
const context = crypto.createHash("sha384");
const context = crypto_1.createHash("sha384");
let length = 0;

@@ -59,3 +63,3 @@ for await (const chunk of _data) {

async function hashStream(stream) {
const context = crypto.createHash("sha384");
const context = crypto_1.createHash("sha384");
for await (const chunk of stream) {

@@ -62,0 +66,0 @@ context.update(chunk);

@@ -6,5 +6,4 @@ import { bundleAndSignData, unbundleData } from "./ar-data-bundle";

import { DataItemCreateOptions } from "./ar-data-base";
import { ArweaveSigner } from "./signing";
import { createData } from "./ar-data-create";
export { MIN_BINARY_SIZE, Bundle, DataItem, createData, bundleAndSignData, unbundleData, deepHash, DataItemCreateOptions, };
export { ArweaveSigner };
export * from "./signing";
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ArweaveSigner = exports.deepHash = exports.unbundleData = exports.bundleAndSignData = exports.createData = exports.DataItem = exports.Bundle = exports.MIN_BINARY_SIZE = void 0;
const tslib_1 = require("tslib");
exports.deepHash = exports.unbundleData = exports.bundleAndSignData = exports.createData = exports.DataItem = exports.Bundle = exports.MIN_BINARY_SIZE = void 0;
const ar_data_bundle_1 = require("./ar-data-bundle");
Object.defineProperty(exports, "bundleAndSignData", { enumerable: true, get: function () { return ar_data_bundle_1.bundleAndSignData; } });
Object.defineProperty(exports, "unbundleData", { enumerable: true, get: function () { return ar_data_bundle_1.unbundleData; } });
const Bundle_1 = tslib_1.__importDefault(require("./Bundle"));
const Bundle_1 = __importDefault(require("./Bundle"));
exports.Bundle = Bundle_1.default;
const DataItem_1 = tslib_1.__importStar(require("./DataItem"));
const DataItem_1 = __importStar(require("./DataItem"));
exports.DataItem = DataItem_1.default;
Object.defineProperty(exports, "MIN_BINARY_SIZE", { enumerable: true, get: function () { return DataItem_1.MIN_BINARY_SIZE; } });
const deepHash_1 = tslib_1.__importDefault(require("./deepHash"));
const deepHash_1 = __importDefault(require("./deepHash"));
exports.deepHash = deepHash_1.default;
const signing_1 = require("./signing");
Object.defineProperty(exports, "ArweaveSigner", { enumerable: true, get: function () { return signing_1.ArweaveSigner; } });
const ar_data_create_1 = require("./ar-data-create");
Object.defineProperty(exports, "createData", { enumerable: true, get: function () { return ar_data_create_1.createData; } });
__exportStar(require("./signing"), exports);
//# sourceMappingURL=index.js.map
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.serializeTags = exports.tagsParser = exports.tagParser = void 0;
const tslib_1 = require("tslib");
const avro = tslib_1.__importStar(require("avsc"));
const avro = __importStar(require("avsc"));
exports.tagParser = avro.Type.forSchema({

@@ -7,0 +25,0 @@ type: "record",

@@ -5,7 +5,7 @@ /// <reference types="node" />

export default class ArweaveSigner extends Rsa4096Pss {
private jwk;
protected jwk: JWKInterface;
constructor(jwk: JWKInterface);
get publicKey(): Buffer;
constructor(jwk: JWKInterface);
sign(message: Uint8Array): Uint8Array;
static verify(pk: string, message: Uint8Array, signature: Uint8Array): Promise<boolean>;
}
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const Rsa4096Pss_1 = tslib_1.__importDefault(require("../keys/Rsa4096Pss"));
const Rsa4096Pss_1 = __importDefault(require("../keys/Rsa4096Pss"));
const pem_1 = require("arweave/node/lib/crypto/pem");
const base64url_1 = tslib_1.__importDefault(require("base64url"));
const arweave_1 = tslib_1.__importDefault(require("arweave"));
const base64url_1 = __importDefault(require("base64url"));
const arweave_1 = __importDefault(require("arweave"));
class ArweaveSigner extends Rsa4096Pss_1.default {
jwk;
constructor(jwk) {
super(pem_1.jwkTopem(jwk), jwk.n);
this.jwk = jwk;
}
get publicKey() {
return base64url_1.default.toBuffer(this.pk);
}
constructor(jwk) {
const pem = pem_1.jwkTopem(jwk);
super(pem, jwk.n);
this.jwk = jwk;
}
sign(message) {

@@ -19,0 +19,0 @@ return arweave_1.default.crypto.sign(this.jwk, message);

/// <reference types="node" />
import Secp256k1 from "../keys/secp256k1";
export default class Ethereum extends Secp256k1 {
get publicKey(): Buffer;
constructor(key: string);
sign(message: Uint8Array): Uint8Array;
static verify(pk: string | Buffer, message: Uint8Array, signature: Uint8Array): Promise<boolean>;
}
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const secp256k1_1 = tslib_1.__importDefault(require("../keys/secp256k1"));
const secp256k1_1 = __importDefault(require("../keys/secp256k1"));
const secp256k1_2 = __importDefault(require("secp256k1"));
class Ethereum extends secp256k1_1.default {
get publicKey() {
return Buffer.from(this.pk, "hex");
}
constructor(key) {
const b = Buffer.from(key, "hex");
const pub = secp256k1_2.default.publicKeyCreate(b, false);
super(key, Buffer.from(pub));
}
sign(message) {
return super.sign(Buffer.concat([
Buffer.from("\x19Ethereum Signed Message:\n"),
new Uint8Array(1).fill(message.length),
new Uint8Array(1).fill(message.byteLength),
message

@@ -16,3 +27,3 @@ ]));

Buffer.from("\x19Ethereum Signed Message:\n"),
new Uint8Array(1).fill(message.length),
new Uint8Array(1).fill(message.byteLength),
message

@@ -19,0 +30,0 @@ ]), signature);

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

import ArweaveSigner from "./ArweaveSigner";
export default ArweaveSigner;
import ArweaveSigner from './ArweaveSigner';
export * from "./ethereum";
import PolygonSigner from "./PolygonSigner";
export * from "./SolanaSigner";
export { ArweaveSigner, PolygonSigner };
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const ArweaveSigner_1 = tslib_1.__importDefault(require("./ArweaveSigner"));
exports.default = ArweaveSigner_1.default;
exports.PolygonSigner = exports.ArweaveSigner = void 0;
const ArweaveSigner_1 = __importDefault(require("./ArweaveSigner"));
exports.ArweaveSigner = ArweaveSigner_1.default;
__exportStar(require("./ethereum"), exports);
const PolygonSigner_1 = __importDefault(require("./PolygonSigner"));
exports.PolygonSigner = PolygonSigner_1.default;
__exportStar(require("./SolanaSigner"), exports);
//# sourceMappingURL=index.js.map

@@ -1,6 +0,3 @@

/// <reference types="node" />
import Ethereum from "./ethereum";
export default class PolygonSigner extends Ethereum {
get publicKey(): Buffer;
constructor(key: string);
}
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const secp256k1_1 = tslib_1.__importDefault(require("secp256k1"));
const ethereum_1 = tslib_1.__importDefault(require("./ethereum"));
const ethereum_1 = __importDefault(require("./ethereum"));
class PolygonSigner extends ethereum_1.default {
get publicKey() {
return Buffer.from(this.pk, "hex");
}
constructor(key) {
const b = Buffer.from(key, "hex");
const pub = secp256k1_1.default.publicKeyCreate(b, false);
super(key, Buffer.from(pub));
}
}
exports.default = PolygonSigner;
//# sourceMappingURL=PolygonSigner.js.map
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const curve25519_1 = tslib_1.__importDefault(require("../keys/curve25519"));
const bs58_1 = tslib_1.__importDefault(require("bs58"));
const bs58_2 = tslib_1.__importDefault(require("bs58"));
const curve25519_1 = __importDefault(require("../keys/curve25519"));
const bs58_1 = __importDefault(require("bs58"));
const bs58_2 = __importDefault(require("bs58"));
class SolanaSigner extends curve25519_1.default {

@@ -8,0 +10,0 @@ get publicKey() {

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.indexToType = void 0;
const tslib_1 = require("tslib");
const curve25519_1 = tslib_1.__importDefault(require("./keys/curve25519"));
const ethereum_1 = tslib_1.__importDefault(require("./chains/ethereum"));
const chains_1 = tslib_1.__importDefault(require("./chains"));
const curve25519_1 = __importDefault(require("./keys/curve25519"));
const ethereum_1 = __importDefault(require("./chains/ethereum"));
const chains_1 = require("./chains");
exports.indexToType = {
1: chains_1.default,
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
1: chains_1.ArweaveSigner,
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
2: curve25519_1.default,
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
3: ethereum_1.default
};
//# sourceMappingURL=constants.js.map

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

import ArweaveSigner from "./chains";
export * from "./Signer";

@@ -6,2 +5,1 @@ export * from "./constants";

export * from "./chains";
export { ArweaveSigner };
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ArweaveSigner = void 0;
const tslib_1 = require("tslib");
const chains_1 = tslib_1.__importDefault(require("./chains"));
exports.ArweaveSigner = chains_1.default;
tslib_1.__exportStar(require("./Signer"), exports);
tslib_1.__exportStar(require("./constants"), exports);
tslib_1.__exportStar(require("./keys"), exports);
tslib_1.__exportStar(require("./chains"), exports);
__exportStar(require("./Signer"), exports);
__exportStar(require("./constants"), exports);
__exportStar(require("./keys"), exports);
__exportStar(require("./chains"), exports);
//# sourceMappingURL=index.js.map
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const base64url_1 = tslib_1.__importDefault(require("base64url"));
const ed25519 = tslib_1.__importStar(require("noble-ed25519"));
const base64url_1 = __importDefault(require("base64url"));
const ed25519 = __importStar(require("noble-ed25519"));
const constants_1 = require("../../constants");
class Curve25519 {
_key;
pk;
ownerLength = constants_1.SIG_CONFIG[2].pubLength;
signatureLength = constants_1.SIG_CONFIG[2].sigLength;
_publicKey;
get publicKey() {
return this._publicKey;
}
signatureType = 2;
constructor(_key, pk) {
this._key = _key;
this.pk = pk;
this.ownerLength = constants_1.SIG_CONFIG[2].pubLength;
this.signatureLength = constants_1.SIG_CONFIG[2].sigLength;
this.signatureType = 2;
}
get publicKey() {
return this._publicKey;
}
get key() {

@@ -22,0 +40,0 @@ return new Uint8Array(0);

"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
tslib_1.__exportStar(require("./Rsa4096Pss"), exports);
__exportStar(require("./Rsa4096Pss"), exports);
//# sourceMappingURL=index.js.map
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const crypto = tslib_1.__importStar(require("crypto"));
const crypto_1 = require("crypto");
const arweave_1 = tslib_1.__importDefault(require("arweave"));
const base64url_1 = tslib_1.__importDefault(require("base64url"));
const arweave_1 = __importDefault(require("arweave"));
const base64url_1 = __importDefault(require("base64url"));
const constants_1 = require("../../constants");
class Rsa4096Pss {
_key;
pk;
signatureType = 1;
ownerLength = constants_1.SIG_CONFIG[1].pubLength;
signatureLength = constants_1.SIG_CONFIG[1].sigLength;
_publicKey;
get publicKey() {
return this._publicKey;
}
constructor(_key, pk) {
this._key = _key;
this.pk = pk;
this.signatureType = 1;
this.ownerLength = constants_1.SIG_CONFIG[1].pubLength;
this.signatureLength = constants_1.SIG_CONFIG[1].sigLength;
if (!pk) {
this.pk = crypto
.createPublicKey({
this.pk = crypto_1.createPublicKey({
key: _key,

@@ -36,4 +30,7 @@ type: "pkcs1",

}
get publicKey() {
return this._publicKey;
}
sign(message) {
return crypto.createSign("sha256").update(message).sign({
return crypto_1.createSign("sha256").update(message).sign({
key: this._key,

@@ -40,0 +37,0 @@ padding: crypto_1.constants.RSA_PKCS1_PSS_PADDING,

/// <reference types="node" />
import { Signer } from '../Signer';
import { Signer } from "../Signer";
import { SignatureConfig } from "../../constants";
export default class Secp256k1 implements Signer {

@@ -7,3 +8,3 @@ protected _key: string;

readonly signatureLength: number;
readonly signatureType: number;
readonly signatureType: SignatureConfig;
readonly pk: string;

@@ -10,0 +11,0 @@ constructor(_key: string, pk: Buffer);

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const base64url_1 = tslib_1.__importDefault(require("base64url"));
const secp256k1_1 = tslib_1.__importDefault(require("secp256k1"));
const base64url_1 = __importDefault(require("base64url"));
const secp256k1_1 = __importDefault(require("secp256k1"));
const constants_1 = require("../../constants");
const keccak256_1 = tslib_1.__importDefault(require("keccak256"));
const keccak256_1 = __importDefault(require("keccak256"));
class Secp256k1 {
_key;
ownerLength = constants_1.SIG_CONFIG[3].pubLength;
signatureLength = constants_1.SIG_CONFIG[3].sigLength;
signatureType = 3;
pk;
constructor(_key, pk) {
this._key = _key;
this.ownerLength = constants_1.SIG_CONFIG[constants_1.SignatureConfig.ETHERIUM].pubLength;
this.signatureLength = constants_1.SIG_CONFIG[constants_1.SignatureConfig.ETHERIUM].sigLength;
this.signatureType = constants_1.SignatureConfig.ETHERIUM;
this.pk = pk.toString("hex");

@@ -22,7 +22,7 @@ }

get key() {
return Buffer.from(this._key, 'hex');
return Buffer.from(this._key, "hex");
}
static async verify(pk, message, signature) {
let p = pk;
if (typeof pk === 'string')
if (typeof pk === "string")
p = base64url_1.default.toBuffer(pk);

@@ -32,2 +32,3 @@ let verified = false;

verified = secp256k1_1.default.ecdsaVerify(signature, keccak256_1.default(message), p);
// eslint-disable-next-line no-empty
}

@@ -38,3 +39,4 @@ catch (e) { }

sign(message) {
return secp256k1_1.default.ecdsaSign(keccak256_1.default(message), Buffer.from(this.key)).signature;
return secp256k1_1.default.ecdsaSign(keccak256_1.default(message), Buffer.from(this.key))
.signature;
}

@@ -41,0 +43,0 @@ }

@@ -5,7 +5,2 @@ "use strict";

class Signer {
publicKey;
signatureType;
signatureLength;
ownerLength;
pem;
static verify(_) {

@@ -12,0 +7,0 @@ throw new Error("You must implement verify method on child");

@@ -5,2 +5,3 @@ "use strict";

function longTo8ByteArray(long) {
// we want to represent the input as a 8-bytes array
const byteArray = [0, 0, 0, 0, 0, 0, 0, 0];

@@ -18,2 +19,3 @@ for (let index = 0; index < byteArray.length; index++) {

throw new Error("Short too long");
// we want to represent the input as a 8-bytes array
const byteArray = [0, 0];

@@ -29,2 +31,3 @@ for (let index = 0; index < byteArray.length; index++) {

function longTo16ByteArray(long) {
// we want to represent the input as a 8-bytes array
const byteArray = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];

@@ -40,2 +43,3 @@ for (let index = 0; index < byteArray.length; index++) {

function longTo32ByteArray(long) {
// we want to represent the input as a 8-bytes array
const byteArray = [

@@ -42,0 +46,0 @@ 0,

{
"name": "arbundles",
"version": "0.3.0",
"version": "0.3.1",
"description": "Arweave bundling library",

@@ -9,19 +9,7 @@ "author": "Josh Benaron <joshbenaron@gmail.com>",

"types": "build/index.d.ts",
"files": [
"/build/**/*.js",
"/build/**/*.ts",
"/file/**/*.js",
"/file/**/*.ts"
],
"files": ["build/**/*.js", "/build/**/*.ts"],
"scripts": {
"start": "node build/src/index.js",
"clean": "rimraf coverage build tmp",
"prebuild": "npm run lint",
"build": "tsc -p tsconfig.release.json",
"build:watch": "tsc -w -p tsconfig.release.json",
"build": "rm -rf file && tsc && mv build/file ./ && cp -a build/signing file && rm -rf build/__tests__",
"lint": "eslint . --ext .ts,.tsx",
"test": "jest --coverage",
"test:watch": "jest --watch",
"prepublish": "tsc",
"build:push": "tsc && git add lib && git commit -m \"Build and push new version\" && git push"
"test": "jest --coverage"
},

@@ -28,0 +16,0 @@ "devDependencies": {

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