{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.WebKitSubtleCrypto
       (encrypt, encrypt_, decrypt, decrypt_, sign, sign_, verify,
        verify_, digest, digest_, generateKey, generateKey_, importKey,
        importKey_, exportKey, exportKey_, wrapKey, wrapKey_, unwrapKey,
        unwrapKey_, WebKitSubtleCrypto(..), gTypeWebKitSubtleCrypto)
       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, IsCryptoOperationData data') =>
          WebKitSubtleCrypto ->
            algorithm -> CryptoKey -> [data'] -> m ArrayBuffer
encrypt :: WebKitSubtleCrypto
-> algorithm -> CryptoKey -> [data'] -> m ArrayBuffer
encrypt WebKitSubtleCrypto
self algorithm
algorithm CryptoKey
key [data']
data'
  = DOM ArrayBuffer -> m ArrayBuffer
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((WebKitSubtleCrypto
self WebKitSubtleCrypto
-> Getting (JSM JSVal) WebKitSubtleCrypto (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"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, JSM Object -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal ([data'] -> JSM Object
forall args. MakeArgs args => args -> JSM Object
array [data']
data')])
          JSM JSVal -> (JSVal -> JSM JSVal) -> JSM JSVal
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 (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.encrypt Mozilla WebKitSubtleCrypto.encrypt documentation> 
encrypt_ ::
         (MonadDOM m, ToJSString algorithm, IsCryptoOperationData data') =>
           WebKitSubtleCrypto -> algorithm -> CryptoKey -> [data'] -> m ()
encrypt_ :: WebKitSubtleCrypto -> algorithm -> CryptoKey -> [data'] -> m ()
encrypt_ WebKitSubtleCrypto
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
         (WebKitSubtleCrypto
self WebKitSubtleCrypto
-> Getting (JSM JSVal) WebKitSubtleCrypto (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"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, JSM Object -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal ([data'] -> JSM Object
forall args. MakeArgs args => args -> JSM Object
array [data']
data')]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.decrypt Mozilla WebKitSubtleCrypto.decrypt documentation> 
decrypt ::
        (MonadDOM m, ToJSString algorithm, IsCryptoOperationData data') =>
          WebKitSubtleCrypto ->
            algorithm -> CryptoKey -> [data'] -> m ArrayBuffer
decrypt :: WebKitSubtleCrypto
-> algorithm -> CryptoKey -> [data'] -> m ArrayBuffer
decrypt WebKitSubtleCrypto
self algorithm
algorithm CryptoKey
key [data']
data'
  = DOM ArrayBuffer -> m ArrayBuffer
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((WebKitSubtleCrypto
self WebKitSubtleCrypto
-> Getting (JSM JSVal) WebKitSubtleCrypto (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"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, JSM Object -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal ([data'] -> JSM Object
forall args. MakeArgs args => args -> JSM Object
array [data']
data')])
          JSM JSVal -> (JSVal -> JSM JSVal) -> JSM JSVal
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 (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.decrypt Mozilla WebKitSubtleCrypto.decrypt documentation> 
decrypt_ ::
         (MonadDOM m, ToJSString algorithm, IsCryptoOperationData data') =>
           WebKitSubtleCrypto -> algorithm -> CryptoKey -> [data'] -> m ()
decrypt_ :: WebKitSubtleCrypto -> algorithm -> CryptoKey -> [data'] -> m ()
decrypt_ WebKitSubtleCrypto
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
         (WebKitSubtleCrypto
self WebKitSubtleCrypto
-> Getting (JSM JSVal) WebKitSubtleCrypto (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"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, JSM Object -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal ([data'] -> JSM Object
forall args. MakeArgs args => args -> JSM Object
array [data']
data')]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.sign Mozilla WebKitSubtleCrypto.sign documentation> 
sign ::
     (MonadDOM m, ToJSString algorithm, IsCryptoOperationData data') =>
       WebKitSubtleCrypto ->
         algorithm -> CryptoKey -> [data'] -> m ArrayBuffer
sign :: WebKitSubtleCrypto
-> algorithm -> CryptoKey -> [data'] -> m ArrayBuffer
sign WebKitSubtleCrypto
self algorithm
algorithm CryptoKey
key [data']
data'
  = DOM ArrayBuffer -> m ArrayBuffer
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((WebKitSubtleCrypto
self WebKitSubtleCrypto
-> Getting (JSM JSVal) WebKitSubtleCrypto (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"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, JSM Object -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal ([data'] -> JSM Object
forall args. MakeArgs args => args -> JSM Object
array [data']
data')])
          JSM JSVal -> (JSVal -> JSM JSVal) -> JSM JSVal
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 (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.sign Mozilla WebKitSubtleCrypto.sign documentation> 
sign_ ::
      (MonadDOM m, ToJSString algorithm, IsCryptoOperationData data') =>
        WebKitSubtleCrypto -> algorithm -> CryptoKey -> [data'] -> m ()
sign_ :: WebKitSubtleCrypto -> algorithm -> CryptoKey -> [data'] -> m ()
sign_ WebKitSubtleCrypto
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
         (WebKitSubtleCrypto
self WebKitSubtleCrypto
-> Getting (JSM JSVal) WebKitSubtleCrypto (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"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, JSM Object -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal ([data'] -> JSM Object
forall args. MakeArgs args => args -> JSM Object
array [data']
data')]))

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

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.verify Mozilla WebKitSubtleCrypto.verify documentation> 
verify_ ::
        (MonadDOM m, ToJSString algorithm, IsCryptoOperationData signature,
         IsCryptoOperationData data') =>
          WebKitSubtleCrypto ->
            algorithm -> CryptoKey -> signature -> [data'] -> m ()
verify_ :: WebKitSubtleCrypto
-> algorithm -> CryptoKey -> signature -> [data'] -> m ()
verify_ WebKitSubtleCrypto
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
         (WebKitSubtleCrypto
self WebKitSubtleCrypto
-> Getting (JSM JSVal) WebKitSubtleCrypto (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"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,
             JSM Object -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal ([data'] -> JSM Object
forall args. MakeArgs args => args -> JSM Object
array [data']
data')]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.digest Mozilla WebKitSubtleCrypto.digest documentation> 
digest ::
       (MonadDOM m, ToJSString algorithm, IsCryptoOperationData data') =>
         WebKitSubtleCrypto -> algorithm -> [data'] -> m ArrayBuffer
digest :: WebKitSubtleCrypto -> algorithm -> [data'] -> m ArrayBuffer
digest WebKitSubtleCrypto
self algorithm
algorithm [data']
data'
  = DOM ArrayBuffer -> m ArrayBuffer
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((WebKitSubtleCrypto
self WebKitSubtleCrypto
-> Getting (JSM JSVal) WebKitSubtleCrypto (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"digest" [algorithm -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal algorithm
algorithm, JSM Object -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal ([data'] -> JSM Object
forall args. MakeArgs args => args -> JSM Object
array [data']
data')])
          JSM JSVal -> (JSVal -> JSM JSVal) -> JSM JSVal
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 (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.digest Mozilla WebKitSubtleCrypto.digest documentation> 
digest_ ::
        (MonadDOM m, ToJSString algorithm, IsCryptoOperationData data') =>
          WebKitSubtleCrypto -> algorithm -> [data'] -> m ()
digest_ :: WebKitSubtleCrypto -> algorithm -> [data'] -> m ()
digest_ WebKitSubtleCrypto
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
         (WebKitSubtleCrypto
self WebKitSubtleCrypto
-> Getting (JSM JSVal) WebKitSubtleCrypto (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"digest" [algorithm -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal algorithm
algorithm, JSM Object -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal ([data'] -> JSM Object
forall args. MakeArgs args => args -> JSM Object
array [data']
data')]))

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

-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.generateKey Mozilla WebKitSubtleCrypto.generateKey documentation> 
generateKey_ ::
             (MonadDOM m, ToJSString algorithm) =>
               WebKitSubtleCrypto -> algorithm -> Bool -> [CryptoKeyUsage] -> m ()
generateKey_ :: WebKitSubtleCrypto -> algorithm -> Bool -> [CryptoKeyUsage] -> m ()
generateKey_ WebKitSubtleCrypto
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
         (WebKitSubtleCrypto
self WebKitSubtleCrypto
-> Getting (JSM JSVal) WebKitSubtleCrypto (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"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, IsCryptoOperationData keyData,
           ToJSString algorithm) =>
            WebKitSubtleCrypto ->
              format ->
                keyData ->
                  Maybe algorithm -> Bool -> [CryptoKeyUsage] -> m CryptoKey
importKey :: WebKitSubtleCrypto
-> format
-> keyData
-> Maybe algorithm
-> Bool
-> [CryptoKeyUsage]
-> m CryptoKey
importKey WebKitSubtleCrypto
self format
format keyData
keyData Maybe algorithm
algorithm Bool
extractable [CryptoKeyUsage]
keyUsages
  = DOM CryptoKey -> m CryptoKey
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((WebKitSubtleCrypto
self WebKitSubtleCrypto
-> Getting (JSM JSVal) WebKitSubtleCrypto (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"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, Maybe algorithm -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe 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 (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM JSVal
readPromise)
         JSM 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, IsCryptoOperationData keyData,
            ToJSString algorithm) =>
             WebKitSubtleCrypto ->
               format ->
                 keyData -> Maybe algorithm -> Bool -> [CryptoKeyUsage] -> m ()
importKey_ :: WebKitSubtleCrypto
-> format
-> keyData
-> Maybe algorithm
-> Bool
-> [CryptoKeyUsage]
-> m ()
importKey_ WebKitSubtleCrypto
self format
format keyData
keyData Maybe 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
         (WebKitSubtleCrypto
self WebKitSubtleCrypto
-> Getting (JSM JSVal) WebKitSubtleCrypto (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"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, Maybe algorithm -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe 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) =>
            WebKitSubtleCrypto -> format -> CryptoKey -> m ArrayBuffer
exportKey :: WebKitSubtleCrypto -> format -> CryptoKey -> m ArrayBuffer
exportKey WebKitSubtleCrypto
self format
format CryptoKey
key
  = DOM ArrayBuffer -> m ArrayBuffer
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((WebKitSubtleCrypto
self WebKitSubtleCrypto
-> Getting (JSM JSVal) WebKitSubtleCrypto (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"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 (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
          JSVal -> JSM JSVal
readPromise)
         JSM 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.exportKey Mozilla WebKitSubtleCrypto.exportKey documentation> 
exportKey_ ::
           (MonadDOM m, ToJSString format) =>
             WebKitSubtleCrypto -> format -> CryptoKey -> m ()
exportKey_ :: WebKitSubtleCrypto -> format -> CryptoKey -> m ()
exportKey_ WebKitSubtleCrypto
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 (WebKitSubtleCrypto
self WebKitSubtleCrypto
-> Getting (JSM JSVal) WebKitSubtleCrypto (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"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) =>
          WebKitSubtleCrypto ->
            format -> CryptoKey -> CryptoKey -> wrapAlgorithm -> m ArrayBuffer
wrapKey :: WebKitSubtleCrypto
-> format
-> CryptoKey
-> CryptoKey
-> wrapAlgorithm
-> m ArrayBuffer
wrapKey WebKitSubtleCrypto
self format
format CryptoKey
key CryptoKey
wrappingKey wrapAlgorithm
wrapAlgorithm
  = DOM ArrayBuffer -> m ArrayBuffer
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((WebKitSubtleCrypto
self WebKitSubtleCrypto
-> Getting (JSM JSVal) WebKitSubtleCrypto (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"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 (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM JSVal
readPromise)
         JSM 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.wrapKey Mozilla WebKitSubtleCrypto.wrapKey documentation> 
wrapKey_ ::
         (MonadDOM m, ToJSString format, ToJSString wrapAlgorithm) =>
           WebKitSubtleCrypto ->
             format -> CryptoKey -> CryptoKey -> wrapAlgorithm -> m ()
wrapKey_ :: WebKitSubtleCrypto
-> format -> CryptoKey -> CryptoKey -> wrapAlgorithm -> m ()
wrapKey_ WebKitSubtleCrypto
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
         (WebKitSubtleCrypto
self WebKitSubtleCrypto
-> Getting (JSM JSVal) WebKitSubtleCrypto (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"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, IsCryptoOperationData wrappedKey,
           ToJSString unwrapAlgorithm, ToJSString unwrappedKeyAlgorithm) =>
            WebKitSubtleCrypto ->
              format ->
                wrappedKey ->
                  CryptoKey ->
                    unwrapAlgorithm ->
                      Maybe unwrappedKeyAlgorithm ->
                        Bool -> [CryptoKeyUsage] -> m CryptoKey
unwrapKey :: WebKitSubtleCrypto
-> format
-> wrappedKey
-> CryptoKey
-> unwrapAlgorithm
-> Maybe unwrappedKeyAlgorithm
-> Bool
-> [CryptoKeyUsage]
-> m CryptoKey
unwrapKey WebKitSubtleCrypto
self format
format wrappedKey
wrappedKey CryptoKey
unwrappingKey unwrapAlgorithm
unwrapAlgorithm
  Maybe unwrappedKeyAlgorithm
unwrappedKeyAlgorithm Bool
extractable [CryptoKeyUsage]
keyUsages
  = DOM CryptoKey -> m CryptoKey
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((WebKitSubtleCrypto
self WebKitSubtleCrypto
-> Getting (JSM JSVal) WebKitSubtleCrypto (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"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, Maybe unwrappedKeyAlgorithm -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe 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 (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM JSVal
readPromise)
         JSM 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, IsCryptoOperationData wrappedKey,
            ToJSString unwrapAlgorithm, ToJSString unwrappedKeyAlgorithm) =>
             WebKitSubtleCrypto ->
               format ->
                 wrappedKey ->
                   CryptoKey ->
                     unwrapAlgorithm ->
                       Maybe unwrappedKeyAlgorithm -> Bool -> [CryptoKeyUsage] -> m ()
unwrapKey_ :: WebKitSubtleCrypto
-> format
-> wrappedKey
-> CryptoKey
-> unwrapAlgorithm
-> Maybe unwrappedKeyAlgorithm
-> Bool
-> [CryptoKeyUsage]
-> m ()
unwrapKey_ WebKitSubtleCrypto
self format
format wrappedKey
wrappedKey CryptoKey
unwrappingKey unwrapAlgorithm
unwrapAlgorithm
  Maybe 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
         (WebKitSubtleCrypto
self WebKitSubtleCrypto
-> Getting (JSM JSVal) WebKitSubtleCrypto (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf [Char]
"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, Maybe unwrappedKeyAlgorithm -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe 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)]))