Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
O
Olm
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Nheko Reborn
Olm
Commits
7649125a
Commit
7649125a
authored
9 years ago
by
Mark Haines
Browse files
Options
Downloads
Patches
Plain Diff
Add docstrings for the Session methods
parent
b3180551
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
include/olm/session.hh
+44
-2
44 additions, 2 deletions
include/olm/session.hh
with
44 additions
and
2 deletions
include/olm/session.hh
+
44
−
2
View file @
7649125a
...
...
@@ -39,8 +39,13 @@ struct Session {
Curve25519PublicKey
alice_base_key
;
Curve25519PublicKey
bob_one_time_key
;
/** The number of random bytes that are needed to create a new outbound
* session. This will be 64 bytes since two ephemeral keys are needed. */
std
::
size_t
new_outbound_session_random_length
();
/** Start a new outbound session. Returns std::size_t(-1) on failure. On
* failure last_error will be set with an error code. The last_error will be
* NOT_ENOUGH_RANDOM if the number of random bytes was too small. */
std
::
size_t
new_outbound_session
(
Account
const
&
local_account
,
Curve25519PublicKey
const
&
identity_key
,
...
...
@@ -48,42 +53,79 @@ struct Session {
std
::
uint8_t
const
*
random
,
std
::
size_t
random_length
);
/** Start a new inbound session from a pre-key message.
* Returns std::size_t(-1) on failure. On failure last_error will be set
* with an error code. The last_error will be BAD_MESSAGE_FORMAT if
* the message headers could not be decoded. */
std
::
size_t
new_inbound_session
(
Account
&
local_account
,
Curve25519PublicKey
const
*
their_identity_key
,
std
::
uint8_t
const
*
one_tim
e_key_message
,
std
::
size_t
message_length
std
::
uint8_t
const
*
pr
e_key_message
,
std
::
size_t
message_length
);
/** The number of bytes written by session_id() */
std
::
size_t
session_id_length
();
/** An identifier for this session. Generated by hashing the public keys
* used to create the session. Returns the length of the session id on
* success or std::size_t(-1) on failure. On failure last_error will be set
* with an error code. The last_error will be OUTPUT_BUFFER_TOO_SMALL if
* the id buffer was too small. */
std
::
size_t
session_id
(
std
::
uint8_t
*
id
,
std
::
size_t
id_length
);
/** True if this session can be used to decode an inbound pre-key message.
* This can be used to test whether a pre-key message should be decoded
* with an existing session or if a new session will need to be created.
* Returns true if the session is the same. Returns false if either the
* session does not match or the pre-key message could not be decoded.
*/
bool
matches_inbound_session
(
Curve25519PublicKey
const
*
their_identity_key
,
std
::
uint8_t
const
*
one_tim
e_key_message
,
std
::
size_t
message_length
std
::
uint8_t
const
*
pr
e_key_message
,
std
::
size_t
message_length
);
/** Whether the next message will be a pre-key message or a normal message.
* An outbound session will send pre-key messages until it receives a
* message with a ratchet key. */
MessageType
encrypt_message_type
();
std
::
size_t
encrypt_message_length
(
std
::
size_t
plaintext_length
);
/** The number of bytes of random data the encrypt method will need to
* encrypt a message. This will be 32 bytes if the session needs to
* generate a new ephemeral key, or will be 0 bytes otherwise. */
std
::
size_t
encrypt_random_length
();
/** Encrypt some plain-text. Returns the length of the encrypted message
* or std::size_t(-1) on failure. On failure last_error will be set with
* an error code. The last_error will be NOT_ENOUGH_RANDOM if the number
* of random bytes is too small. The last_error will be
* OUTPUT_BUFFER_TOO_SMALL if the output buffer is too small. */
std
::
size_t
encrypt
(
std
::
uint8_t
const
*
plaintext
,
std
::
size_t
plaintext_length
,
std
::
uint8_t
const
*
random
,
std
::
size_t
random_length
,
std
::
uint8_t
*
message
,
std
::
size_t
message_length
);
/** An upper bound on the number of bytes of plain-text the decrypt method
* will write for a given input message length. */
std
::
size_t
decrypt_max_plaintext_length
(
MessageType
message_type
,
std
::
uint8_t
const
*
message
,
std
::
size_t
message_length
);
/** Decrypt a message. Returns the length of the decrypted plain-text or
* std::size_t(-1) on failure. On failure last_error will be set with an
* error code. The last_error will be OUTPUT_BUFFER_TOO_SMALL if the
* plain-text buffer is too small. The last_error will be
* BAD_MESSAGE_VERSION if the message was encrypted with an unsupported
* version of the protocol. The last_error will be BAD_MESSAGE_FORMAT if
* the message headers could not be decoded. The last_error will be
* BAD_MESSAGE_MAC if the message could not be verified */
std
::
size_t
decrypt
(
MessageType
message_type
,
std
::
uint8_t
const
*
message
,
std
::
size_t
message_length
,
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
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!
Save comment
Cancel
Please
register
or
sign in
to comment