Subject: [sasl] SCRAM-SHA-1 support in GNU SASL

From: Simon Josefsson <[email-masked]>
Date: Fri, 11 Sep 2009 13:53:05 +0200

FYI, there is SCRAM-SHA-1 support in GNU SASL; see post to help-gsasl
below.  It also includes some example (but valid) SCRAM sessions.  If
someone can confirm the test vectors, that would give some confidence in
my implementation.

/Simon

Subject: SCRAM-SHA-1 support in GSASL
From: Simon Josefsson <[email-masked]>
To: Lothar May <[email-masked]>
Cc: [email-masked]
Date: Fri, 11 Sep 2009 12:49:45 +0200
Newsgroups: gmane.comp.gnu.gsasl.general
List-Id: "Discussion list for GNU Simple Authentication and Security Layer \(SASL\)" <help-gsasl.gnu.org>

Lothar, all,

You may be pleased to find that I have implemented SCRAM-SHA-1, it is
available from today in the daily snapshots:

http://daily.josefsson.org/gsasl/

You need to build it passing --enable-scram-sha1 to ./configure since
the SCRAM specification is not final and the implementation is likely to
change.

There is a self-test tests/scram.c that works as an example on how to
use it, running it will print some sample SCRAM sessions (see below).
Code available:

http://git.savannah.gnu.org/cgit/gsasl.git/tree/tests/scram.c

There is no support for SCRAM-SHA-1-PLUS (yet).

/Simon

jas@mocca:~/src/gsasl master$ tests/scram
Iteration 0 ...
C: n,,n=Ali Baba,r=XowAM2OEDbM7LxMN0WojemB+
S: r=XowAM2OEDbM7LxMN0WojemB+IWB4RKVd4HwRmTVFfQ,s=VyWCCWq3dhn/VPco,i=4096
C: c=biws,r=XowAM2OEDbM7LxMN0WojemB+IWB4RKVd4HwRmTVFfQ,p=427shZ6h3tzFUGpggz/yzadnPww=
S: v=oGrK1GQcwFChsaIl/gMjxzYWQdc=
C: 

Iteration 1 ...
C: n,a=joe,n=Ali Baba,r=IG6Zyu61j8zqTk8qhH6E5BdJ
S: r=IG6Zyu61j8zqTk8qhH6E5BdJCs3QWocl/DiqL7Gfx/,s=nicbk5A2R1KC66v4,i=4096
C: c=bixhPWpvZSw=,r=IG6Zyu61j8zqTk8qhH6E5BdJCs3QWocl/DiqL7Gfx/,p=MSH70RnA7ymMkHTTooDvjXIR9HI=
S: v=7BOjPSpr17I0pmOyCi+D/sybJdU=
C: 

Iteration 2 ...
C: n,,n=Ali Baba,r=dbfFFpcpVjkE03ZaoMXfjhnW
S: r=dbfFFpcpVjkE03ZaoMXfjhnW12CRfr6awnPlmTyj61,s=ZCSbI014mOCvZoi2,i=1234
C: c=biws,r=dbfFFpcpVjkE03ZaoMXfjhnW12CRfr6awnPlmTyj61,p=CKx3eyKLwgEcVscc+lpYRCymPtU=
S: v=UkOOnYsaBkivO32+qHtQBBg9t6c=
C: 

Iteration 3 ...
C: n,a=joe,n=Ali Baba,r=ugUrzi8fKYeOTFjufWF8mC9m
S: r=ugUrzi8fKYeOTFjufWF8mC9mxmiaX0gDIop0Xzd6cc,s=0kpwcLaaPCPYpnud,i=1234
C: c=bixhPWpvZSw=,r=ugUrzi8fKYeOTFjufWF8mC9mxmiaX0gDIop0Xzd6cc,p=PY7LhWOhy4C3T3XHesEYK0NjP0k=
S: v=4xF9kIi3Qs1MaKuOEWGdnIIxE+M=
C: 

Iteration 4 ...
C: n,,n=Ali Baba,r=MtRsCf40g9IIHrA6wDO4iInY
S: r=MtRsCf40g9IIHrA6wDO4iInY9Ppzi7tjLAT9ekT4O5,s=c2FsdA==,i=4096
C: c=biws,r=MtRsCf40g9IIHrA6wDO4iInY9Ppzi7tjLAT9ekT4O5,p=tQCaPvoMCADIq66MOlljuMY46ac=
S: v=qh+bqEd0o54HXvYyysjfTeuMqQw=
C: 

Iteration 5 ...
C: n,a=joe,n=Ali Baba,r=kWCEkQhLKNGdQ78EM4GE5ju6
S: r=kWCEkQhLKNGdQ78EM4GE5ju65N7Qe4TtzypCIMpk6U,s=c2FsdA==,i=4096
C: c=bixhPWpvZSw=,r=kWCEkQhLKNGdQ78EM4GE5ju65N7Qe4TtzypCIMpk6U,p=hEQGSfYc4BdLf/jfjaHKbUnJq8U=
S: v=+kj4EpOyIJFUvgjbM0ARhUVJums=
C: 

Iteration 6 ...
C: n,,n=Ali Baba,r=YzOB6DUF69qjl1IPH21mVyxi
S: r=YzOB6DUF69qjl1IPH21mVyxiGT3sXNFpvTwvcB/bek,s=c2FsdA==,i=1234
C: c=biws,r=YzOB6DUF69qjl1IPH21mVyxiGT3sXNFpvTwvcB/bek,p=Jx086lNS5x06SZaksofd7b4v8r0=
S: v=9NkNh2twaqM2rG0LAavh3WkQm/s=
C: 

Iteration 7 ...
C: n,a=joe,n=Ali Baba,r=gmfJbo7/qMey5nsZWss8DOo0
S: r=gmfJbo7/qMey5nsZWss8DOo0O91OjhlFnsJDkViNBk,s=c2FsdA==,i=1234
C: c=bixhPWpvZSw=,r=gmfJbo7/qMey5nsZWss8DOo0O91OjhlFnsJDkViNBk,p=vQGJzK7OGhCuf2i92qzYC4BorXw=
S: v=dUCWcAGj7CLLG+FgCoOZn15Wlpc=
C: 

Self test `tests/scram' finished with 0 errors
jas@mocca:~/src/gsasl master$