storing SecretKey in keystore  
Author Message
jimgardener





PostPosted: 2008-6-19 22:08:00 Top

java-programmer, storing SecretKey in keystore hi
i created a keystore as below

public static void makeKeyStore(){
try{
KeyStore ks=KeyStore.getInstance(KeyStore.getDefaultType());

ks.load(null,"".toCharArray());
FileOutputStream ksout=new FileOutputStream("myks.keystore");
char[] password = new char[] {'m','y','n','a','m','e'};
ks.store(ksout, password);
Arrays. fill(password, '\u0000' ) ;

}
catch(Exception e){
e.printStackTrace();
}

}

then i tried to store a generated key using an alias

public static void putEntriestoKS(){
try{
KeyStore ks=KeyStore.getInstance(KeyStore.getDefaultType());;
FileInputStream fin=new FileInputStream("myks.keystore");
char[] password = new char[] {'m','y','n','a','m','e'};
ks.load(fin,password);
FileOutputStream fout=new FileOutputStream("myks.keystore");
KeyGenerator kg=KeyGenerator.getInstance("AES");
SecretKey skey=kg.generateKey();
ks.setKeyEntry("mysecretkey", skey, password,null);
ks.store(fout,password);
Arrays.fill(password,'\u0000');

}
catch(Exception e){
e.printStackTrace();
}
}



when i run this i am getting a java.security.KeyStoreException: Cannot
store non-PrivateKeys
How then can i store SecretKey ?Do i have to use another provider?can
someone explain?
thanks
Jim
 
Roedy Green





PostPosted: 2008-6-21 0:04:00 Top

java-programmer >> storing SecretKey in keystore On Thu, 19 Jun 2008 07:08:12 -0700 (PDT), jimgardener
<email***@***.com> wrote, quoted or indirectly quoted someone who
said :

>when i run this i am getting a java.security.KeyStoreException: Cannot
>store non-PrivateKeys
>How then can i store SecretKey ?Do i have to use another provider?can
>someone explain?
>thanks

You can extract the raw key bytes and store that. However it is then
totally unprotected. When you store things in a keystore, they have an
additional layer of encryption.

Just guessing here, but perhaps the problem surrounds providing a
password for the keystore file.

You might experiment creating the keystore with keytool and adding
your key to it rather than trying to create a keystore out of thin
air.

see http://mindprod.com/jgloss/keytool.html
--

Roedy Green Canadian Mind Products
The Java Glossary
http://mindprod.com
 
subhasish.das





PostPosted: 2008-6-25 21:31:00 Top

java-programmer >> storing SecretKey in keystore On Jun 20, 9:03爌m, Roedy Green <email***@***.com>
wrote:
> On Thu, 19 Jun 2008 07:08:12 -0700 (PDT), jimgardener
> <email***@***.com> wrote, quoted or indirectly quoted someone who
> said :
>
> >when i run this i am getting a java.security.KeyStoreException: Cannot
> >store non-PrivateKeys
> >How then can 爄 store SecretKey ?Do i have to use another provider?can
> >someone explain?
> >thanks
>
> You can extract the raw key bytes and store that. 燞owever it is then
> totally unprotected. When you store things in a keystore, they have an
> additional layer of encryption.
>
> Just guessing here, but perhaps the problem surrounds providing a
> password for the keystore file.
>
> You might experiment creating the keystore with keytool and adding
> your key to it rather than trying to create a keystore out of thin
> air.
>
> seehttp://mindprod.com/jgloss/keytool.html
> --
>
> Roedy Green Canadian Mind Products
> The Java Glossaryhttp://mindprod.com

This error normally comes up when you have not specified the keystore
type as JCEKS. The default value is JKS but Secret Keys require JCEKS
so you have to explicitly specify that.

-- SD