public void Create_WhenCommitmentTypeIdNull_Throws() { var exception = Assert.Throws <ArgumentNullException>( () => CommitmentTypeIndication.Create(commitmentTypeId: null)); Assert.Equal("commitmentTypeId", exception.ParamName); }
public void Create_WithCommitmentTypeId_ReturnsInstance() { var commitmentTypeIndication = CommitmentTypeIndication.Create(new Oid(Oids.CommitmentTypeIdentifierProofOfOrigin)); Assert.Equal(Oids.CommitmentTypeIdentifierProofOfOrigin, commitmentTypeIndication.CommitmentTypeId.Value); Assert.Null(commitmentTypeIndication.Qualifiers); }
public override void PerformTest() { CommitmentTypeIndication cti = new CommitmentTypeIndication(CommitmentTypeIdentifier.ProofOfOrigin); CheckConstruction(cti, CommitmentTypeIdentifier.ProofOfOrigin, null); Asn1Sequence qualifier = new DerSequence(new DerObjectIdentifier("1.2")); cti = new CommitmentTypeIndication(CommitmentTypeIdentifier.ProofOfOrigin, qualifier); CheckConstruction(cti, CommitmentTypeIdentifier.ProofOfOrigin, qualifier); cti = CommitmentTypeIndication.GetInstance(null); if (cti != null) { Fail("null GetInstance() failed."); } try { CommitmentTypeIndication.GetInstance(new object()); Fail("GetInstance() failed to detect bad object."); } catch (ArgumentException) { // expected } }
public void Read_WithEmptyQualifiers_Throws() { var bcCommitmentTypeIndication = new BcCommitmentTypeIndication( PkcsObjectIdentifiers.IdCtiEtsProofOfSender, DerSequence.Empty); var bytes = bcCommitmentTypeIndication.GetDerEncoded(); var exception = Assert.Throws <SignatureException>( () => CommitmentTypeIndication.Read(bytes)); Assert.Equal("The commitment-type-indication attribute is invalid.", exception.Message); }
public void Read_WithOnlyCommitmentTypeId_ReturnsInstance() { var bcCommitmentTypeIndication = new BcCommitmentTypeIndication(PkcsObjectIdentifiers.IdCtiEtsProofOfSender); var bytes = bcCommitmentTypeIndication.GetDerEncoded(); var commitmentTypeIndication = CommitmentTypeIndication.Read(bytes); Assert.Equal( bcCommitmentTypeIndication.CommitmentTypeID.ToString(), commitmentTypeIndication.CommitmentTypeId.Value); Assert.Null(commitmentTypeIndication.Qualifiers); }
public void Read_WithQualifiers_ReturnsInstance() { var commitmentTypeIdentifier = new DerObjectIdentifier("1.2.3"); var bcCommitmentTypeQualifier = new BcCommitmentTypeQualifier(commitmentTypeIdentifier); var bcCommitmentTypeIndication = new BcCommitmentTypeIndication( PkcsObjectIdentifiers.IdCtiEtsProofOfSender, new DerSequence(bcCommitmentTypeQualifier)); var bytes = bcCommitmentTypeIndication.GetDerEncoded(); var commitmentTypeIndication = CommitmentTypeIndication.Read(bytes); Assert.Equal(1, commitmentTypeIndication.Qualifiers.Count); Assert.Equal(commitmentTypeIdentifier.ToString(), commitmentTypeIndication.Qualifiers[0].CommitmentTypeIdentifier.Value); }
private void CheckConstruction( CommitmentTypeIndication mv, DerObjectIdentifier commitmenttTypeId, Asn1Encodable qualifier) { CheckStatement(mv, commitmenttTypeId, qualifier); mv = CommitmentTypeIndication.GetInstance(mv); CheckStatement(mv, commitmenttTypeId, qualifier); Asn1Sequence seq = (Asn1Sequence)Asn1Object.FromByteArray( mv.ToAsn1Object().GetEncoded()); mv = CommitmentTypeIndication.GetInstance(seq); CheckStatement(mv, commitmenttTypeId, qualifier); }
private void CheckStatement( CommitmentTypeIndication cti, DerObjectIdentifier commitmentTypeId, Asn1Encodable qualifier) { if (!cti.CommitmentTypeID.Equals(commitmentTypeId)) { Fail("commitmentTypeIds don't match."); } if (qualifier != null) { if (!cti.CommitmentTypeQualifier.Equals(qualifier)) { Fail("qualifiers don't match."); } } else if (cti.CommitmentTypeQualifier != null) { Fail("qualifier found when none expected."); } }
public void GetAttributes_WithMultipleMatches_ReturnsMatches() { using (var certificate = _fixture.GetDefaultCertificate()) { var attributes = CreateAttributeCollection(certificate, _fixture.DefaultKeyPair.Private, vector => { vector.Add( new BcAttribute( CmsAttributes.SigningTime, new DerSet(new DerUtcTime(DateTime.UtcNow)))); vector.Add( new BcAttribute( PkcsObjectIdentifiers.IdAAEtsCommitmentType, new DerSet( new BcCommitmentTypeIndication(PkcsObjectIdentifiers.IdCtiEtsProofOfOrigin)))); vector.Add( new BcAttribute( PkcsObjectIdentifiers.IdAAEtsCommitmentType, new DerSet( new BcCommitmentTypeIndication(PkcsObjectIdentifiers.IdCtiEtsProofOfReceipt)))); }); var matches = AttributeUtility.GetAttributes(attributes, Oids.CommitmentTypeIndication).ToArray(); Assert.Equal(2, matches.Length); Assert.Equal( PkcsObjectIdentifiers.IdCtiEtsProofOfOrigin.ToString(), CommitmentTypeIndication.Read(matches[0].Values[0].RawData).CommitmentTypeId.Value); Assert.Equal( PkcsObjectIdentifiers.IdCtiEtsProofOfReceipt.ToString(), CommitmentTypeIndication.Read(matches[1].Values[0].RawData).CommitmentTypeId.Value); } }
public void Read_WithInvalidAsn1_Throws() { Assert.Throws <CryptographicException>( () => CommitmentTypeIndication.Read(new byte[] { 0x30, 0x07 })); }
private void AddSignatureProperties(SignatureDocument sigDocument, SignedSignatureProperties signedSignatureProperties, SignedDataObjectProperties signedDataObjectProperties, UnsignedSignatureProperties unsignedSignatureProperties, SignatureParameters parameters) { Cert cert; cert = new Cert(); cert.IssuerSerial.X509IssuerName = parameters.Signer.Certificate.IssuerName.Name; cert.IssuerSerial.X509SerialNumber = parameters.Signer.Certificate.GetSerialNumberAsDecimalString(); DigestUtil.SetCertDigest(parameters.Signer.Certificate.GetRawCertData(), parameters.DigestMethod, cert.CertDigest); signedSignatureProperties.SigningCertificate.CertCollection.Add(cert); if (parameters.SignaturePolicyInfo != null) { if (!string.IsNullOrEmpty(parameters.SignaturePolicyInfo.PolicyIdentifier)) { signedSignatureProperties.SignaturePolicyIdentifier.SignaturePolicyImplied = false; signedSignatureProperties.SignaturePolicyIdentifier.SignaturePolicyId.SigPolicyId.Identifier.IdentifierUri = parameters.SignaturePolicyInfo.PolicyIdentifier; } if (!string.IsNullOrEmpty(parameters.SignaturePolicyInfo.PolicyUri)) { SigPolicyQualifier spq = new SigPolicyQualifier(); spq.AnyXmlElement = sigDocument.Document.CreateElement(XadesSignedXml.XmlXadesPrefix, "SPURI", XadesSignedXml.XadesNamespaceUri); spq.AnyXmlElement.InnerText = parameters.SignaturePolicyInfo.PolicyUri; signedSignatureProperties.SignaturePolicyIdentifier.SignaturePolicyId.SigPolicyQualifiers.SigPolicyQualifierCollection.Add(spq); } if (!string.IsNullOrEmpty(parameters.SignaturePolicyInfo.PolicyHash)) { signedSignatureProperties.SignaturePolicyIdentifier.SignaturePolicyId.SigPolicyHash.DigestMethod.Algorithm = parameters.SignaturePolicyInfo.PolicyDigestAlgorithm.URI; signedSignatureProperties.SignaturePolicyIdentifier.SignaturePolicyId.SigPolicyHash.DigestValue = Convert.FromBase64String(parameters.SignaturePolicyInfo.PolicyHash); } } signedSignatureProperties.SigningTime = parameters.SigningDate.HasValue ? parameters.SigningDate.Value : DateTime.Now; if (_dataFormat != null) { DataObjectFormat newDataObjectFormat = new DataObjectFormat(); newDataObjectFormat.MimeType = _dataFormat.MimeType; newDataObjectFormat.Encoding = _dataFormat.Encoding; newDataObjectFormat.Description = _dataFormat.Description; newDataObjectFormat.ObjectReferenceAttribute = "#" + _refContent.Id; if (_dataFormat.ObjectIdentifier != null) { newDataObjectFormat.ObjectIdentifier.Identifier.IdentifierUri = _dataFormat.ObjectIdentifier.Identifier.IdentifierUri; } signedDataObjectProperties.DataObjectFormatCollection.Add(newDataObjectFormat); } if (parameters.SignerRole != null && (parameters.SignerRole.CertifiedRoles.Count > 0 || parameters.SignerRole.ClaimedRoles.Count > 0)) { signedSignatureProperties.SignerRole = new Microsoft.Xades.SignerRole(); foreach (X509Certificate certifiedRole in parameters.SignerRole.CertifiedRoles) { signedSignatureProperties.SignerRole.CertifiedRoles.CertifiedRoleCollection.Add(new CertifiedRole() { PkiData = certifiedRole.GetRawCertData() }); } foreach (string claimedRole in parameters.SignerRole.ClaimedRoles) { signedSignatureProperties.SignerRole.ClaimedRoles.ClaimedRoleCollection.Add(new ClaimedRole() { InnerText = claimedRole }); } } foreach (SignatureCommitment signatureCommitment in parameters.SignatureCommitments) { CommitmentTypeIndication cti = new CommitmentTypeIndication(); cti.CommitmentTypeId.Identifier.IdentifierUri = signatureCommitment.CommitmentType.URI; cti.AllSignedDataObjects = true; foreach (XmlElement signatureCommitmentQualifier in signatureCommitment.CommitmentTypeQualifiers) { CommitmentTypeQualifier ctq = new CommitmentTypeQualifier(); ctq.AnyXmlElement = signatureCommitmentQualifier; cti.CommitmentTypeQualifiers.CommitmentTypeQualifierCollection.Add(ctq); } signedDataObjectProperties.CommitmentTypeIndicationCollection.Add(cti); } if (parameters.SignatureProductionPlace != null) { signedSignatureProperties.SignatureProductionPlace.City = parameters.SignatureProductionPlace.City; signedSignatureProperties.SignatureProductionPlace.StateOrProvince = parameters.SignatureProductionPlace.StateOrProvince; signedSignatureProperties.SignatureProductionPlace.PostalCode = parameters.SignatureProductionPlace.PostalCode; signedSignatureProperties.SignatureProductionPlace.CountryName = parameters.SignatureProductionPlace.CountryName; } }