#define KEYBLOBBUFSIZE 8192/* key buffer size used for internal processing */ #define MINKEYBLOBBUFSIZE (sizeof(struct keytoken_header)) #define PROTKEYBLOBBUFSIZE 256/* protected key buffer size used internal */ #define MAXAPQNSINLIST 64/* max 64 apqns within a apqn list */ #define AES_WK_VP_SIZE 32/* Size of WK VP block appended to a prot key */
/* inside view of a generic protected key token */ struct protkeytoken {
u8 type; /* 0x00 for PAES specific key tokens */
u8 res0[3];
u8 version; /* should be 0x01 for protected key token */
u8 res1[3];
u32 keytype; /* key type, one of the PKEY_KEYTYPE values */
u32 len; /* bytes actually stored in protkey[] */
u8 protkey[]; /* the protected key blob */
} __packed;
/* inside view of a protected AES key token */ struct protaeskeytoken {
u8 type; /* 0x00 for PAES specific key tokens */
u8 res0[3];
u8 version; /* should be 0x01 for protected key token */
u8 res1[3];
u32 keytype; /* key type, one of the PKEY_KEYTYPE values */
u32 len; /* bytes actually stored in protkey[] */
u8 protkey[MAXPROTKEYSIZE]; /* the protected key blob */
} __packed;
/* inside view of a clear key token (type 0x00 version 0x02) */ struct clearkeytoken {
u8 type; /* 0x00 for PAES specific key tokens */
u8 res0[3];
u8 version; /* 0x02 for clear key token */
u8 res1[3];
u32 keytype; /* key type, one of the PKEY_KEYTYPE_* values */
u32 len; /* bytes actually stored in clearkey[] */
u8 clearkey[]; /* clear key value */
} __packed;
/* helper function which translates the PKEY_KEYTYPE_AES_* to their keysize */ staticinline u32 pkey_keytype_aes_to_size(u32 keytype)
{ switch (keytype) { case PKEY_KEYTYPE_AES_128: return16; case PKEY_KEYTYPE_AES_192: return24; case PKEY_KEYTYPE_AES_256: return32; default: return0;
}
}
/* helper function which translates AES key bit size into PKEY_KEYTYPE_AES_* */ staticinline u32 pkey_aes_bitsize_to_keytype(u32 keybitsize)
{ switch (keybitsize) { case128: return PKEY_KEYTYPE_AES_128; case192: return PKEY_KEYTYPE_AES_192; case256: return PKEY_KEYTYPE_AES_256; default: return0;
}
}
/* * helper function which translates the PKEY_KEYTYPE_* * to the protected key size minus the WK VP length
*/ staticinline u32 pkey_keytype_to_size(u32 keytype)
{ switch (keytype) { case PKEY_KEYTYPE_AES_128: return16; case PKEY_KEYTYPE_AES_192: return24; case PKEY_KEYTYPE_AES_256: return32; case PKEY_KEYTYPE_ECC_P256: return32; case PKEY_KEYTYPE_ECC_P384: return48; case PKEY_KEYTYPE_ECC_P521: return80; case PKEY_KEYTYPE_ECC_ED25519: return32; case PKEY_KEYTYPE_ECC_ED448: return54; case PKEY_KEYTYPE_AES_XTS_128: return32; case PKEY_KEYTYPE_AES_XTS_256: return64; case PKEY_KEYTYPE_HMAC_512: return64; case PKEY_KEYTYPE_HMAC_1024: return128; default: return0;
}
}
/* * pkey_api.c:
*/ int __init pkey_api_init(void); void __exit pkey_api_exit(void);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.