add hashURIToken

This commit is contained in:
Denis Angell
2023-06-23 15:33:20 +00:00
parent 32fba22240
commit dc09dae851
4 changed files with 30 additions and 0 deletions

View File

@@ -6,6 +6,8 @@
import { decodeAccountID } from '@transia/ripple-address-codec'
import BigNumber from 'bignumber.js'
import { convertStringToHex } from '../stringConversion'
import hashLedger, {
hashLedgerHeader,
hashSignedTx,
@@ -184,4 +186,18 @@ export function hashPaymentChannel(
)
}
/**
* Compute the Hash of an URIToken LedgerEntry.
*
* @param issuer - Address of the issuer of the URIToken.
* @param uri - string uri of the URIToken (not the hex).
* @returns The hash of the URIToken LedgerEntry.
* @category Utilities
*/
export function hashURIToken(issuer: string, uri: string): string {
return sha512Half(
ledgerSpaceHex('uriToken') + addressToHex(issuer) + convertStringToHex(uri),
)
}
export { hashLedgerHeader, hashSignedTx, hashLedger, hashStateTree, hashTxTree }

View File

@@ -28,6 +28,7 @@ const ledgerSpaces = {
signerList: 'S',
paychan: 'x',
check: 'C',
uriToken: 'U',
depositPreauth: 'p',
}

View File

@@ -39,6 +39,7 @@ import {
hashLedgerHeader,
hashEscrow,
hashPaymentChannel,
hashURIToken,
} from './hashes'
import { calculateHookOn, hexHookParameters, TTS } from './hooks'
import parseNFTokenID from './parseNFTokenID'
@@ -173,6 +174,7 @@ const hashes = {
hashLedgerHeader,
hashEscrow,
hashPaymentChannel,
hashURIToken,
}
export {

View File

@@ -15,6 +15,7 @@ import {
hashAccountRoot,
hashOfferId,
hashSignerListId,
hashURIToken,
} from '../../src/utils/hashes'
import fixtures from '../fixtures/rippled'
import { assertResultMatch } from '../testUtils'
@@ -143,6 +144,16 @@ describe('Hashes', function () {
assert.equal(actualEntryHash, expectedEntryHash)
})
it('calcURITokenEntryHash', function () {
const issuer = 'rDx69ebzbowuqztksVDmZXjizTd12BVr4x'
const uri = 'ipfs://cid'
const expectedEntryHash =
'AFC4233E5C4094952DEF5483DC41488C8744D1268F897C0CB25DE66399591399'
const actualEntryHash = hashURIToken(issuer, uri)
assert.equal(actualEntryHash, expectedEntryHash)
})
it('Hash a signed transaction correctly', function () {
const expected_hash =
'458101D51051230B1D56E9ACAFAA34451BF65FA000F95DF6F0FF5B3A62D83FC2'