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
JavaScript
/**
* @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