@guarani/jose
Version:
Implementation of the RFCs of the JOSE Working Group.
57 lines (56 loc) • 2.65 kB
TypeScript
/// <reference types="node" />
import { Nullable, Optional } from '@guarani/types';
import { SupportedJsonWebKeyAlgorithm } from '../../jwk/algorithms/types/supported-jsonwebkey-algorithm';
import { JsonWebKey } from '../../jwk/jsonwebkey';
import { SupportedJsonWebSignatureAlgorithm } from './types/supported-jsonwebsignature-algorithm';
/**
* Abstract Base Class for {@link https://www.rfc-editor.org/rfc/rfc7518.html#section-3 RFC 7518 Section 3}.
*
* All JSON Web Signature Algorithms supported by Guarani **MUST** extend this base class
* and implement its abstract methods.
*/
export declare abstract class JsonWebSignatureAlgorithm {
/**
* Type of JSON Web Key supported by this JSON Web Signature Algorithm.
*/
protected readonly keyType?: Optional<SupportedJsonWebKeyAlgorithm>;
/**
* Hash Algorithm used to Sign and Verify the Messages.
*/
protected readonly hash: Nullable<string>;
/**
* Name of the JSON Web Signature Algorithm.
*/
protected readonly algorithm: SupportedJsonWebSignatureAlgorithm;
/**
* Instantiates a new JSON Web Signature Algorithm to Sign and Verify the Messages.
*
* @param hash Hash Algorithm used to Sign and Verify the Messages.
* @param algorithm Name of the JSON Web Signature Algorithm.
* @param keyType Type of JSON Web Key supported by this JSON Web Signature Algorithm.
*/
constructor(hash: Nullable<string>, algorithm: SupportedJsonWebSignatureAlgorithm, keyType?: Optional<SupportedJsonWebKeyAlgorithm>);
/**
* Signs a Message with the provided JSON Web Key.
*
* @param message Message to be Signed.
* @param key JSON Web Key used to Sign the provided Message.
* @returns Resulting Signature of the provided Message.
*/
abstract sign(message: Buffer, key?: Optional<JsonWebKey>): Promise<Buffer>;
/**
* Checks if the provided Signature matches the provided Message based on the provided JSON Web Key.
*
* @param signature Signature to be matched against the provided Message.
* @param message Message to be matched against the provided Signature.
* @param key JSON Web Key used to verify the Signature and Message.
*/
abstract verify(signature: Buffer, message: Buffer, key?: Optional<JsonWebKey>): Promise<void>;
/**
* Checks if the provided JSON Web Key can be used by the requesting JSON Web Signature Algorithm.
*
* @param key JSON Web Key to be checked.
* @throws {InvalidJsonWebKeyException} The provided JSON Web Key is invalid.
*/
protected validateJsonWebKey(key: JsonWebKey): void;
}