code: public List<KSISignature> sign() throws KSIException {
          TreeNode rootNode = treeBuilder.build();
          logger.debug("Root node calculated. {}(level={})", new DataHash(rootNode.getValue()), rootNode.getLevel());
          KSISignature rootNodeSignature = signRootNode(rootNode);
          if (leafs.size() == 1 && !leafs.get(0).hasMetadata()) {
              return Collections.singletonList(rootNodeSignature);
          }
          List<KSISignature> signatures = new LinkedList<>();
          AggregationHashChainBuilder chainBuilder = new AggregationHashChainBuilder();
          for (ImprintNode leaf : leafs) {
              signatures.add(signatureFactory.createSignature(rootNodeSignature, chainBuilder.build(leaf), new DataHash(leaf.getValue())));
          }
          return signatures;
      }
docs: Creates a block of multiple signatures.
  
  @return Multiple signatures, according to number of input hashes.
  
  @throws KSIException