Replaced system SQLite with SQLCipher to support encrypted database
This commit is contained in:
54
Sources/DataLiteC/libtomcrypt/pk/asn1/pkcs8/pkcs8_get.c
Normal file
54
Sources/DataLiteC/libtomcrypt/pk/asn1/pkcs8/pkcs8_get.c
Normal file
@@ -0,0 +1,54 @@
|
||||
/* LibTomCrypt, modular cryptographic library -- Tom St Denis */
|
||||
/* SPDX-License-Identifier: Unlicense */
|
||||
#include "tomcrypt_private.h"
|
||||
|
||||
#pragma clang diagnostic push
|
||||
#pragma clang diagnostic ignored "-Wconversion"
|
||||
#pragma clang diagnostic ignored "-Wshorten-64-to-32"
|
||||
|
||||
/**
|
||||
@file pkcs8_get.c
|
||||
PKCS#8 utility functions
|
||||
*/
|
||||
|
||||
#ifdef LTC_PKCS_8
|
||||
|
||||
int pkcs8_get_children(const ltc_asn1_list *decoded_list, enum ltc_oid_id *pka, ltc_asn1_list **alg_id, ltc_asn1_list **priv_key)
|
||||
{
|
||||
int err;
|
||||
unsigned long n;
|
||||
der_flexi_check flexi_should[4];
|
||||
ltc_asn1_list *seq_l, *version;
|
||||
|
||||
LTC_ARGCHK(ltc_mp.name != NULL);
|
||||
|
||||
if (alg_id == NULL) alg_id = &seq_l;
|
||||
|
||||
/* Setup for basic structure */
|
||||
n=0;
|
||||
LTC_SET_DER_FLEXI_CHECK(flexi_should, n++, LTC_ASN1_INTEGER, &version);
|
||||
LTC_SET_DER_FLEXI_CHECK(flexi_should, n++, LTC_ASN1_SEQUENCE, alg_id);
|
||||
LTC_SET_DER_FLEXI_CHECK(flexi_should, n++, LTC_ASN1_OCTET_STRING, priv_key);
|
||||
LTC_SET_DER_FLEXI_CHECK(flexi_should, n, LTC_ASN1_EOL, NULL);
|
||||
|
||||
err = der_flexi_sequence_cmp(decoded_list, flexi_should);
|
||||
switch (err) {
|
||||
case CRYPT_OK:
|
||||
case CRYPT_INPUT_TOO_LONG:
|
||||
/* If there are attributes added after the private_key it is tagged with version 1 and
|
||||
* we get an 'input too long' error but the rest is already decoded and can be
|
||||
* handled the same as for version 0
|
||||
*/
|
||||
if (ltc_mp_cmp_d(version->data, 0) != LTC_MP_EQ && ltc_mp_cmp_d(version->data, 1) != LTC_MP_EQ) {
|
||||
return CRYPT_INVALID_PACKET;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return err;
|
||||
}
|
||||
return pk_get_oid_from_asn1((*alg_id)->child, pka);
|
||||
}
|
||||
|
||||
#endif /* LTC_PKCS_8 */
|
||||
|
||||
#pragma clang diagnostic pop
|
||||
Reference in New Issue
Block a user