小编SKi*_*SKi的帖子

如何在连接之前告诉SSLSocket所需的密钥条目的别名?

我在java密钥库中有两个证书/密钥对.这些关键词的别名是"foo"和"bar".

我的TLS客户端(java程序)使用密钥库.在连接打开期间完成TLS客户端身份验证.当TLS服务器从客户端请求证书时,客户端程序应使用"foo"键入.现在,客户端在连接握手期间向服务器发送错误的证书("bar").

如何在连接之前告诉SSLSocket所需的密钥条目的别名?

目前代码如下:

final SSLSocket ss = (SSLSocket)SSLSocketFactory.getDefault().createSocket(); 
ss.setEnabledProtocols( new String[] {"TLSv1"});
ss.connect( targetAddress ); 
Run Code Online (Sandbox Code Playgroud)

java authentication ssl keystore

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

灵活的数组成员是否会增加结构的大小?

我有以下类型的代码:

typedef struct
{    
    u32 count;
    u16 list[];   
} message_t;
...

message_t* msg = (message_t*)buffer;  
msg->count = 2;
msg->list[0] = 123;
msg->list[1] = 456;

size_t total_size = sizeof(*msg) + sizeof(msg->list[0]) * msg->count;  

send_msg( msg, total_size ); 
Run Code Online (Sandbox Code Playgroud)

有问题的线是sizeofs的线.我不确定这是计算所需空间的正确方法.是否sizeof(*msg)包含有关该list成员的内容?

我可以用我的编译器测试它,但是在这种情况下每个编译器的工作方式是否相似?

c struct sizeof

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

如何使用cross gdb检查来自crosstarget机器的核心文件

我有一个core来自嵌入式SH3 linux设备的文件,以及我主机linux中的交叉编译环境(sh3-linux-gdb)的gdb.

但我在使用gdb加载核心文件时遇到问题:

$ sh3-linux-gdb ./myprogram ./core
GNU gdb 6.3
Copyright 2004 Free Software Foundation, Inc.
...
This GDB was configured as "--host=i386-pc-linux-gnu --target=sh3-linux"...
GDB can't read core files on this machine.
(gdb)
Run Code Online (Sandbox Code Playgroud)

为什么它无法读取核心文件?有没有办法从目标系统读取核心文件到交叉gdb?

目标机器(SH3-linux)中有gdbserver,但不是gdb本身.我能够用gdbserver和运行目标机器进程的运行时debuging sh3-linux-gdb,所以sh3-linux-gdb应该正确编译.

编辑: 请求readelf转储:

[build]$ sh3-linux-readelf -a core
ELF Header:
  Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 
  Class:                             ELF32
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX …
Run Code Online (Sandbox Code Playgroud)

c linux gdb cross-compiling gdbserver

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

如何使用SQL从DB表中删除未使用的行?

我试图从表中删除未使用的行.这是我的问题的简化示例:

有2个表:

user table:

user_id    user_name
--------------------
1          Mike
3          Carol
8          Eric


address table:

user_id    address
-----------------------
1          mike@abc.com        
3          carol@yyy.com
10         bob@example.com
3          carol@example.com
Run Code Online (Sandbox Code Playgroud)

我想从地址表中删除未使用的地址.如果用户表中存在地址的user_id,则该地址未使用.示例表中有一个未使用的地址:bob@example.com.

我是SQL新手,我的解决方案很难看:

DELETE FROM address 
  WHERE NOT EXISTS 
   ( SELECT * FROM user WHERE address.user_id = user.user_id );
Run Code Online (Sandbox Code Playgroud)

必须有更好的方法来做到这一点.最好的方法是什么?

使用sqlite.

sql sqlite

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

从多线程进程调用system(3)是否安全?

system()功能是通过使用实现fork(),execve()wait()功能.我听说这个fork()函数在多线程程序中很危险.那么,这个system()函数在多线程程序中是否也很危险?

它可能导致什么问题?

c linux multithreading fork

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

当使用指定的初始化程序时,是否可以获得指向'this'结构的指针?

这种结构用作链表头:

struct lista
{
    struct lista* next;
    struct lista* prev;
};
Run Code Online (Sandbox Code Playgroud)

当next和prev都指向struct本身时,则列表为空.以下宏可用于初始化结构:

#define LISTA_INIT_EMPTY(list) { .next = (list), .prev = (list) }
Run Code Online (Sandbox Code Playgroud)

这条路:

struct lista my_list = LISTA_INIT_EMPTY(&my_list);
Run Code Online (Sandbox Code Playgroud)

但是,有没有办法通过以下方式做同样的事情,没有宏参数?:

struct lista my_list = LISTA_INIT_EMPTY;
Run Code Online (Sandbox Code Playgroud)

我尝试了以下,但它导致编译错误:

#define LISTA_INIT_EMPTY     { .next = &.next, .prev = &.next }
Run Code Online (Sandbox Code Playgroud)

c initialization designated-initializer

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

如何使用openssl从HSM重新加载密钥?

我通过pkcs11 openssl引擎使用HSM. ENGINE_load_private_key()用于加载要使用的密钥.除了生成密钥对之外,它工作正常:

在为HSM生成新密钥对后,ENGINE_load_private_key()仍会返回旧密钥.

显然后来的调用ENGINE_load_private_key()不会从HSM读取密钥.相反,ENGINE_load_private_key()似乎返回一些缓存的值.

是否有某种方法可以强制openssl从HSM中读取新密钥,而不返回HSM中不再存在的旧密钥?

这段代码用于解决问题:

static void print_public_key_via_openssl( const char* name )
{
    ENGINE *e = ENGINE_by_id( "pkcs11");

    if ( e )
    {
        if ( ENGINE_init( e ) )
        {
            EVP_PKEY* key = ENGINE_load_private_key( e, name, NULL, NULL );
            if( key )
            {
                printf( "Public key:\n%s", public_key_to_str(key) );
                EVP_PKEY_free( key );
            }
            ENGINE_finish( e );
        }
        ENGINE_free( e );
    }
}

int main( int argc, char** argv )
{
    ...

    // …
Run Code Online (Sandbox Code Playgroud)

openssl pki hsm openssl-engine

5
推荐指数
0
解决办法
711
查看次数

cout print string变量无法传递构建

任何人都可以帮我弄清楚以下代码无法成功构建:

#include <iostream>

int main(void){

    std::string str1("sfsfasfdsdf");
    std::cout << str1 << std::endl;
    return 1;
}
Run Code Online (Sandbox Code Playgroud)

谢谢.

c++ string cout

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

为什么C++中的system()会出现错误E0413?

#include <iostream>
#include <windows.h>
#include <list>
#include <string>

using namespace std;

int main()
{
    string content = "video.mp4";
    //error occurring on the line beneath
    system("cd C:\\Users\\amans\\Documents && " + content);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

no suitable conversion function from "std::basic_string<char, std::char_traits<char>, std::allocator<char>>" to "const char *" exists media_maker c : \Users\amans\Documents\code\maker.cpp 50我不明白为什么我在 system() 处收到错误 E0413 = 。请帮忙

c++

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