mirror of
https://github.com/oxen-io/session-android.git
synced 2024-12-22 16:07:30 +00:00
50 lines
1020 B
C
50 lines
1020 B
C
|
#ifndef __STRP_STREAM_H__
|
||
|
#define __STRP_STREAM_H__
|
||
|
|
||
|
#include <openssl/aes.h>
|
||
|
#include <openssl/hmac.h>
|
||
|
|
||
|
#define SRTP_AES_KEY_SIZE 16
|
||
|
#define SRTP_SALT_SIZE 14
|
||
|
#define SRTP_MAC_KEY_SIZE 20
|
||
|
|
||
|
#define SRTP_MAC_SIZE 20
|
||
|
|
||
|
#include "RtpPacket.h"
|
||
|
|
||
|
class SrtpStreamParameters {
|
||
|
|
||
|
public:
|
||
|
uint8_t cipherKey[SRTP_AES_KEY_SIZE];
|
||
|
uint8_t macKey[SRTP_MAC_KEY_SIZE];
|
||
|
uint8_t salt[SRTP_SALT_SIZE];
|
||
|
|
||
|
SrtpStreamParameters(uint8_t *cipherKeyPtr, uint8_t* macKeyPtr, uint8_t *saltPtr)
|
||
|
{
|
||
|
memcpy(cipherKey, cipherKeyPtr, SRTP_AES_KEY_SIZE);
|
||
|
memcpy(macKey, macKeyPtr, SRTP_MAC_KEY_SIZE);
|
||
|
memcpy(salt, saltPtr, SRTP_SALT_SIZE);
|
||
|
}
|
||
|
|
||
|
};
|
||
|
|
||
|
class SrtpStream {
|
||
|
|
||
|
private:
|
||
|
SrtpStreamParameters *parameters;
|
||
|
AES_KEY key;
|
||
|
|
||
|
void setIv(int64_t logicalSequence, uint32_t ssrc, uint8_t *salt, uint8_t *iv);
|
||
|
|
||
|
public:
|
||
|
|
||
|
SrtpStream(SrtpStreamParameters *parameters);
|
||
|
~SrtpStream();
|
||
|
|
||
|
int init();
|
||
|
int decrypt(RtpPacket &packet, int64_t logicalSequence);
|
||
|
int encrypt(RtpPacket &packet, int64_t logicalSequence);
|
||
|
|
||
|
};
|
||
|
|
||
|
#endif
|