{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.SubtleCrypto
       (encrypt, encrypt_, decrypt, decrypt_, sign, sign_, verify,
        verify_, digest, digest_, deriveKey, deriveKey_, deriveBits,
        deriveBits_, generateKey, generateKey_, importKey, importKey_,
        exportKey, exportKey_, wrapKey, wrapKey_, unwrapKey, unwrapKey_,
        SubtleCrypto(..), gTypeSubtleCrypto)
       where
import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
import qualified Prelude (error)
import Data.Typeable (Typeable)
import Data.Traversable (mapM)
import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
import Data.Int (Int64)
import Data.Word (Word, Word64)
import JSDOM.Types
import Control.Applicative ((<$>))
import Control.Monad (void)
import Control.Lens.Operators ((^.))
import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
import JSDOM.Enums

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.encrypt Mozilla WebKitSubtleCrypto.encrypt documentation> 
encrypt ::
        (MonadDOM m, ToJSString algorithm, IsBufferSource data') =>
          SubtleCrypto -> algorithm -> CryptoKey -> data' -> m JSVal
encrypt :: SubtleCrypto -> algorithm -> CryptoKey -> data' -> m JSVal
encrypt SubtleCrypto
self algorithm
algorithm CryptoKey
key data'
data'
  = DOM JSVal -> m JSVal
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((SubtleCrypto
self SubtleCrypto
-> Getting (DOM JSVal) SubtleCrypto (DOM JSVal) -> DOM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [DOM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"encrypt"
           [algorithm -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal algorithm
algorithm, CryptoKey -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal CryptoKey
key, data' -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal data'
data'])
          DOM JSVal -> (JSVal -> DOM JSVal) -> DOM JSVal
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM JSVal
readPromise)
         DOM JSVal -> (JSVal -> DOM JSVal) -> DOM JSVal
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.encrypt Mozilla WebKitSubtleCrypto.encrypt documentation> 
encrypt_ ::
         (MonadDOM m, ToJSString algorithm, IsBufferSource data') =>
           SubtleCrypto -> algorithm -> CryptoKey -> data' -> m ()
encrypt_ :: SubtleCrypto -> algorithm -> CryptoKey -> data' -> m ()
encrypt_ SubtleCrypto
self algorithm
algorithm CryptoKey
key data'
data'
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (DOM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         (SubtleCrypto
self SubtleCrypto
-> Getting (DOM JSVal) SubtleCrypto (DOM JSVal) -> DOM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [DOM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"encrypt"
            [algorithm -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal algorithm
algorithm, CryptoKey -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal CryptoKey
key, data' -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal data'
data']))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.decrypt Mozilla WebKitSubtleCrypto.decrypt documentation> 
decrypt ::
        (MonadDOM m, ToJSString algorithm, IsBufferSource data') =>
          SubtleCrypto -> algorithm -> CryptoKey -> data' -> m JSVal
decrypt :: SubtleCrypto -> algorithm -> CryptoKey -> data' -> m JSVal
decrypt SubtleCrypto
self algorithm
algorithm CryptoKey
key data'
data'
  = DOM JSVal -> m JSVal
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((SubtleCrypto
self SubtleCrypto
-> Getting (DOM JSVal) SubtleCrypto (DOM JSVal) -> DOM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [DOM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"decrypt"
           [algorithm -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal algorithm
algorithm, CryptoKey -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal CryptoKey
key, data' -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal data'
data'])
          DOM JSVal -> (JSVal -> DOM JSVal) -> DOM JSVal
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM JSVal
readPromise)
         DOM JSVal -> (JSVal -> DOM JSVal) -> DOM JSVal
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.decrypt Mozilla WebKitSubtleCrypto.decrypt documentation> 
decrypt_ ::
         (MonadDOM m, ToJSString algorithm, IsBufferSource data') =>
           SubtleCrypto -> algorithm -> CryptoKey -> data' -> m ()
decrypt_ :: SubtleCrypto -> algorithm -> CryptoKey -> data' -> m ()
decrypt_ SubtleCrypto
self algorithm
algorithm CryptoKey
key data'
data'
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (DOM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         (SubtleCrypto
self SubtleCrypto
-> Getting (DOM JSVal) SubtleCrypto (DOM JSVal) -> DOM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [DOM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"decrypt"
            [algorithm -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal algorithm
algorithm, CryptoKey -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal CryptoKey
key, data' -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal data'
data']))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.sign Mozilla WebKitSubtleCrypto.sign documentation> 
sign ::
     (MonadDOM m, ToJSString algorithm, IsBufferSource data') =>
       SubtleCrypto -> algorithm -> CryptoKey -> data' -> m JSVal
sign :: SubtleCrypto -> algorithm -> CryptoKey -> data' -> m JSVal
sign SubtleCrypto
self algorithm
algorithm CryptoKey
key data'
data'
  = DOM JSVal -> m JSVal
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((SubtleCrypto
self SubtleCrypto
-> Getting (DOM JSVal) SubtleCrypto (DOM JSVal) -> DOM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [DOM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"sign"
           [algorithm -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal algorithm
algorithm, CryptoKey -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal CryptoKey
key, data' -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal data'
data'])
          DOM JSVal -> (JSVal -> DOM JSVal) -> DOM JSVal
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM JSVal
readPromise)
         DOM JSVal -> (JSVal -> DOM JSVal) -> DOM JSVal
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.sign Mozilla WebKitSubtleCrypto.sign documentation> 
sign_ ::
      (MonadDOM m, ToJSString algorithm, IsBufferSource data') =>
        SubtleCrypto -> algorithm -> CryptoKey -> data' -> m ()
sign_ :: SubtleCrypto -> algorithm -> CryptoKey -> data' -> m ()
sign_ SubtleCrypto
self algorithm
algorithm CryptoKey
key data'
data'
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (DOM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         (SubtleCrypto
self SubtleCrypto
-> Getting (DOM JSVal) SubtleCrypto (DOM JSVal) -> DOM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [DOM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"sign"
            [algorithm -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal algorithm
algorithm, CryptoKey -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal CryptoKey
key, data' -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal data'
data']))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.verify Mozilla WebKitSubtleCrypto.verify documentation> 
verify ::
       (MonadDOM m, ToJSString algorithm, IsBufferSource signature,
        IsBufferSource data') =>
         SubtleCrypto ->
           algorithm -> CryptoKey -> signature -> data' -> m JSVal
verify :: SubtleCrypto
-> algorithm -> CryptoKey -> signature -> data' -> m JSVal
verify SubtleCrypto
self algorithm
algorithm CryptoKey
key signature
signature data'
data'
  = DOM JSVal -> m JSVal
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((SubtleCrypto
self SubtleCrypto
-> Getting (DOM JSVal) SubtleCrypto (DOM JSVal) -> DOM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [DOM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"verify"
           [algorithm -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal algorithm
algorithm, CryptoKey -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal CryptoKey
key, signature -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal signature
signature, data' -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal data'
data'])
          DOM JSVal -> (JSVal -> DOM JSVal) -> DOM JSVal
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM JSVal
readPromise)
         DOM JSVal -> (JSVal -> DOM JSVal) -> DOM JSVal
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.verify Mozilla WebKitSubtleCrypto.verify documentation> 
verify_ ::
        (MonadDOM m, ToJSString algorithm, IsBufferSource signature,
         IsBufferSource data') =>
          SubtleCrypto ->
            algorithm -> CryptoKey -> signature -> data' -> m ()
verify_ :: SubtleCrypto
-> algorithm -> CryptoKey -> signature -> data' -> m ()
verify_ SubtleCrypto
self algorithm
algorithm CryptoKey
key signature
signature data'
data'
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (DOM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         (SubtleCrypto
self SubtleCrypto
-> Getting (DOM JSVal) SubtleCrypto (DOM JSVal) -> DOM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [DOM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"verify"
            [algorithm -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal algorithm
algorithm, CryptoKey -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal CryptoKey
key, signature -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal signature
signature,
             data' -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal data'
data']))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.digest Mozilla WebKitSubtleCrypto.digest documentation> 
digest ::
       (MonadDOM m, ToJSString algorithm, IsBufferSource data') =>
         SubtleCrypto -> algorithm -> data' -> m JSVal
digest :: SubtleCrypto -> algorithm -> data' -> m JSVal
digest SubtleCrypto
self algorithm
algorithm data'
data'
  = DOM JSVal -> m JSVal
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((SubtleCrypto
self SubtleCrypto
-> Getting (DOM JSVal) SubtleCrypto (DOM JSVal) -> DOM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [DOM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"digest" [algorithm -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal algorithm
algorithm, data' -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal data'
data']) DOM JSVal -> (JSVal -> DOM JSVal) -> DOM JSVal
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
          JSVal -> DOM JSVal
readPromise)
         DOM JSVal -> (JSVal -> DOM JSVal) -> DOM JSVal
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.digest Mozilla WebKitSubtleCrypto.digest documentation> 
digest_ ::
        (MonadDOM m, ToJSString algorithm, IsBufferSource data') =>
          SubtleCrypto -> algorithm -> data' -> m ()
digest_ :: SubtleCrypto -> algorithm -> data' -> m ()
digest_ SubtleCrypto
self algorithm
algorithm data'
data'
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (DOM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (SubtleCrypto
self SubtleCrypto
-> Getting (DOM JSVal) SubtleCrypto (DOM JSVal) -> DOM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [DOM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"digest" [algorithm -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal algorithm
algorithm, data' -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal data'
data']))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.deriveKey Mozilla WebKitSubtleCrypto.deriveKey documentation> 
deriveKey ::
          (MonadDOM m, ToJSString algorithm, ToJSString derivedKeyType) =>
            SubtleCrypto ->
              algorithm ->
                CryptoKey -> derivedKeyType -> Bool -> [CryptoKeyUsage] -> m JSVal
deriveKey :: SubtleCrypto
-> algorithm
-> CryptoKey
-> derivedKeyType
-> Bool
-> [CryptoKeyUsage]
-> m JSVal
deriveKey SubtleCrypto
self algorithm
algorithm CryptoKey
baseKey derivedKeyType
derivedKeyType Bool
extractable
  [CryptoKeyUsage]
keyUsages
  = DOM JSVal -> m JSVal
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((SubtleCrypto
self SubtleCrypto
-> Getting (DOM JSVal) SubtleCrypto (DOM JSVal) -> DOM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [DOM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"deriveKey"
           [algorithm -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal algorithm
algorithm, CryptoKey -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal CryptoKey
baseKey, derivedKeyType -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal derivedKeyType
derivedKeyType,
            Bool -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal Bool
extractable, JSM Object -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal ([CryptoKeyUsage] -> JSM Object
forall args. MakeArgs args => args -> JSM Object
array [CryptoKeyUsage]
keyUsages)])
          DOM JSVal -> (JSVal -> DOM JSVal) -> DOM JSVal
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM JSVal
readPromise)
         DOM JSVal -> (JSVal -> DOM JSVal) -> DOM JSVal
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.deriveKey Mozilla WebKitSubtleCrypto.deriveKey documentation> 
deriveKey_ ::
           (MonadDOM m, ToJSString algorithm, ToJSString derivedKeyType) =>
             SubtleCrypto ->
               algorithm ->
                 CryptoKey -> derivedKeyType -> Bool -> [CryptoKeyUsage] -> m ()
deriveKey_ :: SubtleCrypto
-> algorithm
-> CryptoKey
-> derivedKeyType
-> Bool
-> [CryptoKeyUsage]
-> m ()
deriveKey_ SubtleCrypto
self algorithm
algorithm CryptoKey
baseKey derivedKeyType
derivedKeyType Bool
extractable
  [CryptoKeyUsage]
keyUsages
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (DOM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         (SubtleCrypto
self SubtleCrypto
-> Getting (DOM JSVal) SubtleCrypto (DOM JSVal) -> DOM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [DOM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"deriveKey"
            [algorithm -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal algorithm
algorithm, CryptoKey -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal CryptoKey
baseKey, derivedKeyType -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal derivedKeyType
derivedKeyType,
             Bool -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal Bool
extractable, JSM Object -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal ([CryptoKeyUsage] -> JSM Object
forall args. MakeArgs args => args -> JSM Object
array [CryptoKeyUsage]
keyUsages)]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.deriveBits Mozilla WebKitSubtleCrypto.deriveBits documentation> 
deriveBits ::
           (MonadDOM m, ToJSString algorithm) =>
             SubtleCrypto -> algorithm -> CryptoKey -> Word -> m ArrayBuffer
deriveBits :: SubtleCrypto -> algorithm -> CryptoKey -> Word -> m ArrayBuffer
deriveBits SubtleCrypto
self algorithm
algorithm CryptoKey
baseKey Word
length
  = DOM ArrayBuffer -> m ArrayBuffer
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((SubtleCrypto
self SubtleCrypto
-> Getting (DOM JSVal) SubtleCrypto (DOM JSVal) -> DOM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [DOM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"deriveBits"
           [algorithm -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal algorithm
algorithm, CryptoKey -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal CryptoKey
baseKey, Word -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal Word
length])
          DOM JSVal -> (JSVal -> DOM JSVal) -> DOM JSVal
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM JSVal
readPromise)
         DOM JSVal -> (JSVal -> DOM ArrayBuffer) -> DOM ArrayBuffer
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM ArrayBuffer
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.deriveBits Mozilla WebKitSubtleCrypto.deriveBits documentation> 
deriveBits_ ::
            (MonadDOM m, ToJSString algorithm) =>
              SubtleCrypto -> algorithm -> CryptoKey -> Word -> m ()
deriveBits_ :: SubtleCrypto -> algorithm -> CryptoKey -> Word -> m ()
deriveBits_ SubtleCrypto
self algorithm
algorithm CryptoKey
baseKey Word
length
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (DOM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         (SubtleCrypto
self SubtleCrypto
-> Getting (DOM JSVal) SubtleCrypto (DOM JSVal) -> DOM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [DOM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"deriveBits"
            [algorithm -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal algorithm
algorithm, CryptoKey -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal CryptoKey
baseKey, Word -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal Word
length]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.generateKey Mozilla WebKitSubtleCrypto.generateKey documentation> 
generateKey ::
            (MonadDOM m, ToJSString algorithm) =>
              SubtleCrypto -> algorithm -> Bool -> [CryptoKeyUsage] -> m JSVal
generateKey :: SubtleCrypto -> algorithm -> Bool -> [CryptoKeyUsage] -> m JSVal
generateKey SubtleCrypto
self algorithm
algorithm Bool
extractable [CryptoKeyUsage]
keyUsages
  = DOM JSVal -> m JSVal
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((SubtleCrypto
self SubtleCrypto
-> Getting (DOM JSVal) SubtleCrypto (DOM JSVal) -> DOM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [DOM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"generateKey"
           [algorithm -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal algorithm
algorithm, Bool -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal Bool
extractable,
            JSM Object -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal ([CryptoKeyUsage] -> JSM Object
forall args. MakeArgs args => args -> JSM Object
array [CryptoKeyUsage]
keyUsages)])
          DOM JSVal -> (JSVal -> DOM JSVal) -> DOM JSVal
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM JSVal
readPromise)
         DOM JSVal -> (JSVal -> DOM JSVal) -> DOM JSVal
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.generateKey Mozilla WebKitSubtleCrypto.generateKey documentation> 
generateKey_ ::
             (MonadDOM m, ToJSString algorithm) =>
               SubtleCrypto -> algorithm -> Bool -> [CryptoKeyUsage] -> m ()
generateKey_ :: SubtleCrypto -> algorithm -> Bool -> [CryptoKeyUsage] -> m ()
generateKey_ SubtleCrypto
self algorithm
algorithm Bool
extractable [CryptoKeyUsage]
keyUsages
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (DOM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         (SubtleCrypto
self SubtleCrypto
-> Getting (DOM JSVal) SubtleCrypto (DOM JSVal) -> DOM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [DOM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"generateKey"
            [algorithm -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal algorithm
algorithm, Bool -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal Bool
extractable,
             JSM Object -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal ([CryptoKeyUsage] -> JSM Object
forall args. MakeArgs args => args -> JSM Object
array [CryptoKeyUsage]
keyUsages)]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.importKey Mozilla WebKitSubtleCrypto.importKey documentation> 
importKey ::
          (MonadDOM m, ToJSString format, IsKeyData keyData,
           ToJSString algorithm) =>
            SubtleCrypto ->
              format ->
                keyData -> algorithm -> Bool -> [CryptoKeyUsage] -> m CryptoKey
importKey :: SubtleCrypto
-> format
-> keyData
-> algorithm
-> Bool
-> [CryptoKeyUsage]
-> m CryptoKey
importKey SubtleCrypto
self format
format keyData
keyData algorithm
algorithm Bool
extractable [CryptoKeyUsage]
keyUsages
  = DOM CryptoKey -> m CryptoKey
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((SubtleCrypto
self SubtleCrypto
-> Getting (DOM JSVal) SubtleCrypto (DOM JSVal) -> DOM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [DOM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"importKey"
           [format -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal format
format, keyData -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal keyData
keyData, algorithm -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal algorithm
algorithm,
            Bool -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal Bool
extractable, JSM Object -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal ([CryptoKeyUsage] -> JSM Object
forall args. MakeArgs args => args -> JSM Object
array [CryptoKeyUsage]
keyUsages)])
          DOM JSVal -> (JSVal -> DOM JSVal) -> DOM JSVal
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM JSVal
readPromise)
         DOM JSVal -> (JSVal -> DOM CryptoKey) -> DOM CryptoKey
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM CryptoKey
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.importKey Mozilla WebKitSubtleCrypto.importKey documentation> 
importKey_ ::
           (MonadDOM m, ToJSString format, IsKeyData keyData,
            ToJSString algorithm) =>
             SubtleCrypto ->
               format -> keyData -> algorithm -> Bool -> [CryptoKeyUsage] -> m ()
importKey_ :: SubtleCrypto
-> format
-> keyData
-> algorithm
-> Bool
-> [CryptoKeyUsage]
-> m ()
importKey_ SubtleCrypto
self format
format keyData
keyData algorithm
algorithm Bool
extractable [CryptoKeyUsage]
keyUsages
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (DOM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         (SubtleCrypto
self SubtleCrypto
-> Getting (DOM JSVal) SubtleCrypto (DOM JSVal) -> DOM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [DOM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"importKey"
            [format -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal format
format, keyData -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal keyData
keyData, algorithm -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal algorithm
algorithm,
             Bool -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal Bool
extractable, JSM Object -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal ([CryptoKeyUsage] -> JSM Object
forall args. MakeArgs args => args -> JSM Object
array [CryptoKeyUsage]
keyUsages)]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.exportKey Mozilla WebKitSubtleCrypto.exportKey documentation> 
exportKey ::
          (MonadDOM m, ToJSString format) =>
            SubtleCrypto -> format -> CryptoKey -> m JSVal
exportKey :: SubtleCrypto -> format -> CryptoKey -> m JSVal
exportKey SubtleCrypto
self format
format CryptoKey
key
  = DOM JSVal -> m JSVal
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((SubtleCrypto
self SubtleCrypto
-> Getting (DOM JSVal) SubtleCrypto (DOM JSVal) -> DOM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [DOM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"exportKey" [format -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal format
format, CryptoKey -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal CryptoKey
key]) DOM JSVal -> (JSVal -> DOM JSVal) -> DOM JSVal
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
          JSVal -> DOM JSVal
readPromise)
         DOM JSVal -> (JSVal -> DOM JSVal) -> DOM JSVal
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.exportKey Mozilla WebKitSubtleCrypto.exportKey documentation> 
exportKey_ ::
           (MonadDOM m, ToJSString format) =>
             SubtleCrypto -> format -> CryptoKey -> m ()
exportKey_ :: SubtleCrypto -> format -> CryptoKey -> m ()
exportKey_ SubtleCrypto
self format
format CryptoKey
key
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (DOM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (SubtleCrypto
self SubtleCrypto
-> Getting (DOM JSVal) SubtleCrypto (DOM JSVal) -> DOM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [DOM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"exportKey" [format -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal format
format, CryptoKey -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal CryptoKey
key]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.wrapKey Mozilla WebKitSubtleCrypto.wrapKey documentation> 
wrapKey ::
        (MonadDOM m, ToJSString format, ToJSString wrapAlgorithm) =>
          SubtleCrypto ->
            format -> CryptoKey -> CryptoKey -> wrapAlgorithm -> m JSVal
wrapKey :: SubtleCrypto
-> format -> CryptoKey -> CryptoKey -> wrapAlgorithm -> m JSVal
wrapKey SubtleCrypto
self format
format CryptoKey
key CryptoKey
wrappingKey wrapAlgorithm
wrapAlgorithm
  = DOM JSVal -> m JSVal
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((SubtleCrypto
self SubtleCrypto
-> Getting (DOM JSVal) SubtleCrypto (DOM JSVal) -> DOM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [DOM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"wrapKey"
           [format -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal format
format, CryptoKey -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal CryptoKey
key, CryptoKey -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal CryptoKey
wrappingKey,
            wrapAlgorithm -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal wrapAlgorithm
wrapAlgorithm])
          DOM JSVal -> (JSVal -> DOM JSVal) -> DOM JSVal
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM JSVal
readPromise)
         DOM JSVal -> (JSVal -> DOM JSVal) -> DOM JSVal
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.wrapKey Mozilla WebKitSubtleCrypto.wrapKey documentation> 
wrapKey_ ::
         (MonadDOM m, ToJSString format, ToJSString wrapAlgorithm) =>
           SubtleCrypto ->
             format -> CryptoKey -> CryptoKey -> wrapAlgorithm -> m ()
wrapKey_ :: SubtleCrypto
-> format -> CryptoKey -> CryptoKey -> wrapAlgorithm -> m ()
wrapKey_ SubtleCrypto
self format
format CryptoKey
key CryptoKey
wrappingKey wrapAlgorithm
wrapAlgorithm
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (DOM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         (SubtleCrypto
self SubtleCrypto
-> Getting (DOM JSVal) SubtleCrypto (DOM JSVal) -> DOM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [DOM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"wrapKey"
            [format -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal format
format, CryptoKey -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal CryptoKey
key, CryptoKey -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal CryptoKey
wrappingKey,
             wrapAlgorithm -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal wrapAlgorithm
wrapAlgorithm]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.unwrapKey Mozilla WebKitSubtleCrypto.unwrapKey documentation> 
unwrapKey ::
          (MonadDOM m, ToJSString format, IsBufferSource wrappedKey,
           ToJSString unwrapAlgorithm, ToJSString unwrappedKeyAlgorithm) =>
            SubtleCrypto ->
              format ->
                wrappedKey ->
                  CryptoKey ->
                    unwrapAlgorithm ->
                      unwrappedKeyAlgorithm -> Bool -> [CryptoKeyUsage] -> m CryptoKey
unwrapKey :: SubtleCrypto
-> format
-> wrappedKey
-> CryptoKey
-> unwrapAlgorithm
-> unwrappedKeyAlgorithm
-> Bool
-> [CryptoKeyUsage]
-> m CryptoKey
unwrapKey SubtleCrypto
self format
format wrappedKey
wrappedKey CryptoKey
unwrappingKey unwrapAlgorithm
unwrapAlgorithm
  unwrappedKeyAlgorithm
unwrappedKeyAlgorithm Bool
extractable [CryptoKeyUsage]
keyUsages
  = DOM CryptoKey -> m CryptoKey
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((SubtleCrypto
self SubtleCrypto
-> Getting (DOM JSVal) SubtleCrypto (DOM JSVal) -> DOM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [DOM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"unwrapKey"
           [format -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal format
format, wrappedKey -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal wrappedKey
wrappedKey, CryptoKey -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal CryptoKey
unwrappingKey,
            unwrapAlgorithm -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal unwrapAlgorithm
unwrapAlgorithm, unwrappedKeyAlgorithm -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal unwrappedKeyAlgorithm
unwrappedKeyAlgorithm,
            Bool -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal Bool
extractable, JSM Object -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal ([CryptoKeyUsage] -> JSM Object
forall args. MakeArgs args => args -> JSM Object
array [CryptoKeyUsage]
keyUsages)])
          DOM JSVal -> (JSVal -> DOM JSVal) -> DOM JSVal
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM JSVal
readPromise)
         DOM JSVal -> (JSVal -> DOM CryptoKey) -> DOM CryptoKey
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM CryptoKey
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.unwrapKey Mozilla WebKitSubtleCrypto.unwrapKey documentation> 
unwrapKey_ ::
           (MonadDOM m, ToJSString format, IsBufferSource wrappedKey,
            ToJSString unwrapAlgorithm, ToJSString unwrappedKeyAlgorithm) =>
             SubtleCrypto ->
               format ->
                 wrappedKey ->
                   CryptoKey ->
                     unwrapAlgorithm ->
                       unwrappedKeyAlgorithm -> Bool -> [CryptoKeyUsage] -> m ()
unwrapKey_ :: SubtleCrypto
-> format
-> wrappedKey
-> CryptoKey
-> unwrapAlgorithm
-> unwrappedKeyAlgorithm
-> Bool
-> [CryptoKeyUsage]
-> m ()
unwrapKey_ SubtleCrypto
self format
format wrappedKey
wrappedKey CryptoKey
unwrappingKey unwrapAlgorithm
unwrapAlgorithm
  unwrappedKeyAlgorithm
unwrappedKeyAlgorithm Bool
extractable [CryptoKeyUsage]
keyUsages
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (DOM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         (SubtleCrypto
self SubtleCrypto
-> Getting (DOM JSVal) SubtleCrypto (DOM JSVal) -> DOM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [DOM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"unwrapKey"
            [format -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal format
format, wrappedKey -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal wrappedKey
wrappedKey, CryptoKey -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal CryptoKey
unwrappingKey,
             unwrapAlgorithm -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal unwrapAlgorithm
unwrapAlgorithm, unwrappedKeyAlgorithm -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal unwrappedKeyAlgorithm
unwrappedKeyAlgorithm,
             Bool -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal Bool
extractable, JSM Object -> DOM JSVal
forall a. ToJSVal a => a -> DOM JSVal
toJSVal ([CryptoKeyUsage] -> JSM Object
forall args. MakeArgs args => args -> JSM Object
array [CryptoKeyUsage]
keyUsages)]))