1ba9bdd8bSchristos /* 2ba9bdd8bSchristos * Copyright (c) 2018 Yubico AB. All rights reserved. 3ba9bdd8bSchristos * Use of this source code is governed by a BSD-style 4ba9bdd8bSchristos * license that can be found in the LICENSE file. 5*2d40c451Schristos * SPDX-License-Identifier: BSD-2-Clause 6ba9bdd8bSchristos */ 7ba9bdd8bSchristos 8ba9bdd8bSchristos /* 9ba9bdd8bSchristos * Example usage: 10ba9bdd8bSchristos * 11ba9bdd8bSchristos * $ echo assertion challenge | openssl sha256 -binary | base64 > assert_param 12ba9bdd8bSchristos * $ echo relying party >> assert_param 13ba9bdd8bSchristos * $ head -1 cred >> assert_param # credential id 14ba9bdd8bSchristos * $ tail -n +2 cred > pubkey # credential pubkey 15ba9bdd8bSchristos * $ fido2-assert -G -i assert_param /dev/hidraw5 | fido2-assert -V pubkey rs256 16ba9bdd8bSchristos * 17ba9bdd8bSchristos * See blurb in fido2-cred.c on how to obtain cred. 18ba9bdd8bSchristos */ 19ba9bdd8bSchristos 20ba9bdd8bSchristos #include <fido.h> 21ba9bdd8bSchristos #include <stdio.h> 22ba9bdd8bSchristos #include <stdlib.h> 23ba9bdd8bSchristos #include <string.h> 24ba9bdd8bSchristos 25ba9bdd8bSchristos #include "../openbsd-compat/openbsd-compat.h" 26ba9bdd8bSchristos #include "extern.h" 27ba9bdd8bSchristos 28ba9bdd8bSchristos void usage(void)29ba9bdd8bSchristosusage(void) 30ba9bdd8bSchristos { 31ba9bdd8bSchristos fprintf(stderr, 3295dbdf32Schristos "usage: fido2-assert -G [-bdhpruv] [-t option] [-i input_file] [-o output_file] device\n" 33ba9bdd8bSchristos " fido2-assert -V [-dhpv] [-i input_file] key_file [type]\n" 34ba9bdd8bSchristos ); 35ba9bdd8bSchristos 36ba9bdd8bSchristos exit(1); 37ba9bdd8bSchristos } 38ba9bdd8bSchristos 39ba9bdd8bSchristos int main(int argc,char ** argv)40ba9bdd8bSchristosmain(int argc, char **argv) 41ba9bdd8bSchristos { 42ba9bdd8bSchristos if (argc < 2 || strlen(argv[1]) != 2 || argv[1][0] != '-') 43ba9bdd8bSchristos usage(); 44ba9bdd8bSchristos 45ba9bdd8bSchristos switch (argv[1][1]) { 46ba9bdd8bSchristos case 'G': 47ba9bdd8bSchristos return (assert_get(--argc, ++argv)); 48ba9bdd8bSchristos case 'V': 49ba9bdd8bSchristos return (assert_verify(--argc, ++argv)); 50ba9bdd8bSchristos } 51ba9bdd8bSchristos 52ba9bdd8bSchristos usage(); 53ba9bdd8bSchristos 54ba9bdd8bSchristos /* NOTREACHED */ 55ba9bdd8bSchristos } 56