blob: 1e46f3cfcf8e6677eba32f34d67ebb0697d8b036 [file] [log] [blame]
/*
*
* seeld - Secure Element Manager
*
* Copyright (C) 2013 Intel Corporation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#include <stdint.h>
#include <stdbool.h>
#include <sys/socket.h>
#include <linux/socket.h>
#include <glib.h>
#include "../src/near.h"
struct seel_se;
struct seel_channel;
struct seel_ace;
struct seel_apdu *apdu;
int __seel_manager_init(DBusConnection *conn);
void __seel_manager_cleanup(void);
#include "driver.h"
struct seel_ctrl_driver *__seel_driver_ctrl_find(enum seel_controller_type type);
struct seel_io_driver *__seel_driver_io_find(enum seel_se_type type);
struct seel_cert_driver *__seel_driver_cert_get(void);
struct seel_se *__seel_se_get(uint32_t se_idx, uint8_t ctrl_idx,
uint8_t ctrl_type);
const char *__seel_se_get_path(struct seel_se *se);
const GSList *__seel_se_get_hashes(struct seel_se *se, const char *owner);
int __seel_se_queue_io(struct seel_se *se, struct seel_apdu *apdu,
transceive_cb_t cb, void *context);
void __seel_se_list(DBusMessageIter *iter, void *user_data);
char *__seel_se_add(uint32_t se_idx, uint8_t ctrl_idx,
uint8_t se_type, uint8_t ctrl_type);
int __seel_se_remove(uint32_t se_idx, uint8_t ctrl_idx,
uint8_t ctrl_type);
int __seel_se_init(DBusConnection *conn);
void __seel_se_cleanup(void);
struct seel_apdu *__seel_apdu_build(uint8_t *apdu, size_t length, uint8_t channel);
void __seel_apdu_dump(uint8_t *apdu, size_t length);
void __seel_apdu_free(struct seel_apdu *apdu);
size_t __seel_apdu_length(struct seel_apdu *apdu);
uint8_t *__seel_apdu_data(struct seel_apdu *apdu);
struct seel_apdu *__seel_apdu_open_logical_channel(void);
struct seel_apdu *__seel_apdu_close_logical_channel(uint8_t channel);
struct seel_apdu *__seel_apdu_select_aid(uint8_t channel, uint8_t *aid, size_t aid_length);
struct seel_apdu *__seel_apdu_get_all_gp_data(void);
struct seel_apdu *__seel_apdu_get_next_gp_data(size_t length);
struct seel_apdu *__seel_apdu_get_refresh_gp_data(void);
int __seel_apdu_resp_status(uint8_t *apdu, size_t apdu_length);
struct seel_channel *__seel_channel_add(struct seel_se *se,
uint8_t channel,
unsigned char *aid, size_t aid_len,
bool basic);
void __seel_channel_remove(struct seel_channel *channel);
char *__seel_channel_get_path(struct seel_channel *channel);
uint8_t __seel_channel_get_channel(struct seel_channel *channel);
uint8_t *__seel_channel_get_aid(struct seel_channel *channel, size_t *aid_len);
struct seel_se *__seel_channel_get_se(struct seel_channel *channel);
bool __seel_channel_is_basic(struct seel_channel *channel);
gboolean __seel_ace_add(gpointer user_data);
int __seel_ace_remove(struct seel_se *se);
bool __seel_ace_apdu_allowed(struct seel_channel *channel, uint8_t *app_hash,
uint8_t *apdu, size_t apdu_len);
int __seel_ace_init(void);
void __seel_ace_cleanup(void);