/* * Copyright (C) 2021 Sony Interactive Entertainment Inc. * * 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. */ #include "config.h" #include "OpenSSLUtilities.h" #if ENABLE(WEB_CRYPTO) #include "OpenSSLCryptoUniquePtr.h" namespace WebCore { const EVP_MD* digestAlgorithm(CryptoAlgorithmIdentifier hashFunction) { switch (hashFunction) { case CryptoAlgorithmIdentifier::SHA_1: return EVP_sha1(); case CryptoAlgorithmIdentifier::SHA_224: return EVP_sha224(); case CryptoAlgorithmIdentifier::SHA_256: return EVP_sha256(); case CryptoAlgorithmIdentifier::SHA_384: return EVP_sha384(); case CryptoAlgorithmIdentifier::SHA_512: return EVP_sha512(); default: return nullptr; } } std::optional> calculateDigest(const EVP_MD* algorithm, const Vector& message) { EvpDigestCtxPtr ctx; if (!(ctx = EvpDigestCtxPtr(EVP_MD_CTX_create()))) return std::nullopt; int digestLength = EVP_MD_size(algorithm); if (digestLength <= 0) return std::nullopt; Vector digest(digestLength); if (EVP_DigestInit_ex(ctx.get(), algorithm, nullptr) != 1) return std::nullopt; if (EVP_DigestUpdate(ctx.get(), message.data(), message.size()) != 1) return std::nullopt; if (EVP_DigestFinal_ex(ctx.get(), digest.data(), nullptr) != 1) return std::nullopt; return digest; } Vector convertToBytes(const BIGNUM* bignum) { Vector bytes(BN_num_bytes(bignum)); BN_bn2bin(bignum, bytes.data()); return bytes; } Vector convertToBytesExpand(const BIGNUM* bignum, size_t minimumBufferSize) { int length = BN_num_bytes(bignum); if (length < 0) return { }; size_t bufferSize = std::max(length, minimumBufferSize); Vector bytes(bufferSize); size_t paddingLength = bufferSize - length; if (paddingLength > 0) { uint8_t padding = BN_is_negative(bignum) ? 0xFF : 0x00; for (size_t i = 0; i < paddingLength; i++) bytes[i] = padding; } BN_bn2bin(bignum, bytes.data() + paddingLength); return bytes; } BIGNUMPtr convertToBigNumber(const Vector& bytes) { return BIGNUMPtr(BN_bin2bn(bytes.data(), bytes.size(), nullptr)); } bool AESKey::setKey(const Vector& key, int enc) { size_t keySize = key.size() * 8; if (keySize != 128 && keySize != 192 && keySize != 256) return false; if (enc == AES_ENCRYPT) { if (AES_set_encrypt_key(key.data(), keySize, &m_key) < 0) return false; return true; } if (enc == AES_DECRYPT) { if (AES_set_decrypt_key(key.data(), keySize, &m_key) < 0) return false; return true; } ASSERT_NOT_REACHED(); return false; } AESKey::~AESKey() { memset(&m_key, 0, sizeof m_key); } } // namespace WebCore #endif // ENABLE(WEB_CRYPTO) -svelte Unnamed repository; edit this file 'description' to name the repository.
aboutsummaryrefslogtreecommitdiff
AgeCommit message (Expand)AuthorFilesLines
2024-11-15prevents access to the history state if not set (#12436)Gravatar Martin Trapp 2-1/+6
2024-11-14chore: breakdown of benchmarks (#12433)Gravatar Emanuele Stoppa 2-34/+46
2024-11-14Update to svelte 5 (#12364)Gravatar Jacob Jenkins 77-636/+459
2024-11-14fix(actions): internal symbol check (#12424)Gravatar Emanuele Stoppa 4-3/+13
2024-11-14[ci] formatGravatar Arpan Patel 1-6/+2
2024-11-14Fix script injection during build (#12392)Gravatar Arpan Patel 5-37/+48
2024-11-13[ci] release (beta) (#12405)astro@5.0.0-beta.8Gravatar Houston (Bot) 29-54/+125
2024-11-13[ci] release (#12422)astro@4.16.12Gravatar Houston (Bot) 28-54/+55
2024-11-13fix(routing): middleware in dev (#12420)Gravatar Emanuele Stoppa 6-9/+52
2024-11-12[ci] release (#12403)astro@4.16.11Gravatar Houston (Bot) 30-73/+68
2024-11-11fix(routing): emit error for forbidden rewrite (#12339)Gravatar Emanuele Stoppa 7-0/+88
2024-11-11[ci] formatGravatar Sarah Rainsberger 1-38/+38
2024-11-11update markdown config docs (#12382)Gravatar Sarah Rainsberger 1-4/+45
2024-11-08Actions middleware (#12373)Gravatar Ben Holmes 26-311/+483
2024-11-08Fix incorrect status code in dev server for action errors (#12401)Gravatar Ben Holmes 2-13/+21
2024-11-08fix(actions): better runtime check for invalid usages (#12402)Gravatar Emanuele Stoppa 8-5/+47
2024-11-08fix: error overlay message escape (#12305)Gravatar Florian Lefebvre 3-0/+28
2024-11-06[ci] release (beta) (#12370)create-astro@4.11.0-beta.0astro@5.0.0-beta.7@astrojs/svelte@6.0.0-beta.2Gravatar Houston (Bot) 31-55/+84
2024-11-06Add svelte changesetGravatar bluwy 5-39/+51
2024-11-06[ci] release (#12369)astro@4.16.10@astrojs/svelte@5.7.3Gravatar Houston (Bot) 34-81/+74
2024-11-06Update to Vite 6.0.0-beta.6 (#12323)Gravatar Bjorn Lu 15-100/+123
2024-11-06[ci] formatGravatar Bjorn Lu 2-18/+17
2024-11-06Add support for Svelte 5 @render syntax (#12390)Gravatar Bjorn Lu 3-0/+30
2024-11-06fix(deps): update all non-major dependencies (#12366)Gravatar renovate[bot] 29-533/+552