edockit
Version:
A JavaScript library for listing, parsing, and verifying the contents and signatures of electronic documents (eDoc) and Associated Signature Containers (ASiC-E), supporting EU eIDAS standards for digital signatures and electronic seals.
102 lines (101 loc) • 3.43 kB
TypeScript
import { CertificateInfo } from "./certificate";
import { SignatureInfo } from "./parser";
/**
* Options for verification process
*/
export interface VerificationOptions {
checkCertificateValidity?: boolean;
verifySignatures?: boolean;
verifyChecksums?: boolean;
verifyTime?: Date;
}
/**
* Result of a checksum verification
*/
export interface ChecksumVerificationResult {
isValid: boolean;
details: Record<string, {
expected: string;
actual: string;
matches: boolean;
fileFound: boolean;
}>;
}
/**
* Result of a signature verification
*/
export interface SignatureVerificationResult {
isValid: boolean;
reason?: string;
errorDetails?: {
category: string;
originalMessage: string;
algorithm: any;
environment: string;
keyLength: number;
};
}
/**
* Result of a certificate verification
*/
export interface CertificateVerificationResult {
isValid: boolean;
reason?: string;
info?: CertificateInfo;
}
/**
* Complete verification result
*/
export interface VerificationResult {
isValid: boolean;
certificate: CertificateVerificationResult;
checksums: ChecksumVerificationResult;
signature?: SignatureVerificationResult;
errors?: string[];
}
/**
* Compute a digest (hash) of file content with browser/node compatibility
* @param fileContent The file content as Uint8Array
* @param algorithm The digest algorithm to use (e.g., 'SHA-256')
* @returns Promise with Base64-encoded digest
*/
export declare function computeDigest(fileContent: Uint8Array, algorithm: string): Promise<string>;
/**
* Verify checksums of files against signature
* @param signature The signature information
* @param files Map of filenames to file contents
* @returns Promise with verification results for each file
*/
export declare function verifyChecksums(signature: {
signedChecksums: Record<string, string>;
algorithm?: string;
}, files: Map<string, Uint8Array>): Promise<ChecksumVerificationResult>;
/**
* Verify certificate validity
* @param certificatePEM PEM-formatted certificate
* @param verifyTime Time to check validity against
* @returns Certificate verification result
*/
export declare function verifyCertificate(certificatePEM: string, verifyTime?: Date): Promise<CertificateVerificationResult>;
/**
* Verify the XML signature specifically using SignedInfo and SignatureValue
* @param signatureXml The XML string of the SignedInfo element
* @param signatureValue The base64-encoded signature value
* @param publicKeyData The public key raw data
* @param algorithm Key algorithm details
* @param canonicalizationMethod The canonicalization method used
* @returns Signature verification result
*/
export declare function verifySignedInfo(signatureXml: string, signatureValue: string, publicKeyData: ArrayBuffer, algorithm: {
name: string;
hash: string;
namedCurve?: string;
}, canonicalizationMethod?: string): Promise<SignatureVerificationResult>;
/**
* Verify a complete signature (certificate, checksums, and signature)
* @param signatureInfo Signature information
* @param files File contents
* @param options Verification options
* @returns Complete verification result
*/
export declare function verifySignature(signatureInfo: SignatureInfo, files: Map<string, Uint8Array>, options?: VerificationOptions): Promise<VerificationResult>;