In the cases that the available tags are not enough, the necessary can be programmed directly
in java as the following example shows:
1 Programming in java
Copy
<xsql-script name='security_java_sample'> <body> <!-- security.sign.make_keys --> <java.shell> <args> <arg name='algorithm'>RSA</arg> <arg name='private_key_file'><file name='c:\tmp\private_key' type='absolute' /></arg> <arg name='public_key_file'><file name='c:\tmp\public_key' type='absolute' /></arg> </args> <body> java.security.KeyPairGenerator kg = java.security.KeyPairGenerator.getInstance(algorithm); kg.initialize(1024); java.security.KeyPair pair = kg.generateKeyPair(); java.security.PrivateKey priKey = pair.getPrivate(); java.security.PublicKey pubKey = pair.getPublic(); java.io.FileOutputStream out = new java.io.FileOutputStream(private_key_file); byte[] ky = priKey.getEncoded(); out.write(ky); out.close(); out = new FileOutputStream(public_key_file); ky = pubKey.getEncoded(); out.write(ky); out.close(); </body> </java.shell> <!-- security.sign.hash --> <java.shell> <body> class InvalidHashException { public InvalidHashException() { } } </body> </java.shell> <set name='hash'> <java.shell> <args> <!-- protected static final int EXPECTED_HASH_FOR_512_KEY_LENGTH = 88; --> <!-- protected static final int EXPECTED_HASH_FOR_1024_KEY_LENGTH = 172; --> <arg name='hash_size'>172</arg> <arg name='algorithm'>SHA1withRSA</arg> <arg name='private_key_file'><file name='c:\tmp\private_key' type='absolute' /></arg> <arg name='public_key_file'><file name='c:\tmp\public_key' type='absolute' /></arg> <arg name='message'><string>2010-03-11;2010-03-11T11:27:08;FAC 001/9;1200.00;mYJEv4iGwLcnQbRD7dPs2uD1mX08XjXIKcGg3GEHmwMhmmGYusffIJjTdSITLX+uujTwzqmL/U5nvt6S9s8ijN3LwkJXsiEpt099e1MET/8y3+Y1bN+K+YPJQiVmlQS0fXETsOPo8SwUZdBALt0vTo1VhUZKejACcjEYJG6nI=</string></arg> </args> <body> deister.webstudio.core.xsql.script.functions.f_security.CertificationManager cm = new deister.webstudio.core.xsql.script.functions.f_security.CertificationManager(algorithm, hash_size); cm.setAutoVerifyHash(true); if (private_file != null) cm.readFromFilePrivateKey(private_key_file); else cm.setPrivateKey(CertificationManager.DEISTER_PRIVATE_KEY); if (public_file != null) cm.readFromFilePublicKey(public_key_file); else cm.setPublicKey(CertificationManager.DEISTER_PUBLIC_KEY); String hash = cm.getHashBase64(message); System.err.println(hash); System.err.println(cm.verifyHashBase64(message, hash)); return hash; </body> </java.shell> </set> <println/> <println>HASH:</println> <!-- XtzsT4ck44kvTx010rLblBXhANA1vX7HcD9XVjIxnl2+FLTOZAGbVOugc+BV0Ct8zKL6FpIKsc/SWEr/J4sB0PjIJCRzeWpWP9VLlo1U43YgOALHcxkdZanzNrAuWb4mLdd0FJqxevdoBYKyQTvNFlDNm7fieIZqp2P6YF6YGyM= --> <println><hash/></println> <println/> <!-- security.sign.verify --> <set name='verify'> <java.shell> <args> <!-- protected static final int EXPECTED_HASH_FOR_512_KEY_LENGTH = 88; --> <!-- protected static final int EXPECTED_HASH_FOR_1024_KEY_LENGTH = 172; --> <arg name='hash_size'>172</arg> <arg name='algorithm'>SHA1withRSA</arg> <arg name='private_key_file'><file name='c:\tmp\private_key' type='absolute' /></arg> <arg name='public_key_file'><file name='c:\tmp\public_key' type='absolute' /></arg> <arg name='message'><string>2010-03-11;2010-03-11T11:27:08;FAC 001/9;1200.00;mYJEv4iGwLcnQbRD7dPs2uD1mX08XjXIKcGg3GEHmwMhmmGYusffIJjTdSITLX+uujTwzqmL/U5nvt6S9s8ijN3LwkJXsiEpt099e1MET/8y3+Y1bN+K+YPJQiVmlQS0fXETsOPo8SwUZdBALt0vTo1VhUZKejACcjEYJG6nI=</string></arg> <arg name='hash'>XtzsT4ck44kvTx010rLblBXhANA1vX7HcD9XVjIxnl2+FLTOZAGbVOugc+BV0Ct8zKL6FpIKsc/SWEr/J4sB0PjIJCRzeWpWP9VLlo1U43YgOALHcxkdZanzNrAuWb4mLdd0FJqxevdoBYKyQTvNFlDNm7fieIZqp2P6YF6YGyM=</arg> </args> <body> deister.webstudio.core.xsql.script.functions.f_security.CertificationManager cm = new deister.webstudio.core.xsql.script.functions.f_security.CertificationManager(algorithm, hash_size); cm.setAutoVerifyHash(true); if (private_file != null) cm.readFromFilePrivateKey(private_key_file); else cm.setPrivateKey(CertificationManager.DEISTER_PRIVATE_KEY); if (public_file != null) cm.readFromFilePublicKey(public_key_file); else cm.setPublicKey(CertificationManager.DEISTER_PUBLIC_KEY); return new Boolean(cm.verifyHashBase64(message, hash)); </body> </java.shell> </set> <println/> <println>VERIFY hash:</println> <println><verify/></println> <println/> </body> </xsql-script>