Socket
Socket
Sign inDemoInstall

@cipherstash/ore-rs

Package Overview
Dependencies
0
Maintainers
2
Versions
13
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.2.1 to 0.2.2

32

dist/index.d.ts

@@ -10,4 +10,36 @@ /// <reference types="node" />

export interface ORE {
/**
* Converts a string to a ORE-compatible plaintext (a JS number). The number
* is the siphash of the string.
*
* Ciphertexts made from the plaintext can only be meaningfully checked for
* equality. In the medium term we will use an equality revealing scheme for
* strings.
*
* @param input the JS string to encode
* @returns a JS number that can be encrypted with the ORE scheme
*/
encodeString: (input: string) => number;
/**
* Prepares a plaintext (a JS number AKA f64) for ORE encryption by converting
* to an orderable integer (u64). The orderable integer is returned as a JS
* number which will be different to the input plaintext and should be treated
* as an opaque value.
*
* @param input the JS number to encode
* @returns a JS number that can be encrypted with the ORE scheme
*/
encodeNumber: (input: number) => number;
/**
* Converts an 8 byte buffer containing a 64 bit unsigned integer into an
* ORE-compatible plaintext (a JS number).
*
* @param input the JS buffer to encode
* @returns a JS number that can be encrypted with the ORE scheme
*/
encodeBuffer: (input: Buffer) => number;
/**
* Initialize a new ORE cipher with a key pair (both keys must be 16-byte
* buffers)
*/
init: (k1: Key, k2: Key) => ORECipher;

@@ -14,0 +46,0 @@ compare: (a: CipherText, b: CipherText) => Ordering;

41

dist/index.js

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

/* Importing the rust compiled lib (index.node) doesn't work and so we use require here */
const { initCipher, encrypt, encryptLeft, compare, encodeNumber, encodeString } = require("../index.node");
const { initCipher, encrypt, encryptLeft, compare, encodeNumber, encodeString, encodeBuffer } = require("../index.node");
/**

@@ -12,49 +12,14 @@ * Module to perform Order-revealing Encryption using the underlying ore.rs Rust

exports.ORE = {
/**
* Prepares a plaintext (a JS number AKA f64) for ORE encryption by converting
* to an orderable integer (u64). The orderable integer is returned as a JS
* number which will be different to the input plaintext and should be treated
* as an opaque value.
*
* @param input the JS number to encode
* @returns a JS number that can be encrypted with the ORE scheme
*/
encodeNumber,
/**
* Converts a string to a ORE-compatible plaintext (a JS number). The number
* is the siphash of the string.
*
* Ciphertexts made from the plaintext can only be meaningfully checked for
* equality. In the medium term we will use an equality revealing scheme for
* strings.
*
* @param input the JS number to encode
* @returns a JS number that can be encrypted with the ORE scheme
*/
encodeString,
/**
* Initialize a new ORE cipher with a key pair (both keys must be 16-byte
* buffers)
*/
encodeBuffer,
init: (k1, k2) => {
let cipher = initCipher(k1, k2);
return {
/*
* Encrypt the given `PlainText` outputting a "full" CipherText (i.e. a
* `Buffer` containing both the Left and Right components).
*/
encrypt: (input) => encrypt(cipher, input),
/*
* Encrypt the given `PlainText` outputting only a Left CipherText (i.e. a
* `Buffer` containing just the Left component).
*/
encryptLeft: (input) => encryptLeft(cipher, input)
};
},
/*
* Compare two cipher texts returning -1 if a < b, 0 if a === b, and 1 if a >
* b. Throws if the inputs are not comparable.
*/
compare: (a, b) => compare(a, b)
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMEZBQTBGO0FBQzFGLE1BQU0sRUFDSixVQUFVLEVBQ1YsT0FBTyxFQUNQLFdBQVcsRUFDWCxPQUFPLEVBQ1AsWUFBWSxFQUNaLFlBQVksRUFDYixHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQTtBQW1CNUI7OztHQUdHO0FBQ1UsUUFBQSxHQUFHLEdBQVE7SUFFdEI7Ozs7Ozs7O09BUUc7SUFDSCxZQUFZO0lBRVo7Ozs7Ozs7Ozs7T0FVRztJQUNILFlBQVk7SUFFWjs7O09BR0c7SUFDSCxJQUFJLEVBQUUsQ0FBQyxFQUFPLEVBQUUsRUFBTyxFQUFhLEVBQUU7UUFDcEMsSUFBSSxNQUFNLEdBQUcsVUFBVSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNoQyxPQUFPO1lBQ0w7OztlQUdHO1lBQ0gsT0FBTyxFQUFFLENBQUMsS0FBYSxFQUFjLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQztZQUU5RDs7O2VBR0c7WUFDSCxXQUFXLEVBQUUsQ0FBQyxLQUFhLEVBQWMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDO1NBQ3ZFLENBQUE7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsT0FBTyxFQUFFLENBQUMsQ0FBYSxFQUFFLENBQWEsRUFBWSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7Q0FDbkUsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qIEltcG9ydGluZyB0aGUgcnVzdCBjb21waWxlZCBsaWIgKGluZGV4Lm5vZGUpIGRvZXNuJ3Qgd29yayBhbmQgc28gd2UgdXNlIHJlcXVpcmUgaGVyZSAqL1xuY29uc3Qge1xuICBpbml0Q2lwaGVyLFxuICBlbmNyeXB0LFxuICBlbmNyeXB0TGVmdCxcbiAgY29tcGFyZSxcbiAgZW5jb2RlTnVtYmVyLFxuICBlbmNvZGVTdHJpbmdcbn0gPSByZXF1aXJlKFwiLi4vaW5kZXgubm9kZVwiKVxuXG5leHBvcnQgdHlwZSBLZXkgPSBCdWZmZXJcbmV4cG9ydCB0eXBlIENpcGhlclRleHQgPSBCdWZmZXJcblxuZXhwb3J0IHR5cGUgT1JFQ2lwaGVyID0ge1xuICBlbmNyeXB0OiAoaW5wdXQ6IG51bWJlcikgPT4gQ2lwaGVyVGV4dCxcbiAgZW5jcnlwdExlZnQ6IChpbnB1dDogbnVtYmVyKSA9PiBDaXBoZXJUZXh0XG59XG5cbmV4cG9ydCB0eXBlIE9yZGVyaW5nID0gLTEgfCAwIHwgMVxuXG5leHBvcnQgaW50ZXJmYWNlIE9SRSB7XG4gIGVuY29kZVN0cmluZzogKGlucHV0OiBzdHJpbmcpID0+IG51bWJlclxuICBlbmNvZGVOdW1iZXI6IChpbnB1dDogbnVtYmVyKSA9PiBudW1iZXJcbiAgaW5pdDogKGsxOiBLZXksIGsyOiBLZXkpID0+IE9SRUNpcGhlclxuICBjb21wYXJlOiAoYTogQ2lwaGVyVGV4dCwgYjogQ2lwaGVyVGV4dCkgPT4gT3JkZXJpbmdcbn1cblxuLyoqXG4gKiBNb2R1bGUgdG8gcGVyZm9ybSBPcmRlci1yZXZlYWxpbmcgRW5jcnlwdGlvbiB1c2luZyB0aGUgdW5kZXJseWluZyBvcmUucnMgUnVzdFxuICogbGlicmFyeS5cbiAqL1xuZXhwb3J0IGNvbnN0IE9SRTogT1JFID0ge1xuXG4gIC8qKlxuICAgKiBQcmVwYXJlcyBhIHBsYWludGV4dCAoYSBKUyBudW1iZXIgQUtBIGY2NCkgZm9yIE9SRSBlbmNyeXB0aW9uIGJ5IGNvbnZlcnRpbmdcbiAgICogdG8gYW4gb3JkZXJhYmxlIGludGVnZXIgKHU2NCkuICBUaGUgb3JkZXJhYmxlIGludGVnZXIgaXMgcmV0dXJuZWQgYXMgYSBKU1xuICAgKiBudW1iZXIgd2hpY2ggd2lsbCBiZSBkaWZmZXJlbnQgdG8gdGhlIGlucHV0IHBsYWludGV4dCBhbmQgc2hvdWxkIGJlIHRyZWF0ZWRcbiAgICogYXMgYW4gb3BhcXVlIHZhbHVlLlxuICAgKlxuICAgKiBAcGFyYW0gaW5wdXQgdGhlIEpTIG51bWJlciB0byBlbmNvZGVcbiAgICogQHJldHVybnMgYSBKUyBudW1iZXIgdGhhdCBjYW4gYmUgZW5jcnlwdGVkIHdpdGggdGhlIE9SRSBzY2hlbWVcbiAgICovXG4gIGVuY29kZU51bWJlcixcblxuICAvKipcbiAgICogQ29udmVydHMgYSBzdHJpbmcgdG8gYSBPUkUtY29tcGF0aWJsZSBwbGFpbnRleHQgKGEgSlMgbnVtYmVyKS4gVGhlIG51bWJlclxuICAgKiBpcyB0aGUgc2lwaGFzaCBvZiB0aGUgc3RyaW5nLlxuICAgKlxuICAgKiBDaXBoZXJ0ZXh0cyBtYWRlIGZyb20gdGhlIHBsYWludGV4dCBjYW4gb25seSBiZSBtZWFuaW5nZnVsbHkgY2hlY2tlZCBmb3JcbiAgICogZXF1YWxpdHkuIEluIHRoZSBtZWRpdW0gdGVybSB3ZSB3aWxsIHVzZSBhbiAgZXF1YWxpdHkgcmV2ZWFsaW5nIHNjaGVtZSBmb3JcbiAgICogc3RyaW5ncy5cbiAgICpcbiAgICogQHBhcmFtIGlucHV0IHRoZSBKUyBudW1iZXIgdG8gZW5jb2RlXG4gICAqIEByZXR1cm5zIGEgSlMgbnVtYmVyIHRoYXQgY2FuIGJlIGVuY3J5cHRlZCB3aXRoIHRoZSBPUkUgc2NoZW1lXG4gICAqL1xuICBlbmNvZGVTdHJpbmcsXG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgYSBuZXcgT1JFIGNpcGhlciB3aXRoIGEga2V5IHBhaXIgKGJvdGgga2V5cyBtdXN0IGJlIDE2LWJ5dGVcbiAgICogYnVmZmVycylcbiAgICovXG4gIGluaXQ6IChrMTogS2V5LCBrMjogS2V5KTogT1JFQ2lwaGVyID0+IHtcbiAgICBsZXQgY2lwaGVyID0gaW5pdENpcGhlcihrMSwgazIpO1xuICAgIHJldHVybiB7XG4gICAgICAvKlxuICAgICAgICogRW5jcnlwdCB0aGUgZ2l2ZW4gYFBsYWluVGV4dGAgb3V0cHV0dGluZyBhIFwiZnVsbFwiIENpcGhlclRleHQgKGkuZS4gYVxuICAgICAgICogYEJ1ZmZlcmAgY29udGFpbmluZyBib3RoIHRoZSBMZWZ0IGFuZCBSaWdodCBjb21wb25lbnRzKS5cbiAgICAgICAqL1xuICAgICAgZW5jcnlwdDogKGlucHV0OiBudW1iZXIpOiBDaXBoZXJUZXh0ID0+IGVuY3J5cHQoY2lwaGVyLCBpbnB1dCksXG5cbiAgICAgIC8qXG4gICAgICAgKiBFbmNyeXB0IHRoZSBnaXZlbiBgUGxhaW5UZXh0YCBvdXRwdXR0aW5nIG9ubHkgYSBMZWZ0IENpcGhlclRleHQgKGkuZS4gYVxuICAgICAgICogYEJ1ZmZlcmAgY29udGFpbmluZyBqdXN0IHRoZSBMZWZ0IGNvbXBvbmVudCkuXG4gICAgICAgKi9cbiAgICAgIGVuY3J5cHRMZWZ0OiAoaW5wdXQ6IG51bWJlcik6IENpcGhlclRleHQgPT4gZW5jcnlwdExlZnQoY2lwaGVyLCBpbnB1dClcbiAgICB9XG4gIH0sXG5cbiAgLypcbiAgICogQ29tcGFyZSB0d28gY2lwaGVyIHRleHRzIHJldHVybmluZyAtMSBpZiBhIDwgYiwgMCBpZiBhID09PSBiLCBhbmQgMSBpZiBhID5cbiAgICogYi4gIFRocm93cyBpZiB0aGUgaW5wdXRzIGFyZSBub3QgY29tcGFyYWJsZS5cbiAgICovXG4gIGNvbXBhcmU6IChhOiBDaXBoZXJUZXh0LCBiOiBDaXBoZXJUZXh0KTogT3JkZXJpbmcgPT4gY29tcGFyZShhLCBiKVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMEZBQTBGO0FBQzFGLE1BQU0sRUFDSixVQUFVLEVBQ1YsT0FBTyxFQUNQLFdBQVcsRUFDWCxPQUFPLEVBQ1AsWUFBWSxFQUNaLFlBQVksRUFDWixZQUFZLEVBQ2IsR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUE7QUFvRTVCOzs7R0FHRztBQUNVLFFBQUEsR0FBRyxHQUFRO0lBRXRCLFlBQVk7SUFFWixZQUFZO0lBRVosWUFBWTtJQUVaLElBQUksRUFBRSxDQUFDLEVBQU8sRUFBRSxFQUFPLEVBQWEsRUFBRTtRQUNwQyxJQUFJLE1BQU0sR0FBRyxVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLE9BQU87WUFDTCxPQUFPLEVBQUUsQ0FBQyxLQUFhLEVBQWMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDO1lBRTlELFdBQVcsRUFBRSxDQUFDLEtBQWEsRUFBYyxFQUFFLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUM7U0FDdkUsQ0FBQTtJQUNILENBQUM7SUFFRCxPQUFPLEVBQUUsQ0FBQyxDQUFhLEVBQUUsQ0FBYSxFQUFZLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztDQUNuRSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyogSW1wb3J0aW5nIHRoZSBydXN0IGNvbXBpbGVkIGxpYiAoaW5kZXgubm9kZSkgZG9lc24ndCB3b3JrIGFuZCBzbyB3ZSB1c2UgcmVxdWlyZSBoZXJlICovXG5jb25zdCB7XG4gIGluaXRDaXBoZXIsXG4gIGVuY3J5cHQsXG4gIGVuY3J5cHRMZWZ0LFxuICBjb21wYXJlLFxuICBlbmNvZGVOdW1iZXIsXG4gIGVuY29kZVN0cmluZyxcbiAgZW5jb2RlQnVmZmVyXG59ID0gcmVxdWlyZShcIi4uL2luZGV4Lm5vZGVcIilcblxuZXhwb3J0IHR5cGUgS2V5ID0gQnVmZmVyXG5leHBvcnQgdHlwZSBDaXBoZXJUZXh0ID0gQnVmZmVyXG5cbmV4cG9ydCB0eXBlIE9SRUNpcGhlciA9IHtcbiAgLypcbiAgICogRW5jcnlwdCB0aGUgZ2l2ZW4gYFBsYWluVGV4dGAgb3V0cHV0dGluZyBhIFwiZnVsbFwiIENpcGhlclRleHQgKGkuZS4gYVxuICAgKiBgQnVmZmVyYCBjb250YWluaW5nIGJvdGggdGhlIExlZnQgYW5kIFJpZ2h0IGNvbXBvbmVudHMpLlxuICAgKi9cbiAgZW5jcnlwdDogKGlucHV0OiBudW1iZXIpID0+IENpcGhlclRleHQsXG5cbiAgLypcbiAgICogRW5jcnlwdCB0aGUgZ2l2ZW4gYFBsYWluVGV4dGAgb3V0cHV0dGluZyBvbmx5IGEgTGVmdCBDaXBoZXJUZXh0IChpLmUuIGFcbiAgICogYEJ1ZmZlcmAgY29udGFpbmluZyBqdXN0IHRoZSBMZWZ0IGNvbXBvbmVudCkuXG4gICAqL1xuICBlbmNyeXB0TGVmdDogKGlucHV0OiBudW1iZXIpID0+IENpcGhlclRleHRcbn1cblxuZXhwb3J0IHR5cGUgT3JkZXJpbmcgPSAtMSB8IDAgfCAxXG5cbmV4cG9ydCBpbnRlcmZhY2UgT1JFIHtcbiAgLyoqXG4gICAqIENvbnZlcnRzIGEgc3RyaW5nIHRvIGEgT1JFLWNvbXBhdGlibGUgcGxhaW50ZXh0IChhIEpTIG51bWJlcikuIFRoZSBudW1iZXJcbiAgICogaXMgdGhlIHNpcGhhc2ggb2YgdGhlIHN0cmluZy5cbiAgICpcbiAgICogQ2lwaGVydGV4dHMgbWFkZSBmcm9tIHRoZSBwbGFpbnRleHQgY2FuIG9ubHkgYmUgbWVhbmluZ2Z1bGx5IGNoZWNrZWQgZm9yXG4gICAqIGVxdWFsaXR5LiBJbiB0aGUgbWVkaXVtIHRlcm0gd2Ugd2lsbCB1c2UgYW4gIGVxdWFsaXR5IHJldmVhbGluZyBzY2hlbWUgZm9yXG4gICAqIHN0cmluZ3MuXG4gICAqXG4gICAqIEBwYXJhbSBpbnB1dCB0aGUgSlMgc3RyaW5nIHRvIGVuY29kZVxuICAgKiBAcmV0dXJucyBhIEpTIG51bWJlciB0aGF0IGNhbiBiZSBlbmNyeXB0ZWQgd2l0aCB0aGUgT1JFIHNjaGVtZVxuICAgKi9cbiAgZW5jb2RlU3RyaW5nOiAoaW5wdXQ6IHN0cmluZykgPT4gbnVtYmVyXG5cbiAgLyoqXG4gICAqIFByZXBhcmVzIGEgcGxhaW50ZXh0IChhIEpTIG51bWJlciBBS0EgZjY0KSBmb3IgT1JFIGVuY3J5cHRpb24gYnkgY29udmVydGluZ1xuICAgKiB0byBhbiBvcmRlcmFibGUgaW50ZWdlciAodTY0KS4gIFRoZSBvcmRlcmFibGUgaW50ZWdlciBpcyByZXR1cm5lZCBhcyBhIEpTXG4gICAqIG51bWJlciB3aGljaCB3aWxsIGJlIGRpZmZlcmVudCB0byB0aGUgaW5wdXQgcGxhaW50ZXh0IGFuZCBzaG91bGQgYmUgdHJlYXRlZFxuICAgKiBhcyBhbiBvcGFxdWUgdmFsdWUuXG4gICAqXG4gICAqIEBwYXJhbSBpbnB1dCB0aGUgSlMgbnVtYmVyIHRvIGVuY29kZVxuICAgKiBAcmV0dXJucyBhIEpTIG51bWJlciB0aGF0IGNhbiBiZSBlbmNyeXB0ZWQgd2l0aCB0aGUgT1JFIHNjaGVtZVxuICAgKi9cbiAgZW5jb2RlTnVtYmVyOiAoaW5wdXQ6IG51bWJlcikgPT4gbnVtYmVyXG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGFuIDggYnl0ZSBidWZmZXIgY29udGFpbmluZyBhIDY0IGJpdCB1bnNpZ25lZCBpbnRlZ2VyIGludG8gYW5cbiAgICogT1JFLWNvbXBhdGlibGUgcGxhaW50ZXh0IChhIEpTIG51bWJlcikuXG4gICAqXG4gICAqIEBwYXJhbSBpbnB1dCB0aGUgSlMgYnVmZmVyIHRvIGVuY29kZVxuICAgKiBAcmV0dXJucyBhIEpTIG51bWJlciB0aGF0IGNhbiBiZSBlbmNyeXB0ZWQgd2l0aCB0aGUgT1JFIHNjaGVtZVxuICAgKi9cbiAgZW5jb2RlQnVmZmVyOiAoaW5wdXQ6IEJ1ZmZlcikgPT4gbnVtYmVyXG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgYSBuZXcgT1JFIGNpcGhlciB3aXRoIGEga2V5IHBhaXIgKGJvdGgga2V5cyBtdXN0IGJlIDE2LWJ5dGVcbiAgICogYnVmZmVycylcbiAgICovXG4gIGluaXQ6IChrMTogS2V5LCBrMjogS2V5KSA9PiBPUkVDaXBoZXJcblxuICAvKlxuICAgKiBDb21wYXJlIHR3byBjaXBoZXIgdGV4dHMgcmV0dXJuaW5nIC0xIGlmIGEgPCBiLCAwIGlmIGEgPT09IGIsIGFuZCAxIGlmIGEgPlxuICAgKiBiLiAgVGhyb3dzIGlmIHRoZSBpbnB1dHMgYXJlIG5vdCBjb21wYXJhYmxlLlxuICAgKi9cbiAgY29tcGFyZTogKGE6IENpcGhlclRleHQsIGI6IENpcGhlclRleHQpID0+IE9yZGVyaW5nXG59XG5cbi8qKlxuICogTW9kdWxlIHRvIHBlcmZvcm0gT3JkZXItcmV2ZWFsaW5nIEVuY3J5cHRpb24gdXNpbmcgdGhlIHVuZGVybHlpbmcgb3JlLnJzIFJ1c3RcbiAqIGxpYnJhcnkuXG4gKi9cbmV4cG9ydCBjb25zdCBPUkU6IE9SRSA9IHtcblxuICBlbmNvZGVOdW1iZXIsXG5cbiAgZW5jb2RlU3RyaW5nLFxuXG4gIGVuY29kZUJ1ZmZlcixcblxuICBpbml0OiAoazE6IEtleSwgazI6IEtleSk6IE9SRUNpcGhlciA9PiB7XG4gICAgbGV0IGNpcGhlciA9IGluaXRDaXBoZXIoazEsIGsyKTtcbiAgICByZXR1cm4ge1xuICAgICAgZW5jcnlwdDogKGlucHV0OiBudW1iZXIpOiBDaXBoZXJUZXh0ID0+IGVuY3J5cHQoY2lwaGVyLCBpbnB1dCksXG5cbiAgICAgIGVuY3J5cHRMZWZ0OiAoaW5wdXQ6IG51bWJlcik6IENpcGhlclRleHQgPT4gZW5jcnlwdExlZnQoY2lwaGVyLCBpbnB1dClcbiAgICB9XG4gIH0sXG5cbiAgY29tcGFyZTogKGE6IENpcGhlclRleHQsIGI6IENpcGhlclRleHQpOiBPcmRlcmluZyA9PiBjb21wYXJlKGEsIGIpXG59XG4iXX0=
{
"name": "@cipherstash/ore-rs",
"version": "0.2.1",
"version": "0.2.2",
"description": "Node bindings for ore.rs",

@@ -5,0 +5,0 @@ "main": "dist/index.js",

@@ -8,3 +8,4 @@ /* Importing the rust compiled lib (index.node) doesn't work and so we use require here */

encodeNumber,
encodeString
encodeString,
encodeBuffer
} = require("../index.node")

@@ -16,3 +17,12 @@

export type ORECipher = {
/*
* Encrypt the given `PlainText` outputting a "full" CipherText (i.e. a
* `Buffer` containing both the Left and Right components).
*/
encrypt: (input: number) => CipherText,
/*
* Encrypt the given `PlainText` outputting only a Left CipherText (i.e. a
* `Buffer` containing just the Left component).
*/
encryptLeft: (input: number) => CipherText

@@ -24,14 +34,15 @@ }

export interface ORE {
/**
* Converts a string to a ORE-compatible plaintext (a JS number). The number
* is the siphash of the string.
*
* Ciphertexts made from the plaintext can only be meaningfully checked for
* equality. In the medium term we will use an equality revealing scheme for
* strings.
*
* @param input the JS string to encode
* @returns a JS number that can be encrypted with the ORE scheme
*/
encodeString: (input: string) => number
encodeNumber: (input: number) => number
init: (k1: Key, k2: Key) => ORECipher
compare: (a: CipherText, b: CipherText) => Ordering
}
/**
* Module to perform Order-revealing Encryption using the underlying ore.rs Rust
* library.
*/
export const ORE: ORE = {
/**

@@ -46,16 +57,12 @@ * Prepares a plaintext (a JS number AKA f64) for ORE encryption by converting

*/
encodeNumber,
encodeNumber: (input: number) => number
/**
* Converts a string to a ORE-compatible plaintext (a JS number). The number
* is the siphash of the string.
* Converts an 8 byte buffer containing a 64 bit unsigned integer into an
* ORE-compatible plaintext (a JS number).
*
* Ciphertexts made from the plaintext can only be meaningfully checked for
* equality. In the medium term we will use an equality revealing scheme for
* strings.
*
* @param input the JS number to encode
* @param input the JS buffer to encode
* @returns a JS number that can be encrypted with the ORE scheme
*/
encodeString,
encodeBuffer: (input: Buffer) => number

@@ -66,15 +73,28 @@ /**

*/
init: (k1: Key, k2: Key) => ORECipher
/*
* Compare two cipher texts returning -1 if a < b, 0 if a === b, and 1 if a >
* b. Throws if the inputs are not comparable.
*/
compare: (a: CipherText, b: CipherText) => Ordering
}
/**
* Module to perform Order-revealing Encryption using the underlying ore.rs Rust
* library.
*/
export const ORE: ORE = {
encodeNumber,
encodeString,
encodeBuffer,
init: (k1: Key, k2: Key): ORECipher => {
let cipher = initCipher(k1, k2);
return {
/*
* Encrypt the given `PlainText` outputting a "full" CipherText (i.e. a
* `Buffer` containing both the Left and Right components).
*/
encrypt: (input: number): CipherText => encrypt(cipher, input),
/*
* Encrypt the given `PlainText` outputting only a Left CipherText (i.e. a
* `Buffer` containing just the Left component).
*/
encryptLeft: (input: number): CipherText => encryptLeft(cipher, input)

@@ -84,7 +104,3 @@ }

/*
* Compare two cipher texts returning -1 if a < b, 0 if a === b, and 1 if a >
* b. Throws if the inputs are not comparable.
*/
compare: (a: CipherText, b: CipherText): Ordering => compare(a, b)
}

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

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc