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 credential challenge | openssl sha256 -binary | base64 > cred_param 12ba9bdd8bSchristos * $ echo relying party >> cred_param 13ba9bdd8bSchristos * $ echo user name >> cred_param 14ba9bdd8bSchristos * $ dd if=/dev/urandom bs=1 count=32 | base64 >> cred_param 15ba9bdd8bSchristos * $ fido2-cred -M -i cred_param /dev/hidraw5 | fido2-cred -V -o cred 16ba9bdd8bSchristos */ 17ba9bdd8bSchristos 18ba9bdd8bSchristos #include <fido.h> 19ba9bdd8bSchristos #include <stdio.h> 20ba9bdd8bSchristos #include <stdlib.h> 21ba9bdd8bSchristos #include <string.h> 22ba9bdd8bSchristos 23ba9bdd8bSchristos #include "../openbsd-compat/openbsd-compat.h" 24ba9bdd8bSchristos #include "extern.h" 25ba9bdd8bSchristos 26ba9bdd8bSchristos void usage(void)27ba9bdd8bSchristosusage(void) 28ba9bdd8bSchristos { 29ba9bdd8bSchristos fprintf(stderr, 3095dbdf32Schristos "usage: fido2-cred -M [-bdhqruv] [-c cred_protect] [-i input_file] [-o output_file] device [type]\n" 311fc1e710Schristos " fido2-cred -V [-dhv] [-c cred_protect] [-i input_file] [-o output_file] [type]\n" 32ba9bdd8bSchristos ); 33ba9bdd8bSchristos 34ba9bdd8bSchristos exit(1); 35ba9bdd8bSchristos } 36ba9bdd8bSchristos 37ba9bdd8bSchristos int main(int argc,char ** argv)38ba9bdd8bSchristosmain(int argc, char **argv) 39ba9bdd8bSchristos { 40ba9bdd8bSchristos if (argc < 2 || strlen(argv[1]) != 2 || argv[1][0] != '-') 41ba9bdd8bSchristos usage(); 42ba9bdd8bSchristos 43ba9bdd8bSchristos switch (argv[1][1]) { 44ba9bdd8bSchristos case 'M': 45ba9bdd8bSchristos return (cred_make(--argc, ++argv)); 46ba9bdd8bSchristos case 'V': 47ba9bdd8bSchristos return (cred_verify(--argc, ++argv)); 48ba9bdd8bSchristos } 49ba9bdd8bSchristos 50ba9bdd8bSchristos usage(); 51ba9bdd8bSchristos 52ba9bdd8bSchristos /* NOTREACHED */ 53ba9bdd8bSchristos } 54