本文整理汇总了C++中upse::Buffer::zeroMemory方法的典型用法代码示例。如果您正苦于以下问题:C++ Buffer::zeroMemory方法的具体用法?C++ Buffer::zeroMemory怎么用?C++ Buffer::zeroMemory使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类upse::Buffer
的用法示例。
在下文中一共展示了Buffer::zeroMemory方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: memset
ae_error_t CertificateProvisioningProtocol::msg3_generate(const upse::Buffer& csrBuffer, const upse::Buffer& quoteBuffer, upse::Buffer& serializedMsg3)
{
ae_error_t status = AE_FAILURE;
tlv_status_t tlv_status = TLV_UNKNOWN_ERROR;
provision_request_header_t serializedHeader;
memset(&serializedHeader, 0, sizeof(serializedHeader));
TLVsMsg seq2_0_tlv_nonce;
TLVsMsg seq3_0_tlv_block_cipher_text;
TLVsMsg seq3_1_tlv_quote;
TLVsMsg seq3_2_tlv_quote_signature;
TLVsMsg seq3_3_tlv_x509_csr;
TLVsMsg seq4_0_tlv_mac;
do
{
tlv_status = seq2_0_tlv_nonce.add_nonce(Nonce.getData(), Nonce.getSize());
status = tlv_error_2_pve_error(tlv_status);
if (AE_FAILED(status))
break;
status = msg3_seq3_1_create_quote_tlv(quoteBuffer, seq3_1_tlv_quote);
if (AE_FAILED(status))
break;
status = msg3_seq3_2_create_quote_signature_tlv(quoteBuffer, seq3_2_tlv_quote_signature);
if (AE_FAILED(status))
break;
tlv_status = seq3_3_tlv_x509_csr.add_x509_csr(csrBuffer.getData(), csrBuffer.getSize());
status = tlv_error_2_pve_error(tlv_status);
if (AE_FAILED(status))
break;
status = msg3_create_header(TransactionID, seq2_0_tlv_nonce.get_tlv_msg_size(), seq3_1_tlv_quote.get_tlv_msg_size(),
seq3_2_tlv_quote_signature.get_tlv_msg_size(), seq3_3_tlv_x509_csr.get_tlv_msg_size(), serializedHeader);
if (AE_FAILED(status))
break;
upse::Buffer mac;
status = msg3_seq3_0_create_block_cipher_text_tlv(seq3_1_tlv_quote, seq3_2_tlv_quote_signature, seq3_3_tlv_x509_csr, seq2_0_tlv_nonce, serializedHeader,
EK2, seq3_0_tlv_block_cipher_text, mac);
if (AE_FAILED(status))
break;
tlv_status = seq4_0_tlv_mac.add_mac(mac.getData());
status = tlv_error_2_pve_error(tlv_status);
if (AE_FAILED(status))
break;
//*********************************************************************
// Prepare serialized message buffer
//*********************************************************************
uint32_t size_msg3 = static_cast<uint32_t>(PROVISION_REQUEST_HEADER_SIZE + seq2_0_tlv_nonce.get_tlv_msg_size() +
seq3_0_tlv_block_cipher_text.get_tlv_msg_size() + seq4_0_tlv_mac.get_tlv_msg_size());
status = serializedMsg3.Alloc(size_msg3);
if (AE_FAILED(status))
break;
serializedMsg3.zeroMemory();
upse::BufferWriter bwMsg3(serializedMsg3);
// Write serialized request header to serialized message
status = bwMsg3.writeRaw((uint8_t*)&serializedHeader, sizeof(serializedHeader));
if (AE_FAILED(status))
break;
// Write sequence 2.0 - Nonce TLV
status = bwMsg3.writeRaw(const_cast<uint8_t*>(seq2_0_tlv_nonce.get_tlv_msg()), seq2_0_tlv_nonce.get_tlv_msg_size());
if (AE_FAILED(status))
break;
// Write sequence 3.0 - Block Cipher Text TLV (contains 3.1, 3.2, and 3.3 as encrypted payload)
status = bwMsg3.writeRaw(const_cast<uint8_t*>(seq3_0_tlv_block_cipher_text.get_tlv_msg()), seq3_0_tlv_block_cipher_text.get_tlv_msg_size());
if (AE_FAILED(status))
break;
// Write sequence 4.0 - MAC TLV
status = bwMsg3.writeRaw(const_cast<uint8_t*>(seq4_0_tlv_mac.get_tlv_msg()), seq4_0_tlv_mac.get_tlv_msg_size());
if (AE_FAILED(status))
break;
status = AE_SUCCESS;
} while (0);
return status;
}
示例2: memset
ae_error_t CertificateProvisioningProtocol::msg1_generate(const GroupId gid, upse::Buffer& serializedMsg1)
{
ae_error_t status = AE_FAILURE;
tlv_status_t tlv_status = TLV_UNKNOWN_ERROR;
GroupId be_gid; //gid from init_quote is little endian, change to bigendian for backend server here
be_gid.data[0]=gid.data[3];
be_gid.data[1]=gid.data[2];
be_gid.data[2]=gid.data[1];
be_gid.data[3]=gid.data[0];
provision_request_header_t header;
memset(&header, 0, sizeof(header));
TLVsMsg seq2_0_tlv_cipher_text;
TLVsMsg seq2_1_tlv_block_cipher_info;
TLVsMsg seq3_0_tlv_block_cipher_text;
TLVsMsg seq3_1_tlv_epid_gid;
TLVsMsg seq4_0_tlv_mac;
do
{
status = get_random_value(XID_SIZE, TransactionID);
if (AE_FAILED(status))
break;
// Prepare sequence 2.1 -- Block Cipher Text TLV with SK
status = msg1_create_seq2_1(seq2_1_tlv_block_cipher_info);
if (AE_FAILED(status))
break;
// Prepare sequence 2.0 -- Cipher Text TLV with KeyID and encrypted 2.1
status = msg1_create_seq2_0(seq2_1_tlv_block_cipher_info, seq2_0_tlv_cipher_text);
if (AE_FAILED(status))
break;
// Prepare sequence 3.1 -- EPID GID TLV
tlv_status = seq3_1_tlv_epid_gid.add_epid_gid(be_gid);
status = tlv_error_2_pve_error(tlv_status);
if (AE_FAILED(status))
break;
// Derive EK1
upse::Buffer EK1;
status = aesCMAC(M1SK, TransactionID, EK1);
if (AE_FAILED(status))
break;
// Create Request Header (we need to calculate size before AES-GCM CMAC)
status = msg1_create_header(seq2_0_tlv_cipher_text.get_tlv_msg_size(), seq3_1_tlv_epid_gid.get_tlv_msg_size(), TransactionID, header);
if (AE_FAILED(status))
break;
// Prepare sequence 3.0 -- Block Cipher Text TLV with IV and encrypted 3.1
upse::Buffer mac;
status = msg1_create_seq3_0(seq3_1_tlv_epid_gid, header, EK1, seq3_0_tlv_block_cipher_text, mac);
if (AE_FAILED(status))
break;
// Prepare sequence 4.0 -- MAC TLV
tlv_status = seq4_0_tlv_mac.add_mac(mac.getData());
status = tlv_error_2_pve_error(tlv_status);
if (AE_FAILED(status))
break;
//*********************************************************************
// Prepare serialized message buffer
//*********************************************************************
uint32_t size_msg1 = static_cast<uint32_t>(PROVISION_REQUEST_HEADER_SIZE) + seq2_0_tlv_cipher_text.get_tlv_msg_size() +
seq3_0_tlv_block_cipher_text.get_tlv_msg_size() + seq4_0_tlv_mac.get_tlv_msg_size();
status = serializedMsg1.Alloc(size_msg1);
if (AE_FAILED(status))
break;
serializedMsg1.zeroMemory();
upse::BufferWriter bwMsg1(serializedMsg1);
// Write serialized request header to serialized message
status = bwMsg1.writeRaw((uint8_t*)&header, sizeof(header));
if (AE_FAILED(status))
break;
// Write sequence 2.0 - Cipher Text TLV (contains 2.1 as encrypted payload)
status = bwMsg1.writeRaw(const_cast<uint8_t*>(seq2_0_tlv_cipher_text.get_tlv_msg()), seq2_0_tlv_cipher_text.get_tlv_msg_size());
if (AE_FAILED(status))
break;
// Write sequence 3.0 - Block Cipher Text TLV (contains 3.1 as encrypted payload)
status = bwMsg1.writeRaw(const_cast<uint8_t*>(seq3_0_tlv_block_cipher_text.get_tlv_msg()), seq3_0_tlv_block_cipher_text.get_tlv_msg_size());
if (AE_FAILED(status))
break;
// Write sequence 4.0 - MAC TLV
status = bwMsg1.writeRaw(const_cast<uint8_t*>(seq4_0_tlv_mac.get_tlv_msg()), seq4_0_tlv_mac.get_tlv_msg_size());
if (AE_FAILED(status))
break;
status = AE_SUCCESS;
} while (0);
//.........这里部分代码省略.........