Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions src/tempo/KeyAuthorization.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1670,11 +1670,10 @@ describe('toTuple', () => {
expect(restored.limits?.[0]?.limit).toBe(0n)
})

test('zero expiry roundtrips through RLP', () => {
test('undefined expiry roundtrips through RLP', () => {
const authorization = KeyAuthorization.from({
address,
chainId: 0n,
expiry: 0,
type: 'secp256k1',
limits: [
{
Expand Down Expand Up @@ -1709,7 +1708,7 @@ describe('toTuple', () => {
expect(rlpDecoded).toEqual(authorizationTuple)

const restored = KeyAuthorization.fromTuple(tuple)
expect(restored.expiry).toBe(0)
expect(restored.expiry).toBeUndefined()
})

test('hash works with zero spending limit', () => {
Expand Down
12 changes: 9 additions & 3 deletions src/tempo/KeyAuthorization.ts
Original file line number Diff line number Diff line change
Expand Up @@ -422,10 +422,15 @@ export function fromTuple<const tuple extends Tuple>(
})()
const args: KeyAuthorization = {
address: keyId,
expiry: typeof expiry !== 'undefined' ? hexToNumber(expiry) : undefined,
expiry:
typeof expiry !== 'undefined'
? hexToNumber(expiry) || undefined
: undefined,
type: keyType,
chainId: chainId === '0x' ? 0n : Hex.toBigInt(chainId),
...(typeof expiry !== 'undefined' ? { expiry: hexToNumber(expiry) } : {}),
...(typeof expiry !== 'undefined'
? { expiry: hexToNumber(expiry) || undefined }
: {}),
...(typeof limits !== 'undefined'
? {
limits: limits.map(([token, limit]) => ({
Expand Down Expand Up @@ -715,7 +720,8 @@ export function toTuple<const authorization extends KeyAuthorization>(
type,
address,
// expiry is required in the tuple when limits are present
typeof expiry === 'number' || limitsValue
// expiry=0 is treated the same as undefined (never expires)
(expiry !== null && expiry !== undefined && expiry !== 0) || limitsValue
? numberToHex(expiry ?? 0)
: undefined,
limitsValue,
Expand Down
Loading