Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
matrix-org
Olm
Commits
ccc0d122
Commit
ccc0d122
authored
May 18, 2021
by
Denis Kasak
Browse files
olm_pk_decrypt: Ensure inputs are of correct length.
parent
2f35e0bc
Pipeline
#5083
passed with stages
in 2 minutes and 20 seconds
Changes
1
Pipelines
2
Hide whitespace changes
Inline
Side-by-side
src/pk.cpp
View file @
ccc0d122
...
...
@@ -73,11 +73,13 @@ size_t olm_pk_encryption_set_recipient_key (
OlmErrorCode
::
OLM_INPUT_BUFFER_TOO_SMALL
;
return
std
::
size_t
(
-
1
);
}
olm
::
decode_base64
(
(
const
uint8_t
*
)
key
,
olm_pk_key_length
(),
(
uint8_t
*
)
encryption
->
recipient_key
.
public_key
);
return
0
;
}
...
...
@@ -363,17 +365,38 @@ size_t olm_pk_decrypt(
return
std
::
size_t
(
-
1
);
}
size_t
raw_ciphertext_length
=
olm
::
decode_base64_length
(
ciphertext_length
);
if
(
ephemeral_key_length
!=
olm
::
encode_base64_length
(
CURVE25519_KEY_LENGTH
)
||
mac_length
!=
olm
::
encode_base64_length
(
MAC_LENGTH
)
||
raw_ciphertext_length
==
std
::
size_t
(
-
1
))
{
decryption
->
last_error
=
OlmErrorCode
::
OLM_INVALID_BASE64
;
return
std
::
size_t
(
-
1
);
}
struct
_olm_curve25519_public_key
ephemeral
;
olm
::
decode_base64
(
(
const
uint8_t
*
)
ephemeral_key
,
ephemeral_key_length
,
(
const
uint8_t
*
)
ephemeral_key
,
olm
::
encode_base64_length
(
CURVE25519_KEY_LENGTH
),
(
uint8_t
*
)
ephemeral
.
public_key
);
olm
::
SharedKey
secret
;
_olm_crypto_curve25519_shared_secret
(
&
decryption
->
key_pair
,
&
ephemeral
,
secret
);
uint8_t
raw_mac
[
MAC_LENGTH
];
olm
::
decode_base64
((
const
uint8_t
*
)
mac
,
olm
::
encode_base64_length
(
MAC_LENGTH
),
raw_mac
);
size_t
raw_ciphertext_length
=
olm
::
decode_base64_length
(
ciphertext_length
);
olm
::
decode_base64
((
const
uint8_t
*
)
ciphertext
,
ciphertext_length
,
(
uint8_t
*
)
ciphertext
);
olm
::
decode_base64
(
(
const
uint8_t
*
)
mac
,
olm
::
encode_base64_length
(
MAC_LENGTH
),
raw_mac
);
olm
::
decode_base64
(
(
const
uint8_t
*
)
ciphertext
,
ciphertext_length
,
(
uint8_t
*
)
ciphertext
);
size_t
result
=
_olm_cipher_aes_sha_256_ops
.
decrypt
(
olm_pk_cipher
,
secret
,
sizeof
(
secret
),
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment