added software implementation of sha2