@othent/kms-unbundled
Version:
Arweave Oauth Othent wallets enabled Google Key Management Service.
60 lines • 2.02 kB
JavaScript
import * as B64js from "base64-js";
export function concatBuffers(buffers) {
let total_length = 0;
for (let i = 0; i < buffers.length; i++) {
total_length += buffers[i].byteLength;
}
let temp = new Uint8Array(total_length);
let offset = 0;
temp.set(new Uint8Array(buffers[0]), offset);
offset += buffers[0].byteLength;
for (let i = 1; i < buffers.length; i++) {
temp.set(new Uint8Array(buffers[i]), offset);
offset += buffers[i].byteLength;
}
return temp;
}
export function b64UrlToString(b64UrlString) {
let buffer = b64UrlToBuffer(b64UrlString);
return bufferToString(buffer);
}
export function bufferToString(buffer) {
return new TextDecoder("utf-8", { fatal: true }).decode(buffer);
}
export function stringToBuffer(string) {
return new TextEncoder().encode(string);
}
export function stringToB64Url(string) {
return bufferTob64Url(stringToBuffer(string));
}
export function b64UrlToBuffer(b64UrlString) {
return new Uint8Array(B64js.toByteArray(b64UrlDecode(b64UrlString)));
}
export function bufferTob64(buffer) {
return B64js.fromByteArray(new Uint8Array(buffer));
}
export function bufferTob64Url(buffer) {
return b64UrlEncode(bufferTob64(buffer));
}
export function b64UrlEncode(b64UrlString) {
return b64UrlString
.replace(/\+/g, "-")
.replace(/\//g, "_")
.replace(/\=/g, "");
}
export function b64UrlDecode(b64UrlString) {
b64UrlString = b64UrlString.replace(/\-/g, "+").replace(/\_/g, "/");
let padding;
b64UrlString.length % 4 == 0
? (padding = 0)
: (padding = 4 - (b64UrlString.length % 4));
return b64UrlString.concat("=".repeat(padding));
}
export async function hash(data, algorithm = "SHA-256") {
let digest = await crypto.subtle.digest(algorithm, data);
return new Uint8Array(digest);
}
export async function ownerToAddress(owner) {
return bufferTob64Url(await hash(b64UrlToBuffer(owner)));
}
//# sourceMappingURL=arweaveUtils.js.map