Comparing version 0.3.0 to 0.3.1
import DataItem from './DataItem'; | ||
/** | ||
* Options for creation of a DataItem | ||
*/ | ||
export interface DataItemCreateOptions { | ||
/** | ||
* @deprecated | ||
*/ | ||
data?: never; | ||
@@ -4,0 +10,0 @@ target?: string; |
"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; |
@@ -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": { |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
1
75611
55
1633