/// <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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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");
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
 /// <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);
 }