def argument_parser():
    """
    process the command line arguments.
    :returns: an ArgumentParser object.
    """
    parser = argparse.ArgumentParser(
        description='openssl wrapper')
    parser.add_argument('--ca', action='store_true', default=False,
                        dest='is_ca',
                        help='Is it a Certificate Authority certificate?')
    parser.add_argument('-f', '--filename', type=str, default='localhost',
                        help='File name prefix of the key and certificate.')
    parser.add_argument('-d', '--dirname', type=str, default=DEFAULT_CERTS_DIR,
                        help='Destination directory name.')
    parser.add_argument('--days', type=int, default=500,
                        help='Duration of certificate.')
    parser.add_argument('--ip', nargs='*', default=['127.0.0.1'],
                        help='IP address.')
    parser.add_argument('--dns', nargs='*', default=['localhost'],
                        help='DNS')
    parser.add_argument('--silent', action='store_true',
                        help='should the output from the shell be silenced?')
    return parser