@@ -0,0 +1,57 @@
1+module Crypto.Subtle.Key
4+ , encrypt, decrypt, sign, verify, deriveKey, deriveBits, unwrapKey, wrapKey
6+ , getType, getExtractable, getAlgorithm, getUsages
10+import Foreign (Foreign)
14+newtype CryptoKeyType = CryptoKeyType String
16+newtype CryptoKeyUsage = CryptoKeyUsage String
19+encrypt :: CryptoKeyUsage
20+encrypt = CryptoKeyUsage "encrypt"
21+decrypt :: CryptoKeyUsage
22+decrypt = CryptoKeyUsage "decrypt"
23+sign :: CryptoKeyUsage
24+sign = CryptoKeyUsage "sign"
25+verify :: CryptoKeyUsage
26+verify = CryptoKeyUsage "verify"
27+deriveKey :: CryptoKeyUsage
28+deriveKey = CryptoKeyUsage "deriveKey"
29+deriveBits :: CryptoKeyUsage
30+deriveBits = CryptoKeyUsage "deriveBits"
31+wrapKey :: CryptoKeyUsage
32+wrapKey = CryptoKeyUsage "wrapKey"
33+unwrapKey :: CryptoKeyUsage
34+unwrapKey = CryptoKeyUsage "unwrapKey"
39+newtype CryptoKey = CryptoKey
40+ { "type" :: CryptoKeyType
41+ , extractable :: Boolean
42+ , algorithm :: Foreign
43+ , usages :: Array CryptoKeyUsage
47+getType :: CryptoKey -> CryptoKeyType
48+getType (CryptoKey r) = r."type"
50+getExtractable :: CryptoKey -> Boolean
51+getExtractable (CryptoKey r) = r.extractable
53+getAlgorithm :: CryptoKey -> Foreign
54+getAlgorithm (CryptoKey r) = r.algorithm
56+getUsages :: CryptoKey -> Array CryptoKeyUsage
57+getUsages (CryptoKey r) = r.usages