kopia lustrzana https://github.com/solokeys/solo1
				
				
				
			
		
			
				
	
	
		
			64 wiersze
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
			
		
		
	
	
			64 wiersze
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
#ifndef _APDU_H_
 | 
						|
#define _APDU_H_
 | 
						|
 | 
						|
#include <stdint.h>
 | 
						|
#include <stdbool.h>
 | 
						|
#include <stddef.h>
 | 
						|
 | 
						|
typedef struct
 | 
						|
{
 | 
						|
    uint8_t cla;
 | 
						|
    uint8_t ins;
 | 
						|
    uint8_t p1;
 | 
						|
    uint8_t p2;
 | 
						|
    uint8_t lc;
 | 
						|
} __attribute__((packed)) APDU_HEADER;
 | 
						|
 | 
						|
typedef struct
 | 
						|
{
 | 
						|
    uint8_t cla;
 | 
						|
    uint8_t ins;
 | 
						|
    uint8_t p1;
 | 
						|
    uint8_t p2;
 | 
						|
    uint8_t lc[3];
 | 
						|
} __attribute__((packed)) EXT_APDU_HEADER;
 | 
						|
 | 
						|
typedef struct
 | 
						|
{
 | 
						|
    uint8_t cla;
 | 
						|
    uint8_t ins;
 | 
						|
    uint8_t p1;
 | 
						|
    uint8_t p2;
 | 
						|
    uint16_t lc;
 | 
						|
    uint8_t *data;
 | 
						|
    uint32_t le;
 | 
						|
    bool extended_apdu;
 | 
						|
    uint8_t case_type;
 | 
						|
} __attribute__((packed)) APDU_STRUCT;
 | 
						|
 | 
						|
extern uint16_t apdu_decode(uint8_t *data, size_t len, APDU_STRUCT *apdu);
 | 
						|
 | 
						|
#define APDU_FIDO_U2F_REGISTER        0x01
 | 
						|
#define APDU_FIDO_U2F_AUTHENTICATE    0x02
 | 
						|
#define APDU_FIDO_U2F_VERSION         0x03
 | 
						|
#define APDU_FIDO_NFCCTAP_MSG         0x10
 | 
						|
#define APDU_FIDO_U2F_VENDOR_FIRST    0xc0    // First vendor defined command
 | 
						|
#define APDU_FIDO_U2F_VENDOR_LAST     0xff    // Last vendor defined command
 | 
						|
#define APDU_SOLO_RESET               0xee
 | 
						|
 | 
						|
#define APDU_INS_SELECT               0xA4
 | 
						|
#define APDU_INS_READ_BINARY          0xB0
 | 
						|
#define APDU_GET_RESPONSE             0xC0
 | 
						|
 | 
						|
#define SW_SUCCESS                    0x9000
 | 
						|
#define SW_GET_RESPONSE               0x6100  // Command successfully executed; 'XX' bytes of data are available and can be requested using GET RESPONSE.
 | 
						|
#define SW_WRONG_LENGTH               0x6700
 | 
						|
#define SW_COND_USE_NOT_SATISFIED     0x6985
 | 
						|
#define SW_FILE_NOT_FOUND             0x6a82
 | 
						|
#define SW_INCORRECT_P1P2             0x6a86
 | 
						|
#define SW_INS_INVALID                0x6d00  // Instruction code not supported or invalid
 | 
						|
#define SW_CLA_INVALID                0x6e00  
 | 
						|
#define SW_INTERNAL_EXCEPTION         0x6f00
 | 
						|
 | 
						|
#endif //_APDU_H_
 |