;ELC   
;;; Compiled
;;; in Emacs version 29.4
;;; with all optimizations.



(defvar sasl-mechanisms '("SCRAM-SHA-256" "SCRAM-SHA-1" "CRAM-MD5" "DIGEST-MD5" "PLAIN" "LOGIN" "ANONYMOUS" "NTLM"))
(defvar sasl-mechanism-alist '(("CRAM-MD5" sasl-cram) ("DIGEST-MD5" sasl-digest) ("PLAIN" sasl-plain) ("LOGIN" sasl-login) ("ANONYMOUS" sasl-anonymous) ("NTLM" sasl-ntlm) ("SCRAM-SHA-256" sasl-scram-sha256) ("SCRAM-SHA-1" sasl-scram-rfc)))
(defvar sasl-unique-id-function 'sasl-unique-id-function)
(byte-code "\300\301\302\303#\210\300\301\304\305#\207" [put sasl-error error-message "SASL error" error-conditions (sasl-error error)] 4)#@14 

(fn DATUM)
(defalias 'sasl-error #[257 "\300\301C\"\207" [signal sasl-error] 4 (#$ . 637)])#@225 Return a newly allocated SASL client.
NAME is name of the authorization.  SERVICE is name of the service desired.
SERVER is the fully qualified host name of the server to authenticate to.

(fn MECHANISM NAME SERVICE SERVER)
(defalias 'sasl-make-client #[1028 "\300\301\302!%\207" [vector make-symbol "sasl-client-properties"] 11 (#$ . 738)])#@68 Return the authentication mechanism driver of CLIENT.

(fn CLIENT)
(defalias 'sasl-client-mechanism #[257 "\211\300H\207" [0] 3 (#$ . 1089)])#@65 Return the authorization name of CLIENT, a string.

(fn CLIENT)
(defalias 'sasl-client-name #[257 "\211\300H\207" [1] 3 (#$ . 1236)])#@59 Return the service name of CLIENT, a string.

(fn CLIENT)
(defalias 'sasl-client-service #[257 "\211\300H\207" [2] 3 (#$ . 1375)])#@58 Return the server name of CLIENT, a string.

(fn CLIENT)
(defalias 'sasl-client-server #[257 "\211\300H\207" [3] 3 (#$ . 1511)])#@116 Destructively set the properties of CLIENT.
The second argument PLIST is the new property list.

(fn CLIENT PLIST)
(defalias 'sasl-client-set-properties #[514 "\300\301H\"\207" [setplist 4] 5 (#$ . 1646)])#@69 Add the given PROPERTY/VALUE to CLIENT.

(fn CLIENT PROPERTY VALUE)
(defalias 'sasl-client-set-property #[771 "\300\301H#\207" [put 4] 7 (#$ . 1859)])#@67 Return the value of the PROPERTY of CLIENT.

(fn CLIENT PROPERTY)
(defalias 'sasl-client-property #[514 "\300HN\207" [4] 4 (#$ . 2018)])#@47 Return the properties of CLIENT.

(fn CLIENT)
(defalias 'sasl-client-properties #[257 "\300\301H!\207" [symbol-plist 4] 4 (#$ . 2162)])#@140 Make an authentication mechanism.
NAME is a IANA registered SASL mechanism name.
STEPS is list of continuation functions.

(fn NAME STEPS)
(defalias 'sasl-make-mechanism #[514 "\300\301\302\"\"\207" [vector mapcar #[257 "\300\301!!\211KM\210\207" [make-symbol symbol-name] 4 "\n\n(fn STEP)"]] 7 (#$ . 2305)])#@53 Return name of MECHANISM, a string.

(fn MECHANISM)
(defalias 'sasl-mechanism-name #[257 "\211\300H\207" [0] 3 (#$ . 2623)])#@84 Return the authentication steps of MECHANISM, a list of functions.

(fn MECHANISM)
(defalias 'sasl-mechanism-steps #[257 "\211\300H\207" [1] 3 (#$ . 2753)])#@82 Retrieve an appropriate mechanism object from MECHANISMS hints.

(fn MECHANISMS)
(defalias 'sasl-find-mechanism #[257 "\3022% \205$ @\235\203 \303\302\304@	\"A@\"\210A\211\204\n \3050\211\203- \306!\210\211\307N)\207" [sasl-mechanisms sasl-mechanism-alist done throw assoc nil require sasl-mechanism] 7 (#$ . 2915)])#@56 Return the data which STEP holds, a string.

(fn STEP)
(defalias 'sasl-step-data #[257 "\211\300H\207" [1] 3 (#$ . 3247)])#@44 Store DATA string to STEP.

(fn STEP DATA)
(defalias 'sasl-step-set-data #[514 "\300I\207" [1] 5 (#$ . 3375)])#@288 Evaluate the challenge and prepare an appropriate next response.
The data type of the value and 2nd argument STEP is nil or opaque
authentication step which holds the reference to the next action and
the current challenge.  At the first time STEP should be set to nil.

(fn CLIENT STEP)
(defalias 'sasl-next-step #[514 "\300\301!!\302!\203 \303H>A@\202 \211@\211\205$ \304\211\"\"\207" [sasl-mechanism-steps sasl-client-mechanism vectorp 0 vector] 9 (#$ . 3494)])
(defvar sasl-read-passphrase 'read-passwd)#@15 

(fn PROMPT)
(defalias 'sasl-read-passphrase #[257 "!\207" [sasl-read-passphrase] 3 (#$ . 4017)])#@98 Compute a data string which must be different each time.
It contain at least 64 bits of entropy.
(defalias 'sasl-unique-id #[0 "  P\207" [sasl-unique-id-function] 2 (#$ . 4123)])
(defvar sasl-unique-id-char nil)
(defalias 'sasl-unique-id-function #[0 "\203 T\301\246\202 \302\301!\303\304\305\"\306\307\310\"\307\311\246\312\"\\\313\"\306\314\315\"\307\311\245\312\"\\\313\"P\207" [sasl-unique-id-char 625 random time-convert nil integer sasl-unique-id-number-base36 ash -16 25 16 4 logand 65535] 7])#@16 

(fn NUM LEN)
(defalias 'sasl-unique-id-number-base36 #[514 "\211\300W\203\f \300X\202 \211\300U\203 \301\207\302\303\245S\"\304\305\303\246H!P\207" [0 "" sasl-unique-id-number-base36 36 char-to-string "zyxwvutsrqponmlkjihgfedcba9876543210"] 7 (#$ . 4640)])
(defconst sasl-plain-steps '(sasl-plain-response))#@20 

(fn CLIENT STEP)
(defalias 'sasl-plain-response #[514 "\300\301\302\303!\"!\304\305\"\303!\306\307\"\216\203) \230\204) \310\310\260\202. \310\310R)\207" [sasl-read-passphrase format "PLAIN passphrase for %s: " sasl-client-name sasl-client-property authenticator-name make-closure #[0 "\301\300\302\"\207" [V0 fillarray 0] 3] " "] 10 (#$ . 4961)])
(byte-code "\301\302\303\304\305\"#\210\306\302!\207" [sasl-plain-steps put sasl-plain sasl-mechanism sasl-make-mechanism "PLAIN" provide] 6)
(defconst sasl-login-steps '(ignore sasl-login-response-1 sasl-login-response-2))#@20 

(fn CLIENT STEP)
(defalias 'sasl-login-response-1 #[514 "\300!\207" [sasl-client-name] 4 (#$ . 5555)])#@20 

(fn CLIENT STEP)
(defalias 'sasl-login-response-2 #[514 "\300\301\302\303!\"!\207" [sasl-read-passphrase format "LOGIN passphrase for %s: " sasl-client-name] 7 (#$ . 5666)])
(byte-code "\301\302\303\304\305\"#\210\306\302!\207" [sasl-login-steps put sasl-login sasl-mechanism sasl-make-mechanism "LOGIN" provide] 6)
(defconst sasl-anonymous-steps '(ignore sasl-anonymous-response))#@20 

(fn CLIENT STEP)
(defalias 'sasl-anonymous-response #[514 "\300\301\"\206\n \302!\207" [sasl-client-property trace sasl-client-name] 5 (#$ . 6057)])
(byte-code "\301\302\303\304\305\"#\210\306\302!\210\306\307!\207" [sasl-anonymous-steps put sasl-anonymous sasl-mechanism sasl-make-mechanism "ANONYMOUS" provide sasl] 6)
