/// <summary> /// Digitally signs the specified manifest, adds the signature to the manifest, and returns it. /// </summary> /// <param name="manifest">The manifest to sign.</param> /// <param name="privateKey">The PGP private key with which to sign the file.</param> /// <param name="passphrase">The passphrase for the PGP private key.</param> /// <param name="keybaseUsername"> /// The Keybase.io username of the account hosting the PGP public key used for digest verification. /// </param> /// <returns>The signed manifest.</returns> private PackageManifest SignManifest(PackageManifest manifest, string privateKey, string passphrase, string keybaseUsername) { Info("Digitally signing manifest..."); // insert a signature into the manifest. the signer must be included in the hash to prevent tampering. PackageManifestSignature signature = new PackageManifestSignature(); signature.Issuer = PackagingConstants.KeyIssuer; signature.Subject = keybaseUsername; manifest.Signature = signature; Verbose("Creating SHA512 hash of serialized manifest..."); string manifestHash = Utility.ComputeSHA512Hash(manifest.ToJson()); Verbose($"Hash computed successfully: {manifestHash}."); byte[] manifestBytes = Encoding.ASCII.GetBytes(manifest.ToJson()); Verbose("Creating digest..."); byte[] digestBytes = PGPSignature.Sign(manifestBytes, privateKey, passphrase); Verbose("Digest created successfully."); Verbose("Adding signature to manifest..."); manifest.Signature.Digest = Encoding.ASCII.GetString(digestBytes); Success("Manifest signed successfully."); return(manifest); }
public void Signature() { Assert.Null(Builder.Manifest.Signature); PackageManifestSignature signature = new PackageManifestSignature(); PackageManifestBuilder builder = Builder.Signature(signature); Assert.Same(builder, Builder); Assert.Same(signature, Builder.Manifest.Signature); }
public void Constructor() { PackageManifestSignature test = new PackageManifestSignature(); test.Digest = "digest"; test.Issuer = "issuer"; test.Subject = "subject"; test.Trust = "trust"; Assert.Equal(test.Digest, "digest"); Assert.Equal(test.Issuer, "issuer"); Assert.Equal(test.Subject, "subject"); Assert.Equal(test.Trust, "trust"); }
public void Constructor() { PackageManifestSignature signature = new PackageManifestSignature() { Issuer = "issuer", Subject = "subject", Digest = "digest", Trust = "trust", }; PackageManifestSummarySignatureData test = new PackageManifestSummarySignatureData(signature); Assert.IsType <PackageManifestSummarySignatureData>(test); Assert.NotNull(test); Assert.Equal(signature.Issuer, test.Issuer); Assert.Equal(signature.Subject, test.Subject); }
/// <summary> /// Initializes a new instance of the <see cref="PackageManifestSummarySignatureData"/> class from the specified <paramref name="packageManifestSignature"/>. /// </summary> /// <param name="packageManifestSignature"> /// The <see cref="PackageManifestSignature"/> instance from which to copy values. /// </param> public PackageManifestSummarySignatureData(PackageManifestSignature packageManifestSignature) { this.CopyPropertyValuesFrom(packageManifestSignature); }