zoukankan      html  css  js  c++  java
  • Mbed TLS中关于密钥的处理

    使用过程中,我们可能会需要直接从二进制格式得到所需要的密钥。

     1 int binary_pk_get_public_key( mbedtls_pk_context *ctx, const unsigned char *pModulus, const unsigned char *pPublicExponent)
     2 {
     3     int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
     4     size_t n;
     5     mbedtls_rsa_context *pRSAKey;
     6 
     7     PK_VALIDATE_RET( ctx != NULL );
     8 
     9     mbedtls_pk_type_t pk_alg = MBEDTLS_PK_RSA;
    10     const mbedtls_pk_info_t *pk_info;
    11 
    12     if( ( pk_info = mbedtls_pk_info_from_type( pk_alg ) ) == NULL )
    13         return( MBEDTLS_ERR_PK_UNKNOWN_PK_ALG );
    14 
    15     if( ( ret = mbedtls_pk_setup( ctx, pk_info ) ) != 0 ) /* this will alloc the memory */
    16         return( ret );
    17 
    18     pRSAKey = ctx->pk_ctx; /* manipulate the underlying key as RSA key */
    19     pRSAKey->ver = 0; /* hard-coded */
    20     pRSAKey->len = 256; /* hard-coded */
    21 
    22     ret = mbedtls_mpi_read_binary( &pRSAKey->N, pModulus, 257); /* please refer to public key format. */
    23     ret = mbedtls_mpi_read_binary( &pRSAKey->E, pPublicExponent, 3); /* please refer to public key format. */
    24 
    25     memcpy(&g_TestRSAKey, ctx->pk_ctx, sizeof(g_TestRSAKey)); //xxx debug-purpose only.
    26 
    27     return( ret );
    28 }

    参考资料:《OpenSSL与网络信息安全》 王海志 编著 清华大学出版社 北京交通大学出版社

    https://tls.mbed.org/

  • 相关阅读:
    类型转换器(InitBinder 初始化绑定器)
    transient关键字的用法
    Handler
    SpringMVC数据校验
    java中进程与线程的三种实现方式
    初识webservice 服务
    javaMail
    UI测试_错题解析
    ognl
    Struts2数据校验
  • 原文地址:https://www.cnblogs.com/praiseslow/p/14572655.html
Copyright © 2011-2022 走看看