class JavaKeyStore extends AbstractKeyStore implements KeyStore {

  @Override
  public Signer load(final Authentication authentication) {
    try {
      assertNotNull(authentication, "Authentication must not null");
      logger.debug("Load with authentication: {}", authentication);

      java.security.Key rawKey;
      synchronized (lock) {
        if (!isExists(authentication)) {
          throw new InvalidAuthenticationException("Invalid authentication");
        }

        rawKey = loadRawKey(authentication);
      }

      final AergoKey aergoKey = convertPrivateKey(rawKey);
      logger.trace("Loaded key: {}", aergoKey);
      return aergoKey;
    } catch (Exception e) {
      throw converter.convert(e);
    }
  }

  public  JavaKeyStore(final java.security.KeyStore delegate);
  @Deprecated public  JavaKeyStore(final String type);
  @Deprecated public  JavaKeyStore(final String type, final java.security.Provider provider);
  @Deprecated public  JavaKeyStore(final String type, final InputStream inputStream, final char[] password);
  public  JavaKeyStore(final String type, final java.security.Provider provider,
      final InputStream inputStream, final char[] password);

}