public static bool AddSubCaCertificate(byte[] certificateHash, byte[] encodedCert, byte[] signature) { if (CertificateStorageManager.IsSubCaCertificateAddedBefore(certificateHash)) { Logger.log("Sub CA Certificate is added before"); return(false); } Certificate subCaCertificate = CertificateParser.Parse(encodedCert); if (!subCaCertificate.IsLoaded) { Logger.log("Can not parse Sub CA Certificate"); return(false); } if (!ValidateSubCaCertificateAddRequestSignature(subCaCertificate, signature)) { Logger.log("Can not validate Add Sub CA Certificate request signature"); return(false); } if (!CertificateValidator.ValidateSubCaCertificate(subCaCertificate)) { Logger.log("Can not validate Sub CA Certificate"); return(false); } CertificateStorageManager.AddSubCaCertificateToStorage(subCaCertificate, certificateHash, encodedCert); return(true); }