int main(int argc, char *argv[]) { TALLOC_CTX *mem_ctx; DATA_BLOB blob; struct GUID *guid; char *schemaIDGUID; if (argc != 2) { usage(); } mem_ctx = talloc_named(NULL, 0, "SchemaIDGUID"); blob = data_blob_talloc(mem_ctx, argv[1], strlen(argv[1])+1); blob.length = ldb_base64_decode((char *)blob.data); guid = (struct GUID *) blob.data; schemaIDGUID = GUID_string(mem_ctx, guid); printf("%s\n", schemaIDGUID); return (0); }
/** * Decode a base64 string in-place - wrapper for the above **/ static void base64_decode_inplace(char *s) { ldb_base64_decode(s); }
void ical2exchange_property_ATTACH(struct ical2exchange *ical2exchange) { int data; char *extension = NULL; char *filename = NULL; const char *fmttype = NULL; icalattach *icalattach = NULL; icalparameter *fmttypePar = NULL; icalparameter *xfilePar = NULL; const char *xname = NULL; icalproperty *attachProp = NULL; /*sanity check*/ if(!ical2exchange->attachEvent) return; attachProp=icalcomponent_get_first_property(ical2exchange->attachEvent, ICAL_ATTACH_PROPERTY); while(attachProp){ icalattach = icalproperty_get_attach(attachProp); data = ldb_base64_decode((char *) icalattach_get_data (icalattach)); /*FMTTYPE*/ fmttypePar = icalproperty_get_first_parameter(attachProp, ICAL_FMTTYPE_PARAMETER); if(fmttypePar){ fmttype = icalparameter_get_fmttype(fmttypePar); } /*X-FIlename*/ xfilePar = icalproperty_get_first_parameter(attachProp, ICAL_X_PARAMETER); if(xfilePar){ xname = icalparameter_get_xname(xfilePar); if(!strcmp(xname,"X-FILENAME")){ filename = (char *) icalparameter_get_x(xfilePar); } } /*Extension*/ if(filename){ char buff[256]; char *temp; strncpy(buff,filename, 255); buff[255] = '\0'; extension = strtok(buff, "."); while((temp = strtok(NULL, "."))) extension = temp; } printf("Create a new attachment object with\n"); printf(" set PidTagAttachDataBinary to %d\n", data); printf(" set PidTagAttachExtension to %s\n", extension); printf(" set PidTagAttachFilename to %s\n", filename); printf(" set PidTagAttachLongFilename to %s\n", filename); printf(" set PidTagAttachMimeTag to %s\n", fmttype); printf(" set PidTagAttachFlags to 0x00000000\n"); printf(" set PidTagAttachMethod to 0x00000001\n"); printf(" set PidTagAttachmentContactPhoto to FALSE\n"); printf(" set PidTagAttachmentFlags to 0x00000000\n"); printf(" set PidTagAttachEncoding to empty SBinary"); printf(" set PidTagAttachmentHidden to FALSE\n"); printf(" set PidTagAttachmentLinkId to 0x00000000\n"); printf(" set PidTagDisplayName to %s\n", filename); printf(" set PidTagExceptionEndTime to 0x0CB34557A3DD4000\n"); printf(" set PidTagExceptionStartTime to 0x0CB34557A3DD4000\n"); printf(" set PidTagRenderingPosition to 0xFFFFFFFF\n"); attachProp=icalcomponent_get_next_property(ical2exchange->attachEvent, ICAL_ATTACH_PROPERTY); } }
/** * Decode a base64 string into a DATA_BLOB - simple and slow algorithm **/ static DATA_BLOB base64_decode_data_blob(TALLOC_CTX *mem_ctx, const char *s) { DATA_BLOB ret = data_blob_talloc(mem_ctx, s, strlen(s)+1); ret.length = ldb_base64_decode((char *)ret.data); return ret; }