def test_ecdsa_sign(self): original_data = b'This is data to sign' private = asymmetric.load_private_key(os.path.join(fixtures_dir, 'keys/test-ec-named.key')) public = asymmetric.load_public_key(os.path.join(fixtures_dir, 'keys/test-ec-named.crt')) signature = asymmetric.ecdsa_sign(private, original_data, 'sha1') self.assertIsInstance(signature, byte_cls) asymmetric.ecdsa_verify(public, signature, original_data, 'sha1')
def test_ec_generate(self): public, private = asymmetric.generate_pair('ec', curve='secp256r1') self.assertEqual('ec', public.algorithm) self.assertEqual('secp256r1', public.asn1.curve[1]) original_data = b'This is data to sign' signature = asymmetric.ecdsa_sign(private, original_data, 'sha1') self.assertIsInstance(signature, byte_cls) asymmetric.ecdsa_verify(public, signature, original_data, 'sha1')
def test_ec_generate(self): public, private = asymmetric.generate_pair('ec', curve='secp256r1') self.assertEqual('ec', public.algorithm) self.assertEqual('secp256r1', public.asn1.curve[1]) original_data = b'This is data to sign' signature = asymmetric.ecdsa_sign(private, original_data, 'sha1') self.assertIsInstance(signature, byte_cls) asymmetric.ecdsa_verify(public, signature, original_data, 'sha1') raw_public = asymmetric.dump_public_key(public) asymmetric.load_public_key(raw_public) raw_private = asymmetric.dump_private_key(private, None) asymmetric.load_private_key(raw_private, None) self.assertIsInstance(private.fingerprint, byte_cls) self.assertIsInstance(public.fingerprint, byte_cls) self.assertEqual(private.fingerprint, public.fingerprint)
from oscrypto import asymmetric from asn1crypto import pem, keys import os from .. import config root = os.path.dirname(os.path.dirname(os.path.dirname(__file__))) assets = os.path.join(root, 'assets') pc_path = os.path.join(assets, 'Package Control.sublime-package') pc_sig_path = os.path.join(assets, 'Package Control.sublime-package.sig') public_key_pem = config.read('signing')['public_key'] public_key = asymmetric.load_public_key(public_key_pem.encode('ascii')) private_key_pem = config.read_secret('private_key') private_key = asymmetric.load_private_key(private_key_pem.encode('ascii'), None) with open(pc_sig_path, 'wb') as wf, open(pc_path, 'rb') as rf: pc_data = rf.read() sig = asymmetric.ecdsa_sign(private_key, pc_data, 'sha256') asymmetric.ecdsa_verify(public_key, sig, pc_data, 'sha256') wf.write(pem.armor('PACKAGE CONTROL SIGNATURE', sig)) print('Signature written to %s' % pc_sig_path)