// Copyright (C) 2017 Igalia S.L.
//
// 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 above 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.
//
// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``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 APPLE INC. OR ITS 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.

crypto/gcrypt/CryptoAlgorithmAES_CBCGCrypt.cpp
crypto/gcrypt/CryptoAlgorithmAES_CFBGCrypt.cpp
crypto/gcrypt/CryptoAlgorithmAES_CTRGCrypt.cpp
crypto/gcrypt/CryptoAlgorithmAES_GCMGCrypt.cpp
crypto/gcrypt/CryptoAlgorithmAES_KWGCrypt.cpp
crypto/gcrypt/CryptoAlgorithmECDHGCrypt.cpp
crypto/gcrypt/CryptoAlgorithmECDSAGCrypt.cpp
crypto/gcrypt/CryptoAlgorithmHKDFGCrypt.cpp
crypto/gcrypt/CryptoAlgorithmHMACGCrypt.cpp
crypto/gcrypt/CryptoAlgorithmPBKDF2GCrypt.cpp
crypto/gcrypt/CryptoAlgorithmRSAES_PKCS1_v1_5GCrypt.cpp
crypto/gcrypt/CryptoAlgorithmRSASSA_PKCS1_v1_5GCrypt.cpp
crypto/gcrypt/CryptoAlgorithmRSA_OAEPGCrypt.cpp
crypto/gcrypt/CryptoAlgorithmRSA_PSSGCrypt.cpp
crypto/gcrypt/CryptoAlgorithmRegistryGCrypt.cpp
crypto/gcrypt/CryptoKeyECGCrypt.cpp
crypto/gcrypt/CryptoKeyRSAGCrypt.cpp
crypto/gcrypt/GCryptUtilities.cpp
crypto/gcrypt/SerializedCryptoKeyWrapGCrypt.cpp
