@Override
public UserSession startSession(Credentials credentials) throws JasDBStorageException {
User user = userManager.authenticate(credentials);
String sessionId = UUID.randomUUID().toString();
String token = UUID.randomUUID().toString();
CryptoEngine userEncryptionEngine = CryptoFactory.getEngine(user.getEncryptionEngine());
String encryptedContentKey = user.getEncryptedContentKey();
String contentKey = userEncryptionEngine.decrypt(user.getPasswordSalt(), credentials.getPassword(), encryptedContentKey);
encryptedContentKey = userEncryptionEngine.encrypt(user.getPasswordSalt(), token, contentKey);
UserSession session = new UserSessionImpl(sessionId, token, encryptedContentKey, user);
userManager.authorize(session, "/", AccessMode.CONNECT);
secureUserSessionMap.put(sessionId, new SecureUserSession(session));
return session;
}