void fuzz(const uint8_t in[], size_t len) { try { Botan::DataSource_Memory input(in, len); Botan::X509_CRL crl(input); } catch(Botan::Exception& e) {} }
void fuzz(const uint8_t in[], size_t len) { if(len > 4096) return; try { DataSource_Memory input(in, len); X509_CRL crl(input); } catch(Botan::Exception& e) { } }
void draw(double level,double x,double y,double n){ for(double i=0;i<level;i++){ if(i==0){ Line line(x,y,x,y-500/n); line.imprint(); Circle crl(x,y-500/n,abs(10-n)); crl.setColor(COLOR("red")); crl.setFill(); crl.imprint(); } else{ Line line(x,y,x+500*(pow(2,i-1))/(pow(2,n-1)-1),y-500/n); line.imprint(); Circle crl(x+500*(pow(2,i-1))/(pow(2,n-1)-1),y-500/n,abs(10-n)); crl.setColor(COLOR("red")); crl.setFill(); crl.imprint(); draw(i,x+500*(pow(2,i-1))/(pow(2,n-1)-1),y-500/n,n); } } return ; }
// ------------------------------------------------------------------------------------------------------------- // XAdES-C // ------------------------------------------------------------------------------------------------------------- void setXAdESUnsignedSignatureProperties() { U_TRACE(5, "Application::setXAdESUnsignedSignatureProperties()") // UNSIGNED SIGNATURE PROPERTIES // <CompleteCertificateRefs>...</CompleteCertificateRefs> UString completeCertificateRef(U_CAPACITY), completeCertificateRefs(U_CAPACITY); uint32_t i, n; UVector<UString> vec_CACertificateValue; UString item(U_CAPACITY), CACertificateValue(U_CAPACITY), CAIssuerName, CACertificate, DigestValue(U_CAPACITY); UCertificate* ca; for (i = 0; i < num_ca; ++i) { ca = vec_ca[i]; CAIssuerName = ca->getIssuerForLDAP(); CACertificate = ca->getEncoded("DER"); DigestValue.setEmpty(); UServices::generateDigest(alg, 0, CACertificate, DigestValue, true); item.snprintf(U_CONSTANT_TO_PARAM(U_XADES_CERTIFICATE_TEMPLATE), U_STRING_TO_TRACE(digest_algorithm), U_STRING_TO_TRACE(DigestValue), U_STRING_TO_TRACE(CAIssuerName), ca->getSerialNumber()); (void) completeCertificateRef.append(item); u_base64_max_columns = U_OPENSSL_BASE64_MAX_COLUMN; UBase64::encode(CACertificate, CACertificateValue); u_base64_max_columns = 0; vec_CACertificateValue.push_back(CACertificateValue); } completeCertificateRefs.snprintf(U_CONSTANT_TO_PARAM(U_XADES_COMPLETE_CERTIFICATE_REFS_TEMPLATE), U_STRING_TO_TRACE(completeCertificateRef)); unsignedSignaturePropertiesC14N += UXML2Document::xmlC14N(completeCertificateRefs); // <CertificateValues>....</CertificateValues> UString certificateValue(U_CAPACITY), certificateValues(U_CAPACITY); for (i = 0, n = vec_CACertificateValue.size(); i < n; ++i) { CACertificateValue = vec_CACertificateValue[i]; item.snprintf(U_CONSTANT_TO_PARAM(U_XADES_ENCAPSULATED_X509_CERTIFICATE_TEMPLATE), U_STRING_TO_TRACE(CACertificateValue)); (void) certificateValue.append(item); } certificateValues.snprintf(U_CONSTANT_TO_PARAM(U_XADES_CERTIFICATE_VALUES_TEMPLATE), U_STRING_TO_TRACE(certificateValue)); unsignedSignaturePropertiesC14N += UXML2Document::xmlC14N(certificateValues); // <CompleteRevocationRefs>...</CompleteRevocationRefs> UString completeRevocationRef(U_CAPACITY), completeRevocationRefs(U_CAPACITY); long CRLNumber; bool crl_exist; UString crlpath; UVector<UString> vec_CRLValue; UString CRLValue(U_CAPACITY), CRLIssuerName, CRL, CRLIssueTime; for (i = 0; i < num_ca; ++i) { ca = vec_ca[i]; crlpath = UCertificate::getFileName(ca->hashCode(), true, &crl_exist); if (crl_exist) { UCrl crl(UFile::contentOf(crlpath)); CRL = crl.getEncoded("DER"); CRLNumber = crl.getNumber(); CRLIssuerName = crl.getIssuerForLDAP(); CRLIssueTime = UTimeDate::strftime(U_CONSTANT_TO_PARAM("%Y-%m-%dT%H:%M:%SZ"), crl.getIssueTime()); DigestValue.setEmpty(); UServices::generateDigest(alg, 0, CRL, DigestValue, true); item.snprintf(U_CONSTANT_TO_PARAM(U_XADES_CRL_TEMPLATE), U_STRING_TO_TRACE(digest_algorithm), U_STRING_TO_TRACE(DigestValue), U_STRING_TO_TRACE(CRLIssuerName), U_STRING_TO_TRACE(CRLIssueTime), CRLNumber); (void) completeRevocationRef.append(item); u_base64_max_columns = U_OPENSSL_BASE64_MAX_COLUMN; UBase64::encode(CRL, CRLValue); u_base64_max_columns = 0; vec_CRLValue.push_back(CRLValue); } } completeRevocationRefs.snprintf(U_CONSTANT_TO_PARAM(U_XADES_COMPLETE_REVOCATION_REFS_TEMPLATE), U_STRING_TO_TRACE(completeRevocationRef)); unsignedSignaturePropertiesC14N += UXML2Document::xmlC14N(completeRevocationRefs); // <RevocationValues>...</RevocationValues> UString revocationValue(U_CAPACITY), revocationValues(U_CAPACITY); for (i = 0, n = vec_CRLValue.size(); i < n; ++i) { CRLValue = vec_CRLValue[i]; item.snprintf(U_CONSTANT_TO_PARAM(U_XADES_ENCAPSULATED_CRL_VALUE_TEMPLATE), U_STRING_TO_TRACE(CRLValue)); (void) revocationValue.append(item); } revocationValues.snprintf(U_CONSTANT_TO_PARAM(U_XADES_REVOCATION_VALUES_TEMPLATE), U_STRING_TO_TRACE(revocationValue)); unsignedSignaturePropertiesC14N += UXML2Document::xmlC14N(revocationValues); (void) unsignedSignatureProperties.reserve(U_CONSTANT_SIZE(U_XADES_UNSIGNED_SIGNATURE_PROPERTIES_TEMPLATE) + completeCertificateRefs.size() + completeRevocationRefs.size() + certificateValues.size() + revocationValues.size()); unsignedSignatureProperties.snprintf(U_CONSTANT_TO_PARAM(U_XADES_UNSIGNED_SIGNATURE_PROPERTIES_TEMPLATE), U_STRING_TO_TRACE(completeCertificateRefs), U_STRING_TO_TRACE(certificateValues), U_STRING_TO_TRACE(completeRevocationRefs), U_STRING_TO_TRACE(revocationValues)); }