import { base58, base64url } from './encoding'; import { SM2_MULTICODEC_IDENTIFIER, VARIABLE_INTEGER_TRAILING_BYTE, } from './constants'; export const getMultibaseFingerprintFromPublicKeyBytes = ( publicKey: Uint8Array, encoding = 'base58btc' ): string => { const buffer = new Uint8Array(2 + publicKey.length); buffer[0] = SM2_MULTICODEC_IDENTIFIER & 0xff; buffer[1] = SM2_MULTICODEC_IDENTIFIER >> 8; buffer[2] = VARIABLE_INTEGER_TRAILING_BYTE; buffer.set(publicKey, 3); if (encoding === 'base58btc') { return `z${base58.encode(buffer)}`; } if (encoding === 'base64url') { return `u${base64url.encode(buffer)}`; } throw new Error('Unsupported encoding: ' + encoding); };