void CopyCaCertBundle()

in Gems/AWSNativeSDKInit/Code/Platform/Android/InitializeCerts_Android.cpp [27:88]


        void CopyCaCertBundle()
        {
            AZStd::vector<char> contents;
            AZStd::string certificatePath = "@products@/certificates/aws/cacert.pem";
            AZStd::string publicStoragePath = AZ::Android::Utils::GetAppPublicStoragePath();
            publicStoragePath.append("/certificates/aws/cacert.pem");

            AZ::IO::FileIOBase* fileBase = AZ::IO::FileIOBase::GetInstance();

            if (!fileBase->Exists(certificatePath.c_str()))
            {
                AZ_Error("AWSNativeSDKInit", false, "Certificate File(%s) does not exist.\n", certificatePath.c_str());
            }

            AZ::IO::HandleType fileHandle;
            AZ::IO::Result fileResult = fileBase->Open(certificatePath.c_str(), AZ::IO::OpenMode::ModeRead, fileHandle);

            if (!fileResult)
            {
                AZ_Error("AWSNativeSDKInit", false, "Failed to open certificate file with result %i\n", fileResult.GetResultCode());
            }

            AZ::u64 fileSize = 0;
            fileBase->Size(fileHandle, fileSize);

            if (fileSize == 0)
            {
                AZ_Error("AWSNativeSDKInit", false, "Given empty file(%s) as the certificate bundle.\n", certificatePath.c_str());
            }

            contents.resize(fileSize + 1);
            fileResult = fileBase->Read(fileHandle, contents.data(), fileSize);

            if (!fileResult)
            {
                AZ_Error(
                    "AWSNativeSDKInit", false, "Failed to read from the certificate bundle(%s) with result code(%i).\n", certificatePath.c_str(),
                    fileResult.GetResultCode());
            }

            AZ_Printf("AWSNativeSDKInit", "Certificate bundle is read successfully from %s", certificatePath.c_str());

            AZ::IO::HandleType outFileHandle;

            AZ::IO::Result outFileResult = fileBase->Open(publicStoragePath.c_str(), AZ::IO::OpenMode::ModeWrite, outFileHandle);

            if (!outFileResult)
            {
                AZ_Error("AWSNativeSDKInit", false, "Failed to open the certificate bundle with result %i\n", fileResult.GetResultCode());
            }

            AZ::IO::Result writeFileResult = fileBase->Write(outFileHandle, contents.data(), fileSize);
            if (!writeFileResult)
            {
                AZ_Error("AWSNativeSDKInit", false, "Failed to write the certificate bundle with result %i\n", writeFileResult.GetResultCode());
            }

            fileBase->Close(fileHandle);
            fileBase->Close(outFileHandle);

            AZ_Printf("AWSNativeSDKInit", "Certificate bundle successfully copied to %s", publicStoragePath.c_str());
        }