版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

目录

需求说明

客户平台需要访问注册到omc的网关设备web。

...

代码块
std::string base64Encode(const unsigned char* data, size_t length) {
  BIO *bmem, *b64;
  BUF_MEM* bptr;
  b64 = BIO_new(BIO_f_base64());
  BIO_set_flags(b64, BIO_FLAGS_BASE64_NO_NL);
  bmem = BIO_new(BIO_s_mem());
  b64 = BIO_push(b64, bmem);
  BIO_write(b64, data, length);
  BIO_flush(b64);
  BIO_get_mem_ptr(b64, &bptr);

  std::string encoded(bptr->data, bptr->length);
  BIO_free_all(b64);

  return encoded;
}

std::string createSignature(const std::string& secretKey,
                            const std::string& timestamp,
                            const std::string& method,
                            const std::string& endpoint,
                            const std::string& body) {
  std::string data = timestamp + method + endpoint + body;

  unsigned char digest[EVP_MAX_MD_SIZE];
  unsigned int digestLength;

  HMAC(EVP_sha256(), secretKey.c_str(), secretKey.length(),
       reinterpret_cast<const unsigned char*>(data.c_str()), data.length(),
       digest, &digestLength);

  std::string signature = base64Encode(digest, digestLength);

  return signature;
}


流程图

Image Added