From d63a773bf5f3b74040e094a94afb732be7218106 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Tue, 1 Nov 2022 15:31:48 +0100 Subject: wallet-core: report supportedAgeGroups --- packages/taler-util/src/taler-crypto.ts | 17 +++++++++++++++++ packages/taler-util/src/wallet-types.ts | 2 ++ 2 files changed, 19 insertions(+) (limited to 'packages/taler-util') diff --git a/packages/taler-util/src/taler-crypto.ts b/packages/taler-util/src/taler-crypto.ts index d7e9a0c06..b4b96afbc 100644 --- a/packages/taler-util/src/taler-crypto.ts +++ b/packages/taler-util/src/taler-crypto.ts @@ -1025,6 +1025,23 @@ export namespace AgeRestriction { return count; } + /** + * Get the starting points for age groups in the mask. + */ + export function getAgeGroupsFromMask(mask: number): number[] { + const groups: number[] = []; + let age = 1; + let m = mask >> 1; + while (m > 0) { + if (m & 1) { + groups.push(age); + } + m = m >> 1; + age++; + } + return groups; + } + export function getAgeGroupIndex(mask: number, age: number): number { invariant((mask & 1) === 1); let i = 0; diff --git a/packages/taler-util/src/wallet-types.ts b/packages/taler-util/src/wallet-types.ts index f6bc13d65..3eafe7522 100644 --- a/packages/taler-util/src/wallet-types.ts +++ b/packages/taler-util/src/wallet-types.ts @@ -919,6 +919,7 @@ export interface ExchangeListItem { paytoUris: string[]; tosStatus: ExchangeTosStatus; exchangeStatus: ExchangeEntryStatus; + supportedAgeGroups: number[]; /** * Permanently added to the wallet, as opposed to just * temporarily queried. @@ -998,6 +999,7 @@ export const codecForExchangeListItem = (): Codec => .property("tosStatus", codecForAny()) .property("exchangeStatus", codecForAny()) .property("permanent", codecForBoolean()) + .property("supportedAgeGroups", codecForList(codecForNumber())) .build("ExchangeListItem"); export const codecForExchangesListResponse = (): Codec => -- cgit v1.2.3