Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(SQL Server) Generate ECC Keys using Specified Values for KDemonstrates how to verify ECC key generation by using pre-selected values of K with known answer tests.
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls. -- CREATE PROCEDURE ChilkatSample AS BEGIN DECLARE @hr int DECLARE @iTmp0 int -- Important: Do not use nvarchar(max). See the warning about using nvarchar(max). DECLARE @sTmp0 nvarchar(4000) -- This example requires the Chilkat API to have been previously unlocked. -- See Global Unlock Sample for sample code. -- Test Vectors for ECC private keys are shown below. -- Generate a few ECC keys using particular values of k. DECLARE @curveName nvarchar(4000) SELECT @curveName = 'secp256r1' DECLARE @encodedK nvarchar(4000) SELECT @encodedK = '1' -- The decimal encoding means that the string represents a decimal integer. -- You'll see that the k values can ge HUGE integers.. DECLARE @encoding nvarchar(4000) SELECT @encoding = 'decimal' DECLARE @ecc int -- Use "Chilkat_9_5_0.Ecc" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.Ecc', @ecc OUT IF @hr <> 0 BEGIN PRINT 'Failed to create ActiveX component' RETURN END DECLARE @privkey int EXEC sp_OAMethod @ecc, 'GenEccKey2', @privkey OUT, @curveName, @encodedK, @encoding EXEC sp_OAGetProperty @ecc, 'LastMethodSuccess', @iTmp0 OUT IF @iTmp0 <> 1 BEGIN EXEC sp_OAGetProperty @ecc, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @ecc RETURN END DECLARE @pubkey int EXEC sp_OAMethod @privkey, 'GetPublicKey', @pubkey OUT EXEC @hr = sp_OADestroy @privkey -- Get the public key as XML so we can see the individual parts (namely, X and Y). DECLARE @xml int -- Use "Chilkat_9_5_0.Xml" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.Xml', @xml OUT DECLARE @success int EXEC sp_OAMethod @pubkey, 'GetXml', @sTmp0 OUT EXEC sp_OAMethod @xml, 'LoadXml', @success OUT, @sTmp0 EXEC @hr = sp_OADestroy @pubkey -- Check the x and y against the test vectors below.. PRINT 'k = ' + @encodedK EXEC sp_OAMethod @xml, 'GetAttrValue', @sTmp0 OUT, 'x' PRINT 'x = ' + @sTmp0 EXEC sp_OAMethod @xml, 'GetAttrValue', @sTmp0 OUT, 'y' PRINT 'y = ' + @sTmp0 -- Now let's try a really large k SELECT @encodedK = '1769805277975163035253775930842367129093741786725376786007349332653323812656658291413435033257677579095366632521448854141275926144187294499863933403633025023' EXEC sp_OAMethod @ecc, 'GenEccKey2', @privkey OUT, @curveName, @encodedK, @encoding EXEC sp_OAMethod @privkey, 'GetPublicKey', @pubkey OUT EXEC sp_OAMethod @pubkey, 'GetXml', @sTmp0 OUT EXEC sp_OAMethod @xml, 'LoadXml', @success OUT, @sTmp0 EXEC @hr = sp_OADestroy @privkey EXEC @hr = sp_OADestroy @pubkey PRINT 'k = ' + @encodedK EXEC sp_OAMethod @xml, 'GetAttrValue', @sTmp0 OUT, 'x' PRINT 'x = ' + @sTmp0 EXEC sp_OAMethod @xml, 'GetAttrValue', @sTmp0 OUT, 'y' PRINT 'y = ' + @sTmp0 -- ----------------------------------------------------------------------- -- Test vectors for ECC keys generated for particular decimal values of k. -- -- [secp256r1] -- k = 1 -- X = 0x6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296 -- Y = 0x4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5 -- -- k = 2 -- X = 0x7CF27B188D034F7E8A52380304B51AC3C08969E277F21B35A60B48FC47669978 -- Y = 0x7775510DB8ED040293D9AC69F7430DBBA7DADE63CE982299E04B79D227873D1 -- -- k = 3 -- X = 0x5ECBE4D1A6330A44C8F7EF951D4BF165E6C6B721EFADA985FB41661BC6E7FD6C -- Y = 0x8734640C4998FF7E374B06CE1A64A2ECD82AB036384FB83D9A79B127A27D5032 -- -- k = 4 -- X = 0xE2534A3532D08FBBA02DDE659EE62BD0031FE2DB785596EF509302446B030852 -- Y = 0xE0F1575A4C633CC719DFEE5FDA862D764EFC96C3F30EE0055C42C23F184ED8C6 -- -- k = 5 -- X = 0x51590B7A515140D2D784C85608668FDFEF8C82FD1F5BE52421554A0DC3D033ED -- Y = 0xE0C17DA8904A727D8AE1BF36BF8A79260D012F00D4D80888D1D0BB44FDA16DA4 -- -- k = 6 -- X = 0xB01A172A76A4602C92D3242CB897DDE3024C740DEBB215B4C6B0AAE93C2291A9 -- Y = 0xE85C10743237DAD56FEC0E2DFBA703791C00F7701C7E16BDFD7C48538FC77FE2 -- -- k = 7 -- X = 0x8E533B6FA0BF7B4625BB30667C01FB607EF9F8B8A80FEF5B300628703187B2A3 -- Y = 0x73EB1DBDE03318366D069F83A6F5900053C73633CB041B21C55E1A86C1F400B4 -- -- k = 8 -- X = 0x62D9779DBEE9B0534042742D3AB54CADC1D238980FCE97DBB4DD9DC1DB6FB393 -- Y = 0xAD5ACCBD91E9D8244FF15D771167CEE0A2ED51F6BBE76A78DA540A6A0F09957E -- -- k = 9 -- X = 0xEA68D7B6FEDF0B71878938D51D71F8729E0ACB8C2C6DF8B3D79E8A4B90949EE0 -- Y = 0x2A2744C972C9FCE787014A964A8EA0C84D714FEAA4DE823FE85A224A4DD048FA -- -- k = 10 -- X = 0xCEF66D6B2A3A993E591214D1EA223FB545CA6C471C48306E4C36069404C5723F -- Y = 0x878662A229AAAE906E123CDD9D3B4C10590DED29FE751EEECA34BBAA44AF0773 -- -- k = 11 -- X = 0x3ED113B7883B4C590638379DB0C21CDA16742ED0255048BF433391D374BC21D1 -- Y = 0x9099209ACCC4C8A224C843AFA4F4C68A090D04DA5E9889DAE2F8EEFCE82A3740 -- -- k = 12 -- X = 0x741DD5BDA817D95E4626537320E5D55179983028B2F82C99D500C5EE8624E3C4 -- Y = 0x770B46A9C385FDC567383554887B1548EEB912C35BA5CA71995FF22CD4481D3 -- -- k = 13 -- X = 0x177C837AE0AC495A61805DF2D85EE2FC792E284B65EAD58A98E15D9D46072C01 -- Y = 0x63BB58CD4EBEA558A24091ADB40F4E7226EE14C3A1FB4DF39C43BBE2EFC7BFD8 -- -- k = 14 -- X = 0x54E77A001C3862B97A76647F4336DF3CF126ACBE7A069C5E5709277324D2920B -- Y = 0xF599F1BB29F4317542121F8C05A2E7C37171EA77735090081BA7C82F60D0B375 -- -- k = 15 -- X = 0xF0454DC6971ABAE7ADFB378999888265AE03AF92DE3A0EF163668C63E59B9D5F -- Y = 0xB5B93EE3592E2D1F4E6594E51F9643E62A3B21CE75B5FA3F47E59CDE0D034F36 -- -- k = 16 -- X = 0x76A94D138A6B41858B821C629836315FCD28392EFF6CA038A5EB4787E1277C6E -- Y = 0xA985FE61341F260E6CB0A1B5E11E87208599A0040FC78BAA0E9DDD724B8C5110 -- -- k = 17 -- X = 0x47776904C0F1CC3A9C0984B66F75301A5FA68678F0D64AF8BA1ABCE34738A73E -- Y = 0xAA005EE6B5B957286231856577648E8381B2804428D5733F32F787FF71F1FCDC -- -- k = 18 -- X = 0x1057E0AB5780F470DEFC9378D1C7C87437BB4C6F9EA55C63D936266DBD781FDA -- Y = 0xF6F1645A15CBE5DC9FA9B7DFD96EE5A7DCC11B5C5EF4F1F78D83B3393C6A45A2 -- -- k = 19 -- X = 0xCB6D2861102C0C25CE39B7C17108C507782C452257884895C1FC7B74AB03ED83 -- Y = 0x58D7614B24D9EF515C35E7100D6D6CE4A496716E30FA3E03E39150752BCECDAA -- -- k = 20 -- X = 0x83A01A9378395BAB9BCD6A0AD03CC56D56E6B19250465A94A234DC4C6B28DA9A -- Y = 0x76E49B6DE2F73234AE6A5EB9D612B75C9F2202BB6923F54FF8240AAA86F640B8 -- -- k = 112233445566778899 -- X = 0x339150844EC15234807FE862A86BE77977DBFB3AE3D96F4C22795513AEAAB82F -- Y = 0xB1C14DDFDC8EC1B2583F51E85A5EB3A155840F2034730E9B5ADA38B674336A21 -- -- k = 112233445566778899112233445566778899 -- X = 0x1B7E046A076CC25E6D7FA5003F6729F665CC3241B5ADAB12B498CD32F2803264 -- Y = 0xBFEA79BE2B666B073DB69A2A241ADAB0738FE9D2DD28B5604EB8C8CF097C457B -- -- k = 1769805277975163035253775930842367129093741786725376786007349332653323812656658291413435033257677579095366632521448854141275926144187294499863933403633025023 -- X = 0x2D3854A31371FE86AFA7A7DC0B22BC2DC255D3B8D3D0AD4EF6C25DA402117103 -- Y = 0xF6D66F0A39465C49852747337CEE6219F5E0872C6A8E8431EE57410C5392F3DB -- -- k = 104748400337157462316262627929132596317243790506798133267698218707528750292682889221414310155907963824712114916552440160880550666043997030661040721887239 -- X = 0xAEAFB3C99F1EB63297861CC338C797561091F8E1F22AA807438A82E956CF9478 -- Y = 0x1AAC22154C9472D82E063A69FA8E466854E4BFE815C56B496CFC881D901DF226 -- -- k = 6703903865078345888141381651430168039496664077350965054288133126549307058741788671148197429777343936466127575938031786147409472627479702469884214509568000 -- X = 0x9F6DC8BAA2C2A276CC9FA95F83A813D249C809D58B43A83DC21F28DFD126A90 -- Y = 0x72D360D755623F7B039B2D8354C76E3534FDE48DB0DDF3DE4922F53CE6E2DC58 -- -- k = 1675925643682395305404517165643562251880026958780896531698856737024179880343339878336382412050263431942974939646683480906434632963478257639757341102436352 -- X = 0xFB6755D334BBE3138022D9F8B304FC723377906CFE49D5C32211FE5189CA33C3 -- Y = 0xBEED1AB80F1036E3AF55BCE09E38E3D56239E00A042FE0794134936179600C95 -- -- k = 12785133382149415221402495202586701798620696169446772599038235721862338692190156163951558963856959059232381602864743924427451786769515154396810706943 -- X = 0x4886A382D1B15CA9440F648F3F0B62EAA212CF2EA5FA655020C564FF3F9A2596 -- Y = 0x56E92A8F04D4228AF76553D366FBBCE76D30A88053ACB54DD9F0035323E76252 -- -- k = 214524875832249255872206855495734426889477529336261655255492425273322727861341825677722947375406711676372335314043071600934941615185418540320233184489636351 -- X = 0x499040AE1ADB07FA27252C346B8CEC987C0F7376B76334A89A8127A5542665D2 -- Y = 0x2AC0FB385AE831BEC5483368A2CE18B217AAABBBE453C7BDAC963D4B8E887E43 -- -- k = 51140486275567859131139077890835526884648461857823088348651153840508287621366854506831244746531272246620295123104269565867055949378266395604768784399 -- X = 0x1897309BFE4AF9D970F518BA4BF3A5DC8EB8C0CF3C5C70CDE21D6C3E63673F77 -- Y = 0x14A77D8B9106C97458C2C9C976ABFECAA5FEBAA742367F2820B3EDB7A8C003D1 -- -- k = 6651529716025206881035279952881520627841152247212784520914425039312606120198879080839643311347169019249080198239408356563413447402270445462102068592377843 -- X = 0x88DEF4514AECC834D16A599C580E1B6AEF8053A3E4F0CC0B65D703AC9631924F -- Y = 0xF156EA66741ECF2870DD6669CBA93A83DDF8761778BBF7BE9CB1E61E4BEB49F3 -- -- k = 3224551824613232232537680077946818660156835288778087344805370397811379731631671254853846826682273677870214778462237171365140390183770226853329363961324241919 -- X = 0x6D548A62EDCFAB8BF739E74EE0582BE39B95C5A7CE81BBCB687082B7B6C30414 -- Y = 0x67E7F2ABC74B0480DAB3761F8D8A0C760A0D038810383337C707B70BD4EF5CF3 -- -- k = 12486613128442885430380874043991285080254917488396284953815149251315412600634581539066663092297612040669978017623587752845409653167277021864132608 -- X = 0x653430D254EE638A3C68794E48B3863B2A25CBB5E63306FF5C6BAFDD5B9F501B -- Y = 0x3E6EF53C0A53F29A1D5F94903D217D792CC905396AA542C51B699097296FF5E2 -- -- k = 6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005429 -- X = 0xE861147B179113450D991ECCC243040BE4B2EA83B3A668D44B52DCFCBAA16680 -- Y = 0x536FA8DBF602E5B91A1DF36276BDE27E3C29DF1E8392E056548EEC911993DB23 -- -- k = 6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005430 -- X = 0xD6EEF821E1257650E463E6D23AFF7899284672410DAF43E1821EC1CCF3C38750 -- Y = 0x2961FD9956CB06192D3E9A9F06CF8A0EC3B724DECF8F70CC3AC1EDAC9D846159 -- -- k = 6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005431 -- X = 0xF5EED3CC425ED32A447973A400540A1253102D5DC8BC31C30C5009334E8BC858 -- Y = 0x6B29B473AA9FC7D79C1F86EDFD2A271A4BCF264F07FA1A42EFD20E6BA324F4EF -- -- k = 6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005432 -- X = 0x5B16C97257650329D8026B9108116866D78495E92537D5AC29C00770FF6DB91 -- Y = 0xE56D1B1C22F914209669DED2F2C477811D7ACC0BE405B724F02102B0CF57DADC -- -- k = 6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005433 -- X = 0x5404BB1F6006E3970A91F654B579349B5645BC8D62ECEEA02E1C69C9BBC7ACF9 -- Y = 0xDDE19DC28B6021F0B9602C1B0DD7AC6F9F871D3BAFE79D335BBFFB6A53FD3FB -- -- k = 6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005434 -- X = 0xBB588F32A40A57D86B3C5FA795A43769BF87A42C2774EDBCBC45D851301DE591 -- Y = 0x9B52D41BD1A3784786D47AFC24D5C493BC0F64EB0AFA34489C87D5A29F1CE259 -- -- k = 6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005435 -- X = 0x1BF822D6020CC97B8E479D533140C7D04576D2C444F1C1EC02C57B1044D6506D -- Y = 0x29607A443FA2E444F4C115CCEB748A05A3D78D1B9E191D5074448764DB723BE9 -- -- k = 6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005436 -- X = 0xD88AE8E791AFDCD2B5DDACA65204059FCA9EC59B038B7D5A08F6A39BD7D2D133 -- Y = 0x862552BA73B4789EEC0B157A033ED20C2FC4BF319FAE87DB3F12241971E92AAC -- -- k = 6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005437 -- X = 0x3ED8084EA73640ACAC7AFAB65FB48EE953B4D76B2BA1E986CFC88636467CFD8E -- Y = 0xE25DD0C1EBD63F9E00DC3ACB0E5134CBFC4AF845AE5BDECCEA161BF5FAA826AA -- -- k = 6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005438 -- X = 0xBDB5768EB2560DB3247C36AB979F9BFEE59AAC1677BCEEB045E87890442D0CF5 -- Y = 0x20E94B2A3BA26DCD091CFD56F24F41D0DCFB2D0BFEA2428EE8BEE04A3B54D745 -- -- k = 6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005439 -- X = 0xC6FAB3C0731FCD4EBE1BBE197C97948BC5412185955570D46BF0197CA9048550 -- Y = 0x2EBD9D77F68DEDAAA396AE7FB5C38A3C6F1C34CD03C7B580E9B7B22700CA547E -- -- k = 6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005440 -- X = 0xD8128CF1ADBE0112E6F039DD196E17B2276FCBD77426331228FB55C9AFB9988A -- Y = 0x6EE1FDD9DA865D7D5CBE33B9C98B6003132437B9F3E17C03694F923D29B1D5EC -- -- k = 6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005441 -- X = 0x51FE8EDAD2B2413AB72C5EDF3B780177D951B403E77424785AEE564D9C97C9E2 -- Y = 0x9F5427EF6124E68CC5027763B83EF7AB9EBAFAE424BE0A7BE2C235C252B80667 -- -- k = 6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005442 -- X = 0x125AAFD2CD7D23BE615E2EE4B33D2D6D7DADBFE3581A385BA30943AD11600353 -- Y = 0xBE6EAB18544F9467F0A0962F40FE2BB7390B90D0EE19061E23F2BDDFE7D1E147 -- -- k = 6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005443 -- X = 0xDB6B9D504FB3889A8FBC1D8C181AF1B4B75FEC1A0705429A4052FB1D1684F423 -- Y = 0x8029A80E22607E8916021D53E6EED6E8AACB89C2E7B319CD60FFB25544B9ADD8 -- -- k = 6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005444 -- X = 0x8ED563B390950C878D103AFC34C8A2F601BA68D8506C23816AE0DCA6B9E8B72A -- Y = 0x97927DADA6B9741B729A4F388854173B6969638F88086FCE19166D926BF9EE39 -- -- k = 6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005445 -- X = 0xD1C5C17B4D4D8D8231A35E1AC0692413EC1131DE9E4D3CCF63D0457AE52470F7 -- Y = 0x7C7CD5C83BF53E0A571B613235B120B1645BC60F8A83BE6EC1795D1BDFC73A93 -- -- k = 6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005446 -- X = 0xF460B18ECE8E80F49E019DE5ACCDC3CCB492B4841F879B2432B6DFD1AB0B1B39 -- Y = 0x1733F8A4DF56B4BE7E28A5C395D21CD1F85748DDA6C6517854EF5D958E68CAE9 -- -- k = 6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005447 -- X = 0x2A75A7BC8B47276C63DEF73AAA34FC3852983AB7356BDBA086CF559C74573A6B -- Y = 0xC3C9B2EA70A631B36F73808494EA626EBC93BB5D8ADC2A72DA2DF9C00E97EDA3 -- -- k = 6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005448 -- X = 0x6D04A0AD9E96C903869ECD0DD952E1968979ACFA8B2F58AFD65BAD633E81ADB0 -- Y = 0x2B20353E8B6491157E13FF3AC57B11947571F7C2E0124439BEDCEECCC04C40E9 EXEC @hr = sp_OADestroy @ecc EXEC @hr = sp_OADestroy @xml END GO |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.