public LicenseCriteria Validate(License license, CryptoKey publicKey, IEnumerable <ILicenseValidationRule> validationRules) { if (license == null) { throw new ArgumentNullException(nameof(license)); } if (publicKey == null) { throw new ArgumentNullException(nameof(publicKey)); } if (validationRules == null) { throw new ArgumentNullException(nameof(validationRules)); } var documentSigning = new DocumentSigning(); if (!documentSigning.Validate(license.Document, publicKey)) { throw new InvalidLicenseException(); } var serializer = new LicenseCriteriaSerializer(); var licenseCriteria = serializer.Deserialize(license.Document); var exceptions = new List <Exception>(); foreach (var rule in validationRules) { try { rule.Validate(licenseCriteria); } catch (Exception exception) { exceptions.Add(exception); } } if (exceptions.Count > 0) { throw new AggregateException(exceptions); } return(licenseCriteria); }
public License Generate(CryptoKey privateKey, LicenseCriteria licenseCriteria) { if (privateKey == null) { throw new ArgumentNullException(nameof(privateKey)); } if (licenseCriteria == null) { throw new ArgumentNullException(nameof(licenseCriteria)); } var serializer = new LicenseCriteriaSerializer(); var document = serializer.Serialize(licenseCriteria); var documentSigning = new DocumentSigning(); documentSigning.Sign(document, privateKey); return(new License(document)); }