Exemplo n.º 1
0
AJ_Status AJ_BigEndianDecodeCertificate(AJ_Certificate* certificate, uint8_t* b8, size_t b8len)
{
    if (b8len < sizeof (uint32_t)) {
        /* Require at least a version */
        return AJ_ERR_RESOURCES;
    }
    BigEndianU8ToHostU32(b8, &certificate->version, sizeof (uint32_t));
    b8 += sizeof (uint32_t);
    CertificateSize(certificate);
    if (b8len < certificate->size) {
        return AJ_ERR_RESOURCES;
    }
    AJ_BigEndianDecodePublicKey(&certificate->issuer, b8);
    b8 += sizeof (ecc_publickey);
    switch (certificate->version) {
    case 1:
    case 2:
        AJ_BigEndianDecodePublicKey(&certificate->subject, b8);
        b8 += sizeof (ecc_publickey);
        BigEndianU8ToHostU64(b8, &certificate->validity.validfrom, sizeof (uint64_t));
        b8 += sizeof (uint64_t);
        BigEndianU8ToHostU64(b8, &certificate->validity.validto, sizeof (uint64_t));
        b8 += sizeof (uint64_t);
        certificate->delegate = *b8;
        b8 += sizeof (uint8_t);
        break;
    }
    switch (certificate->version) {
    case 2:
        memcpy(certificate->guild, b8, AJ_GUID_LENGTH);
        b8 += AJ_GUID_LENGTH;
        break;
    }
    memcpy(certificate->digest, b8, SHA256_DIGEST_LENGTH);
    b8 += SHA256_DIGEST_LENGTH;
    BigEndianU8ToHostU32(b8, (uint32_t*) &certificate->signature, sizeof (ecc_signature));
    b8 += sizeof (ecc_signature);

    return AJ_OK;
}
Exemplo n.º 2
0
AJ_Status AJ_BigEndianDecodePublicKey(ecc_publickey* publickey, uint8_t* b8)
{
    BigEndianU8ToHostU32(b8, (uint32_t*) publickey, sizeof (ecc_publickey));
    return AJ_OK;
}
Exemplo n.º 3
0
AJ_Status AJ_BigEndianDecodePrivateKey(ecc_privatekey* privatekey, uint8_t* b8)
{
    BigEndianU8ToHostU32(b8, (uint32_t*) privatekey, sizeof (ecc_privatekey));
    return AJ_OK;
}
Exemplo n.º 4
0
void AJ_BigEndianDecodePublicKey(ecc_publickey* publickey, uint8_t* b8)
{
    BigEndianU8ToHostU32(b8, (uint32_t*) publickey, sizeof (ecc_publickey));
}