Exemplo n.º 1
0
krb5_error_code pkiIntToData(
    krb5_int32      num,
    CSSM_DATA       *cdata,
    SecAsn1CoderRef coder)
{
    krb5_ui_4 unum = (krb5_ui_4)num;
    uint32 len = 0;
    uint8 *cp = NULL;
    unsigned i;

    if(unum < 0x100) {
        len = 1;
    }
    else if(unum < 0x10000) {
        len = 2;
    }
    else if(unum < 0x1000000) {
        len = 3;
    }
    else {
        len = 4;
    }
    if(SecAsn1AllocItem(coder, cdata, len)) {
        return ENOMEM;
    }
    cp = &cdata->Data[len - 1];
    for(i=0; i<len; i++) {
        *cp-- = unum & 0xff;
        unum >>= 8;
    }
    return 0;
}
/* malloc and copy, various forms */
OSStatus SecAsn1AllocCopy(
	SecAsn1CoderRef			coder,
	const void				*src,
	size_t					len,
	SecAsn1Item				*dest)
{
	if(src == NULL) {
		return errSecParam;
	}
	OSStatus ortn = SecAsn1AllocItem(coder, dest, len);
	if(ortn) {
		return ortn;
	}
	memmove(dest->Data, src, len);
	return errSecSuccess;
}
Exemplo n.º 3
0
/* 
 * Constructor during encode, called from subclass-specific constructorÊ(which
 * always has all of the subclass-specific arguments).
 */ 
OCSPExtension::OCSPExtension(
	SecAsn1CoderRef			coder,			// passed to subclass constructor
	const CSSM_OID			&extnId,		// subclass knows this 
	OCSPExtensionTag		tag,			// subclass knows this
	bool					critical)		// passed to subclass constructor
		: mNssExt(NULL),					// we'll cook this up
		  mCoder(coder),
		  mCritical(critical),
		  mTag(tag),
		  mUnrecognizedCritical(false)		// this is a tautology
{
	mNssExt = (NSS_CertExtension *)SecAsn1Malloc(coder, sizeof(NSS_CertExtension));
	memset(mNssExt, 0, sizeof(NSS_CertExtension));
	SecAsn1AllocCopyItem(coder, &extnId, &mNssExt->extnId);
	/* alloc one byte for critical flag */
	SecAsn1AllocItem(coder, &mNssExt->critical, 1);
	mNssExt->critical.Data[0] = critical ? 0xff : 0;
}
Exemplo n.º 4
0
inline void alloc_item(pkcs12_context * context, SecAsn1Item *item, size_t len)
{
    SecAsn1AllocItem(context->coder, item, len);
}