Re: Re: SonarLint complaining about "Use a stronger padding scheme"
HELA YAICH <[email protected]> Fri, 3 May 2024 11:48:14 -0700 (PDT)
| Newsgroups | gmane.comp.encryption.cryptopp |
|---|---|
| Message-ID | <[email protected]> |
------=_Part_79027_2049407928.1714762094565
Content-Type: multipart/alternative;
boundary="----=_Part_79028_1674606839.1714762094565"
------=_Part_79028_1674606839.1714762094565
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Hello, i want to use x509 certificate code (load and signCertificate) but i=
=20
have some build errors :=20
/usr/bin/ld: CMakeFiles/scratch_fanetex.dir/fanetex.cc.o: warning:=20
relocation against `_ZTVN8CryptoPP15X509CertificateE' in read-only section=
=20
`.text.startup'
/usr/bin/ld: CMakeFiles/scratch_fanetex.dir/fanetex.cc.o: in function=20
`CryptoPP::KeyUsageValue::~KeyUsageValue()':
/usr/include/cryptopp/x509cert.h:278: undefined reference to `vtable for=20
CryptoPP::KeyUsageValue'
/usr/bin/ld: CMakeFiles/scratch_fanetex.dir/fanetex.cc.o: in function=20
`CryptoPP::ExtensionValue::~ExtensionValue()':
/usr/include/cryptopp/x509cert.h:113: undefined reference to `vtable for=20
CryptoPP::ExtensionValue'
/usr/bin/ld: CMakeFiles/scratch_fanetex.dir/fanetex.cc.o: in function=20
`CryptoPP::RdnValue::~RdnValue()':
/usr/include/cryptopp/x509cert.h:57: undefined reference to `vtable for=20
CryptoPP::RdnValue'
/usr/bin/ld: CMakeFiles/scratch_fanetex.dir/fanetex.cc.o: in function=20
`CryptoPP::KeyIdentifierValue::~KeyIdentifierValue()':
/usr/include/cryptopp/x509cert.h:154: undefined reference to `vtable for=20
CryptoPP::KeyIdentifierValue'
/usr/bin/ld: CMakeFiles/scratch_fanetex.dir/fanetex.cc.o: in function=20
`CryptoPP::Certificate::~Certificate()':
/usr/include/cryptopp/cryptlib.h:2550: undefined reference to `VTT for=20
CryptoPP::X509Certificate'
/usr/bin/ld: CMakeFiles/scratch_fanetex.dir/fanetex.cc.o: in function=20
`CryptoPP::RdnValue::~RdnValue()':
/usr/include/cryptopp/x509cert.h:57: undefined reference to `vtable for=20
CryptoPP::RdnValue'
/usr/bin/ld: CMakeFiles/scratch_fanetex.dir/fanetex.cc.o: in function=20
`CryptoPP::ExtensionValue::~ExtensionValue()':
/usr/include/cryptopp/x509cert.h:113: undefined reference to `vtable for=20
CryptoPP::ExtensionValue'
/usr/bin/ld: CMakeFiles/scratch_fanetex.dir/fanetex.cc.o: in function=20
`CryptoPP::KeyIdentifierValue::~KeyIdentifierValue()':
/usr/include/cryptopp/x509cert.h:154: undefined reference to `vtable for=20
CryptoPP::KeyIdentifierValue'
/usr/bin/ld: CMakeFiles/scratch_fanetex.dir/fanetex.cc.o: in function=20
`CryptoPP::KeyUsageValue::~KeyUsageValue()':
/usr/include/cryptopp/x509cert.h:278: undefined reference to `vtable for=20
CryptoPP::KeyUsageValue'
/usr/bin/ld: CMakeFiles/scratch_fanetex.dir/fanetex.cc.o: in function=20
`CryptoPP::ExtensionValue::~ExtensionValue()':
/usr/include/cryptopp/x509cert.h:113: undefined reference to `vtable for=20
CryptoPP::ExtensionValue'
/usr/bin/ld: CMakeFiles/scratch_fanetex.dir/fanetex.cc.o: in function=20
`CryptoPP::KeyIdentifierValue::~KeyIdentifierValue()':
/usr/include/cryptopp/x509cert.h:154: undefined reference to `vtable for=20
CryptoPP::KeyIdentifierValue'
/usr/bin/ld: CMakeFiles/scratch_fanetex.dir/fanetex.cc.o: in function=20
`CryptoPP::KeyUsageValue::~KeyUsageValue()':
/usr/include/cryptopp/x509cert.h:278: undefined reference to `vtable for=20
CryptoPP::KeyUsageValue'
/usr/bin/ld: CMakeFiles/scratch_fanetex.dir/fanetex.cc.o: in function=20
`CryptoPP::X509Certificate::~X509Certificate()':
/usr/include/cryptopp/x509cert.h:464: undefined reference to `vtable for=20
CryptoPP::X509Certificate'
/usr/bin/ld: CMakeFiles/scratch_fanetex.dir/fanetex.cc.o: in function=20
`CryptoPP::DateValue::~DateValue()':
/usr/include/cryptopp/x509cert.h:89: undefined reference to `vtable for=20
CryptoPP::DateValue'
/usr/bin/ld: CMakeFiles/scratch_fanetex.dir/fanetex.cc.o: in function=20
`CryptoPP::RdnValue::~RdnValue()':
/usr/include/cryptopp/x509cert.h:57: undefined reference to `vtable for=20
CryptoPP::RdnValue'
Please can you help me ?
Thank you
Le mercredi 24 avril 2024 =C3=A0 12:52:05 UTC-5, One Sini a =C3=A9crit :
> Test this way
>
> a basic guide on how to generate an RSA key pair with PSS padding, sign a=
n=20
> X509 certificate with the private key, and verify the signature with the=
=20
> public key using the Crypto++ library:
>
> 1. Generating an RSA Key Pair with PSS Padding:
>
> cpp
>
> Copy code
>
> #include <cryptopp/rsa.h>
>
> #include <cryptopp/osrng.h>
>
> #include <cryptopp/pssr.h>
>
>
> using namespace CryptoPP;
>
>
> void generateRSAKeyPair(RSA::PrivateKey& privateKey, RSA::PublicKey&=20
> publicKey) {
>
> AutoSeededRandomPool rng;
>
>
> InvertibleRSAFunction params;
>
> params.GenerateRandomWithKeySize(rng, 2048);
>
>
> privateKey =3D RSA::PrivateKey(params);
>
> publicKey =3D RSA::PublicKey(params);
>
> }
>
>
> int main() {
>
> RSA::PrivateKey privateKey;
>
> RSA::PublicKey publicKey;
>
>
> generateRSAKeyPair(privateKey, publicKey);
>
>
> // The RSA key pair has been generated and is now available
>
> return 0;
>
> }
>
> 1. Signing the X509 Certificate with the Private Key:
>
> cpp
>
>
> Copy code
>
> #include <cryptopp/cryptlib.h>
>
> #include <cryptopp/oids.h>
>
> #include <cryptopp/rsa.h>
>
> #include <cryptopp/sha.h>
>
> #include <cryptopp/filters.h>
>
> #include <cryptopp/base64.h>
>
>
> using namespace CryptoPP;
>
>
> void signCertificate(const RSA::PrivateKey& privateKey, const X509&=20
> certificate, byte* signature) {
>
> // Implement the process of signing the certificate here
>
> // Use privateKey and certificate to sign the certificate
>
> }
>
>
> int main() {
>
> // Load or create your X509 certificate
>
> // Here, we assume you already have an X509 certificate
>
>
> RSA::PrivateKey privateKey;
>
> // Load or generate your private key
>
> // Here, we assume you already have a private key
>
>
> byte signature[256]; // Space for the signature
>
>
> signCertificate(privateKey, certificate, signature);
>
>
> // The certificate has been signed, and the signature is now availabl=
e
>
> return 0;
>
> }
>
> 1. Verifying the Signature with the Public Key:
>
> cpp
>
>
> Copy code
>
> #include <cryptopp/rsa.h>
>
> #include <cryptopp/sha.h>
>
> #include <cryptopp/filters.h>
>
> #include <cryptopp/base64.h>
>
>
> using namespace CryptoPP;
>
>
> bool verifySignature(const RSA::PublicKey& publicKey, const X509&=20
> certificate, const byte* signature) {
>
> // Implement the process of verifying the signature here
>
> // Use publicKey, certificate, and signature
>
>
> // Return true if the signature is valid, otherwise false
>
> return false;
>
> }
>
>
> int main() {
>
> // Load or create your X509 certificate
>
> // Here, we assume you already have an X509 certificate
>
>
> RSA::PublicKey publicKey;
>
> // Load or generate your public key
>
> // Here, we assume you already have a public key
>
>
> byte signature[256]; // Take the signature from the certificate=20
> signature
>
>
> bool isValid =3D verifySignature(publicKey, certificate, signature);
>
>
> // Check if the signature is valid
>
> return 0;
>
> }
>
> These code snippets serve as a foundation. You will need to adapt them=20
> according to your specific implementation, including the loading process=
=20
> for the X509 certificate and the private/public keys. Remember to include=
=20
> error handling and handle edge cases in your implementation
> I hope this help you
> ;)
>
> Manish sharma <[email protected]> schrieb am Mi. 24. Apr. 2024 um=
=20
> 14:42:
>
>> Crypto Betting <https://www.brsoftech.com/blog/crypto-sports-betting/>
>>
>> On Wed, Apr 24, 2024 at 6:08=E2=80=AFPM Frank Sapone <[email protected]=
om>=20
>> wrote:
>>
>>> Has anyone figured out how to use PSS and SHA256 *WITH *CryptoPP-PEM? =
=20
>>> I also tried reporting this to the issuer tracker at=20
>>> https://github.com/noloader/cryptopp-pem and nobody has replied. I=20
>>> can't imagine I'm the only person using this library in order to achiev=
e=20
>>> this with X509 Certs.
>>>
>>> Thanks,
>>> Frank
>>>
>>> On Wednesday, April 17, 2024 at 11:43:54=E2=80=AFAM UTC-4 HELA YAICH wr=
ote:
>>>
>>>> Hello,=20
>>>> (I'm new user of ns3 and crypto)=20
>>>> I have link errors with Crypto++. These errors indicate that the=20
>>>> compiler cannot find certain functions or classes defined in Crypto++.=
This=20
>>>> can happen if Crypto++ is not correctly linked to my project. However,=
I=20
>>>> tried to modify my project's CMakeLists.txt file as follows:=20
>>>> set(target_prefix scratch_)
>>>>
>>>> function(create_scratch source_files)
>>>> # Return early if no sources in the subdirectory
>>>> list(LENGTH source_files number_sources)
>>>> if(number_sources EQUAL 0)
>>>> return()
>>>> endif()
>>>>
>>>> # If the scratch has more than a source file, we need to find the=20
>>>> source with
>>>> # the main function
>>>> set(scratch_src)
>>>> foreach(source_file ${source_files})
>>>> file(READ ${source_file} source_file_contents)
>>>> string(REGEX MATCHALL "main[(| (]" main_position=20
>>>> "${source_file_contents}")
>>>> if(CMAKE_MATCH_0)
>>>> set(scratch_src ${source_file})
>>>> endif()
>>>> endforeach()
>>>>
>>>> if(NOT scratch_src)
>>>> return()
>>>> endif()
>>>>
>>>> # Get parent directory name
>>>> get_filename_component(scratch_dirname ${scratch_src} DIRECTORY)
>>>> string(REPLACE "${CMAKE_CURRENT_SOURCE_DIR}" "" scratch_dirname
>>>> "${scratch_dirname}"
>>>> )
>>>> string(REPLACE "/" "_" scratch_dirname "${scratch_dirname}")
>>>>
>>>> # Get source name
>>>> get_filename_component(scratch_name ${scratch_src} NAME_WE)
>>>>
>>>> set(target_prefix scratch_)
>>>> if(scratch_dirname)
>>>> # Join the names together if dirname is not the scratch folder
>>>> set(target_prefix scratch${scratch_dirname}_)
>>>> endif()
>>>>
>>>> # Get source absolute path and transform into relative path
>>>> get_filename_component(scratch_src ${scratch_src} ABSOLUTE)
>>>> get_filename_component(scratch_absolute_directory ${scratch_src}=20
>>>> DIRECTORY)
>>>> string(REPLACE "${PROJECT_SOURCE_DIR}" "${CMAKE_OUTPUT_DIRECTORY}"
>>>> scratch_directory ${scratch_absolute_directory}
>>>> )
>>>> add_executable(${target_prefix}${scratch_name} "${source_files}")
>>>> if(${NS3_STATIC})
>>>> target_link_libraries(
>>>> ${target_prefix}${scratch_name} ${LIB_AS_NEEDED_PRE_STATIC}
>>>> ${lib-ns3-static}
>>>> )
>>>> else()
>>>> target_link_libraries(
>>>> ${target_prefix}${scratch_name} "${ns3-libs}"=20
>>>> "${ns3-contrib-libs}"
>>>> "${ns3-external-libs}"
>>>> )
>>>> endif()
>>>> set_runtime_outputdirectory(
>>>> ${scratch_name} ${scratch_directory}/ ${target_prefix}
>>>> )
>>>> endfunction()
>>>>
>>>> # Scan *.cc files in ns-3-dev/scratch and build a target for each
>>>> file(GLOB single_source_file_scratches CONFIGURE_DEPENDS=20
>>>> ${CMAKE_CURRENT_SOURCE_DIR}/*.cc)
>>>> foreach(scratch_src ${single_source_file_scratches})
>>>> create_scratch(${scratch_src})
>>>> endforeach()
>>>>
>>>> # Scan *.cc files in ns-3-dev/scratch subdirectories and build a targe=
t=20
>>>> for each
>>>> # subdirectory
>>>> file(
>>>> GLOB_RECURSE scratch_subdirectories
>>>> CONFIGURE_DEPENDS
>>>> LIST_DIRECTORIES true
>>>> ${CMAKE_CURRENT_SOURCE_DIR}/**
>>>> )
>>>> # Filter out files
>>>> foreach(entry ${scratch_subdirectories})
>>>> if(NOT (IS_DIRECTORY ${entry}))
>>>> list(REMOVE_ITEM scratch_subdirectories ${entry})
>>>> endif()
>>>> endforeach()
>>>>
>>>> foreach(subdir ${scratch_subdirectories})
>>>> if(EXISTS ${subdir}/CMakeLists.txt)
>>>> # If the subdirectory contains a CMakeLists.txt file
>>>> # we let the CMake file manage the source files
>>>> #
>>>> # Use this if you want to link to external libraries
>>>> # without creating a module
>>>> add_subdirectory(${subdir})
>>>> else()
>>>> # Otherwise we pick all the files in the subdirectory
>>>> # and create a scratch for them automatically
>>>> file(GLOB scratch_sources CONFIGURE_DEPENDS ${subdir}/*.cc)
>>>> create_scratch("${scratch_sources}")
>>>> endif()
>>>> endforeach()
>>>> find_external_library(DEPENDENCY_NAME cryptopp
>>>> HEADER_NAME aes.h
>>>> LIBRARY_NAME cryptopp
>>>> SEARCH_PATHS /usr/include/cryptopp)
>>>>
>>>>
>>>> if(${CRYPTOPP_FOUND}) # Notice that the contents of DEPENDENCY_NAME=20
>>>> became a prefix for the _FOUND variable
>>>> find_package(cryptopp REQUIRED)
>>>> include_directories(${CRYPTOPP_INCLUDE_DIRS})
>>>> link_libraries(${CRYPTOPP_LIBRARIES})
>>>> endif()
>>>> add_executable(${target_prefix}${scratch_name} "fanetex.cc")
>>>> target_link_libraries(${target_prefix}${scratch_name} PRIVATE cryptopp=
)
>>>>
>>>> can you help me to solve this problem ? Thank you [image: Capture=20
>>>> d=E2=80=99=C3=A9cran 2024-04-17 114345.png]
>>>>
>>>> Le mardi 16 avril 2024 =C3=A0 21:53:22 UTC-5, Frank Sapone a =C3=A9cri=
t :
>>>>
>>>>> I grabbed it but it's not relevant. I need to have a certificate wit=
h=20
>>>>> RSA PSS that can be read by CryptoPP with the X509Cert lib. Is it po=
ssible=20
>>>>> to do this?
>>>>>
>>>>> On Tuesday, April 16, 2024 at 3:19:47=E2=80=AFPM UTC-4 Jeffrey Walton=
wrote:
>>>>>
>>>>>> On Tue, Apr 16, 2024 at 1:44=E2=80=AFPM One Sini <[email protected]> =
wrote:
>>>>>>
>>>>>>> I wasn't entirely satisfied with the security, so I've adjusted the=
=20
>>>>>>> code. I'm not sure if that helps you, depending on what you're doin=
g with=20
>>>>>>> it.
>>>>>>>
>>>>>>> This code uses RSA with OAEP (Optimal Asymmetric Encryption Padding=
)=20
>>>>>>> to avoid security issues like padding oracle attacks. It generates =
RSA keys=20
>>>>>>> with a length of 2048 bits, encrypts the message with OAEP padding,=
and=20
>>>>>>> then decrypts it.
>>>>>>>
>>>>>>> Best Regards Satoshi=20
>>>>>>>
>>>>>>
>>>>>> I deleted the message from the group. The *.pdf and *.pages smells o=
f=20
>>>>>> malware.
>>>>>>
>>>>>> If you want to provide code, please inline it or provide it as a tex=
t=20
>>>>>> attachment.
>>>>>>
>>>>>> Jeff
>>>>>>
>>>>>>> --=20
>>> You received this message because you are subscribed to the Google=20
>>> Groups "Crypto++ Users" group.
>>> To unsubscribe from this group and stop receiving emails from it, send=
=20
>>> an email to [email protected].
>>> To view this discussion on the web visit=20
>>> https://groups.google.com/d/msgid/cryptopp-users/db9bad9f-be9e-4a25-a09=
f-d52ce28adec0n%40googlegroups.com=20
>>> <https://groups.google.com/d/msgid/cryptopp-users/db9bad9f-be9e-4a25-a0=
9f-d52ce28adec0n%40googlegroups.com?utm_medium=3Demail&utm_source=3Dfooter>
>>> .
>>>
>>
>>
>> --=20
>> Kind Regards,=20
>> Manish Kr. Sharma=20
>> Digital Marketing Manager
>>
>> Website: www.brsoftech.com
>> E-mail: [email protected]
>>
>>
>>
>> --=20
>> You received this message because you are subscribed to the Google Group=
s=20
>> "Crypto++ Users" group.
>> To unsubscribe from this group and stop receiving emails from it, send a=
n=20
>> email to [email protected].
>>
> To view this discussion on the web visit=20
>> https://groups.google.com/d/msgid/cryptopp-users/CABUB1NSTdFJPHBeh9b-fqf=
jrQBUWVzDzjNdjYUAQpzBb9CQsZw%40mail.gmail.com=20
>> <https://groups.google.com/d/msgid/cryptopp-users/CABUB1NSTdFJPHBeh9b-fq=
fjrQBUWVzDzjNdjYUAQpzBb9CQsZw%40mail.gmail.com?utm_medium=3Demail&utm_sourc=
e=3Dfooter>
>> .
>>
>
--=20
You received this message because you are subscribed to the Google Groups "=
Crypto++ Users" group.
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to [email protected].
To view this discussion on the web visit https://groups.google.com/d/msgid/=
cryptopp-users/e1ea52cc-e064-458c-9750-6520f6b556b0n%40googlegroups.com.
------=_Part_79028_1674606839.1714762094565
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Hello, i want to use x509 certificate code (load and signCertificate) but i=
have some build errors :=C2=A0<br />/usr/bin/ld: CMakeFiles/scratch_fanete=
x.dir/fanetex.cc.o: warning: relocation against `_ZTVN8CryptoPP15X509Certif=
icateE' in read-only section `.text.startup'<br />/usr/bin/ld: CMakeFiles/s=
cratch_fanetex.dir/fanetex.cc.o: in function `CryptoPP::KeyUsageValue::~Key=
UsageValue()':<br />/usr/include/cryptopp/x509cert.h:278: undefined referen=
ce to `vtable for CryptoPP::KeyUsageValue'<br />/usr/bin/ld: CMakeFiles/scr=
atch_fanetex.dir/fanetex.cc.o: in function `CryptoPP::ExtensionValue::~Exte=
nsionValue()':<br />/usr/include/cryptopp/x509cert.h:113: undefined referen=
ce to `vtable for CryptoPP::ExtensionValue'<br />/usr/bin/ld: CMakeFiles/sc=
ratch_fanetex.dir/fanetex.cc.o: in function `CryptoPP::RdnValue::~RdnValue(=
)':<br />/usr/include/cryptopp/x509cert.h:57: undefined reference to `vtabl=
e for CryptoPP::RdnValue'<br />/usr/bin/ld: CMakeFiles/scratch_fanetex.dir/=
fanetex.cc.o: in function `CryptoPP::KeyIdentifierValue::~KeyIdentifierValu=
e()':<br />/usr/include/cryptopp/x509cert.h:154: undefined reference to `vt=
able for CryptoPP::KeyIdentifierValue'<br />/usr/bin/ld: CMakeFiles/scratch=
_fanetex.dir/fanetex.cc.o: in function `CryptoPP::Certificate::~Certificate=
()':<br />/usr/include/cryptopp/cryptlib.h:2550: undefined reference to `VT=
T for CryptoPP::X509Certificate'<br />/usr/bin/ld: CMakeFiles/scratch_fanet=
ex.dir/fanetex.cc.o: in function `CryptoPP::RdnValue::~RdnValue()':<br />/u=
sr/include/cryptopp/x509cert.h:57: undefined reference to `vtable for Crypt=
oPP::RdnValue'<br />/usr/bin/ld: CMakeFiles/scratch_fanetex.dir/fanetex.cc.=
o: in function `CryptoPP::ExtensionValue::~ExtensionValue()':<br />/usr/inc=
lude/cryptopp/x509cert.h:113: undefined reference to `vtable for CryptoPP::=
ExtensionValue'<br />/usr/bin/ld: CMakeFiles/scratch_fanetex.dir/fanetex.cc=
.o: in function `CryptoPP::KeyIdentifierValue::~KeyIdentifierValue()':<br /=
>/usr/include/cryptopp/x509cert.h:154: undefined reference to `vtable for C=
ryptoPP::KeyIdentifierValue'<br />/usr/bin/ld: CMakeFiles/scratch_fanetex.d=
ir/fanetex.cc.o: in function `CryptoPP::KeyUsageValue::~KeyUsageValue()':<b=
r />/usr/include/cryptopp/x509cert.h:278: undefined reference to `vtable fo=
r CryptoPP::KeyUsageValue'<br />/usr/bin/ld: CMakeFiles/scratch_fanetex.dir=
/fanetex.cc.o: in function `CryptoPP::ExtensionValue::~ExtensionValue()':<b=
r />/usr/include/cryptopp/x509cert.h:113: undefined reference to `vtable fo=
r CryptoPP::ExtensionValue'<br />/usr/bin/ld: CMakeFiles/scratch_fanetex.di=
r/fanetex.cc.o: in function `CryptoPP::KeyIdentifierValue::~KeyIdentifierVa=
lue()':<br />/usr/include/cryptopp/x509cert.h:154: undefined reference to `=
vtable for CryptoPP::KeyIdentifierValue'<br />/usr/bin/ld: CMakeFiles/scrat=
ch_fanetex.dir/fanetex.cc.o: in function `CryptoPP::KeyUsageValue::~KeyUsag=
eValue()':<br />/usr/include/cryptopp/x509cert.h:278: undefined reference t=
o `vtable for CryptoPP::KeyUsageValue'<br />/usr/bin/ld: CMakeFiles/scratch=
_fanetex.dir/fanetex.cc.o: in function `CryptoPP::X509Certificate::~X509Cer=
tificate()':<br />/usr/include/cryptopp/x509cert.h:464: undefined reference=
to `vtable for CryptoPP::X509Certificate'<br />/usr/bin/ld: CMakeFiles/scr=
atch_fanetex.dir/fanetex.cc.o: in function `CryptoPP::DateValue::~DateValue=
()':<br />/usr/include/cryptopp/x509cert.h:89: undefined reference to `vtab=
le for CryptoPP::DateValue'<br />/usr/bin/ld: CMakeFiles/scratch_fanetex.di=
r/fanetex.cc.o: in function `CryptoPP::RdnValue::~RdnValue()':<br />/usr/in=
clude/cryptopp/x509cert.h:57: undefined reference to `vtable for CryptoPP::=
RdnValue'<br /><br />Please can you help me ?<br />Thank you<div class=3D"g=
mail_quote"><div dir=3D"auto" class=3D"gmail_attr">Le mercredi 24 avril 202=
4 =C3=A0 12:52:05 UTC-5, One Sini a =C3=A9crit=C2=A0:<br/></div><blockquote=
class=3D"gmail_quote" style=3D"margin: 0 0 0 0.8ex; border-left: 1px solid=
rgb(204, 204, 204); padding-left: 1ex;"><div dir=3D"auto">Test this way</d=
iv><div dir=3D"auto"><br></div><div dir=3D"auto"><div>
<div>
<p>a basic guide on how to generate an RSA key pair with PSS padding, sign =
an X509 certificate with the private key, and verify the signature with the=
public key using the Crypto++ library:</p>
<ol><li>Generating an RSA Key Pair with PSS Padding:</li></ol>
<p>cpp</p>
<p>Copy code<br></p>
<p>#include <cryptopp/rsa.h></p>
<p>#include <cryptopp/osrng.h></p>
<p>#include <cryptopp/pssr.h></p>
<p><br></p>
<p>using namespace CryptoPP;</p>
<p><br></p>
<p>void generateRSAKeyPair(RSA::PrivateKey& privateKey, RSA::PublicKey&=
amp; publicKey) {</p>
<p>=C2=A0 =C2=A0 AutoSeededRandomPool rng;</p>
<p><br></p>
<p>=C2=A0 =C2=A0 InvertibleRSAFunction params;</p>
<p>=C2=A0 =C2=A0 params.GenerateRandomWithKeySize(rng, 2048);</p>
<p><br></p>
<p>=C2=A0 =C2=A0 privateKey =3D RSA::PrivateKey(params);</p>
<p>=C2=A0 =C2=A0 publicKey =3D RSA::PublicKey(params);</p>
<p>}</p>
<p><br></p>
<p>int main() {</p>
<p>=C2=A0 =C2=A0 RSA::PrivateKey privateKey;</p>
<p>=C2=A0 =C2=A0 RSA::PublicKey publicKey;</p>
<p><br></p>
<p>=C2=A0 =C2=A0 generateRSAKeyPair(privateKey, publicKey);</p>
<p><br></p>
<p>=C2=A0 =C2=A0 // The RSA key pair has been generated and is now availabl=
e</p>
<p>=C2=A0 =C2=A0 return 0;</p>
<p>}</p>
<ol><li>Signing the X509 Certificate with the Private Key:</li></ol>
<p>cpp</p>
<p><br></p>
<p>Copy code</p>
<p>#include <cryptopp/cryptlib.h></p>
<p>#include <cryptopp/oids.h></p>
<p>#include <cryptopp/rsa.h></p>
<p>#include <cryptopp/sha.h></p>
<p>#include <cryptopp/filters.h></p>
<p>#include <cryptopp/base64.h></p>
<p><br></p>
<p>using namespace CryptoPP;</p>
<p><br></p>
<p>void signCertificate(const RSA::PrivateKey& privateKey, const X509&a=
mp; certificate, byte* signature) {</p>
<p>=C2=A0 =C2=A0 // Implement the process of signing the certificate here</=
p>
<p>=C2=A0 =C2=A0 // Use privateKey and certificate to sign the certificate<=
/p>
<p>}</p>
<p><br></p>
<p>int main() {</p>
<p>=C2=A0 =C2=A0 // Load or create your X509 certificate</p>
<p>=C2=A0 =C2=A0 // Here, we assume you already have an X509 certificate</p=
>
<p><br></p>
<p>=C2=A0 =C2=A0 RSA::PrivateKey privateKey;</p>
<p>=C2=A0 =C2=A0 // Load or generate your private key</p>
<p>=C2=A0 =C2=A0 // Here, we assume you already have a private key</p>
<p><br></p>
<p>=C2=A0 =C2=A0 byte signature[256]; // Space for the signature</p>
<p><br></p>
<p>=C2=A0 =C2=A0 signCertificate(privateKey, certificate, signature);</p>
<p><br></p>
<p>=C2=A0 =C2=A0 // The certificate has been signed, and the signature is n=
ow available</p>
<p>=C2=A0 =C2=A0 return 0;</p>
<p>}</p>
<ol><li>Verifying the Signature with the Public Key:</li></ol>
<p>cpp</p>
<p><br></p>
<p>Copy code</p>
<p>#include <cryptopp/rsa.h></p>
<p>#include <cryptopp/sha.h></p>
<p>#include <cryptopp/filters.h></p>
<p>#include <cryptopp/base64.h></p>
<p><br></p>
<p>using namespace CryptoPP;</p>
<p><br></p>
<p>bool verifySignature(const RSA::PublicKey& publicKey, const X509&=
; certificate, const byte* signature) {</p>
<p>=C2=A0 =C2=A0 // Implement the process of verifying the signature here</=
p>
<p>=C2=A0 =C2=A0 // Use publicKey, certificate, and signature</p>
<p><br></p>
<p>=C2=A0 =C2=A0 // Return true if the signature is valid, otherwise false<=
/p>
<p>=C2=A0 =C2=A0 return false;</p>
<p>}</p>
<p><br></p>
<p>int main() {</p>
<p>=C2=A0 =C2=A0 // Load or create your X509 certificate</p>
<p>=C2=A0 =C2=A0 // Here, we assume you already have an X509 certificate</p=
>
<p><br></p>
<p>=C2=A0 =C2=A0 RSA::PublicKey publicKey;</p>
<p>=C2=A0 =C2=A0 // Load or generate your public key</p>
<p>=C2=A0 =C2=A0 // Here, we assume you already have a public key</p>
<p><br></p>
<p>=C2=A0 =C2=A0 byte signature[256]; // Take the signature from the certif=
icate signature</p>
<p><br></p>
<p>=C2=A0 =C2=A0 bool isValid =3D verifySignature(publicKey, certificate, s=
ignature);</p>
<p><br></p>
<p>=C2=A0 =C2=A0 // Check if the signature is valid</p>
<p>=C2=A0 =C2=A0 return 0;</p>
<p>}</p>
<p>These code snippets serve as a foundation. You will need to adapt them a=
ccording to your specific implementation, including the loading process for=
the X509 certificate and the private/public keys. Remember to include erro=
r handling and handle edge cases in your implementation</p>
</div>
</div>I hope this help you</div><div dir=3D"auto">;)</div><div><br><div cla=
ss=3D"gmail_quote"></div></div><div><div class=3D"gmail_quote"><div dir=3D"=
ltr" class=3D"gmail_attr">Manish sharma <<a href data-email-masked rel=
=3D"nofollow">[email protected]</a>> schrieb am Mi. 24. Apr. 2024 =
um 14:42:<br></div></div></div><div><div class=3D"gmail_quote"><blockquote =
class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid=
;padding-left:1ex"><div dir=3D"ltr"><a href=3D"https://www.brsoftech.com/bl=
og/crypto-sports-betting/" target=3D"_blank" rel=3D"nofollow" data-saferedi=
recturl=3D"https://www.google.com/url?hl=3Dfr&q=3Dhttps://www.brsoftech=
.com/blog/crypto-sports-betting/&source=3Dgmail&ust=3D1714848310255=
000&usg=3DAOvVaw1JUnsBDM7N-k5KkJk4VukS">Crypto Betting=C2=A0</a></div><=
br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Wed,=
Apr 24, 2024 at 6:08=E2=80=AFPM Frank Sapone <<a href data-email-masked=
rel=3D"nofollow">[email protected]</a>> wrote:<br></div><blockquote =
class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px sol=
id rgb(204,204,204);padding-left:1ex">Has anyone figured out how to use PSS=
and SHA256 <b><i>WITH</i>=C2=A0</b>CryptoPP-PEM?=C2=A0 I also tried report=
ing this to the issuer tracker at=C2=A0<a href=3D"https://github.com/noload=
er/cryptopp-pem" target=3D"_blank" rel=3D"nofollow" data-saferedirecturl=3D=
"https://www.google.com/url?hl=3Dfr&q=3Dhttps://github.com/noloader/cry=
ptopp-pem&source=3Dgmail&ust=3D1714848310255000&usg=3DAOvVaw1rS=
KG1eH__JI-HVJ9sl82d">https://github.com/noloader/cryptopp-pem</a> and nobod=
y has replied.=C2=A0 I can't imagine I'm the only person using this=
library in order to achieve this with X509 Certs.<div><br></div><div>Thank=
s,<br>Frank<br><div><br></div></div><div class=3D"gmail_quote"><div dir=3D"=
auto" class=3D"gmail_attr">On Wednesday, April 17, 2024 at 11:43:54=E2=80=
=AFAM UTC-4 HELA YAICH wrote:<br></div><blockquote class=3D"gmail_quote" st=
yle=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padd=
ing-left:1ex">Hello,=C2=A0<br>(I'm new user of ns3 and crypto)=C2=A0<br=
>I have link errors with Crypto++. These errors indicate that the compiler =
cannot find certain functions or classes defined in Crypto++. This can happ=
en if Crypto++ is not correctly linked to my project. However, I tried to m=
odify my project's CMakeLists.txt file as follows: <br>set(target_prefi=
x scratch_)<br><br>function(create_scratch source_files)<br>=C2=A0 # Return=
early if no sources in the subdirectory<br>=C2=A0 list(LENGTH source_files=
number_sources)<br>=C2=A0 if(number_sources EQUAL 0)<br>=C2=A0 =C2=A0 retu=
rn()<br>=C2=A0 endif()<br><br>=C2=A0 # If the scratch has more than a sourc=
e file, we need to find the source with<br>=C2=A0 # the main function<br>=
=C2=A0 set(scratch_src)<br>=C2=A0 foreach(source_file ${source_files})<br>=
=C2=A0 =C2=A0 file(READ ${source_file} source_file_contents)<br>=C2=A0 =C2=
=A0 string(REGEX MATCHALL "main[(| (]" main_position "${sour=
ce_file_contents}")<br>=C2=A0 =C2=A0 if(CMAKE_MATCH_0)<br>=C2=A0 =C2=
=A0 =C2=A0 set(scratch_src ${source_file})<br>=C2=A0 =C2=A0 endif()<br>=C2=
=A0 endforeach()<br><br>=C2=A0 if(NOT scratch_src)<br>=C2=A0 =C2=A0 return(=
)<br>=C2=A0 endif()<br><br>=C2=A0 # Get parent directory name<br>=C2=A0 get=
_filename_component(scratch_dirname ${scratch_src} DIRECTORY)<br>=C2=A0 str=
ing(REPLACE "${CMAKE_CURRENT_SOURCE_DIR}" "" scratch_di=
rname<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&quo=
t;${scratch_dirname}"<br>=C2=A0 )<br>=C2=A0 string(REPLACE "/&quo=
t; "_" scratch_dirname "${scratch_dirname}")<br><br>=C2=
=A0 # Get source name<br>=C2=A0 get_filename_component(scratch_name ${scrat=
ch_src} NAME_WE)<br><br>=C2=A0 set(target_prefix scratch_)<br>=C2=A0 if(scr=
atch_dirname)<br>=C2=A0 =C2=A0 # Join the names together if dirname is not =
the scratch folder<br>=C2=A0 =C2=A0 set(target_prefix scratch${scratch_dirn=
ame}_)<br>=C2=A0 endif()<br><br>=C2=A0 # Get source absolute path and trans=
form into relative path<br>=C2=A0 get_filename_component(scratch_src ${scra=
tch_src} ABSOLUTE)<br>=C2=A0 get_filename_component(scratch_absolute_direct=
ory ${scratch_src} DIRECTORY)<br>=C2=A0 string(REPLACE "${PROJECT_SOUR=
CE_DIR}" "${CMAKE_OUTPUT_DIRECTORY}"<br>=C2=A0 =C2=A0 =C2=A0=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0scratch_directory ${scratch_absol=
ute_directory}<br>=C2=A0 )<br>=C2=A0 add_executable(${target_prefix}${scrat=
ch_name} "${source_files}")<br>=C2=A0 if(${NS3_STATIC})<br>=C2=A0=
=C2=A0 target_link_libraries(<br>=C2=A0 =C2=A0 =C2=A0 ${target_prefix}${sc=
ratch_name} ${LIB_AS_NEEDED_PRE_STATIC}<br>=C2=A0 =C2=A0 =C2=A0 ${lib-ns3-s=
tatic}<br>=C2=A0 =C2=A0 )<br>=C2=A0 else()<br>=C2=A0 =C2=A0 target_link_lib=
raries(<br>=C2=A0 =C2=A0 =C2=A0 ${target_prefix}${scratch_name} "${ns3=
-libs}" "${ns3-contrib-libs}"<br>=C2=A0 =C2=A0 =C2=A0 "=
${ns3-external-libs}"<br>=C2=A0 =C2=A0 )<br>=C2=A0 endif()<br>=C2=A0 s=
et_runtime_outputdirectory(<br>=C2=A0 =C2=A0 ${scratch_name} ${scratch_dire=
ctory}/ ${target_prefix}<br>=C2=A0 )<br>endfunction()<br><br># Scan *.cc fi=
les in ns-3-dev/scratch and build a target for each<br>file(GLOB single_sou=
rce_file_scratches CONFIGURE_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/*.cc)<br>f=
oreach(scratch_src ${single_source_file_scratches})<br>=C2=A0 create_scratc=
h(${scratch_src})<br>endforeach()<br><br># Scan *.cc files in ns-3-dev/scra=
tch subdirectories and build a target for each<br># subdirectory<br>file(<b=
r>=C2=A0 GLOB_RECURSE scratch_subdirectories<br>=C2=A0 CONFIGURE_DEPENDS<br=
>=C2=A0 LIST_DIRECTORIES true<br>=C2=A0 ${CMAKE_CURRENT_SOURCE_DIR}/**<br>)=
<br># Filter out files<br>foreach(entry ${scratch_subdirectories})<br>=C2=
=A0 if(NOT (IS_DIRECTORY ${entry}))<br>=C2=A0 =C2=A0 list(REMOVE_ITEM scrat=
ch_subdirectories ${entry})<br>=C2=A0 endif()<br>endforeach()<br><br>foreac=
h(subdir ${scratch_subdirectories})<br>=C2=A0 if(EXISTS ${subdir}/CMakeList=
s.txt)<br>=C2=A0 =C2=A0 # If the subdirectory contains a CMakeLists.txt fil=
e<br>=C2=A0 =C2=A0 # we let the CMake file manage the source files<br>=C2=
=A0 =C2=A0 #<br>=C2=A0 =C2=A0 # Use this if you want to link to external li=
braries<br>=C2=A0 =C2=A0 # without creating a module<br>=C2=A0 =C2=A0 add_s=
ubdirectory(${subdir})<br>=C2=A0 else()<br>=C2=A0 =C2=A0 # Otherwise we pic=
k all the files in the subdirectory<br>=C2=A0 =C2=A0 # and create a scratch=
for them automatically<br>=C2=A0 =C2=A0 file(GLOB scratch_sources CONFIGUR=
E_DEPENDS ${subdir}/*.cc)<br>=C2=A0 =C2=A0 create_scratch("${scratch_s=
ources}")<br>=C2=A0 endif()<br>endforeach()<br>find_external_library(D=
EPENDENCY_NAME cryptopp<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 HEADER_NAME aes.h<br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 LIBRARY_NAME cryptopp<=
br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 SEARCH_PATHS /usr/include/cryptopp)<br><br><br>if(${CRYPTOPP_FOUND})=
# Notice that the contents of DEPENDENCY_NAME became a prefix for the _FOU=
ND variable<br>=C2=A0 =C2=A0 find_package(cryptopp REQUIRED)<br>=C2=A0 =C2=
=A0 include_directories(${CRYPTOPP_INCLUDE_DIRS})<br>=C2=A0 =C2=A0 link_lib=
raries(${CRYPTOPP_LIBRARIES})<br>endif()<br>add_executable(${target_prefix}=
${scratch_name} "fanetex.cc")<br>target_link_libraries(${target_p=
refix}${scratch_name} PRIVATE cryptopp)<br><br>can you help me to solve thi=
s problem ? Thank you=C2=A0<img alt=3D"Capture d=E2=80=99=C3=A9cran 2024-04=
-17 114345.png" width=3D"631px" height=3D"398px" src=3D"https://groups.goog=
le.com/group/cryptopp-users/attach/1f8b7a2cdb789/Capture%20d%E2%80%99%C3%A9=
cran%202024-04-17%20114345.png?part=3D0.1&view=3D1"><br><br><div class=
=3D"gmail_quote"><div dir=3D"auto" class=3D"gmail_attr">Le mardi 16 avril 2=
024 =C3=A0 21:53:22 UTC-5, Frank Sapone a =C3=A9crit=C2=A0:<br></div><block=
quote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1=
px solid rgb(204,204,204);padding-left:1ex">I grabbed it but it's not r=
elevant.=C2=A0 I need to have a certificate with RSA PSS that can be read b=
y CryptoPP with the X509Cert lib.=C2=A0 Is it possible to do this?<br><br><=
div class=3D"gmail_quote"><div dir=3D"auto" class=3D"gmail_attr">On Tuesday=
, April 16, 2024 at 3:19:47=E2=80=AFPM UTC-4 Jeffrey Walton wrote:<br></div=
><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border=
-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div cl=
ass=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Tue, Apr 16, 2=
024 at 1:44=E2=80=AFPM One Sini <<a rel=3D"nofollow">[email protected]</a=
>> wrote:<br></div></div></div><div dir=3D"ltr"><div class=3D"gmail_quot=
e"><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;bord=
er-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"auto"><div=
><span style=3D"font-family:s=C3=B6hne,ui-sans-serif,system-ui,-apple-syste=
m,"segoe ui",roboto,ubuntu,cantarell,"noto sans",sans-s=
erif,"helvetica neue",arial,"apple color emoji","s=
egoe ui emoji","segoe ui symbol","noto color emoji"=
;;font-size:16px;font-style:normal;font-weight:400;letter-spacing:normal;te=
xt-indent:0px;text-transform:none;white-space:pre-wrap;word-spacing:0px;tex=
t-decoration:none;float:none;display:inline;color:rgb(13,13,13)">I wasn'=
;t entirely satisfied with the security, so I've adjusted the code. I&#=
39;m not sure if that helps you, depending on what you're doing with it=
.</span></div><br></div></blockquote></div></div><div dir=3D"ltr"><div clas=
s=3D"gmail_quote"><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px=
0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div di=
r=3D"auto"><div><span style=3D"font-family:s=C3=B6hne,ui-sans-serif,system-=
ui,-apple-system,"segoe ui",roboto,ubuntu,cantarell,"noto sa=
ns",sans-serif,"helvetica neue",arial,"apple color emoj=
i","segoe ui emoji","segoe ui symbol","noto c=
olor emoji";font-size:16px;font-style:normal;font-weight:400;letter-sp=
acing:normal;text-indent:0px;text-transform:none;white-space:pre-wrap;word-=
spacing:0px;text-decoration:none;float:none;display:inline;color:rgb(13,13,=
13)">This code uses RSA with OAEP (Optimal Asymmetric Encryption Padding) t=
o avoid security issues like padding oracle attacks. It generates RSA keys =
with a length of 2048 bits, encrypts the message with OAEP padding, and the=
n decrypts it.</span></div><div dir=3D"auto"><span style=3D"font-family:s=
=C3=B6hne,ui-sans-serif,system-ui,-apple-system,"segoe ui",roboto=
,ubuntu,cantarell,"noto sans",sans-serif,"helvetica neue&quo=
t;,arial,"apple color emoji","segoe ui emoji","seg=
oe ui symbol","noto color emoji";font-size:16px;font-style:n=
ormal;font-weight:400;letter-spacing:normal;text-indent:0px;text-transform:=
none;white-space:pre-wrap;word-spacing:0px;text-decoration:none;float:none;=
display:inline;color:rgb(13,13,13)"><br></span></div></div></blockquote></d=
iv></div><div dir=3D"ltr"><div class=3D"gmail_quote"><blockquote class=3D"g=
mail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204=
,204,204);padding-left:1ex"><div dir=3D"auto"><div dir=3D"auto"><span style=
=3D"font-family:s=C3=B6hne,ui-sans-serif,system-ui,-apple-system,"sego=
e ui",roboto,ubuntu,cantarell,"noto sans",sans-serif,"h=
elvetica neue",arial,"apple color emoji","segoe ui emoj=
i","segoe ui symbol","noto color emoji";font-size:=
16px;font-style:normal;font-weight:400;letter-spacing:normal;text-indent:0p=
x;text-transform:none;white-space:pre-wrap;word-spacing:0px;text-decoration=
:none;float:none;display:inline;color:rgb(13,13,13)">Best Regards Satoshi <=
/span></div></div></blockquote><div><br></div><div>I deleted the message fr=
om the group. The *.pdf and *.pages smells of malware.</div><div><br></div>=
<div>If you want to provide code, please inline it or provide it as a text =
attachment.<br></div><div><br></div><div>Jeff</div><blockquote class=3D"gma=
il_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,2=
04,204);padding-left:1ex"><div><div class=3D"gmail_quote"><blockquote class=
=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rg=
b(204,204,204);padding-left:1ex">
</blockquote></div></div></blockquote></div></div>
</blockquote></div></blockquote></div></blockquote></div>
<p></p>
-- <br>
You received this message because you are subscribed to the Google Groups &=
quot;Crypto++ Users" group.<br>
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href data-email-masked rel=3D"nofollow">cryptopp-user...@googleg=
roups.com</a>.<br>
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/d/msgid/cryptopp-users/db9bad9f-be9e-4a25-a09f-d52ce28adec0n%40googlegro=
ups.com?utm_medium=3Demail&utm_source=3Dfooter" target=3D"_blank" rel=
=3D"nofollow" data-saferedirecturl=3D"https://www.google.com/url?hl=3Dfr&am=
p;q=3Dhttps://groups.google.com/d/msgid/cryptopp-users/db9bad9f-be9e-4a25-a=
09f-d52ce28adec0n%2540googlegroups.com?utm_medium%3Demail%26utm_source%3Dfo=
oter&source=3Dgmail&ust=3D1714848310255000&usg=3DAOvVaw0CSrhFJa=
mn_1-mJSzfafRM">https://groups.google.com/d/msgid/cryptopp-users/db9bad9f-b=
e9e-4a25-a09f-d52ce28adec0n%40googlegroups.com</a>.<br>
</blockquote></div><br clear=3D"all"><div><br></div><span class=3D"gmail_si=
gnature_prefix">-- </span><br><div dir=3D"ltr" class=3D"gmail_signature"><d=
iv dir=3D"ltr"><div style=3D"text-align:left"><span style=3D"font-family:ar=
ial,sans-serif"><font color=3D"#9900ff">Kind Regards,=C2=A0</font></span></=
div><div style=3D"text-align:left"><font color=3D"#9900ff">Manish Kr. Sharm=
a=C2=A0</font></div><div style=3D"text-align:left"><font color=3D"#9900ff">=
Digital Marketing Manager<br></font></div><div style=3D"text-align:left"><f=
ont color=3D"#9900ff"><br></font></div><div style=3D"text-align:left"><span=
style=3D"color:rgb(153,0,255)">Website:=C2=A0</span><a href=3D"http://www.=
brsoftech.com" target=3D"_blank" rel=3D"nofollow" data-saferedirecturl=3D"h=
ttps://www.google.com/url?hl=3Dfr&q=3Dhttp://www.brsoftech.com&sour=
ce=3Dgmail&ust=3D1714848310255000&usg=3DAOvVaw2beq8SSNDLIYjDepvnWys=
1">www.brsoftech.com</a><br></div><div style=3D"text-align:left"><font colo=
r=3D"#9900ff">E-mail: <a href data-email-masked rel=3D"nofollow">manish...@=
brsoftech.org</a></font></div><div style=3D"text-align:left"><img src=3D"ht=
tps://ci3.googleusercontent.com/proxy/1D62zxgVrHydF5cqqI0lanRFz5qesRSEOW4u_=
iI-RXcHTuxBfo_W_JCh-aJbWSCyoLU=3Ds0-d-e1-ft#https://i.imgur.com/ilarMcr.png=
" width=3D"96" height=3D"96"><br></div><div><br></div><div><br></div></div>=
</div>
<p></p>
-- <br>
You received this message because you are subscribed to the Google Groups &=
quot;Crypto++ Users" group.<br>
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href data-email-masked rel=3D"nofollow">cryptopp-user...@googleg=
roups.com</a>.<br></blockquote></div></div><div><div class=3D"gmail_quote">=
<blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p=
x #ccc solid;padding-left:1ex">
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/d/msgid/cryptopp-users/CABUB1NSTdFJPHBeh9b-fqfjrQBUWVzDzjNdjYUAQpzBb9CQs=
Zw%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfooter" target=3D"_=
blank" rel=3D"nofollow" data-saferedirecturl=3D"https://www.google.com/url?=
hl=3Dfr&q=3Dhttps://groups.google.com/d/msgid/cryptopp-users/CABUB1NSTd=
FJPHBeh9b-fqfjrQBUWVzDzjNdjYUAQpzBb9CQsZw%2540mail.gmail.com?utm_medium%3De=
mail%26utm_source%3Dfooter&source=3Dgmail&ust=3D1714848310255000&am=
p;usg=3DAOvVaw3j6QuwA3RoDMGDvNzVnJJS">https://groups.google.com/d/msgid/cry=
ptopp-users/CABUB1NSTdFJPHBeh9b-fqfjrQBUWVzDzjNdjYUAQpzBb9CQsZw%40mail.gmai=
l.com</a>.<br>
</blockquote></div></div>
</blockquote></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;Crypto++ Users" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:[email protected]">cryp=
[email protected]</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/d/msgid/cryptopp-users/e1ea52cc-e064-458c-9750-6520f6b556b0n%40googlegro=
ups.com?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.com/d=
/msgid/cryptopp-users/e1ea52cc-e064-458c-9750-6520f6b556b0n%40googlegroups.=
com</a>.<br />
------=_Part_79028_1674606839.1714762094565--
------=_Part_79027_2049407928.1714762094565--