diff options
author | Tobias Brunner <tobias@strongswan.org> | 2014-06-16 15:01:28 +0200 |
---|---|---|
committer | Tobias Brunner <tobias@strongswan.org> | 2014-10-10 09:31:17 +0200 |
commit | edfd33455cb772f43f0d1690266074e722a9f4fe (patch) | |
tree | 2aac36f8aa69256618619e00d32e2ade73bf873f /src/libcharon/encoding/payloads/encrypted_payload.c | |
parent | 1e0d8f3ec087cb108c61857f98ad7443728e17aa (diff) | |
download | strongswan-edfd33455cb772f43f0d1690266074e722a9f4fe.tar.bz2 strongswan-edfd33455cb772f43f0d1690266074e722a9f4fe.tar.xz |
encrypted_payload: Encrypted payload can be constructed from plaintext
Diffstat (limited to 'src/libcharon/encoding/payloads/encrypted_payload.c')
-rw-r--r-- | src/libcharon/encoding/payloads/encrypted_payload.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/libcharon/encoding/payloads/encrypted_payload.c b/src/libcharon/encoding/payloads/encrypted_payload.c index 431f7bb28..c61fb8683 100644 --- a/src/libcharon/encoding/payloads/encrypted_payload.c +++ b/src/libcharon/encoding/payloads/encrypted_payload.c @@ -585,6 +585,16 @@ METHOD(encrypted_payload_t, decrypt, status_t, return parse(this, plain); } +METHOD(encrypted_payload_t, decrypt_plain, status_t, + private_encrypted_payload_t *this, chunk_t assoc) +{ + if (!this->encrypted.ptr) + { + return FAILED; + } + return parse(this, this->encrypted); +} + METHOD(encrypted_payload_t, decrypt_v1, status_t, private_encrypted_payload_t *this, chunk_t iv) { @@ -671,3 +681,20 @@ encrypted_payload_t *encrypted_payload_create(payload_type_t type) return &this->public; } + +/* + * Described in header + */ +encrypted_payload_t *encrypted_payload_create_from_plain(payload_type_t next, + chunk_t plain) +{ + private_encrypted_payload_t *this; + + this = (private_encrypted_payload_t*)encrypted_payload_create(PLV2_ENCRYPTED); + this->public.decrypt = _decrypt_plain; + this->next_payload = next; + this->encrypted = plain; + compute_length(this); + + return &this->public; +} |