private static String sign ( String key , String data ) throws GuacamoleException { try { // Attempt to sign UTF-8 bytes of provided data Mac mac = Mac . getInstance ( SIGNATURE_ALGORITHM ) ; mac . init ( new SecretKeySpec ( key . getBytes ( "UTF-8" ) , SIGNATURE_ALGORITHM ) ) ; // Return signature as hex return BaseEncoding . base16 ( ) . lowerCase ( ) . encode ( mac . doFinal ( data . getBytes ( "UTF-8" ) ) ) ; } // Re-throw any errors which prevent signature catch ( InvalidKeyException e ) { throw new GuacamoleServerException ( "Signing key is invalid." , e ) ; } // Throw hard errors if standard pieces of Java are missing catch ( UnsupportedEncodingException e ) { throw new UnsupportedOperationException ( "Unexpected lack of UTF-8 support." , e ) ; } catch ( NoSuchAlgorithmException e ) { throw new UnsupportedOperationException ( "Unexpected lack of support " + "for required signature algorithm " + "\"" + SIGNATURE_ALGORITHM + "\"." , e ) ; } }
Signs the given arbitrary string data with the given key using the algorithm defined by SIGNATURE_ALGORITHM . Both the data and the key will be interpreted as UTF - 8 bytes .