UNPKG

tink-crypto

Version:

A multi-language, cross-platform library that provides cryptographic APIs that are secure, easy to use correctly, and hard(er) to misuse.

49 lines 6.83 kB
/** * @license * Copyright 2020 Google LLC * SPDX-License-Identifier: Apache-2.0 */ /** * Interface for hybrid encryption. * * Hybrid Encryption combines the efficiency of symmetric encryption with the * convenience of public-key encryption: to encrypt a message a fresh symmetric * key is generated and used to encrypt the actual plaintext data, while the * recipient’s public key is used to encrypt the symmetric key only, and the * final ciphertext consists of the symmetric ciphertext and the encrypted * symmetric key. * * WARNING: Hybrid Encryption does not provide authenticity, that is the * recipient of an encrypted message does not know the identity of the sender. * Similar to general public-key encryption schemes the security goal of Hybrid * Encryption is to provide privacy only. In other words, Hybrid Encryption is * secure if and only if the recipient can accept anonymous messages or can rely * on other mechanisms to authenticate the sender. * * Security guarantees: The functionality of Hybrid Encryption is represented as * a pair of primitives (interfaces): `HybridEncrypt` for encryption of data, * and `HybridDecrypt` for decryption. Implementations of these interfaces are * secure against adaptive chosen ciphertext attacks. * * In addition to `plaintext` the encryption takes an extra, optional parameter * `opt_contextInfo`, which usually is public data implicit from the context, * but should be bound to the resulting ciphertext, i.e. the ciphertext allows * for checking the integrity of `opt_contextInfo` (but there are no guarantees * wrt. the secrecy or authenticity of `opt_contextInfo`). * * `opt_contextInfo` can be empty or null, but to ensure the correct * decryption of a ciphertext the same value must be provided for the decryption * operation as was used during encryption (cf. `HybridEncrypt`}). * * A concrete instantiation of this interface can implement the binding of * contextInfo to the ciphertext in various ways, for example: * * use `opt_contextInfo` as "associated data"-input for the employed * AEAD symmetric encryption (cf. https://tools.ietf.org/html/rfc5116). * * use `opt_contextInfo` as "CtxInfo"-input for HKDF (if the * implementation uses HKDF as key derivation function, cf. * https://tools.ietf.org/html/rfc5869). * */ export class HybridDecrypt { } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHlicmlkX2RlY3J5cHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9oeWJyaWQvaW50ZXJuYWwvaHlicmlkX2RlY3J5cHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUdIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0NHO0FBQ0gsTUFBTSxPQUFnQixhQUFhO0NBZWxDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IDIwMjAgR29vZ2xlIExMQ1xuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbiAqL1xuXG5cbi8qKlxuICogSW50ZXJmYWNlIGZvciBoeWJyaWQgZW5jcnlwdGlvbi5cbiAqXG4gKiBIeWJyaWQgRW5jcnlwdGlvbiBjb21iaW5lcyB0aGUgZWZmaWNpZW5jeSBvZiBzeW1tZXRyaWMgZW5jcnlwdGlvbiB3aXRoIHRoZVxuICogY29udmVuaWVuY2Ugb2YgcHVibGljLWtleSBlbmNyeXB0aW9uOiB0byBlbmNyeXB0IGEgbWVzc2FnZSBhIGZyZXNoIHN5bW1ldHJpY1xuICoga2V5IGlzIGdlbmVyYXRlZCBhbmQgdXNlZCB0byBlbmNyeXB0IHRoZSBhY3R1YWwgcGxhaW50ZXh0IGRhdGEsIHdoaWxlIHRoZVxuICogcmVjaXBpZW504oCZcyBwdWJsaWMga2V5IGlzIHVzZWQgdG8gZW5jcnlwdCB0aGUgc3ltbWV0cmljIGtleSBvbmx5LCBhbmQgdGhlXG4gKiBmaW5hbCBjaXBoZXJ0ZXh0IGNvbnNpc3RzIG9mIHRoZSBzeW1tZXRyaWMgY2lwaGVydGV4dCBhbmQgdGhlIGVuY3J5cHRlZFxuICogc3ltbWV0cmljIGtleS5cbiAqXG4gKiBXQVJOSU5HOiBIeWJyaWQgRW5jcnlwdGlvbiBkb2VzIG5vdCBwcm92aWRlIGF1dGhlbnRpY2l0eSwgdGhhdCBpcyB0aGVcbiAqIHJlY2lwaWVudCBvZiBhbiBlbmNyeXB0ZWQgbWVzc2FnZSBkb2VzIG5vdCBrbm93IHRoZSBpZGVudGl0eSBvZiB0aGUgc2VuZGVyLlxuICogU2ltaWxhciB0byBnZW5lcmFsIHB1YmxpYy1rZXkgZW5jcnlwdGlvbiBzY2hlbWVzIHRoZSBzZWN1cml0eSBnb2FsIG9mIEh5YnJpZFxuICogRW5jcnlwdGlvbiBpcyB0byBwcm92aWRlIHByaXZhY3kgb25seS4gSW4gb3RoZXIgd29yZHMsIEh5YnJpZCBFbmNyeXB0aW9uIGlzXG4gKiBzZWN1cmUgaWYgYW5kIG9ubHkgaWYgdGhlIHJlY2lwaWVudCBjYW4gYWNjZXB0IGFub255bW91cyBtZXNzYWdlcyBvciBjYW4gcmVseVxuICogb24gb3RoZXIgbWVjaGFuaXNtcyB0byBhdXRoZW50aWNhdGUgdGhlIHNlbmRlci5cbiAqXG4gKiBTZWN1cml0eSBndWFyYW50ZWVzOiBUaGUgZnVuY3Rpb25hbGl0eSBvZiBIeWJyaWQgRW5jcnlwdGlvbiBpcyByZXByZXNlbnRlZCBhc1xuICogYSBwYWlyIG9mIHByaW1pdGl2ZXMgKGludGVyZmFjZXMpOiBgSHlicmlkRW5jcnlwdGAgZm9yIGVuY3J5cHRpb24gb2YgZGF0YSxcbiAqIGFuZCBgSHlicmlkRGVjcnlwdGAgZm9yIGRlY3J5cHRpb24uIEltcGxlbWVudGF0aW9ucyBvZiB0aGVzZSBpbnRlcmZhY2VzIGFyZVxuICogc2VjdXJlIGFnYWluc3QgYWRhcHRpdmUgY2hvc2VuIGNpcGhlcnRleHQgYXR0YWNrcy5cbiAqXG4gKiBJbiBhZGRpdGlvbiB0byBgcGxhaW50ZXh0YCB0aGUgZW5jcnlwdGlvbiB0YWtlcyBhbiBleHRyYSwgb3B0aW9uYWwgcGFyYW1ldGVyXG4gKiBgb3B0X2NvbnRleHRJbmZvYCwgd2hpY2ggdXN1YWxseSBpcyBwdWJsaWMgZGF0YSBpbXBsaWNpdCBmcm9tIHRoZSBjb250ZXh0LFxuICogYnV0IHNob3VsZCBiZSBib3VuZCB0byB0aGUgcmVzdWx0aW5nIGNpcGhlcnRleHQsIGkuZS4gdGhlIGNpcGhlcnRleHQgYWxsb3dzXG4gKiBmb3IgY2hlY2tpbmcgdGhlIGludGVncml0eSBvZiBgb3B0X2NvbnRleHRJbmZvYCAoYnV0IHRoZXJlIGFyZSBubyBndWFyYW50ZWVzXG4gKiB3cnQuIHRoZSBzZWNyZWN5IG9yIGF1dGhlbnRpY2l0eSBvZiBgb3B0X2NvbnRleHRJbmZvYCkuXG4gKlxuICogYG9wdF9jb250ZXh0SW5mb2AgY2FuIGJlIGVtcHR5IG9yIG51bGwsIGJ1dCB0byBlbnN1cmUgdGhlIGNvcnJlY3RcbiAqIGRlY3J5cHRpb24gb2YgYSBjaXBoZXJ0ZXh0IHRoZSBzYW1lIHZhbHVlIG11c3QgYmUgcHJvdmlkZWQgZm9yIHRoZSBkZWNyeXB0aW9uXG4gKiBvcGVyYXRpb24gYXMgd2FzIHVzZWQgZHVyaW5nIGVuY3J5cHRpb24gKGNmLiBgSHlicmlkRW5jcnlwdGB9KS5cbiAqXG4gKiBBIGNvbmNyZXRlIGluc3RhbnRpYXRpb24gb2YgdGhpcyBpbnRlcmZhY2UgY2FuIGltcGxlbWVudCB0aGUgYmluZGluZyBvZlxuICogY29udGV4dEluZm8gdG8gdGhlIGNpcGhlcnRleHQgaW4gdmFyaW91cyB3YXlzLCBmb3IgZXhhbXBsZTpcbiAqICAgICAqIHVzZSBgb3B0X2NvbnRleHRJbmZvYCBhcyBcImFzc29jaWF0ZWQgZGF0YVwiLWlucHV0IGZvciB0aGUgZW1wbG95ZWRcbiAqICAgICBBRUFEIHN5bW1ldHJpYyBlbmNyeXB0aW9uIChjZi4gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzUxMTYpLlxuICogICAgICogdXNlIGBvcHRfY29udGV4dEluZm9gIGFzIFwiQ3R4SW5mb1wiLWlucHV0IGZvciBIS0RGIChpZiB0aGVcbiAqIGltcGxlbWVudGF0aW9uIHVzZXMgSEtERiBhcyBrZXkgZGVyaXZhdGlvbiBmdW5jdGlvbiwgY2YuXG4gKiAgICAgIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM1ODY5KS5cbiAqXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBIeWJyaWREZWNyeXB0IHtcbiAgLyoqXG4gICAqIERlY3J5cHRpb24gb3BlcmF0aW9uOiBkZWNyeXB0cyBjaXBoZXJ0ZXh0IHZlcmlmeWluZyB0aGUgaW50ZWdyaXR5IG9mXG4gICAqIGBvcHRfY29udGV4dEluZm9gLlxuICAgKlxuICAgKiBAcGFyYW0gY2lwaGVydGV4dCB0aGUgY2lwaGVydGV4dCB0byBiZSBkZWNyeXB0ZWQsIG11c3QgYmVcbiAgICogICAgIG5vbi1udWxsLlxuICAgKiBAcGFyYW0gb3B0X2NvbnRleHRJbmZvIG9wdGlvbmFsIHRoZSBjb250ZXh0IGluZm8gdG8gYmVcbiAgICogICAgIGF1dGhlbnRpY2F0ZWQuIEZvciBzdWNjZXNzZnVsIGRlY3J5cHRpb24gaXQgbXVzdCBiZSB0aGUgc2FtZSBhcyB1c2VkXG4gICAqICAgICBkdXJpbmcgZW5jcnlwdGlvbi4gSXQgY2FuIGJlIG51bGwsIHdoaWNoIGlzIGVxdWl2YWxlbnQgdG8gYW4gZW1wdHlcbiAgICogICAgICh6ZXJvLWxlbmd0aCkgYnl0ZSBhcnJheS5cbiAgICogQHJldHVybiByZXN1bHRpbmcgcGxhaW50ZXh0XG4gICAqL1xuICBhYnN0cmFjdCBkZWNyeXB0KGNpcGhlcnRleHQ6IFVpbnQ4QXJyYXksIG9wdF9jb250ZXh0SW5mbz86IFVpbnQ4QXJyYXl8bnVsbCk6XG4gICAgICBQcm9taXNlPFVpbnQ4QXJyYXk+O1xufVxuIl19