;ELC   
;;; Compiled by root@tweety.build.redhat.com on Tue Dec 14 03:50:02 2004
;;; from file /usr/src/build/496412-noarch/BUILD/flim-1.14.7/sasl-scram.el
;;; in Emacs version 21.3.1
;;; with bytecomp version 2.85.4.1
;;; with all optimizations.

;;; This file uses dynamic docstrings, first added in Emacs 19.29.
(if (and (boundp 'emacs-version)
	 (< (aref emacs-version (1- (length emacs-version))) ?A)
	 (or (and (boundp 'epoch::version) epoch::version)
	     (string-lessp emacs-version "19.29")))
    (error "`sasl-scram.el' was compiled for Emacs 19.29 or later"))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


(byte-code "\304\305!\210\304\306!\210\302B\307\302!\204 	\303B\310\304\207" [current-load-list sasl-unique-id-function sasl-scram-md5-unique-id-function sasl-scram-md5-steps require sasl hmac-md5 boundp (ignore sasl-scram-md5-response-1 sasl-scram-md5-response-2 sasl-scram-md5-authenticate-server)] 2)
(defalias 'sasl-scram-md5-security-info-no-security-layer '(macro . #[(security-info) "\301\302\303\304BB\305BB\306BB\207" [security-info eq logand aref (0) (1) (1)] 5]))
(defalias 'sasl-scram-md5-security-info-integrity-protection-layer '(macro . #[(security-info) "\301\302\303\304BB\305BB\306BB\207" [security-info eq logand aref (0) (2) (2)] 5]))
(defalias 'sasl-scram-md5-security-info-buffer-size '(macro . #[(security-info) "\301\302DC\303BB\207" [security-info let ssecinfo ((+ (lsh (aref ssecinfo 1) 16) (lsh (aref ssecinfo 2) 8) (aref ssecinfo 3)))] 3]))
(defalias 'sasl-scram-md5-make-security-info #[(integrity-protection-layer no-security-layer buffer-size) "\304\305\306\"	\203 \306\307I\210\n\203 \306\310\306H\311\"I\210\202C \311\312\313\312\314\315\"\"\316\"I\210\307\312\313\312\314\317\"\"\320\"I\210\321\313\314\"I\210)\207" [csecinfo integrity-protection-layer no-security-layer buffer-size make-string 4 0 2 logior 1 lsh logand 255 16 -16 8 -8 3] 8])
(defalias 'sasl-scram-md5-make-unique-nonce #[nil "\303 \304\216\305\n\306\307 \310\260+\207" [sasl-scram-md5-unique-id-function sasl-unique-id-function id sasl-unique-id ((fillarray id 0)) "<" "@" system-name ">"] 5])
(defalias 'sasl-scram-md5-xor-string #[(str1 str2) "G\305	\306\"\306\306	W\203# \n\307H\fH\"I\210T\211\202 \n+\207" [str1 len dst pos str2 make-string 0 logxor] 7])
#@138 Make an initial client message from AUTHENTICATE-ID and AUTHORIZE-ID.
If AUTHORIZE-ID is the same as AUTHENTICATE-ID, it may be omitted.
(defalias 'sasl-scram-md5-make-client-msg-1 #[(authenticate-id &optional authorize-id nonce) "\303	\303\n\206\n \304 \260\207" [authorize-id authenticate-id nonce " " sasl-scram-md5-make-unique-nonce] 5 (#$ . 2343)])
#@74 Parse SERVER-MSG-1 and return a list of (SALT SECURITY-INFO SERVICE-ID).
(defalias 'sasl-scram-md5-parse-server-msg-1 #[(server-msg-1) "G\301V\203! \302\303\304#\304=\203! \305\306O\306\304O\304\305\225SOE\207\307\310\311\"!\207" [server-msg-1 16 string-match "[^@]+@[^ ]+ " 12 0 8 sasl-error format "Unexpected response: %s"] 5 (#$ . 2705)])
(defalias 'sasl-scram-md5-server-salt #[(server-msg-1) "\301!@\207" [server-msg-1 sasl-scram-md5-parse-server-msg-1] 2])
(defalias 'sasl-scram-md5-make-salted-pass #[(passphrase salt) "\302	\"\207" [salt passphrase hmac-md5] 3])
(defalias 'sasl-scram-md5-make-client-key #[(salted-pass) "\301!\207" [salted-pass md5-binary] 2])
(defalias 'sasl-scram-md5-make-client-verifier #[(client-key) "\301!\207" [client-key md5-binary] 2])
(defalias 'sasl-scram-md5-make-shared-key #[(server-msg-1 client-msg-1 client-security-info client-verifier) "\305\306\216\307	\nQ\211\f\"*\207" [buff server-msg-1 client-msg-1 client-security-info client-verifier nil ((fillarray buff 0)) hmac-md5] 4])
(defalias 'sasl-scram-md5-make-client-proof #[(client-key shared-key) "\302	\"\207" [client-key shared-key sasl-scram-md5-xor-string] 3])
(defalias 'sasl-scram-md5-make-client-msg-2 #[(server-msg-1 client-msg-1 salted-pass client-security-info) "\306\211\211\211\307\f!\310\n!\311\216\312$)\313\216\314\n	\")\315\216P-\207" [client-verifier shared-key client-key client-proof salted-pass server-msg-1 nil sasl-scram-md5-make-client-key sasl-scram-md5-make-client-verifier ((fillarray client-verifier 0)) sasl-scram-md5-make-shared-key ((byte-code "\302\303\"\210\302	\303\"\207" [client-key shared-key fillarray 0] 3)) sasl-scram-md5-make-client-proof ((fillarray client-proof 0)) client-msg-1 client-security-info] 5])
(defalias 'sasl-scram-md5-make-server-msg-2 #[(server-msg-1 client-msg-1 client-security-info salt salted-pass) "\306	\"\307\310\216\306\f	Q\211\"+\207" [salt salted-pass buff server-salt client-msg-1 server-msg-1 hmac-md5 nil ((byte-code "\302\303\"\210\302	\303\"\207" [server-salt buff fillarray 0] 3)) client-security-info] 4])
(defalias 'sasl-scram-md5-response-1 #[(client step) "\301\302\303\304!\305\306\"\305\307\"##\207" [client sasl-client-set-property client-msg-1 sasl-scram-md5-make-client-msg-1 sasl-client-name sasl-client-property authorize-id nonce] 9])
(defalias 'sasl-scram-md5-response-2 #[(client step) "\304\302\305	!#\304\303\306\307\310\311\312!\"!\313\n!\"#\304\314\315\n\316\317\"\316\320\"\2060 \321\322\323\324#$#*\207" [client step server-msg-1 salted-pass sasl-client-set-property sasl-step-data sasl-scram-md5-make-salted-pass sasl-read-passphrase format "SCRAM-MD5 passphrase for %s: " sasl-client-name sasl-scram-md5-server-salt client-msg-2 sasl-scram-md5-make-client-msg-2 sasl-client-property client-msg-1 client-security-info sasl-scram-md5-make-security-info nil t 0] 11])
(defalias 'sasl-scram-md5-authenticate-server #[(client step) "\304\303\305	!#\306\302\"\211\307\n\306\310\"\306\311\"\206  \312\313\314\315#\316\n!\306\317\"%\230\2030 \320\2023 \321\322!*\207" [client step server-msg-1 server-msg-2 sasl-client-set-property sasl-step-data sasl-client-property sasl-scram-md5-make-server-msg-2 client-msg-1 client-security-info sasl-scram-md5-make-security-info nil t 0 sasl-scram-md5-server-salt salted-pass " " sasl-error "SCRAM-MD5:  authenticate server failed."] 10])
(byte-code "\301\302\303\304\305\"#\210\306\302!\207" [sasl-scram-md5-steps put sasl-scram sasl-mechanism sasl-make-mechanism "SCRAM-MD5" provide] 6)
