import { ICard } from './ICard'; import { IPublicKey, ICardCrypto } from '../types'; /** * Interface to be implemented by an object capable of verifying the validity * of Virgil Cards. */ export interface ICardVerifier { /** * Verifies the validity of the given `card`. * @param {ICard} card * @returns {boolean} */ verifyCard(card: ICard): boolean; } /** * Signature identifier and the public key to be used to verify additional * signatures of the cards, if any. */ export interface IVerifierCredentials { /** * String identifying the signature to be verified with `publicKeyBase64`. */ signer: string; /** * Public key to be used to verify the signature identified by `signer`. */ publicKeyBase64: string; } /** * The {@link VirgilCardVerifier} constructor options. */ export interface IVirgilCardVerifierParams { /** * Indicates whether the "self" signature of the cards should be verified. * Self signature is a signature generated with the card's corresponding * private key. */ verifySelfSignature?: boolean; /** * Indicates whether the "virgil" signature of the cards should be * verified. Virgil signature is appended to the list of card's signatures * when the card is published. */ verifyVirgilSignature?: boolean; /** * Array of arrays of {@link IVerifierCredentials} objects to be used to * verify additional signatures of the cards, if any. * * If whitelists are provided, the card must have at least one signature * from each whitelist. */ whitelists?: IWhitelist[]; } export declare type IWhitelist = IVerifierCredentials[]; /** * Class responsible for validating cards by verifying their digital * signatures. */ export declare class VirgilCardVerifier implements ICardVerifier { private readonly crypto; /** * @see {@link IVirgilCardVerifierParams} */ whitelists: IWhitelist[]; /** * @see {@link IVirgilCardVerifierParams} */ verifySelfSignature: boolean; /** * @see {@link IVirgilCardVerifierParams} */ verifyVirgilSignature: boolean; /** * Public key of the Virgil Cards service used for "virgil" signature * verification. */ readonly virgilCardsPublicKey: IPublicKey; /** * Initializes a new instance of `VirgilCardVerifier`. * @param {ICardCrypto} crypto - Object implementing the * {@link ICardCrypto} interface. * @param {IVirgilCardVerifierParams} options - Initialization options. */ constructor(crypto: ICardCrypto, options?: IVirgilCardVerifierParams); /** * Verifies the signatures of the `card`. * @param {ICard} card * @returns {boolean} `true` if the signatures to be verified are present * and valid, otherwise `false`. */ verifyCard(card: ICard): boolean; private selfValidationFailed; private virgilValidationFailed; private getPublicKey; private validateSignerSignature; }