[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Google
  Web www.spinics.net

Re: [GNU Crypto] Passwords Immutable?



See inline.

Casey Marshall wrote:
> 
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> >>>>> "Bryan" == Bryan Hoover <bhoover@xxxxxxxx> writes:
> 
> Bryan> So there may be a couple of minor implementation questions:
> 
> Bryan> 1.  Should Password make a copy?
> 
> I think it should in the constructor, and probably a (byte[],int,int)
> constructor should be added.
> 
> Bryan> 2.  Should SRPClient this.password be char[] or Password?
> 
> I'd say Password, because if Password.destroy() is called we wouldn't
> want a variable to change on us without notice.
> 
> Bryan> Finally, I wasn't sure whether to throw an exception on
> Bryan> password access attempts subsequent to calling destroy().  I do
> Bryan> not.
> 
> Probably an `IllegalStateException' is appropriate when getPassword is
> called on a destroyed object. It's arguably better then letting code
> use erased passwords, and failing in difficult-to-understand ways.
> 
> Bryan> Sorry so wordy.
> 
> Bryan> Feel free to use or not -- though I hope you will.  I can also
> Bryan> add the code to pivot (and whatever else) relative to which
> Bryan> password property use if you want to go with the additional
> Bryan> property option for compatibility.  I had fun doing it, and
> Bryan> will use it in my compile.
> 
> We'd need copyright assignment in order to include these patches. But
> this is a really simple thing to do, so I can implement this myself.
> That is, of course, unless you have a desire to contribute more ;)

Password.java, and patches attached.

I noticed some editor parsing irregularity with SaslConnection.java
probably related to binary/ascii, cr/lf system differences.  So there
are ascii, and binary versions of patches.  On my Freebsd account, I was
okay using the binary patch with SaslConnection.java, and the ascii
patch with SRPClient.java.  Do make back-ups before applying.

For symmetry, I guess, I added a char[] constructor with indexes, and a
byte[] constructor without, as well as the byte[] with, and char[]
without ones.  

A byte[] getBytes() function was also added.

Tested fine with the sourceforge project I'm interfacing it with.

I'll start the copyright assignment process right away.

Bryan

> - --
> Casey Marshall || csm@xxxxxxx
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.2.3 (GNU/Linux)
> Comment: Processed by Mailcrypt 3.5.7 <http://mailcrypt.sourceforge.net/>
> 
> iD8DBQFAfbIrgAuWMgRGsWsRAjvEAJoD/i9gXcuJJhR3ROOOtwAJiTiwVACdHDLy
> TS50QYsRlWhWcKIKQVgF4so=
> =L6mt
> -----END PGP SIGNATURE-----

-- 
And people flock around the poet and say:  'Sing again soon' - that is,
'May new sufferings torment your soul but your lips be fashioned as
before, for the cry would only frighten us, but the music, that is
blissful.' - (Soren Kierkegaard - Either/Or)

http://www.wecs.com/content.htm

This signature file is generated by Pick-a-Tag !
Written by Jeroen van Vaarsel
http://www.google.com/search?hl=en&ie=ISO-8859-1&q=pick-a-tag

Attachment: Password.java
Description: java/

78a79
> import javax.security.auth.DestroyFailedException;
113c114
<    private char[] password; // the authentication credentials
---
>    private Password password; // the authentication credentials
197a199,206
> 
>       try {
>         password.destroy();
>       }
>       catch(DestroyFailedException e) {
>         throw new RuntimeException("resetMechanism()", e);
>       }
> 
446c455
<       if (DEBUG && debuglevel > 6) debug(TRACE, "Password: \""+new String(password)+"\"");
---
>       if (DEBUG && debuglevel > 6) debug(TRACE, "Password: \""+new String(password.getPassword())+"\"");
522,526c531
<          try {
<             pBytes = new String(password).getBytes("US-ASCII");
<          } catch (UnsupportedEncodingException x) {
<             throw new SaslException("sendPublicKey()", x);
<          }
---
>          pBytes = password.getBytes();
659c664
<             password = pwdCB.getPassword();
---
>              password = new Password(pwdCB.getPassword());
676c681
<                this.password = ((String) properties.get(Registry.SASL_PASSWORD)).toCharArray();
---
>                password = new Password(((Password) properties.get(Registry.SASL_PASSWORD)).getPassword());
680c685
<                this.password = pwdCB.getPassword();
---
>                password = new Password(pwdCB.getPassword());
51a52
> import gnu.crypto.sasl.srp.Password;
106c107
<          properties.put(Registry.SASL_PASSWORD, userInfo.substring(ndx+1));
---
>          properties.put(Registry.SASL_PASSWORD, new Password(userInfo.substring(ndx+1).toCharArray()));

Attachment: SRPClient.patch
Description: application/unknown-content-type-patch_auto_file

Attachment: SaslConnection.patch
Description: application/unknown-content-type-patch_auto_file

_______________________________________________
gnu-crypto-discuss mailing list
gnu-crypto-discuss@xxxxxxx
http://mail.nongnu.org/mailman/listinfo/gnu-crypto-discuss

[Home]     [Gnu Classpath]     [Linux Kernel]     [Linux Cryptography]     [Fedora]     [Fedora Directory]     [Red Hat Development]     [Red Hat 9 Bible]     [Fedora Bible]     [Red Hat 9]     [Network Security Reading]

  Powered by Linux