@cronstamp/clientlib
Version:
Client library for cronstamp, a blockchain-based document timestamping and verification service.
45 lines • 1.67 kB
JavaScript
import { ErrorTypes, ProcessError } from '../lifecycle/manager.js';
/**
* Convert hex string to Uint8Array
* Accepts both lower and upper case hex strings
* @param hexString
*/
export function fromHexString(hexString) {
let splitBytes = hexString.match(/.{1,2}/g); // greedy match blocks of characters => one byte each
if (splitBytes == null) {
throw new ProcessError('Invalid hex string procided: ' + hexString, ErrorTypes.DOCUMENT_ALTERED);
}
return Uint8Array.from(splitBytes.map((byte) => parseInt(byte, 16))); // to int
}
/**
* Converts Uint8Array to hex string, with upper case letters
* @param byteArray
*/
export function toHexString(byteArray) {
return byteArray
.reduce((str, byte) => str +
byte
.toString(16) // convert each byte to hex
.padStart(2, '0'), // each byte is filled with leading zero, to be exactly two characters
'')
.toUpperCase();
}
/**
* Convert base64 encoded string to Uint8Array
* source: https://developer.mozilla.org/en-US/docs/Glossary/Base64#converting_arbitrary_binary_data
* @param base64String
*/
export function fromBase64String(base64String) {
const binString = atob(base64String);
return Uint8Array.from(binString, (m) => m.codePointAt(0));
}
/**
* Convert Uint8Array to base64 encoded string
* source: https://developer.mozilla.org/en-US/docs/Glossary/Base64#converting_arbitrary_binary_data
* @param byteArray
*/
export function toBase64String(byteArray) {
const binString = Array.from(byteArray, (byte) => String.fromCodePoint(byte)).join('');
return btoa(binString);
}
//# sourceMappingURL=base-convert.js.map