コード例 #1
0
AJ_Status AJ_BigEndianEncodeCertificate(AJ_Certificate* certificate, uint8_t* b8, size_t b8len)
{
    if (b8len < sizeof (uint32_t)) {
        /* Require at least a version */
        return AJ_ERR_RESOURCES;
    }
    HostU32ToBigEndianU8(&certificate->version, sizeof (uint32_t), b8);
    b8 += sizeof (uint32_t);
    CertificateSize(certificate);
    if (b8len < certificate->size) {
        return AJ_ERR_RESOURCES;
    }
    AJ_BigEndianEncodePublicKey(&certificate->issuer, b8);
    b8 += sizeof (ecc_publickey);
    switch (certificate->version) {
    case 1:
    case 2:
        AJ_BigEndianEncodePublicKey(&certificate->subject, b8);
        b8 += sizeof (ecc_publickey);
        HostU64ToBigEndianU8(&certificate->validity.validfrom, sizeof (uint64_t), b8);
        b8 += sizeof (uint64_t);
        HostU64ToBigEndianU8(&certificate->validity.validto, sizeof (uint64_t), b8);
        b8 += sizeof (uint64_t);
        *b8 = certificate->delegate;
        b8 += sizeof (uint8_t);
        break;
    }
    switch (certificate->version) {
    case 2:
        memcpy(b8, certificate->guild, AJ_GUID_LENGTH);
        b8 += AJ_GUID_LENGTH;
        break;
    }
    memcpy(b8, certificate->digest, SHA256_DIGEST_LENGTH);
    b8 += SHA256_DIGEST_LENGTH;
    HostU32ToBigEndianU8((uint32_t*) &certificate->signature, sizeof (ecc_signature), b8);
    b8 += sizeof (ecc_signature);

    return AJ_OK;
}
コード例 #2
0
AJ_Status AJ_BigEndianEncodePublicKey(ecc_publickey* publickey, uint8_t* b8)
{
    HostU32ToBigEndianU8((uint32_t*) publickey, sizeof (ecc_publickey), b8);
    return AJ_OK;
}
コード例 #3
0
AJ_Status AJ_BigEndianEncodePrivateKey(ecc_privatekey* privatekey, uint8_t* b8)
{
    HostU32ToBigEndianU8((uint32_t*) privatekey, sizeof (ecc_privatekey), b8);
    return AJ_OK;
}
コード例 #4
0
ファイル: aj_cert.c プロジェクト: sdhczw/winnermicro
void AJ_BigEndianEncodePublicKey(ecc_publickey* publickey, uint8_t* b8)
{
    HostU32ToBigEndianU8((uint32_t*) publickey, sizeof (ecc_publickey), b8);
}