diff options
Diffstat (limited to 'protocols/WhatsApp')
-rw-r--r-- | protocols/WhatsApp/WhatsApp_10.vcxproj | 6 | ||||
-rw-r--r-- | protocols/WhatsApp/WhatsApp_10.vcxproj.filters | 3 | ||||
-rw-r--r-- | protocols/WhatsApp/WhatsApp_11.vcxproj | 6 | ||||
-rw-r--r-- | protocols/WhatsApp/WhatsApp_11.vcxproj.filters | 3 | ||||
-rw-r--r-- | protocols/WhatsApp/src/OpenSSL/evp.h | 6 | ||||
-rw-r--r-- | protocols/WhatsApp/src/OpenSSL/m_sha1.c | 17 | ||||
-rw-r--r-- | protocols/WhatsApp/src/OpenSSL/rsa_sign.c | 75 |
7 files changed, 114 insertions, 2 deletions
diff --git a/protocols/WhatsApp/WhatsApp_10.vcxproj b/protocols/WhatsApp/WhatsApp_10.vcxproj index d70784fff2..96b7bb2f50 100644 --- a/protocols/WhatsApp/WhatsApp_10.vcxproj +++ b/protocols/WhatsApp/WhatsApp_10.vcxproj @@ -202,6 +202,12 @@ <ClCompile Include="src\OpenSSL\rc4_skey.c">
<PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile>
+ <ClCompile Include="src\OpenSSL\rsa_sign.c">
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NotUsing</PrecompiledHeader>
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NotUsing</PrecompiledHeader>
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NotUsing</PrecompiledHeader>
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NotUsing</PrecompiledHeader>
+ </ClCompile>
<ClCompile Include="src\proto.cpp" />
<ClCompile Include="src\stdafx.cpp">
<PrecompiledHeader>Create</PrecompiledHeader>
diff --git a/protocols/WhatsApp/WhatsApp_10.vcxproj.filters b/protocols/WhatsApp/WhatsApp_10.vcxproj.filters index cf9252c7f1..a82a221122 100644 --- a/protocols/WhatsApp/WhatsApp_10.vcxproj.filters +++ b/protocols/WhatsApp/WhatsApp_10.vcxproj.filters @@ -116,6 +116,9 @@ <ClCompile Include="src\OpenSSL\m_sha1.c">
<Filter>WhatsAPI++\OpenSSL</Filter>
</ClCompile>
+ <ClCompile Include="src\OpenSSL\rsa_sign.c">
+ <Filter>WhatsAPI++\OpenSSL</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="src\cJSON.h">
diff --git a/protocols/WhatsApp/WhatsApp_11.vcxproj b/protocols/WhatsApp/WhatsApp_11.vcxproj index edcea1df0b..fc1a62184f 100644 --- a/protocols/WhatsApp/WhatsApp_11.vcxproj +++ b/protocols/WhatsApp/WhatsApp_11.vcxproj @@ -204,6 +204,12 @@ <ClCompile Include="src\OpenSSL\rc4_skey.c">
<PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile>
+ <ClCompile Include="src\OpenSSL\rsa_sign.c">
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NotUsing</PrecompiledHeader>
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NotUsing</PrecompiledHeader>
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NotUsing</PrecompiledHeader>
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NotUsing</PrecompiledHeader>
+ </ClCompile>
<ClCompile Include="src\proto.cpp" />
<ClCompile Include="src\stdafx.cpp">
<PrecompiledHeader>Create</PrecompiledHeader>
diff --git a/protocols/WhatsApp/WhatsApp_11.vcxproj.filters b/protocols/WhatsApp/WhatsApp_11.vcxproj.filters index cf9252c7f1..a82a221122 100644 --- a/protocols/WhatsApp/WhatsApp_11.vcxproj.filters +++ b/protocols/WhatsApp/WhatsApp_11.vcxproj.filters @@ -116,6 +116,9 @@ <ClCompile Include="src\OpenSSL\m_sha1.c">
<Filter>WhatsAPI++\OpenSSL</Filter>
</ClCompile>
+ <ClCompile Include="src\OpenSSL\rsa_sign.c">
+ <Filter>WhatsAPI++\OpenSSL</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="src\cJSON.h">
diff --git a/protocols/WhatsApp/src/OpenSSL/evp.h b/protocols/WhatsApp/src/OpenSSL/evp.h index 077cca7d09..bee216913d 100644 --- a/protocols/WhatsApp/src/OpenSSL/evp.h +++ b/protocols/WhatsApp/src/OpenSSL/evp.h @@ -193,6 +193,12 @@ struct env_md_st int ctx_size; /* how big does the ctx->md_data need to be */ } /* EVP_MD */; +typedef int evp_sign_method(int type,const unsigned char *m, + unsigned int m_length,unsigned char *sigret, + unsigned int *siglen, void *key); +typedef int evp_verify_method(int type,const unsigned char *m, + unsigned int m_length,const unsigned char *sigbuf, + unsigned int siglen, void *key); int EVP_MD_block_size(const EVP_MD *md); int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, void *impl); diff --git a/protocols/WhatsApp/src/OpenSSL/m_sha1.c b/protocols/WhatsApp/src/OpenSSL/m_sha1.c index e6fc768cc2..c78fe11a77 100644 --- a/protocols/WhatsApp/src/OpenSSL/m_sha1.c +++ b/protocols/WhatsApp/src/OpenSSL/m_sha1.c @@ -71,6 +71,8 @@ #define SHA_LAST_BLOCK (SHA_CBLOCK-8) #define SHA_DIGEST_LENGTH 20 +#define NID_rsaEncryption 6 +#define NID_rsa 19 #define NID_sha1 64 #define NID_sha1WithRSAEncryption 65 @@ -84,6 +86,17 @@ typedef struct SHAstate_st #include "sha_locl.h" +/* The following 2 functions sign and verify a X509_SIG ASN1 object + * inside PKCS#1 padded RSA encryption */ +int RSA_sign(int type, const unsigned char *m, unsigned int m_length, + unsigned char *sigret, unsigned int *siglen, void *rsa); +int RSA_verify(int type, const unsigned char *m, unsigned int m_length, + unsigned char *sigbuf, unsigned int siglen, void *rsa); + +#define EVP_PKEY_RSA_method (evp_sign_method *)RSA_sign, \ + (evp_verify_method *)RSA_verify, \ + {EVP_PKEY_RSA,EVP_PKEY_RSA2,0,0} + static int init(EVP_MD_CTX *ctx) { return SHA1_Init(ctx->md_data); } @@ -93,7 +106,7 @@ static int update(EVP_MD_CTX *ctx,const void *data,size_t count) static int final(EVP_MD_CTX *ctx,unsigned char *md) { return SHA1_Final(md,ctx->md_data); } -static const EVP_MD sha1_md= +static const EVP_MD sha1_md = { NID_sha1, NID_sha1WithRSAEncryption, @@ -104,7 +117,7 @@ static const EVP_MD sha1_md= final, NULL, NULL, - NULL, + EVP_PKEY_RSA_method, SHA_CBLOCK, sizeof(EVP_MD *)+sizeof(SHA_CTX), }; diff --git a/protocols/WhatsApp/src/OpenSSL/rsa_sign.c b/protocols/WhatsApp/src/OpenSSL/rsa_sign.c new file mode 100644 index 0000000000..1611834466 --- /dev/null +++ b/protocols/WhatsApp/src/OpenSSL/rsa_sign.c @@ -0,0 +1,75 @@ +/* crypto/rsa/rsa_sign.c */ +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ + +#include <stdio.h> + +/* Size of an SSL signature: MD5+SHA1 */ +#define SSL_SIG_LENGTH 36 + +int RSA_sign(int type, const unsigned char *m, unsigned int m_len, + unsigned char *sigret, unsigned int *siglen, void *rsa) +{ + return(0); +} + +int RSA_verify(int dtype, const unsigned char *m, unsigned int m_len, + unsigned char *sigbuf, unsigned int siglen, void *rsa) +{ + return(0); +} + |