CryptoBuffer.h (1776B)
1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */ 3 /* This Source Code Form is subject to the terms of the Mozilla Public 4 * License, v. 2.0. If a copy of the MPL was not distributed with this 5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 6 7 #ifndef mozilla_dom_CryptoBuffer_h 8 #define mozilla_dom_CryptoBuffer_h 9 10 #include "mozilla/dom/BufferSourceBindingFwd.h" 11 #include "mozilla/dom/TypedArray.h" 12 #include "nsTArray.h" 13 #include "seccomon.h" 14 15 namespace mozilla::dom { 16 class CryptoBuffer : public FallibleTArray<uint8_t> { 17 public: 18 uint8_t* Assign(const CryptoBuffer& aData); 19 uint8_t* Assign(const uint8_t* aData, uint32_t aLength); 20 uint8_t* Assign(const nsACString& aString); 21 uint8_t* Assign(const SECItem* aItem); 22 uint8_t* Assign(const nsTArray<uint8_t>& aData); 23 uint8_t* Assign(const ArrayBuffer& aData); 24 uint8_t* Assign(const ArrayBufferView& aData); 25 uint8_t* Assign(const BufferSource& aData); 26 uint8_t* Assign(const OwningBufferSource& aData); 27 uint8_t* Assign(const Uint8Array& aArray); 28 29 uint8_t* AppendSECItem(const SECItem* aItem); 30 uint8_t* AppendSECItem(const SECItem& aItem); 31 32 nsresult FromJwkBase64(const nsString& aBase64); 33 nsresult ToJwkBase64(nsString& aBase64) const; 34 bool ToSECItem(PLArenaPool* aArena, SECItem* aItem) const; 35 JSObject* ToUint8Array(JSContext* aCx, ErrorResult& aError) const; 36 JSObject* ToArrayBuffer(JSContext* aCx, ErrorResult& aError) const; 37 38 bool GetBigIntValue(unsigned long& aRetVal); 39 40 CryptoBuffer InfallibleClone() const { 41 CryptoBuffer result; 42 if (!result.Assign(*this)) { 43 MOZ_CRASH("Out of memory"); 44 } 45 return result; 46 } 47 }; 48 49 } // namespace mozilla::dom 50 51 #endif // mozilla_dom_CryptoBuffer_h