{-# 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 :: forall (m :: * -> *) algorithm data'.
(MonadDOM m, ToJSString algorithm, IsBufferSource data') =>
SubtleCrypto -> algorithm -> CryptoKey -> data' -> m JSVal
encrypt SubtleCrypto
self algorithm
algorithm CryptoKey
key data'
data'
  = JSM JSVal -> m JSVal
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((SubtleCrypto
self SubtleCrypto
-> Getting (JSM JSVal) SubtleCrypto (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"encrypt"
           [algorithm -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal algorithm
algorithm, CryptoKey -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal CryptoKey
key, data' -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal data'
data'])
          JSM JSVal -> (JSVal -> JSM JSVal) -> JSM JSVal
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM JSVal
readPromise)
         JSM JSVal -> (JSVal -> JSM JSVal) -> JSM JSVal
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM JSVal
forall a. ToJSVal a => a -> JSM 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_ :: forall (m :: * -> *) algorithm data'.
(MonadDOM m, ToJSString algorithm, IsBufferSource data') =>
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
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         (SubtleCrypto
self SubtleCrypto
-> Getting (JSM JSVal) SubtleCrypto (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"encrypt"
            [algorithm -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal algorithm
algorithm, CryptoKey -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal CryptoKey
key, data' -> JSM JSVal
forall a. ToJSVal a => a -> JSM 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 :: forall (m :: * -> *) algorithm data'.
(MonadDOM m, ToJSString algorithm, IsBufferSource data') =>
SubtleCrypto -> algorithm -> CryptoKey -> data' -> m JSVal
decrypt SubtleCrypto
self algorithm
algorithm CryptoKey
key data'
data'
  = JSM JSVal -> m JSVal
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((SubtleCrypto
self SubtleCrypto
-> Getting (JSM JSVal) SubtleCrypto (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"decrypt"
           [algorithm -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal algorithm
algorithm, CryptoKey -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal CryptoKey
key, data' -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal data'
data'])
          JSM JSVal -> (JSVal -> JSM JSVal) -> JSM JSVal
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM JSVal
readPromise)
         JSM JSVal -> (JSVal -> JSM JSVal) -> JSM JSVal
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM JSVal
forall a. ToJSVal a => a -> JSM 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_ :: forall (m :: * -> *) algorithm data'.
(MonadDOM m, ToJSString algorithm, IsBufferSource data') =>
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
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         (SubtleCrypto
self SubtleCrypto
-> Getting (JSM JSVal) SubtleCrypto (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"decrypt"
            [algorithm -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal algorithm
algorithm, CryptoKey -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal CryptoKey
key, data' -> JSM JSVal
forall a. ToJSVal a => a -> JSM 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 :: forall (m :: * -> *) algorithm data'.
(MonadDOM m, ToJSString algorithm, IsBufferSource data') =>
SubtleCrypto -> algorithm -> CryptoKey -> data' -> m JSVal
sign SubtleCrypto
self algorithm
algorithm CryptoKey
key data'
data'
  = JSM JSVal -> m JSVal
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((SubtleCrypto
self SubtleCrypto
-> Getting (JSM JSVal) SubtleCrypto (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"sign"
           [algorithm -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal algorithm
algorithm, CryptoKey -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal CryptoKey
key, data' -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal data'
data'])
          JSM JSVal -> (JSVal -> JSM JSVal) -> JSM JSVal
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM JSVal
readPromise)
         JSM JSVal -> (JSVal -> JSM JSVal) -> JSM JSVal
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM JSVal
forall a. ToJSVal a => a -> JSM 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_ :: forall (m :: * -> *) algorithm data'.
(MonadDOM m, ToJSString algorithm, IsBufferSource data') =>
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
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         (SubtleCrypto
self SubtleCrypto
-> Getting (JSM JSVal) SubtleCrypto (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"sign"
            [algorithm -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal algorithm
algorithm, CryptoKey -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal CryptoKey
key, data' -> JSM JSVal
forall a. ToJSVal a => a -> JSM 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 :: forall (m :: * -> *) algorithm signature data'.
(MonadDOM m, ToJSString algorithm, IsBufferSource signature,
 IsBufferSource data') =>
SubtleCrypto
-> algorithm -> CryptoKey -> signature -> data' -> m JSVal
verify SubtleCrypto
self algorithm
algorithm CryptoKey
key signature
signature data'
data'
  = JSM JSVal -> m JSVal
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((SubtleCrypto
self SubtleCrypto
-> Getting (JSM JSVal) SubtleCrypto (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"verify"
           [algorithm -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal algorithm
algorithm, CryptoKey -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal CryptoKey
key, signature -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal signature
signature, data' -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal data'
data'])
          JSM JSVal -> (JSVal -> JSM JSVal) -> JSM JSVal
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM JSVal
readPromise)
         JSM JSVal -> (JSVal -> JSM JSVal) -> JSM JSVal
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM JSVal
forall a. ToJSVal a => a -> JSM 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_ :: forall (m :: * -> *) algorithm signature data'.
(MonadDOM m, ToJSString algorithm, IsBufferSource signature,
 IsBufferSource data') =>
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
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         (SubtleCrypto
self SubtleCrypto
-> Getting (JSM JSVal) SubtleCrypto (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"verify"
            [algorithm -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal algorithm
algorithm, CryptoKey -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal CryptoKey
key, signature -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal signature
signature,
             data' -> JSM JSVal
forall a. ToJSVal a => a -> JSM 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 :: forall (m :: * -> *) algorithm data'.
(MonadDOM m, ToJSString algorithm, IsBufferSource data') =>
SubtleCrypto -> algorithm -> data' -> m JSVal
digest SubtleCrypto
self algorithm
algorithm data'
data'
  = JSM JSVal -> m JSVal
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((SubtleCrypto
self SubtleCrypto
-> Getting (JSM JSVal) SubtleCrypto (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"digest" [algorithm -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal algorithm
algorithm, data' -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal data'
data']) JSM JSVal -> (JSVal -> JSM JSVal) -> JSM JSVal
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
          JSVal -> JSM JSVal
readPromise)
         JSM JSVal -> (JSVal -> JSM JSVal) -> JSM JSVal
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM JSVal
forall a. ToJSVal a => a -> JSM 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_ :: forall (m :: * -> *) algorithm data'.
(MonadDOM m, ToJSString algorithm, IsBufferSource data') =>
SubtleCrypto -> algorithm -> data' -> m ()
digest_ SubtleCrypto
self algorithm
algorithm data'
data'
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (SubtleCrypto
self SubtleCrypto
-> Getting (JSM JSVal) SubtleCrypto (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"digest" [algorithm -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal algorithm
algorithm, data' -> JSM JSVal
forall a. ToJSVal a => a -> JSM 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 :: forall (m :: * -> *) algorithm derivedKeyType.
(MonadDOM m, ToJSString algorithm, ToJSString derivedKeyType) =>
SubtleCrypto
-> algorithm
-> CryptoKey
-> derivedKeyType
-> Bool
-> [CryptoKeyUsage]
-> m JSVal
deriveKey SubtleCrypto
self algorithm
algorithm CryptoKey
baseKey derivedKeyType
derivedKeyType Bool
extractable
  [CryptoKeyUsage]
keyUsages
  = JSM JSVal -> m JSVal
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((SubtleCrypto
self SubtleCrypto
-> Getting (JSM JSVal) SubtleCrypto (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"deriveKey"
           [algorithm -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal algorithm
algorithm, CryptoKey -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal CryptoKey
baseKey, derivedKeyType -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal derivedKeyType
derivedKeyType,
            Bool -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Bool
extractable, JSM Object -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal ([CryptoKeyUsage] -> JSM Object
forall args. MakeArgs args => args -> JSM Object
array [CryptoKeyUsage]
keyUsages)])
          JSM JSVal -> (JSVal -> JSM JSVal) -> JSM JSVal
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM JSVal
readPromise)
         JSM JSVal -> (JSVal -> JSM JSVal) -> JSM JSVal
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM JSVal
forall a. ToJSVal a => a -> JSM 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_ :: forall (m :: * -> *) algorithm derivedKeyType.
(MonadDOM m, ToJSString algorithm, ToJSString derivedKeyType) =>
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
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         (SubtleCrypto
self SubtleCrypto
-> Getting (JSM JSVal) SubtleCrypto (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"deriveKey"
            [algorithm -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal algorithm
algorithm, CryptoKey -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal CryptoKey
baseKey, derivedKeyType -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal derivedKeyType
derivedKeyType,
             Bool -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Bool
extractable, JSM Object -> JSM JSVal
forall a. ToJSVal a => a -> JSM 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 :: forall (m :: * -> *) algorithm.
(MonadDOM m, ToJSString algorithm) =>
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 (JSM JSVal) SubtleCrypto (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"deriveBits"
           [algorithm -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal algorithm
algorithm, CryptoKey -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal CryptoKey
baseKey, Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Word
length])
          JSM JSVal -> (JSVal -> JSM JSVal) -> JSM JSVal
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM JSVal
readPromise)
         JSM JSVal -> (JSVal -> DOM ArrayBuffer) -> DOM ArrayBuffer
forall a b. JSM a -> (a -> JSM b) -> JSM b
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_ :: forall (m :: * -> *) algorithm.
(MonadDOM m, ToJSString algorithm) =>
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
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         (SubtleCrypto
self SubtleCrypto
-> Getting (JSM JSVal) SubtleCrypto (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"deriveBits"
            [algorithm -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal algorithm
algorithm, CryptoKey -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal CryptoKey
baseKey, Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM 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 :: forall (m :: * -> *) algorithm.
(MonadDOM m, ToJSString algorithm) =>
SubtleCrypto -> algorithm -> Bool -> [CryptoKeyUsage] -> m JSVal
generateKey SubtleCrypto
self algorithm
algorithm Bool
extractable [CryptoKeyUsage]
keyUsages
  = JSM JSVal -> m JSVal
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((SubtleCrypto
self SubtleCrypto
-> Getting (JSM JSVal) SubtleCrypto (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"generateKey"
           [algorithm -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal algorithm
algorithm, Bool -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Bool
extractable,
            JSM Object -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal ([CryptoKeyUsage] -> JSM Object
forall args. MakeArgs args => args -> JSM Object
array [CryptoKeyUsage]
keyUsages)])
          JSM JSVal -> (JSVal -> JSM JSVal) -> JSM JSVal
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM JSVal
readPromise)
         JSM JSVal -> (JSVal -> JSM JSVal) -> JSM JSVal
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM JSVal
forall a. ToJSVal a => a -> JSM 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_ :: forall (m :: * -> *) algorithm.
(MonadDOM m, ToJSString algorithm) =>
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
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         (SubtleCrypto
self SubtleCrypto
-> Getting (JSM JSVal) SubtleCrypto (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"generateKey"
            [algorithm -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal algorithm
algorithm, Bool -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Bool
extractable,
             JSM Object -> JSM JSVal
forall a. ToJSVal a => a -> JSM 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 :: forall (m :: * -> *) format keyData algorithm.
(MonadDOM m, ToJSString format, IsKeyData keyData,
 ToJSString algorithm) =>
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 (JSM JSVal) SubtleCrypto (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"importKey"
           [format -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal format
format, keyData -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal keyData
keyData, algorithm -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal algorithm
algorithm,
            Bool -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Bool
extractable, JSM Object -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal ([CryptoKeyUsage] -> JSM Object
forall args. MakeArgs args => args -> JSM Object
array [CryptoKeyUsage]
keyUsages)])
          JSM JSVal -> (JSVal -> JSM JSVal) -> JSM JSVal
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM JSVal
readPromise)
         JSM JSVal -> (JSVal -> DOM CryptoKey) -> DOM CryptoKey
forall a b. JSM a -> (a -> JSM b) -> JSM b
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_ :: forall (m :: * -> *) format keyData algorithm.
(MonadDOM m, ToJSString format, IsKeyData keyData,
 ToJSString algorithm) =>
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
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         (SubtleCrypto
self SubtleCrypto
-> Getting (JSM JSVal) SubtleCrypto (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"importKey"
            [format -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal format
format, keyData -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal keyData
keyData, algorithm -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal algorithm
algorithm,
             Bool -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Bool
extractable, JSM Object -> JSM JSVal
forall a. ToJSVal a => a -> JSM 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 :: forall (m :: * -> *) format.
(MonadDOM m, ToJSString format) =>
SubtleCrypto -> format -> CryptoKey -> m JSVal
exportKey SubtleCrypto
self format
format CryptoKey
key
  = JSM JSVal -> m JSVal
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((SubtleCrypto
self SubtleCrypto
-> Getting (JSM JSVal) SubtleCrypto (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"exportKey" [format -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal format
format, CryptoKey -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal CryptoKey
key]) JSM JSVal -> (JSVal -> JSM JSVal) -> JSM JSVal
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
          JSVal -> JSM JSVal
readPromise)
         JSM JSVal -> (JSVal -> JSM JSVal) -> JSM JSVal
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM JSVal
forall a. ToJSVal a => a -> JSM 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_ :: forall (m :: * -> *) format.
(MonadDOM m, ToJSString format) =>
SubtleCrypto -> format -> CryptoKey -> m ()
exportKey_ SubtleCrypto
self format
format CryptoKey
key
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (SubtleCrypto
self SubtleCrypto
-> Getting (JSM JSVal) SubtleCrypto (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"exportKey" [format -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal format
format, CryptoKey -> JSM JSVal
forall a. ToJSVal a => a -> JSM 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 :: forall (m :: * -> *) format wrapAlgorithm.
(MonadDOM m, ToJSString format, ToJSString wrapAlgorithm) =>
SubtleCrypto
-> format -> CryptoKey -> CryptoKey -> wrapAlgorithm -> m JSVal
wrapKey SubtleCrypto
self format
format CryptoKey
key CryptoKey
wrappingKey wrapAlgorithm
wrapAlgorithm
  = JSM JSVal -> m JSVal
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((SubtleCrypto
self SubtleCrypto
-> Getting (JSM JSVal) SubtleCrypto (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"wrapKey"
           [format -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal format
format, CryptoKey -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal CryptoKey
key, CryptoKey -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal CryptoKey
wrappingKey,
            wrapAlgorithm -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal wrapAlgorithm
wrapAlgorithm])
          JSM JSVal -> (JSVal -> JSM JSVal) -> JSM JSVal
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM JSVal
readPromise)
         JSM JSVal -> (JSVal -> JSM JSVal) -> JSM JSVal
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM JSVal
forall a. ToJSVal a => a -> JSM 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_ :: forall (m :: * -> *) format wrapAlgorithm.
(MonadDOM m, ToJSString format, ToJSString wrapAlgorithm) =>
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
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         (SubtleCrypto
self SubtleCrypto
-> Getting (JSM JSVal) SubtleCrypto (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"wrapKey"
            [format -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal format
format, CryptoKey -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal CryptoKey
key, CryptoKey -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal CryptoKey
wrappingKey,
             wrapAlgorithm -> JSM JSVal
forall a. ToJSVal a => a -> JSM 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 :: forall (m :: * -> *) format wrappedKey unwrapAlgorithm
       unwrappedKeyAlgorithm.
(MonadDOM m, ToJSString format, IsBufferSource wrappedKey,
 ToJSString unwrapAlgorithm, ToJSString unwrappedKeyAlgorithm) =>
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 (JSM JSVal) SubtleCrypto (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"unwrapKey"
           [format -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal format
format, wrappedKey -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal wrappedKey
wrappedKey, CryptoKey -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal CryptoKey
unwrappingKey,
            unwrapAlgorithm -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal unwrapAlgorithm
unwrapAlgorithm, unwrappedKeyAlgorithm -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal unwrappedKeyAlgorithm
unwrappedKeyAlgorithm,
            Bool -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Bool
extractable, JSM Object -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal ([CryptoKeyUsage] -> JSM Object
forall args. MakeArgs args => args -> JSM Object
array [CryptoKeyUsage]
keyUsages)])
          JSM JSVal -> (JSVal -> JSM JSVal) -> JSM JSVal
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM JSVal
readPromise)
         JSM JSVal -> (JSVal -> DOM CryptoKey) -> DOM CryptoKey
forall a b. JSM a -> (a -> JSM b) -> JSM b
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_ :: forall (m :: * -> *) format wrappedKey unwrapAlgorithm
       unwrappedKeyAlgorithm.
(MonadDOM m, ToJSString format, IsBufferSource wrappedKey,
 ToJSString unwrapAlgorithm, ToJSString unwrappedKeyAlgorithm) =>
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
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         (SubtleCrypto
self SubtleCrypto
-> Getting (JSM JSVal) SubtleCrypto (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"unwrapKey"
            [format -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal format
format, wrappedKey -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal wrappedKey
wrappedKey, CryptoKey -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal CryptoKey
unwrappingKey,
             unwrapAlgorithm -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal unwrapAlgorithm
unwrapAlgorithm, unwrappedKeyAlgorithm -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal unwrappedKeyAlgorithm
unwrappedKeyAlgorithm,
             Bool -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Bool
extractable, JSM Object -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal ([CryptoKeyUsage] -> JSM Object
forall args. MakeArgs args => args -> JSM Object
array [CryptoKeyUsage]
keyUsages)]))