You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
{-# LANGUAGE OverloadedStrings #-}
|
|
|
|
|
module Network.Xmpp.Sasl.StringPrep where
|
|
|
|
|
|
|
|
|
|
import Text.StringPrep
|
|
|
|
|
import qualified Data.Set as Set
|
|
|
|
|
import Data.Text(singleton)
|
|
|
|
|
|
|
|
|
|
nonAsciiSpaces = Set.fromList [ '\x00A0','\x1680','\x2000','\x2001','\x2002'
|
|
|
|
|
, '\x2003', '\x2004','\x2005','\x2006','\x2007'
|
|
|
|
|
, '\x2008','\x2009', '\x200A','\x200B' ,'\x202F'
|
|
|
|
|
, '\x205F','\x3000']
|
|
|
|
|
|
|
|
|
|
toSpace x = if x `Set.member` nonAsciiSpaces then " " else singleton x
|
|
|
|
|
|
|
|
|
|
saslPrepQuery = Profile
|
|
|
|
|
[b1, toSpace]
|
|
|
|
|
True
|
|
|
|
|
[ c12
|
|
|
|
|
, c21
|
|
|
|
|
, c22
|
|
|
|
|
, c3
|
|
|
|
|
, c4
|
|
|
|
|
, c5
|
|
|
|
|
, c6
|
|
|
|
|
, c7
|
|
|
|
|
, c8
|
|
|
|
|
, c9
|
|
|
|
|
]
|
|
|
|
|
True
|
|
|
|
|
|
|
|
|
|
saslPrepStore = Profile
|
|
|
|
|
[b1, toSpace]
|
|
|
|
|
True
|
|
|
|
|
[ a1
|
|
|
|
|
, c12
|
|
|
|
|
, c21
|
|
|
|
|
, c22
|
|
|
|
|
, c3
|
|
|
|
|
, c4
|
|
|
|
|
, c5
|
|
|
|
|
, c6
|
|
|
|
|
, c7
|
|
|
|
|
, c8
|
|
|
|
|
, c9
|
|
|
|
|
]
|
|
|
|
|
True
|
|
|
|
|
|
|
|
|
|
normalizePassword = runStringPrep saslPrepStore
|
|
|
|
|
normalizeUsername = runStringPrep saslPrepQuery
|