Skip to content

Commit

Permalink
feat(AESEncrypt): add avAESEncrypt
Browse files Browse the repository at this point in the history
  • Loading branch information
I-m-SuperMan authored and pingkai committed Mar 13, 2020
1 parent 441eb05 commit ea5dbfd
Show file tree
Hide file tree
Showing 10 changed files with 129 additions and 5 deletions.
5 changes: 4 additions & 1 deletion framework/demuxer/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -66,13 +66,16 @@ set(SOURCE_FILES demuxer_service.cpp
sample_decrypt/ISampleDecrypt2c.cpp
sample_decrypt/ISampleDecrypt2c.h
decrypto/IAESDecrypt.h
decrypto/avAESDecrypt.cpp decrypto/avAESDecrypt.h
decrypto/avAESDecrypt.cpp
decrypto/avAESDecrypt.h
)

if (USE_OPENSSL)
list(APPEND ${SOURCE_FILES}
decrypto/OpenSSAESDecrypt.cpp
decrypto/OpenSSAESDecrypt.h
decrypto/OpenSSAESEncrypt.cpp
decrypto/OpenSSAESEncrypt.h
)
endif ()

Expand Down
17 changes: 15 additions & 2 deletions framework/demuxer/decrypto/IAESDecrypt.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@
#define CICADAMEDIA_IAESDECRYPT_H

#include <cstdint>

#include <utils/CicadaType.h>

namespace Cicada {
class IAESDecrypt {
class CICADA_CPLUS_EXTERN IAESDecrypt {
public:
const static int BLOCK_SIZE = 16;

Expand All @@ -22,6 +22,19 @@ namespace Cicada {
virtual void decrypt(uint8_t *dst, const uint8_t *src, int count, uint8_t *iv) = 0;

};

class CICADA_CPLUS_EXTERN IAESEncrypt {
public:
const static int BLOCK_SIZE = 16;

IAESEncrypt() = default;

virtual ~IAESEncrypt() = default;

virtual int setKey(const uint8_t *key, int key_bits) = 0;

virtual void encrypt(uint8_t *dst, const uint8_t *src, int count, uint8_t *iv) = 0;
};
}


Expand Down
1 change: 0 additions & 1 deletion framework/demuxer/decrypto/OpenSSAESDecrypt.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
// Created by moqi on 2020/2/20.
//

#include <openssl/aes.h>
#include "OpenSSAESDecrypt.h"

using namespace Cicada;
Expand Down
1 change: 1 addition & 0 deletions framework/demuxer/decrypto/OpenSSAESDecrypt.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
#ifndef CICADAMEDIA_OPENSSAESDECRYPT_H
#define CICADAMEDIA_OPENSSAESDECRYPT_H

#include <openssl/aes.h>
#include "IAESDecrypt.h"

namespace Cicada {
Expand Down
21 changes: 21 additions & 0 deletions framework/demuxer/decrypto/OpenSSAESEncrypt.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
//
// Created by lifujun on 2020/3/13.
//

#include "OpenSSAESEncrypt.h"

using namespace Cicada ;
OpenSSAESEncrypt::OpenSSAESEncrypt() = default;

OpenSSAESEncrypt::~OpenSSAESEncrypt() = default;

int OpenSSAESEncrypt::setKey(const uint8_t *key, int key_bits)
{
return AES_set_decrypt_key(key, 8 * AES_BLOCK_SIZE/*128*/, &mAesKey);
}

void OpenSSAESEncrypt::encrypt(uint8_t *dst, const uint8_t *src, int count, uint8_t *iv)
{
AES_cbc_encrypt(src, dst, count * AES_BLOCK_SIZE, &mAesKey, iv, AES_ENCRYPT);
}

28 changes: 28 additions & 0 deletions framework/demuxer/decrypto/OpenSSAESEncrypt.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
//
// Created by lifujun on 2020/3/13.
//

#ifndef SOURCE_OPENSSAESENCRYPT_H
#define SOURCE_OPENSSAESENCRYPT_H

#include <openssl/aes.h>
#include "IAESDecrypt.h"

namespace Cicada {
class OpenSSAESEncrypt : public IAESEncrypt{
public:
OpenSSAESEncrypt();

~OpenSSAESEncrypt() override;

int setKey(const uint8_t *key, int key_bits) override;

void encrypt(uint8_t *dst, const uint8_t *src, int count, uint8_t *iv) override;

private:
AES_KEY mAesKey{};
};
}


#endif //SOURCE_OPENSSAESENCRYPT_H
21 changes: 21 additions & 0 deletions framework/demuxer/decrypto/avAESDecrypt.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,24 @@ int avAESDecrypt::setKey(const uint8_t *key, int key_bits)
{
return av_aes_init(mAes, key, key_bits, 1);
}


avAESEncrypt::avAESEncrypt()
{
mAes = av_aes_alloc();
}

avAESEncrypt::~avAESEncrypt()
{
av_free(mAes);
}

int avAESEncrypt::setKey(const uint8_t *key, int key_bits)
{
return av_aes_init(mAes, key, key_bits, 0);
}

void avAESEncrypt::encrypt(uint8_t *dst, const uint8_t *src, int count, uint8_t *iv)
{
av_aes_crypt(mAes, dst, src, count, iv, 0);
}
17 changes: 16 additions & 1 deletion framework/demuxer/decrypto/avAESDecrypt.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,10 @@
#define CICADAMEDIA_AVAESDECRYPT_H

#include "IAESDecrypt.h"
#include <utils/CicadaType.h>

namespace Cicada {
class avAESDecrypt : public IAESDecrypt {
class CICADA_CPLUS_EXTERN avAESDecrypt : public IAESDecrypt {
public:
avAESDecrypt();

Expand All @@ -22,6 +23,20 @@ namespace Cicada {
struct AVAES *mAes{nullptr};

};

class CICADA_CPLUS_EXTERN avAESEncrypt : public IAESEncrypt {
public:
avAESEncrypt();

~avAESEncrypt() override;

int setKey(const uint8_t *key, int key_bits) override;

void encrypt(uint8_t *dst, const uint8_t *src, int count, uint8_t *iv) override;

private:
struct AVAES *mAes{nullptr};
};
}


Expand Down
19 changes: 19 additions & 0 deletions framework/utils/Md5Utils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -66,4 +66,23 @@ unsigned char *SHA256(const unsigned char *d, size_t n, unsigned char *md)
av_sha_final(sha, md);
av_free(sha);
return md;
}

void MD5(unsigned char *src, int len, unsigned char *dst)
{
static unsigned char outTmp[16] = {0};

if (dst == nullptr) {
dst = outTmp;
}

struct AVMD5 *ctx = av_md5_alloc();

av_md5_init(ctx);

av_md5_update(ctx, src, len);

av_md5_final(ctx, dst);

av_free(ctx);
}
4 changes: 4 additions & 0 deletions framework/utils/Md5Utils.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
#define SOURCE_MD5UTILS_H

#include <string>

namespace Cicada {

class Md5Utils {
Expand All @@ -18,6 +19,9 @@ namespace Cicada {
// };

}

unsigned char *SHA256(const unsigned char *d, size_t n, unsigned char *md);

void MD5(unsigned char *src, int len, unsigned char *dst);

#endif //SOURCE_MD5UTILS_H

0 comments on commit ea5dbfd

Please sign in to comment.