小编mus*_*abi的帖子

openssl/RSA - 使用公钥解密

我正在寻找一个我维护运行Linux的小设备的软件更新程序.我想生成更新包内容的md5sum,然后使用私钥加密该哈希值,然后再将其发送给客户.当他们加载更新时,设备应该解密哈希,验证它,然后继续安装包.

我正在尝试使用OpenSSL和RSA.我找到了这个帖子,并且气馁了.然后我找到了这个帖子,并想知道Perl是如何解决这一切所谓的不可能性的.我在C中这样做,所以也许某个地方的SSL库中有并行功能?

所以我的问题是:我可以强制命令行Linux将公钥作为解密输入,还是使用C来规避这种限制?

所有人都提前谢谢.

linux openssl rsa

7
推荐指数
1
解决办法
2万
查看次数

Bash:多重定向

在脚本的早期,我看到了:

exec 3>&2
Run Code Online (Sandbox Code Playgroud)

然后:

{ $app $conf_file &>$app_log_file & } 1>&3 2>&1
Run Code Online (Sandbox Code Playgroud)

我对此的理解看起来像这样:

  • 创建fd 3
  • 将fd 3输出重定向到stderr
  • (在应用程序执行时)重定向stdout到fd 3,然后重定向stderrstdout

这不是某种循环的疯狂吗?3> stderr> stdout> 3>等?

我特别关注这一行的意图/含义,因为我想开始使用这个脚本运行一些应用程序valgrind.我希望看到valgrind的输出穿插了应用程序的日志语句,所以我希望stderr上面的混乱行捕获默认输出.然而,在导致我想要使用的一些崩溃中valgrind,我已经看到glibc错误直接输出到终端,而不是在应用程序的日志文件中捕获.

那么,问题是:那条执行线到底是做什么的?它捕获了stderr吗?如果是这样,为什么当应用程序崩溃时我在命令行上看到glibc输出?如果没有,我应该如何改变它来实现这一目标?

linux bash

6
推荐指数
1
解决办法
1797
查看次数

gtk_action_group_new()和GtkStock - 用什么代替?

以下代码来自于GTK + Development基础 9-11 .通过本书,我一直在尝试迁移任何特定于GTK2的东西(或任何折旧的代码),以了解当前的相关内容.也就是说,这在编译时产生了很多警告.

#define NUM_ENTRIES 13
static GtkActionEntry entries[] =
{
    { "File", NULL, "_File", NULL, NULL, NULL },
        { "Open", GTK_STOCK_OPEN, NULL, NULL, "Open an existing file", G_CALLBACK(open) },
        { "Save", GTK_STOCK_SAVE, NULL, NULL, "Save the document to a file", G_CALLBACK(save) },
        { "Quit", GTK_STOCK_QUIT, NULL, NULL, "Quit the application", G_CALLBACK(quit) },
    { "Edit", NULL, "_Edit", NULL, NULL, NULL },
        { "Cut", GTK_STOCK_CUT, NULL, NULL, "Cut the selection to the clipboard", G_CALLBACK(cut) },
        { …
Run Code Online (Sandbox Code Playgroud)

c gtk gtk3

5
推荐指数
1
解决办法
1417
查看次数

Glade/gtkmm TreeView

在跟进我之前关于这个问题的问题的答案时,我已经取得了一些进展,并且正在寻找下一点指导.简而言之,我无法使用gtkmm应用程序从Glade加载Treeview.

首先,这是源头.班级:

typedef struct
{
  Gtk::Window *window_info;
  Gtk::TreeView *treeview_info;
  Glib::RefPtr<Gtk::ListStore> liststore_info;

  class InfoColumns : public Gtk::TreeModel::ColumnRecord
  {
    public:
      InfoColumns() { add(time); add(message); }

      Gtk::TreeModelColumn<string> time;
      Gtk::TreeModelColumn<string> message;
  } info_columns;

}UiElements;

class GuiManager
{
  Glib::RefPtr<Gtk::Builder> builder;
  UiElements elements;

  public:
    GuiManager();

    void info_handler(string msg);
};
Run Code Online (Sandbox Code Playgroud)

定义:

GuiManager::GuiManager()
{
  builder = Gtk::Builder::create();
  builder->add_from_file("GUI3.glade");

  builder->get_widget("window_info", elements.window_info);
  builder->get_widget("treeview_info", elements.treeview_info);

//these two methods of loading the liststore appear to function identically
  elements.liststore_info = Glib::RefPtr<Gtk::ListStore>::cast_dynamic(builder->get_object("liststore_info"));
//  elements.liststore_info = Gtk::ListStore::create(elements.info_columns);

  elements.treeview_info->set_model(elements.liststore_info);

//if I append the columns, …
Run Code Online (Sandbox Code Playgroud)

c++ gtk treeview glade gtkmm

1
推荐指数
1
解决办法
1179
查看次数

将32位ARM代码迁移到64位开发环境

我有一个基于GTK的ARM项目,历史上是在32位Ubuntu虚拟机上开发的.目前,我正在尝试将其迁移到新的64位Arch Linux开发盒.我不知道如何处理我所采取的两条路线所产生的错误.

如果我告诉链接器使用/ usr/lib,编译将停止告诉我

/usr/lib/librt.so: file not recognized: File format not recognized
Run Code Online (Sandbox Code Playgroud)

因此,假设这是一个32位vs 64位的问题,我将gcc指向/ usr/lib32并收到以下内容

/usr/bin/arm-linux-gnueabi - ld: skipping incompatible /usr/lib32/librt.so when searching for -lrt
/usr/bin/arm-linux-gnueabi - ld: skipping incompatible /usr/lib32/librt.a when searching for -lrt
/usr/bin/arm-linux-gnueabi - ld: skipping incompatible /usr/lib32/libpthread.so when searching for -lpthread
/usr/bin/arm-linux-gnueabi - ld: skipping incompatible /usr/lib32/libpthread.a when searching for -lpthread
/usr/bin/arm-linux-gnueabi - ld: cannot find -lz
/usr/bin/arm-linux-gnueabi - ld: cannot find -lsqlite3
/usr/bin/arm-linux-gnueabi - ld: cannot find -lusb-1.0
/usr/bin/arm-linux-gnueabi - ld: cannot find -lssl
Run Code Online (Sandbox Code Playgroud)

等等.我尝试从Arch存储库安装lib32-sqlite无济于事. …

c linux arm

0
推荐指数
1
解决办法
721
查看次数

填充问题?(C/GCC)

我试图统一一个ARM项目(特别是运行Linux 2.6.33.3的i.MX27 CPU,用GCC 4.3.2编译)的SQLite交互方法.作为其中的一部分,我创建了一个带有union的结构,该结构用于保存绑定到预准备语句的值.

#define SQLITE_DATA_CHARACTER_STRING_MAX 1024

typedef struct
{
    int data_type;
    union
    {
        int integer;
        double floating_point;
        unsigned char character_string[SQLITE_DATA_CHARACTER_STRING_MAX];
    };
}sqlite_data;
Run Code Online (Sandbox Code Playgroud)

原来,这是int,float,char.我想用long long,doublechar.但是,这似乎导致了一个问题.如上所述,以下代码生成可预测的输出:

int data_fields = 15;
int data_fields_index = 0;
sqlite_data data[data_fields];

LogMsg(LOG_INFO, "%s: Assigning", __FUNCTION__);

for(data_fields_index = 0; data_fields_index < data_fields; data_fields_index++)
{
    data[data_fields_index].data_type = (100 + data_fields_index);
    data[data_fields_index].integer = (1000 + data_fields_index);
    LogMsg(LOG_INFO, "%s: data[%d] - %d; type - %d", __FUNCTION__, data_fields_index, data[data_fields_index].integer, …
Run Code Online (Sandbox Code Playgroud)

c gcc

0
推荐指数
1
解决办法
127
查看次数

标签 统计

c ×3

linux ×3

gtk ×2

arm ×1

bash ×1

c++ ×1

gcc ×1

glade ×1

gtk3 ×1

gtkmm ×1

openssl ×1

rsa ×1

treeview ×1