ssl.h 449 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207820882098210821182128213821482158216821782188219822082218222822382248225822682278228822982308231823282338234823582368237823882398240824182428243824482458246824782488249825082518252825382548255825682578258825982608261826282638264826582668267826882698270827182728273827482758276827782788279828082818282828382848285828682878288828982908291829282938294829582968297829882998300830183028303830483058306830783088309831083118312831383148315831683178318831983208321832283238324832583268327832883298330833183328333833483358336833783388339834083418342834383448345834683478348834983508351835283538354835583568357835883598360836183628363836483658366836783688369837083718372837383748375837683778378837983808381838283838384838583868387838883898390839183928393839483958396839783988399840084018402840384048405840684078408840984108411841284138414841584168417841884198420842184228423842484258426842784288429843084318432843384348435843684378438843984408441844284438444844584468447844884498450845184528453845484558456845784588459846084618462846384648465846684678468846984708471847284738474847584768477847884798480848184828483848484858486848784888489849084918492849384948495849684978498849985008501850285038504850585068507850885098510851185128513851485158516851785188519852085218522852385248525852685278528852985308531853285338534853585368537853885398540854185428543854485458546854785488549855085518552855385548555855685578558855985608561856285638564856585668567856885698570857185728573857485758576857785788579858085818582858385848585858685878588858985908591859285938594859585968597859885998600860186028603860486058606860786088609861086118612861386148615861686178618861986208621862286238624862586268627862886298630863186328633863486358636863786388639864086418642864386448645864686478648864986508651865286538654865586568657865886598660866186628663866486658666866786688669867086718672867386748675867686778678867986808681868286838684868586868687868886898690869186928693869486958696869786988699870087018702870387048705870687078708870987108711871287138714871587168717871887198720872187228723872487258726872787288729873087318732873387348735873687378738873987408741874287438744874587468747874887498750875187528753875487558756875787588759876087618762876387648765876687678768876987708771877287738774877587768777877887798780878187828783878487858786878787888789879087918792879387948795879687978798879988008801880288038804880588068807880888098810881188128813881488158816881788188819882088218822882388248825882688278828882988308831883288338834883588368837883888398840884188428843884488458846884788488849885088518852885388548855885688578858885988608861886288638864886588668867886888698870887188728873887488758876887788788879888088818882888388848885888688878888888988908891889288938894889588968897889888998900890189028903890489058906890789088909891089118912891389148915891689178918891989208921892289238924892589268927892889298930893189328933893489358936893789388939894089418942894389448945894689478948894989508951895289538954895589568957895889598960896189628963896489658966896789688969897089718972897389748975897689778978897989808981898289838984898589868987898889898990899189928993899489958996899789988999900090019002900390049005900690079008900990109011901290139014901590169017901890199020902190229023902490259026902790289029903090319032903390349035903690379038903990409041904290439044904590469047904890499050905190529053905490559056905790589059906090619062906390649065906690679068906990709071907290739074907590769077907890799080908190829083908490859086908790889089909090919092909390949095909690979098909991009101910291039104910591069107910891099110911191129113911491159116911791189119912091219122912391249125912691279128912991309131913291339134913591369137913891399140914191429143914491459146914791489149915091519152915391549155915691579158915991609161916291639164916591669167916891699170917191729173917491759176917791789179918091819182918391849185918691879188918991909191919291939194919591969197919891999200920192029203920492059206920792089209921092119212921392149215921692179218921992209221922292239224922592269227922892299230923192329233923492359236923792389239924092419242924392449245924692479248924992509251925292539254925592569257925892599260926192629263926492659266926792689269927092719272927392749275927692779278927992809281928292839284928592869287928892899290929192929293929492959296929792989299930093019302930393049305930693079308930993109311931293139314931593169317931893199320932193229323932493259326932793289329933093319332933393349335933693379338933993409341934293439344934593469347934893499350935193529353935493559356935793589359936093619362936393649365936693679368936993709371937293739374937593769377937893799380938193829383938493859386938793889389939093919392939393949395939693979398939994009401940294039404940594069407940894099410941194129413941494159416941794189419942094219422942394249425942694279428942994309431943294339434943594369437943894399440944194429443944494459446944794489449945094519452945394549455945694579458945994609461946294639464946594669467946894699470947194729473947494759476947794789479948094819482948394849485948694879488948994909491949294939494949594969497949894999500950195029503950495059506950795089509951095119512951395149515951695179518951995209521952295239524952595269527952895299530953195329533953495359536953795389539954095419542954395449545954695479548954995509551955295539554955595569557955895599560956195629563956495659566956795689569957095719572957395749575957695779578957995809581958295839584958595869587958895899590959195929593959495959596959795989599960096019602960396049605960696079608960996109611961296139614961596169617961896199620962196229623962496259626962796289629963096319632963396349635963696379638963996409641964296439644964596469647964896499650965196529653965496559656965796589659966096619662966396649665966696679668966996709671967296739674967596769677967896799680968196829683968496859686968796889689969096919692969396949695969696979698969997009701970297039704970597069707970897099710971197129713971497159716971797189719972097219722972397249725972697279728972997309731973297339734973597369737973897399740974197429743974497459746974797489749975097519752975397549755975697579758975997609761976297639764976597669767976897699770
  1. /*!
  2. \brief
  3. \return pointer この関数は、新しいwolfssl_method構造体へのポインタを返します。
  4. _Example_
  5. \code
  6. wolfSSL_Init();
  7. WOLFSSL_CTX* ctx = wolfSSL_CTX_new(wolfDTLSv1_2_client_method());
  8. WOLFSSL* ssl = wolfSSL_new(ctx);
  9. \endcode
  10. \sa wolfSSL_Init
  11. \sa wolfSSL_CTX_new
  12. */
  13. WOLFSSL_METHOD *wolfDTLSv1_2_client_method_ex(void* heap);
  14. /*!
  15. \ingroup Setup
  16. \brief この関数は、Wolfsslv23_client_methodと同様のwolfssl_methodを返します(サーバー/クライアント)。
  17. \return WOLFSSL_METHOD* 成功した作成では、wolfssl_methodポインタを返します
  18. \return NULL メモリ割り当てエラーまたはメソッドの作成の失敗の場合はnull
  19. _Example_
  20. \code
  21. WOLFSSL* ctx;
  22. ctx = wolfSSL_CTX_new(wolfSSLv23_method());
  23. // check ret value
  24. \endcode
  25. \sa wolfSSL_new
  26. \sa wolfSSL_free
  27. */
  28. WOLFSSL_METHOD *wolfSSLv23_method(void);
  29. /*!
  30. \ingroup Setup
  31. \brief WOLFSSLV3_SERVER_METHOD()関数は、アプリケーションがサーバーであることを示すために使用され、SSL 3.0プロトコルのみをサポートします。この関数は、wolfssl_ctx_new()を使用してSSL / TLSコンテキストを作成するときに使用される新しいWolfssl_method構造体のメモリを割り当てて初期化します。
  32. \return * 成功した場合、呼び出しは新しく作成されたwolfssl_method構造へのポインタを返します。
  33. \return FAIL xmallocを呼び出すときにメモリ割り当てが失敗した場合、基礎となるMalloc()実装の失敗値が返されます(通常はerrnoがenomeemに設定されます)。
  34. _Example_
  35. \code
  36. #include <wolfssl/ssl.h>
  37. WOLFSSL_METHOD* method;
  38. WOLFSSL_CTX* ctx;
  39. method = wolfSSLv3_server_method();
  40. if (method == NULL) {
  41. unable to get method
  42. }
  43. ctx = wolfSSL_CTX_new(method);
  44. ...
  45. \endcode
  46. \sa wolfTLSv1_server_method
  47. \sa wolfTLSv1_1_server_method
  48. \sa wolfTLSv1_2_server_method
  49. \sa wolfTLSv1_3_server_method
  50. \sa wolfDTLSv1_server_method
  51. \sa wolfSSLv23_server_method
  52. \sa wolfSSL_CTX_new
  53. */
  54. WOLFSSL_METHOD *wolfSSLv3_server_method(void);
  55. /*!
  56. \ingroup Setup
  57. \brief wolfsslv3_client_method()関数は、アプリケーションがクライアントであり、SSL 3.0プロトコルのみをサポートすることを示すために使用されます。この関数は、wolfssl_ctx_new()を使用してSSL / TLSコンテキストを作成するときに使用される新しいWolfssl_method構造体のメモリを割り当てて初期化します。
  58. \return * 成功した場合、呼び出しは新しく作成されたwolfssl_method構造へのポインタを返します。
  59. \return FAIL xmallocを呼び出すときにメモリ割り当てが失敗した場合、基礎となるMalloc()実装の失敗値が返されます(通常はerrnoがenomeemに設定されます)。
  60. _Example_
  61. \code
  62. #include <wolfssl/ssl.h>
  63. WOLFSSL_METHOD* method;
  64. WOLFSSL_CTX* ctx;
  65. method = wolfSSLv3_client_method();
  66. if (method == NULL) {
  67. unable to get method
  68. }
  69. ctx = wolfSSL_CTX_new(method);
  70. ...
  71. \endcode
  72. \sa wolfTLSv1_client_method
  73. \sa wolfTLSv1_1_client_method
  74. \sa wolfTLSv1_2_client_method
  75. \sa wolfTLSv1_3_client_method
  76. \sa wolfDTLSv1_client_method
  77. \sa wolfSSLv23_client_method
  78. \sa wolfSSL_CTX_new
  79. */
  80. WOLFSSL_METHOD *wolfSSLv3_client_method(void);
  81. /*!
  82. \ingroup Setup
  83. \brief WOLFTLSV1_SERVER_METHOD()関数は、アプリケーションがサーバーであることを示すために使用され、TLS 1.0プロトコルのみをサポートします。この関数は、wolfssl_ctx_new()を使用してSSL / TLSコンテキストを作成するときに使用される新しいWolfssl_method構造体のメモリを割り当てて初期化します。
  84. \return * 成功した場合、呼び出しは新しく作成されたwolfssl_method構造へのポインタを返します。
  85. \return FAIL xmallocを呼び出すときにメモリ割り当てが失敗した場合、基礎となるMalloc()実装の失敗値が返されます(通常はerrnoがenomeemに設定されます)。
  86. _Example_
  87. \code
  88. #include <wolfssl/ssl.h>
  89. WOLFSSL_METHOD* method;
  90. WOLFSSL_CTX* ctx;
  91. method = wolfTLSv1_server_method();
  92. if (method == NULL) {
  93. unable to get method
  94. }
  95. ctx = wolfSSL_CTX_new(method);
  96. ...
  97. \endcode
  98. \sa wolfSSLv3_server_method
  99. \sa wolfTLSv1_1_server_method
  100. \sa wolfTLSv1_2_server_method
  101. \sa wolfTLSv1_3_server_method
  102. \sa wolfDTLSv1_server_method
  103. \sa wolfSSLv23_server_method
  104. \sa wolfSSL_CTX_new
  105. */
  106. WOLFSSL_METHOD *wolfTLSv1_server_method(void);
  107. /*!
  108. \ingroup Setup
  109. \brief wolftlsv1_client_method()関数は、アプリケーションがクライアントであり、TLS 1.0プロトコルのみをサポートすることを示すために使用されます。この関数は、wolfssl_ctx_new()を使用してSSL / TLSコンテキストを作成するときに使用される新しいWolfssl_method構造体のメモリを割り当てて初期化します。
  110. \return * 成功した場合、呼び出しは新しく作成されたwolfssl_method構造へのポインタを返します。
  111. \return FAIL xmallocを呼び出すときにメモリ割り当てが失敗した場合、基礎となるMalloc()実装の失敗値が返されます(通常はerrnoがenomeemに設定されます)。
  112. _Example_
  113. \code
  114. #include <wolfssl/ssl.h>
  115. WOLFSSL_METHOD* method;
  116. WOLFSSL_CTX* ctx;
  117. method = wolfTLSv1_client_method();
  118. if (method == NULL) {
  119. unable to get method
  120. }
  121. ctx = wolfSSL_CTX_new(method);
  122. ...
  123. \endcode
  124. \sa wolfSSLv3_client_method
  125. \sa wolfTLSv1_1_client_method
  126. \sa wolfTLSv1_2_client_method
  127. \sa wolfTLSv1_3_client_method
  128. \sa wolfDTLSv1_client_method
  129. \sa wolfSSLv23_client_method
  130. \sa wolfSSL_CTX_new
  131. */
  132. WOLFSSL_METHOD *wolfTLSv1_client_method(void);
  133. /*!
  134. \ingroup Setup
  135. \brief WOLFTLSV1_1_SERVER_METHOD()関数は、アプリケーションがサーバーであることを示すために使用され、TLS 1.1プロトコルのみをサポートします。この関数は、wolfssl_ctx_new()を使用してSSL / TLSコンテキストを作成するときに使用される新しいWolfssl_method構造体のメモリを割り当てて初期化します。
  136. \return * 成功した場合、呼び出しは新しく作成されたwolfssl_method構造へのポインタを返します。
  137. \return FAIL xmallocを呼び出すときにメモリ割り当てが失敗した場合、基礎となるMalloc()実装の失敗値が返されます(通常はerrnoがenomeemに設定されます)。
  138. _Example_
  139. \code
  140. #include <wolfssl/ssl.h>
  141. WOLFSSL_METHOD* method;
  142. WOLFSSL_CTX* ctx;
  143. method = wolfTLSv1_1_server_method();
  144. if (method == NULL) {
  145. // unable to get method
  146. }
  147. ctx = wolfSSL_CTX_new(method);
  148. ...
  149. \endcode
  150. \sa wolfSSLv3_server_method
  151. \sa wolfTLSv1_server_method
  152. \sa wolfTLSv1_2_server_method
  153. \sa wolfTLSv1_3_server_method
  154. \sa wolfDTLSv1_server_method
  155. \sa wolfSSLv23_server_method
  156. \sa wolfSSL_CTX_new
  157. */
  158. WOLFSSL_METHOD *wolfTLSv1_1_server_method(void);
  159. /*!
  160. \ingroup Setup
  161. \brief WOLFTLSV1_1_CLIENT_METHOD()関数は、アプリケーションがクライアントであり、TLS 1.0プロトコルのみをサポートすることを示すために使用されます。この関数は、wolfssl_ctx_new()を使用してSSL / TLSコンテキストを作成するときに使用される新しいWolfssl_method構造体のメモリを割り当てて初期化します。
  162. \return * 成功した場合、呼び出しは新しく作成されたwolfssl_method構造へのポインタを返します。
  163. \return FAIL xmallocを呼び出すときにメモリ割り当てが失敗した場合、基礎となるMalloc()実装の失敗値が返されます(通常はerrnoがenomeemに設定されます)。
  164. _Example_
  165. \code
  166. #include <wolfssl/ssl.h>
  167. WOLFSSL_METHOD* method;
  168. WOLFSSL_CTX* ctx;
  169. method = wolfTLSv1_1_client_method();
  170. if (method == NULL) {
  171. // unable to get method
  172. }
  173. ctx = wolfSSL_CTX_new(method);
  174. ...
  175. \endcode
  176. \sa wolfSSLv3_client_method
  177. \sa wolfTLSv1_client_method
  178. \sa wolfTLSv1_2_client_method
  179. \sa wolfTLSv1_3_client_method
  180. \sa wolfDTLSv1_client_method
  181. \sa wolfSSLv23_client_method
  182. \sa wolfSSL_CTX_new
  183. */
  184. WOLFSSL_METHOD *wolfTLSv1_1_client_method(void);
  185. /*!
  186. \ingroup Setup
  187. \brief WOLFTLSV1_2_SERVER_METHOD()関数は、アプリケーションがサーバーであることを示すために使用され、TLS 1.2プロトコルのみをサポートします。この関数は、wolfssl_ctx_new()を使用してSSL / TLSコンテキストを作成するときに使用される新しいWolfssl_method構造体のメモリを割り当てて初期化します。
  188. \return * 成功した場合、呼び出しは新しく作成されたwolfssl_method構造へのポインタを返します。
  189. \return FAIL xmallocを呼び出すときにメモリ割り当てが失敗した場合、基礎となるMalloc()実装の失敗値が返されます(通常はerrnoがenomeemに設定されます)。
  190. _Example_
  191. \code
  192. #include <wolfssl/ssl.h>
  193. WOLFSSL_METHOD* method;
  194. WOLFSSL_CTX* ctx;
  195. method = wolfTLSv1_2_server_method();
  196. if (method == NULL) {
  197. // unable to get method
  198. }
  199. ctx = wolfSSL_CTX_new(method);
  200. ...
  201. \endcode
  202. \sa wolfSSLv3_server_method
  203. \sa wolfTLSv1_server_method
  204. \sa wolfTLSv1_1_server_method
  205. \sa wolfTLSv1_3_server_method
  206. \sa wolfDTLSv1_server_method
  207. \sa wolfSSLv23_server_method
  208. \sa wolfSSL_CTX_new
  209. */
  210. WOLFSSL_METHOD *wolfTLSv1_2_server_method(void);
  211. /*!
  212. \ingroup Setup
  213. \brief wolftlsv1_2_client_method()関数は、アプリケーションがクライアントであり、TLS 1.2プロトコルのみをサポートすることを示すために使用されます。この関数は、wolfssl_ctx_new()を使用してSSL / TLSコンテキストを作成するときに使用される新しいWolfssl_method構造体のメモリを割り当てて初期化します。
  214. \return * 成功した場合、呼び出しは新しく作成されたwolfssl_method構造へのポインタを返します。
  215. \return FAIL xmallocを呼び出すときにメモリ割り当てが失敗した場合、基礎となるMalloc()実装の失敗値が返されます(通常はerrnoがenomeemに設定されます)。
  216. _Example_
  217. \code
  218. #include <wolfssl/ssl.h>
  219. WOLFSSL_METHOD* method;
  220. WOLFSSL_CTX* ctx;
  221. method = wolfTLSv1_2_client_method();
  222. if (method == NULL) {
  223. // unable to get method
  224. }
  225. ctx = wolfSSL_CTX_new(method);
  226. ...
  227. \endcode
  228. \sa wolfSSLv3_client_method
  229. \sa wolfTLSv1_client_method
  230. \sa wolfTLSv1_1_client_method
  231. \sa wolfTLSv1_3_client_method
  232. \sa wolfDTLSv1_client_method
  233. \sa wolfSSLv23_client_method
  234. \sa wolfSSL_CTX_new
  235. */
  236. WOLFSSL_METHOD *wolfTLSv1_2_client_method(void);
  237. /*!
  238. \ingroup Setup
  239. \brief wolfdtlsv1_client_method()関数は、アプリケーションがクライアントであり、DTLS 1.0プロトコルのみをサポートすることを示すために使用されます。この関数は、wolfssl_ctx_new()を使用してSSL / TLSコンテキストを作成するときに使用される新しいWolfssl_method構造体のメモリを割り当てて初期化します。この関数は、WolfSSLがDTLSサポート( - enable-dtls、またはWolfSSL_DTLSを定義することによって)コンパイルされている場合にのみ使用できます。
  240. \return * 成功した場合、呼び出しは新しく作成されたwolfssl_method構造へのポインタを返します。
  241. \return FAIL xmallocを呼び出すときにメモリ割り当てが失敗した場合、基礎となるMalloc()実装の失敗値が返されます(通常はerrnoがenomeemに設定されます)。
  242. _Example_
  243. \code
  244. WOLFSSL_METHOD* method;
  245. WOLFSSL_CTX* ctx;
  246. method = wolfDTLSv1_client_method();
  247. if (method == NULL) {
  248. // unable to get method
  249. }
  250. ctx = wolfSSL_CTX_new(method);
  251. ...
  252. \endcode
  253. \sa wolfSSLv3_client_method
  254. \sa wolfTLSv1_client_method
  255. \sa wolfTLSv1_1_client_method
  256. \sa wolfTLSv1_2_client_method
  257. \sa wolfTLSv1_3_client_method
  258. \sa wolfSSLv23_client_method
  259. \sa wolfSSL_CTX_new
  260. */
  261. WOLFSSL_METHOD *wolfDTLSv1_client_method(void);
  262. /*!
  263. \ingroup Setup
  264. \brief WOLFDTLSV1_SERVER_METHOD()関数は、アプリケーションがサーバーであることを示すために使用され、DTLS 1.0プロトコルのみをサポートします。この関数は、wolfssl_ctx_new()を使用してSSL / TLSコンテキストを作成するときに使用される新しいWolfssl_method構造体のメモリを割り当てて初期化します。この関数は、WolfSSLがDTLSサポート( - enable-dtls、またはWolfSSL_DTLSを定義することによって)コンパイルされている場合にのみ使用できます。
  265. \return * 成功した場合、呼び出しは新しく作成されたwolfssl_method構造へのポインタを返します。
  266. \return FAIL xmallocを呼び出すときにメモリ割り当てが失敗した場合、基礎となるMalloc()実装の失敗値が返されます(通常はerrnoがenomeemに設定されます)。
  267. _Example_
  268. \code
  269. WOLFSSL_METHOD* method;
  270. WOLFSSL_CTX* ctx;
  271. method = wolfDTLSv1_server_method();
  272. if (method == NULL) {
  273. // unable to get method
  274. }
  275. ctx = wolfSSL_CTX_new(method);
  276. ...
  277. \endcode
  278. \sa wolfSSLv3_server_method
  279. \sa wolfTLSv1_server_method
  280. \sa wolfTLSv1_1_server_method
  281. \sa wolfTLSv1_2_server_method
  282. \sa wolfTLSv1_3_server_method
  283. \sa wolfSSLv23_server_method
  284. \sa wolfSSL_CTX_new
  285. */
  286. WOLFSSL_METHOD *wolfDTLSv1_server_method(void);
  287. /*!
  288. \brief サーバ側。
  289. \return This 関数はwolfssl_methodポインタを返します。
  290. _Example_
  291. \code
  292. WOLFSSL_CTX* ctx = wolfSSL_CTX_new(wolfDTLSv1_2_server_method());
  293. WOLFSSL* ssl = WOLFSSL_new(ctx);
  294. \endcode
  295. \sa wolfSSL_CTX_new
  296. */
  297. WOLFSSL_METHOD *wolfDTLSv1_2_server_method(void);
  298. /*!
  299. \ingroup Setup
  300. \brief Chacha-Poly Aead Constructionの最初のリリースと新しいバージョンの間にいくつかの違いがあるため、古いバージョンを使用してサーバー/クライアントと通信するオプションを追加しました。デフォルトでは、WolfSSLは新しいバージョンを使用します。
  301. \return 0 成功すると
  302. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  303. _Example_
  304. \code
  305. int ret = 0;
  306. WOLFSSL* ssl;
  307. ...
  308. ret = wolfSSL_use_old_poly(ssl, 1);
  309. if (ret != 0) {
  310. // failed to set poly1305 AEAD version
  311. }
  312. \endcode
  313. \sa none
  314. */
  315. int wolfSSL_use_old_poly(WOLFSSL* ssl, int value);
  316. /*!
  317. \brief セッション状態これにより、ハンドシェイクが完了した後に接続をピックアップすることができます。
  318. \return Success 成功した場合、読み取ったバッファの量が返されます。
  319. \return Failure すべての失敗した戻り値は0未満になります。
  320. \return VERSION_ERROR バージョンの不一致が見つかった場合、IE DTLS V1とCTXがDTLS V1.2に設定された場合、Version_Errorが返されます。
  321. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  322. \param buf インポートするシリアル化されたセッション。
  323. _Example_
  324. \code
  325. WOLFSSL* ssl;
  326. int ret;
  327. unsigned char buf[MAX];
  328. bufSz = MAX;
  329. ...
  330. //get information sent from wc_dtls_export function and place it in buf
  331. fread(buf, 1, bufSz, input);
  332. ret = wolfSSL_dtls_import(ssl, buf, bufSz);
  333. if (ret < 0) {
  334. // handle error case
  335. }
  336. // no wolfSSL_accept needed since handshake was already done
  337. ...
  338. ret = wolfSSL_write(ssl) and wolfSSL_read(ssl);
  339. ...
  340. \endcode
  341. \sa wolfSSL_new
  342. \sa wolfSSL_CTX_new
  343. \sa wolfSSL_CTX_dtls_set_export
  344. */
  345. int wolfSSL_dtls_import(WOLFSSL* ssl, unsigned char* buf,
  346. unsigned int sz);
  347. /*!
  348. \brief 接続の状態をインポートします。警告:BUFには、状態に関する機密情報が含まれており、保存されている場合は保存する前に暗号化されるのが最善です。追加のデバッグ情報をマクロwolfssl_session_export_debugが定義して表示できます。
  349. \return the バッファ 'BUF'から読み込まれたバイト数
  350. \param ssl セッションをインポートするためのWolfSSL構造
  351. \param buf シリアル化されたセッション
  352. \sa wolfSSL_dtls_import
  353. \sa wolfSSL_tls_export
  354. */
  355. int wolfSSL_tls_import(WOLFSSL* ssl, const unsigned char* buf,
  356. unsigned int sz);
  357. /*!
  358. \brief セッションをエクスポートするためのコールバック関数。これは、以前に格納されているエクスポート機能をクリアするためのパラメータfuncとしてnullを渡すことが許可されています。サーバー側で使用され、ハンドシェイクが完了した直後に呼び出されます。
  359. \return SSL_SUCCESS 成功すると。
  360. \return BAD_FUNC_ARG NULLまたは予想されない引数が渡された場合
  361. \param ctx wolfssl_ctx_new()で作成されたwolfssl_ctx構造へのポインタ。
  362. _Example_
  363. \code
  364. int send_session(WOLFSSL* ssl, byte* buf, word32 sz, void* userCtx);
  365. // body of send session (wc_dtls_export) that passses
  366. // buf (serialized session) to destination
  367. WOLFSSL_CTX* ctx;
  368. int ret;
  369. ...
  370. ret = wolfSSL_CTX_dtls_set_export(ctx, send_session);
  371. if (ret != SSL_SUCCESS) {
  372. // handle error case
  373. }
  374. ...
  375. ret = wolfSSL_accept(ssl);
  376. ...
  377. \endcode
  378. \sa wolfSSL_new
  379. \sa wolfSSL_CTX_new
  380. \sa wolfSSL_dtls_set_export
  381. \sa Static buffer use
  382. */
  383. int wolfSSL_CTX_dtls_set_export(WOLFSSL_CTX* ctx,
  384. wc_dtls_export func);
  385. /*!
  386. \brief セッションをエクスポートする機能。これは、以前に格納されているエクスポート機能をクリアするためのパラメータfuncとしてnullを渡すことが許可されています。サーバー側で使用され、ハンドシェイクが完了した直後に呼び出されます。
  387. \return SSL_SUCCESS 成功すると。
  388. \return BAD_FUNC_ARG NULLまたは予想されない引数が渡された場合
  389. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  390. _Example_
  391. \code
  392. int send_session(WOLFSSL* ssl, byte* buf, word32 sz, void* userCtx);
  393. // body of send session (wc_dtls_export) that passses
  394. // buf (serialized session) to destination
  395. WOLFSSL* ssl;
  396. int ret;
  397. ...
  398. ret = wolfSSL_dtls_set_export(ssl, send_session);
  399. if (ret != SSL_SUCCESS) {
  400. // handle error case
  401. }
  402. ...
  403. ret = wolfSSL_accept(ssl);
  404. ...
  405. \endcode
  406. \sa wolfSSL_new
  407. \sa wolfSSL_CTX_new
  408. \sa wolfSSL_CTX_dtls_set_export
  409. */
  410. int wolfSSL_dtls_set_export(WOLFSSL* ssl, wc_dtls_export func);
  411. /*!
  412. \brief 提供されたバッファへのWolfSSLセッション。セッションをシリアル化したときにセッションを送信するための関数コールバックを使用するよりも少ないメモリオーバーヘッドを許可します。関数に渡されたときにバッファがNULLの場合、SZはWolfSSLセッションの直列化に必要なバッファのサイズに設定されます。
  413. \return Success 成功した場合、使用されるバッファの量が返されます。
  414. \return Failure すべての失敗した戻り値は0未満になります。
  415. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  416. \param buf 直列化セッションを保持するためのバッファ。
  417. _Example_
  418. \code
  419. WOLFSSL* ssl;
  420. int ret;
  421. unsigned char buf[MAX];
  422. bufSz = MAX;
  423. ...
  424. ret = wolfSSL_dtls_export(ssl, buf, bufSz);
  425. if (ret < 0) {
  426. // handle error case
  427. }
  428. ...
  429. \endcode
  430. \sa wolfSSL_new
  431. \sa wolfSSL_CTX_new
  432. \sa wolfSSL_CTX_dtls_set_export
  433. \sa wolfSSL_dtls_import
  434. */
  435. int wolfSSL_dtls_export(WOLFSSL* ssl, unsigned char* buf,
  436. unsigned int* sz);
  437. /*!
  438. \brief 接続の直列化された状態をインポートします。ほとんどの場合、wolfssl_tls_exportの代わりにwolfssl_get1_sessionを使用する必要があります。追加のデバッグ情報をマクロwolfssl_session_export_debugが定義して表示できます。警告:BUFには、状態に関する機密情報が含まれており、保存されている場合は保存する前に暗号化されるのが最善です。
  439. \return the バッファー 'BUF'に書き込まれたバイト数
  440. \param ssl セッションをエクスポートするためのWolfSSL構造
  441. \param buf 直列化セッションの出力
  442. \sa wolfSSL_dtls_import
  443. \sa wolfSSL_tls_import
  444. */
  445. int wolfSSL_tls_export(WOLFSSL* ssl, unsigned char* buf,
  446. unsigned int* sz);
  447. /*!
  448. \brief その後、CTXの有効期間およびCTXから作成されたSSLオブジェクトには、asideを設定します。NULL CTXポインタとWOLFSSL_METHOD_FUNC関数を渡すことによって、CTX自体の作成も静的メモリを使用します。wolfssl_method_funcには、wolfssl_method *(* wolfssl_method_func)の関数署名があります(void *ヒープ)。MAXに0を渡すと、設定されていないかのように動作し、最大の同時使用制限が適用されません。渡されたフラグ値によって、メモリの使用方法と動作中の動作が決まります。利用可能なフラグは次のとおりです.0 - デフォルトの一般メモリ、WolfMEM_IO_POOL - 受信メッセージの送信と一般メモリをオーバーライドするときに入出力バッファに使用されるので、渡されたバッファ内のすべてのメモリがIO、WolfMem_IO_FIXED - WOLFMEM_IO_POOLと同じですが、今度は各SSLと同じです。2つのバッファを自分のライフタイムで自分自身に保ちます。wolfmem_track_stats - 各SSLは実行中にメモリ統計を追跡します。
  449. \return SSL_SUCCESS 成功すると。
  450. \return SSL_FAILURE 失敗すると。
  451. \param ctx wolfssl_ctx構造へのポインタのアドレス。
  452. \param method プロトコルを作成する機能。(CTXもNULLでもない場合はNULLにする必要があります)
  453. \param buf すべての操作に使用するメモリ。
  454. \param sz 渡されているメモリバッファのサイズ。
  455. \param flag メモリの種類
  456. _Example_
  457. \code
  458. WOLFSSL_CTX* ctx;
  459. WOLFSSL* ssl;
  460. int ret;
  461. unsigned char memory[MAX];
  462. int memorySz = MAX;
  463. unsigned char IO[MAX];
  464. int IOSz = MAX;
  465. int flag = WOLFMEM_IO_FIXED | WOLFMEM_TRACK_STATS;
  466. ...
  467. // create ctx also using static memory, start with general memory to use
  468. ctx = NULL:
  469. ret = wolfSSL_CTX_load_static_memory(&ctx, wolfSSLv23_server_method_ex,
  470. memory, memorySz, 0, MAX_CONCURRENT_HANDSHAKES);
  471. if (ret != SSL_SUCCESS) {
  472. // handle error case
  473. }
  474. // load in memory for use with IO
  475. ret = wolfSSL_CTX_load_static_memory(&ctx, NULL, IO, IOSz, flag,
  476. MAX_CONCURRENT_IO);
  477. if (ret != SSL_SUCCESS) {
  478. // handle error case
  479. }
  480. ...
  481. \endcode
  482. \sa wolfSSL_CTX_new
  483. \sa wolfSSL_CTX_is_static_memory
  484. \sa wolfSSL_is_static_memory
  485. */
  486. int wolfSSL_CTX_load_static_memory(WOLFSSL_CTX** ctx,
  487. wolfSSL_method_func method,
  488. unsigned char* buf, unsigned int sz,
  489. int flag, int max);
  490. /*!
  491. \brief そして、静的メモリ使用量に関する情報を収集するためにのみ使用されます。
  492. \return 1 CTXの静的メモリを使用する場合は返されます。
  493. \return 0 静的メモリを使用しない場合は返されます。
  494. \param ctx wolfssl_ctx_new()を使用して作成されたwolfssl_ctx構造へのポインタ。
  495. _Example_
  496. \code
  497. WOLFSSL_CTX* ctx;
  498. int ret;
  499. WOLFSSL_MEM_STATS mem_stats;
  500. ...
  501. //get information about static memory with CTX
  502. ret = wolfSSL_CTX_is_static_memory(ctx, &mem_stats);
  503. if (ret == 1) {
  504. // handle case of is using static memory
  505. // print out or inspect elements of mem_stats
  506. }
  507. if (ret == 0) {
  508. //handle case of ctx not using static memory
  509. }
  510. \endcode
  511. \sa wolfSSL_CTX_new
  512. \sa wolfSSL_CTX_load_static_memory
  513. \sa wolfSSL_is_static_memory
  514. */
  515. int wolfSSL_CTX_is_static_memory(WOLFSSL_CTX* ctx,
  516. WOLFSSL_MEM_STATS* mem_stats);
  517. /*!
  518. \brief SSLの静的メモリ使用量。戻り値は、静的メモリを読み込むときに、静的メモリが使用されているかどうかを示します。
  519. \return 1 CTXの静的メモリを使用する場合は返されます。
  520. \return 0 静的メモリを使用しない場合は返されます。
  521. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  522. _Example_
  523. \code
  524. WOLFSSL* ssl;
  525. int ret;
  526. WOLFSSL_MEM_CONN_STATS mem_stats;
  527. ...
  528. ret = wolfSSL_is_static_memory(ssl, mem_stats);
  529. if (ret == 1) {
  530. // handle case when is static memory
  531. // investigate elements in mem_stats if WOLFMEM_TRACK_STATS flag
  532. }
  533. ...
  534. \endcode
  535. \sa wolfSSL_new
  536. \sa wolfSSL_CTX_is_static_memory
  537. */
  538. int wolfSSL_is_static_memory(WOLFSSL* ssl,
  539. WOLFSSL_MEM_CONN_STATS* mem_stats);
  540. /*!
  541. \ingroup CertsKeys
  542. \brief この関数は証明書ファイルをSSLコンテキストにロードします(wolfssl_ctx)。ファイルはファイル引数によって提供されます。format引数は、ファイルのフォーマットタイプ(SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEM)を指定します。適切な使用法の例をご覧ください。
  543. \return SSL_SUCCESS 成功すると。
  544. \return SSL_FAILURE 関数呼び出しが失敗した場合、可能な原因が誤った形式にある場合、または「format」引数を使用して誤ったフォーマットが指定されている場合があります。ファイルは存在しません。読み取られない、または破損しているメモリ状態が発生すると、ベース16のデコードはファイルで失敗します。
  545. \param ctx wolfssl_ctx_new()を使用して作成されたwolfssl_ctx構造へのポインタ
  546. \param file WolfSSL SSLコンテキストにロードする証明書を含むファイルの名前へのポインタ。
  547. _Example_
  548. \code
  549. int ret = 0;
  550. WOLFSSL_CTX* ctx;
  551. ...
  552. ret = wolfSSL_CTX_use_certificate_file(ctx, “./client-cert.pem”,
  553. SSL_FILETYPE_PEM);
  554. if (ret != SSL_SUCCESS) {
  555. // error loading cert file
  556. }
  557. ...
  558. \endcode
  559. \sa wolfSSL_CTX_use_certificate_buffer
  560. \sa wolfSSL_use_certificate_file
  561. \sa wolfSSL_use_certificate_buffer
  562. */
  563. int wolfSSL_CTX_use_certificate_file(WOLFSSL_CTX* ctx, const char* file,
  564. int format);
  565. /*!
  566. \ingroup CertsKeys
  567. \brief この関数は、秘密鍵ファイルをSSLコンテキスト(WolfSSL_CTX)にロードします。ファイルはファイル引数によって提供されます。format引数は、ファイルのフォーマットタイプを指定します.SSL_FILETYPE_ASN1OR SSL_FILETYPE_PEM。適切な使用法の例をご覧ください。外部キーストアを使用し、秘密鍵を持っていない場合は、代わりに公開鍵を入力してCryProコールバックを登録して署名を処理することができます。このためには、CryptoコールバックまたはPKコールバックを使用したビルドで構築できます。Cryptoコールバックを有効にするには、-enable-cryptocbまたはwolf_crypto_cbを使用し、wc_cryptocb_registerDeviceを使用して暗号コールバックを登録し、wolfssl_ctx_setdevidを使用して関連するdevidを設定します。
  568. \return SSL_SUCCESS 成功すると。
  569. \return SSL_FAILURE ファイルは間違った形式で、または「format」引数を使用して誤った形式が与えられています。ファイルが存在しない、読み込めない、または破損しています。メモリ不足状態が発生します。base16デコードはファイルで失敗します。キーファイルは暗号化されていますが、パスワードは提供されません。
  570. _Example_
  571. \code
  572. int ret = 0;
  573. WOLFSSL_CTX* ctx;
  574. ...
  575. ret = wolfSSL_CTX_use_PrivateKey_file(ctx, “./server-key.pem”,
  576. SSL_FILETYPE_PEM);
  577. if (ret != SSL_SUCCESS) {
  578. // error loading key file
  579. }
  580. ...
  581. \endcode
  582. \sa wolfSSL_CTX_use_PrivateKey_buffer
  583. \sa wolfSSL_use_PrivateKey_file
  584. \sa wolfSSL_use_PrivateKey_buffer
  585. \sa wc_CryptoCb_RegisterDevice
  586. \sa wolfSSL_CTX_SetDevId
  587. */
  588. int wolfSSL_CTX_use_PrivateKey_file(WOLFSSL_CTX* ctx, const char* file, int format);
  589. /*!
  590. \ingroup CertsKeys
  591. \brief この関数は、PEM形式のCA証明書ファイルをSSLコンテキスト(WolfSSL_CTX)にロードします。これらの証明書は、信頼できるルート証明書として扱われ、SSLハンドシェイク中にピアから受信した証明書を検証するために使用されます。ファイル引数によって提供されるルート証明書ファイルは、単一の証明書または複数の証明書を含むファイルであり得る。複数のCA CERTが同じファイルに含まれている場合、WolfSSLはファイルに表示されているのと同じ順序でそれらをロードします。 path引数は、信頼できるルートCAの証明書を含むディレクトリの名前へのポインタです。ファイルの値がNULLではない場合、パスを必要な場合はパスをNULLとして指定できます。 Libraryの構築時にパスが指定されていない場合は、WOLFSSLが指定されたディレクトリにあるすべてのCA証明書をロードします。この関数はディレクトリ内のすべてのファイルをロードしようとします。この関数は、ヘッダー "-----証明書-----"を持つpemフォーマットされたcert_typeファイルを期待しています。
  592. \return SSL_SUCCESS 成功しました。
  593. \return SSL_FAILURE CTXがNULLの場合、またはファイルとパスの両方がNULLの場合は返されます。
  594. \return SSL_BAD_FILETYPE ファイルが間違った形式である場合は返されます。
  595. \return SSL_BAD_FILE ファイルが存在しない場合は返されます。読み込め、または破損していません。
  596. \return MEMORY_E メモリ不足状態が発生した場合に返されます。
  597. \return ASN_INPUT_E base16デコードがファイルに対して失敗した場合に返されます。
  598. \return ASN_BEFORE_DATE_E 現在の日付が前日の前にある場合は返されます。
  599. \return ASN_AFTER_DATE_E 現在の日付が後の日付の後の場合は返されます。
  600. \return BUFFER_E チェーンバッファが受信バッファよりも大きい場合に返されます。
  601. \return BAD_PATH_ERROR OpenDir()がパスを開こうとしたときに失敗した場合に返されます。
  602. \param ctx wolfssl_ctx_new()で作成されたSSLコンテキストへのポインタ。
  603. \param file PEM形式のCA証明書を含むファイルの名前へのポインタ。
  604. _Example_
  605. \code
  606. int ret = 0;
  607. WOLFSSL_CTX* ctx;
  608. ...
  609. ret = wolfSSL_CTX_load_verify_locations(ctx, “./ca-cert.pem”, NULL);
  610. if (ret != WOLFSSL_SUCCESS) {
  611. // error loading CA certs
  612. }
  613. ...
  614. \endcode
  615. \sa wolfSSL_CTX_load_verify_locations_ex
  616. \sa wolfSSL_CTX_load_verify_buffer
  617. \sa wolfSSL_CTX_use_certificate_file
  618. \sa wolfSSL_CTX_use_PrivateKey_file
  619. \sa wolfSSL_CTX_use_certificate_chain_file
  620. \sa wolfSSL_use_certificate_file
  621. \sa wolfSSL_use_PrivateKey_file
  622. \sa wolfSSL_use_certificate_chain_file
  623. */
  624. int wolfSSL_CTX_load_verify_locations(WOLFSSL_CTX* ctx, const char* file,
  625. const char* format);
  626. /*!
  627. \ingroup CertsKeys
  628. \brief この関数は、PEM形式のCA証明書ファイルをSSLコンテキスト(WolfSSL_CTX)にロードします。これらの証明書は、信頼できるルート証明書として扱われ、SSLハンドシェイク中にピアから受信した証明書を検証するために使用されます。ファイル引数によって提供されるルート証明書ファイルは、単一の証明書または複数の証明書を含むファイルであり得る。複数のCA CERTが同じファイルに含まれている場合、WolfSSLはファイルに表示されているのと同じ順序でそれらをロードします。 path引数は、信頼できるルートCAの証明書を含むディレクトリの名前へのポインタです。ファイルの値がNULLではない場合、パスを必要な場合はパスをNULLとして指定できます。 Libraryの構築時にパスが指定されていない場合は、WOLFSSLが指定されたディレクトリにあるすべてのCA証明書をロードします。この関数は、指定されたフラグに基づいてディレクトリ内のすべてのファイルをロードしようとします。この関数は、ヘッダー "-----証明書-----"を持つPEM形式のcert_typeファイルを想定しています。
  629. \return SSL_SUCCESS 成功しました。
  630. \return SSL_FAILURE CTXがNULLの場合、またはファイルとパスの両方がNULLの場合は返されます。少なくとも1つの証明書が正常にロードされているが、失敗した1つ以上がある場合、これも返されます。理由でエラースタックを確認してください。
  631. \return SSL_BAD_FILETYPE ファイルが間違った形式である場合は返されます。
  632. \return SSL_BAD_FILE ファイルが存在しない場合は返されます。読み込め、または破損していません。
  633. \return MEMORY_E メモリ不足状態が発生した場合に返されます。
  634. \return ASN_INPUT_E base16デコードがファイルに対して失敗した場合に返されます。
  635. \return BUFFER_E チェーンバッファが受信バッファよりも大きい場合に返されます。
  636. \return BAD_PATH_ERROR OpenDir()がパスを開こうとしたときに失敗した場合に返されます。
  637. \param ctx wolfssl_ctx_new()で作成されたSSLコンテキストへのポインタ。
  638. \param file PEM形式のCA証明書を含むファイルの名前へのポインタ。
  639. \param path PEM形式の証明書をロードするディレクトリの名前へのポインタ。
  640. _Example_
  641. \code
  642. int ret = 0;
  643. WOLFSSL_CTX* ctx;
  644. ...
  645. ret = wolfSSL_CTX_load_verify_locations_ex(ctx, NULL, “./certs/external",
  646. WOLFSSL_LOAD_FLAG_PEM_CA_ONLY);
  647. if (ret != WOLFSSL_SUCCESS) {
  648. // error loading CA certs
  649. }
  650. ...
  651. \endcode
  652. \sa wolfSSL_CTX_load_verify_locations
  653. \sa wolfSSL_CTX_load_verify_buffer
  654. \sa wolfSSL_CTX_use_certificate_file
  655. \sa wolfSSL_CTX_use_PrivateKey_file
  656. \sa wolfSSL_CTX_use_certificate_chain_file
  657. \sa wolfSSL_use_certificate_file
  658. \sa wolfSSL_use_PrivateKey_file
  659. \sa wolfSSL_use_certificate_chain_file
  660. */
  661. int wolfSSL_CTX_load_verify_locations_ex(WOLFSSL_CTX* ctx, const char* file,
  662. const char* path, unsigned int flags);
  663. /*!
  664. \ingroup Setup
  665. \brief この関数は、TLS / SSLハンドシェイクを実行するときにピアを検証するために使用する証明書をロードします。ハンドシェイク中に送信されたピア証明書は、使用可能なときにスキッドを使用することによって比較されます。これら2つのことが一致しない場合は、ロードされたCASが使用されます。マクロwolfssl_trust_peer_certを定義することで機能が有効になっています。適切な使用法の例をご覧ください。
  666. \return SSL_SUCCES 成功すると。
  667. \return SSL_FAILURE CTXがNULLの場合、または両方のファイルと種類が無効な場合は返されます。
  668. \return SSL_BAD_FILETYPE ファイルが間違った形式である場合は返されます。
  669. \return SSL_BAD_FILE ファイルが存在しない場合は返されます。読み込め、または破損していません。
  670. \return MEMORY_E メモリ不足状態が発生した場合に返されます。
  671. \return ASN_INPUT_E base16デコードがファイルに対して失敗した場合に返されます。
  672. \param ctx wolfssl_ctx_new()で作成されたSSLコンテキストへのポインタ。
  673. \param file 証明書を含むファイルの名前へのポインタ
  674. _Example_
  675. \code
  676. int ret = 0;
  677. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
  678. ...
  679. ret = wolfSSL_CTX_trust_peer_cert(ctx, “./peer-cert.pem”,
  680. SSL_FILETYPE_PEM);
  681. if (ret != SSL_SUCCESS) {
  682. // error loading trusted peer cert
  683. }
  684. ...
  685. \endcode
  686. \sa wolfSSL_CTX_load_verify_buffer
  687. \sa wolfSSL_CTX_use_certificate_file
  688. \sa wolfSSL_CTX_use_PrivateKey_file
  689. \sa wolfSSL_CTX_use_certificate_chain_file
  690. \sa wolfSSL_CTX_trust_peer_buffer
  691. \sa wolfSSL_CTX_Unload_trust_peers
  692. \sa wolfSSL_use_certificate_file
  693. \sa wolfSSL_use_PrivateKey_file
  694. \sa wolfSSL_use_certificate_chain_file
  695. */
  696. int wolfSSL_CTX_trust_peer_cert(WOLFSSL_CTX* ctx, const char* file, int type);
  697. /*!
  698. \ingroup CertsKeys
  699. \brief この関数は、Chain of chainをSSLコンテキスト(WolfSSL_CTX)にロードします。証明書チェーンを含むファイルはファイル引数によって提供され、PEM形式の証明書を含める必要があります。この関数は、最大MAX_CHAIN_DEPTH(Default = 9、internal.hで定義されている)証明書に加えて、サブジェクト証明書を処理します。
  700. \return SSL_SUCCESS 成功すると
  701. \return SSL_FAILURE 関数呼び出しが失敗した場合、可能な原因が誤った形式にある場合、または「format」引数を使用して誤ったフォーマットが指定されている場合があります。ファイルは存在しません。読み取られない、または破損しているメモリ状態が発生します。
  702. \param ctx wolfssl_ctx_new()を使用して作成されたwolfssl_ctx構造へのポインタ
  703. _Example_
  704. \code
  705. int ret = 0;
  706. WOLFSSL_CTX* ctx;
  707. ...
  708. ret = wolfSSL_CTX_use_certificate_chain_file(ctx, “./cert-chain.pem”);
  709. if (ret != SSL_SUCCESS) {
  710. // error loading cert file
  711. }
  712. ...
  713. \endcode
  714. \sa wolfSSL_CTX_use_certificate_file
  715. \sa wolfSSL_CTX_use_certificate_buffer
  716. \sa wolfSSL_use_certificate_file
  717. \sa wolfSSL_use_certificate_buffer
  718. */
  719. int wolfSSL_CTX_use_certificate_chain_file(WOLFSSL_CTX *ctx,
  720. const char *file);
  721. /*!
  722. \ingroup openSSL
  723. \brief この関数は、SSL接続で使用されているプライベートRSAキーをSSLコンテキスト(WolfSSL_CTX)にロードします。この関数は、wolfsslがOpenSSL互換層有効(--enable-openSSlextra、#define openssl_extra)でコンパイルされている場合にのみ利用可能で、より一般的に使用されているwolfssl_ctx_use_privatekey_file()関数と同じです。ファイル引数には、RSA秘密鍵ファイルへのポインタが、フォーマットで指定された形式で含まれています。
  724. \return SSL_SUCCESS 成功すると。
  725. \return SSL_FAILURE 関数呼び出しが失敗した場合、可能な原因には次のようになります。入力キーファイルが誤った形式であるか、または「format」引数を使用して誤った形式が与えられている場合は、ファイルが存在しない、読み込めない、または破損していない、メモリ不足状態が発生します。
  726. \param ctx wolfssl_ctx_new()を使用して作成されたwolfssl_ctx構造へのポインタ
  727. \param file フォーマットで指定された形式で、WolfSSL SSLコンテキストにロードされるRSA秘密鍵を含むファイルの名前へのポインタ。
  728. _Example_
  729. \code
  730. int ret = 0;
  731. WOLFSSL_CTX* ctx;
  732. ...
  733. ret = wolfSSL_CTX_use_RSAPrivateKey_file(ctx, “./server-key.pem”,
  734. SSL_FILETYPE_PEM);
  735. if (ret != SSL_SUCCESS) {
  736. // error loading private key file
  737. }
  738. ...
  739. \endcode
  740. \sa wolfSSL_CTX_use_PrivateKey_buffer
  741. \sa wolfSSL_CTX_use_PrivateKey_file
  742. \sa wolfSSL_use_RSAPrivateKey_file
  743. \sa wolfSSL_use_PrivateKey_buffer
  744. \sa wolfSSL_use_PrivateKey_file
  745. */
  746. int wolfSSL_CTX_use_RSAPrivateKey_file(WOLFSSL_CTX* ctx, const char* file, int format);
  747. /*!
  748. \ingroup IO
  749. \brief この関数は、有効なセッションのために、デフォルトで9の最大チェーン深度を返します。これは、NULL以外のセッションオブジェクト(SSL)があります。
  750. \return MAX_CHAIN_DEPTH wolfssl_ctx構造がnullではない場合に返されます。デフォルトでは値は9です。
  751. \return BAD_FUNC_ARG wolfssl_ctx構造がnullの場合に返されます。
  752. _Example_
  753. \code
  754. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
  755. WOLFSSL* ssl = wolfSSL_new(ctx);
  756. ...
  757. long sslDep = wolfSSL_get_verify_depth(ssl);
  758. if(sslDep > EXPECTED){
  759. // The verified depth is greater than what was expected
  760. } else {
  761. // The verified depth is smaller or equal to the expected value
  762. }
  763. \endcode
  764. \sa wolfSSL_CTX_get_verify_depth
  765. */
  766. long wolfSSL_get_verify_depth(WOLFSSL* ssl);
  767. /*!
  768. \ingroup Setup
  769. \brief この関数は、CTX構造を使用して証明書チェーン深度を取得します。
  770. \return MAX_CHAIN_DEPTH CTX構造体がNULLではない場合に返されます。最大証明書チェーンピア深度の定数表現。
  771. \return BAD_FUNC_ARG CTX構造がNULLの場合に返されます。
  772. _Example_
  773. \code
  774. WOLFSSL_METHOD method; // protocol method
  775. WOLFSSL_CTX* ctx = WOLFSSL_CTX_new(method);
  776. long ret = wolfSSL_CTX_get_verify_depth(ctx);
  777. if(ret == EXPECTED){
  778. // You have the expected value
  779. } else {
  780. // Handle an unexpected depth
  781. }
  782. \endcode
  783. \sa wolfSSL_CTX_use_certificate_chain_file
  784. \sa wolfSSL_get_verify_depth
  785. */
  786. long wolfSSL_CTX_get_verify_depth(WOLFSSL_CTX* ctx);
  787. /*!
  788. \ingroup openSSL
  789. \brief この関数は証明書ファイルをSSLセッション(WolfSSL構造体)にロードします。証明書ファイルはファイル引数によって提供されます。format引数は、ファイルのフォーマットタイプ(SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEM)を指定します。
  790. \return SSL_SUCCESS 成功すると
  791. \return SSL_FAILURE 関数呼び出しが失敗した場合、可能な原因には次のようになります。ファイルは誤った形式で、または「format」引数を使用して誤った形式が与えられています。メモリ不足状態が発生すると、ファイルでbase16のデコードが失敗する
  792. \param ssl wolfssl_new()で作成されたwolfssl構造へのポインタ。
  793. \param file wolfssl sslセッションにロードされる証明書を含むファイルの名前へのポインタは、フォーマットで指定された形式でフォーマットします。
  794. _Example_
  795. \code
  796. int ret = 0;
  797. WOLFSSL* ssl;
  798. ...
  799. ret = wolfSSL_use_certificate_file(ssl, “./client-cert.pem”,
  800. SSL_FILETYPE_PEM);
  801. if (ret != SSL_SUCCESS) {
  802. // error loading cert file
  803. }
  804. ...
  805. \endcode
  806. \sa wolfSSL_CTX_use_certificate_buffer
  807. \sa wolfSSL_CTX_use_certificate_file
  808. \sa wolfSSL_use_certificate_buffer
  809. */
  810. int wolfSSL_use_certificate_file(WOLFSSL* ssl, const char* file, int format);
  811. /*!
  812. \ingroup openSSL
  813. \brief この関数は、秘密鍵ファイルをSSLセッション(WolfSSL構造体)にロードします。キーファイルはファイル引数によって提供されます。format引数は、ファイルの形式タイプを指定します - SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEM。外部キーストアを使用し、秘密鍵を持っていない場合は、代わりに公開鍵を入力してCryProコールバックを登録して署名を処理することができます。このためには、CryptoコールバックまたはPKコールバックを使用したビルドで構築できます。Cryptoコールバックを有効にするには、--enable-cryptocbまたはwolf_crypto_cbを使用し、wc_cryptocb_registerDeviceを使用して暗号コールバックを登録し、wolfssl_setdevidを使用して関連するdevidを設定します。
  814. \return SSL_SUCCESS 成功すると。
  815. \return SSL_FAILURE 関数呼び出しが失敗した場合、可能な原因には次のようになります。ファイルは誤った形式で、または「format」引数を使用して誤った形式が与えられていますが、ファイルは存在しません。メモリ不足状態が発生すると、ベース16のデコードがファイルで失敗し、キーファイルは暗号化されていますが、パスワードは提供されていません。
  816. \param ssl wolfssl_new()で作成されたwolfssl構造へのポインタ。
  817. \param file wolfssl sslセッションにロードされるキーファイルを含むファイルの名前へのポインタは、フォーマットで指定された形式でフォーマットします。
  818. _Example_
  819. \code
  820. int ret = 0;
  821. WOLFSSL* ssl;
  822. ...
  823. ret = wolfSSL_use_PrivateKey_file(ssl, “./server-key.pem”,
  824. SSL_FILETYPE_PEM);
  825. if (ret != SSL_SUCCESS) {
  826. // error loading key file
  827. }
  828. ...
  829. \endcode
  830. \sa wolfSSL_CTX_use_PrivateKey_buffer
  831. \sa wolfSSL_CTX_use_PrivateKey_file
  832. \sa wolfSSL_use_PrivateKey_buffer
  833. \sa wc_CryptoCb_RegisterDevice
  834. \sa wolfSSL_SetDevId
  835. */
  836. int wolfSSL_use_PrivateKey_file(WOLFSSL* ssl, const char* file, int format);
  837. /*!
  838. \ingroup openSSL
  839. \brief この関数は、Chain of chainをSSLセッション(WolfSSL構造体)にロードします。証明書チェーンを含むファイルはファイル引数によって提供され、PEM形式の証明書を含める必要があります。この関数は、MAX_CHAIN_DEPTH(Default = 9、internal.hで定義されている)証明書に加えて、サブジェクト証明書を処理します。
  840. \return SSL_SUCCESS 成功すると。
  841. \return SSL_FAILURE 関数呼び出しが失敗した場合、可能な原因には次のようになります。ファイルは誤った形式で、または「format」引数を使用して誤った形式が与えられています。メモリの状態が発生します
  842. \param ssl wolfssl_new()を使用して作成されたwolfssl構造へのポインタ
  843. _Example_
  844. \code
  845. int ret = 0;
  846. WOLFSSL* ctx;
  847. ...
  848. ret = wolfSSL_use_certificate_chain_file(ssl, “./cert-chain.pem”);
  849. if (ret != SSL_SUCCESS) {
  850. // error loading cert file
  851. }
  852. ...
  853. \endcode
  854. \sa wolfSSL_CTX_use_certificate_chain_file
  855. \sa wolfSSL_CTX_use_certificate_chain_buffer
  856. \sa wolfSSL_use_certificate_chain_buffer
  857. */
  858. int wolfSSL_use_certificate_chain_file(WOLFSSL* ssl, const char *file);
  859. /*!
  860. \ingroup openSSL
  861. \brief この関数は、SSL接続で使用されているプライベートRSAキーをSSLセッション(WolfSSL構造体)にロードします。この関数は、wolfsslがOpenSSL互換層有効(--enable-openSSlextra、#define openssl_extra)でコンパイルされている場合にのみ利用可能で、より一般的に使用されるwolfssl_use_privatekey_file()関数と同じです。ファイル引数には、RSA秘密鍵ファイルへのポインタが、フォーマットで指定された形式で含まれています。
  862. \return SSL_SUCCESS 成功すると
  863. \return SSL_FAILURE 関数呼び出しが失敗した場合、可能な原因には次のようになります。入力キーファイルが誤った形式であるか、または「format」引数を使用して誤った形式が与えられている場合は、ファイルが存在しない、読み込めない、または破損していない、メモリ不足状態が発生します
  864. \param ssl wolfssl_new()を使用して作成されたwolfssl構造へのポインタ
  865. _Example_
  866. \code
  867. int ret = 0;
  868. WOLFSSL* ssl;
  869. ...
  870. ret = wolfSSL_use_RSAPrivateKey_file(ssl, “./server-key.pem”,
  871. SSL_FILETYPE_PEM);
  872. if (ret != SSL_SUCCESS) {
  873. // error loading private key file
  874. }
  875. ...
  876. \endcode
  877. \sa wolfSSL_CTX_use_RSAPrivateKey_file
  878. \sa wolfSSL_CTX_use_PrivateKey_buffer
  879. \sa wolfSSL_CTX_use_PrivateKey_file
  880. \sa wolfSSL_use_PrivateKey_buffer
  881. \sa wolfSSL_use_PrivateKey_file
  882. */
  883. int wolfSSL_use_RSAPrivateKey_file(WOLFSSL* ssl, const char* file, int format);
  884. /*!
  885. \ingroup CertsKeys
  886. \brief この関数はwolfssl_ctx_load_verify_locationsと似ていますが、DerフォーマットされたCAファイルをSSLコンテキスト(WolfSSL_CTX)にロードすることを許可します。それはまだPEM形式のCAファイルをロードするためにも使用されるかもしれません。これらの証明書は、信頼できるルート証明書として扱われ、SSLハンドシェイク中にピアから受信した証明書を検証するために使用されます。ファイル引数によって提供されるルート証明書ファイルは、単一の証明書または複数の証明書を含むファイルであり得る。複数のCA CERTが同じファイルに含まれている場合、WolfSSLはファイルに表示されているのと同じ順序でそれらをロードします。 format引数は、証明書がSSL_FILETYPE_PEMまたはSSL_FILETYPE_ASN1(DER)のいずれかにある形式を指定します。 wolfssl_ctx_load_verify_locationsとは異なり、この関数は特定のディレクトリパスからのCA証明書のロードを許可しません。この関数は、WolfSSLライブラリがwolfssl_der_doad定義された状態でコンパイルされたときにのみ利用可能です。
  887. \return SSL_SUCCESS 成功すると。
  888. \return SSL_FAILURE 失敗すると。
  889. \param ctx wolfssl_ctx_new()を使用して作成されたwolfssl_ctx構造へのポインタ
  890. \param file wolfssl SSLコンテキストにロードされるCA証明書を含むファイルの名前をフォーマットで指定された形式で指定します。
  891. _Example_
  892. \code
  893. int ret = 0;
  894. WOLFSSL_CTX* ctx;
  895. ...
  896. ret = wolfSSL_CTX_der_load_verify_locations(ctx, “./ca-cert.der”,
  897. SSL_FILETYPE_ASN1);
  898. if (ret != SSL_SUCCESS) {
  899. // error loading CA certs
  900. }
  901. ...
  902. \endcode
  903. \sa wolfSSL_CTX_load_verify_locations
  904. \sa wolfSSL_CTX_load_verify_buffer
  905. */
  906. int wolfSSL_CTX_der_load_verify_locations(WOLFSSL_CTX* ctx,
  907. const char* file, int format);
  908. /*!
  909. \ingroup Setup
  910. \brief この関数は、入力のための所望のSSL / TLSプロトコル方式を取って、新しいSSLコンテキストを作成します。
  911. \return pointer 正常にコールが新しく作成されたwolfssl_ctxへのポインタを返します。
  912. \return NULL 失敗すると。
  913. _Example_
  914. \code
  915. WOLFSSL_CTX* ctx = 0;
  916. WOLFSSL_METHOD* method = 0;
  917. method = wolfSSLv3_client_method();
  918. if (method == NULL) {
  919. // unable to get method
  920. }
  921. ctx = wolfSSL_CTX_new(method);
  922. if (ctx == NULL) {
  923. // context creation failed
  924. }
  925. \endcode
  926. \sa wolfSSL_new
  927. */
  928. WOLFSSL_CTX* wolfSSL_CTX_new(WOLFSSL_METHOD*);
  929. /*!
  930. \ingroup Setup
  931. \brief この関数は新しいSSLセッションを作成し、すでに作成されたSSLコンテキストを入力として作成します。
  932. \return * 成功した場合、呼び出しが新しく作成されたWolfSSL構造へのポインタを返します。
  933. \return NULL 失敗すると。
  934. _Example_
  935. \code
  936. #include <wolfssl/ssl.h>
  937. WOLFSSL* ssl = NULL;
  938. WOLFSSL_CTX* ctx = 0;
  939. ctx = wolfSSL_CTX_new(method);
  940. if (ctx == NULL) {
  941. // context creation failed
  942. }
  943. ssl = wolfSSL_new(ctx);
  944. if (ssl == NULL) {
  945. // SSL object creation failed
  946. }
  947. \endcode
  948. \sa wolfSSL_CTX_new
  949. */
  950. WOLFSSL* wolfSSL_new(WOLFSSL_CTX*);
  951. /*!
  952. \ingroup Setup
  953. \brief この関数は、SSL接続の入出力機能としてファイル記述子(FD)を割り当てます。通常これはソケットファイル記述子になります。
  954. \return SSL_SUCCESS 成功すると。
  955. \return Bad_FUNC_ARG 失敗すると。
  956. \param ssl wolfssl_new()で作成されたSSLセッションへのポインタ。
  957. _Example_
  958. \code
  959. int sockfd;
  960. WOLFSSL* ssl = 0;
  961. ...
  962. ret = wolfSSL_set_fd(ssl, sockfd);
  963. if (ret != SSL_SUCCESS) {
  964. // failed to set SSL file descriptor
  965. }
  966. \endcode
  967. \sa wolfSSL_CTX_SetIOSend
  968. \sa wolfSSL_CTX_SetIORecv
  969. \sa wolfSSL_SetIOReadCtx
  970. \sa wolfSSL_SetIOWriteCtx
  971. */
  972. int wolfSSL_set_fd (WOLFSSL* ssl, int fd);
  973. /*!
  974. \ingroup Setup
  975. \brief この関数はファイルディスクリプタ(fd)をSSLコネクションの入出力手段として設定します。
  976. 通常はソケットファイルディスクリプタが指定されます。この関数はDTLS専用のAPIであり、ソケットは接続済みとマークされます。
  977. したがって、与えられたfdに対するrecvfromとsendto呼び出しでのaddrとaddr_lenはNULLに設定されます。
  978. \return SSL_SUCCESS 成功時に返されます。
  979. \return Bad_FUNC_ARG 失敗時に返されます。
  980. \param ssl wolfSSL_new()で生成されたSSLセッションへのポインタ。
  981. \param fd SSL/TLSコネクションに使用するファイルディスクリプタ。
  982. _Example_
  983. \code
  984. int sockfd;
  985. WOLFSSL* ssl = 0;
  986. ...
  987. if (connect(sockfd, peer_addr, peer_addr_len) != 0) {
  988. // handle connect error
  989. }
  990. ...
  991. ret = wolfSSL_set_dtls_fd_connected(ssl, sockfd);
  992. if (ret != SSL_SUCCESS) {
  993. // failed to set SSL file descriptor
  994. }
  995. \endcode
  996. \sa wolfSSL_CTX_SetIOSend
  997. \sa wolfSSL_CTX_SetIORecv
  998. \sa wolfSSL_SetIOReadCtx
  999. \sa wolfSSL_SetIOWriteCtx
  1000. \sa wolfDTLS_SetChGoodCb
  1001. */
  1002. int wolfSSL_set_dtls_fd_connected(WOLFSSL* ssl, int fd);
  1003. /*!
  1004. \ingroup IO
  1005. \brief 渡された優先順位の暗号の名前を取得します。
  1006. \return string 成功
  1007. \return 0 優先順位は範囲外または無効です。
  1008. _Example_
  1009. \code
  1010. printf("The cipher at 1 is %s", wolfSSL_get_cipher_list(1));
  1011. \endcode
  1012. \sa wolfSSL_CIPHER_get_name
  1013. \sa wolfSSL_get_current_cipher
  1014. */
  1015. char* wolfSSL_get_cipher_list(int priority);
  1016. /*!
  1017. \ingroup IO
  1018. \brief この関数はwolfsslでイネーブルされた暗号を取得します。
  1019. \return SSL_SUCCESS 関数がエラーなしで実行された場合に返されます。
  1020. \return BAD_FUNC_ARG bufパラメータがnullの場合、またはlen引数がゼロ以下の場合に返されます。
  1021. \return BUFFER_E バッファが十分に大きくなく、オーバーフローすると返されます。
  1022. \param buf バッファを表す文字ポインタ。
  1023. _Example_
  1024. \code
  1025. static void ShowCiphers(void){
  1026. char* ciphers;
  1027. int ret = wolfSSL_get_ciphers(ciphers, (int)sizeof(ciphers));
  1028. if(ret == SSL_SUCCES){
  1029. printf(“%s\n”, ciphers);
  1030. }
  1031. }
  1032. \endcode
  1033. \sa GetCipherNames
  1034. \sa wolfSSL_get_cipher_list
  1035. \sa ShowCiphers
  1036. */
  1037. int wolfSSL_get_ciphers(char* buf, int len);
  1038. /*!
  1039. \ingroup IO
  1040. \brief この関数は、引数をwolfssl_get_cipher_name_internalに渡すことによって、DHE-RSAの形式の暗号名を取得します。
  1041. \return string この関数は、一致した暗号スイートの文字列表現を返します。
  1042. \return NULL エラーまたは暗号が見つかりません。
  1043. _Example_
  1044. \code
  1045. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
  1046. WOLFSSL* ssl = wolfSSL_new(ctx);
  1047. char* cipherS = wolfSSL_get_cipher_name(ssl);
  1048. if(cipher == NULL){
  1049. // There was not a cipher suite matched
  1050. } else {
  1051. // There was a cipher suite matched
  1052. printf(“%s\n”, cipherS);
  1053. }
  1054. \endcode
  1055. \sa wolfSSL_CIPHER_get_name
  1056. \sa wolfSSL_get_current_cipher
  1057. \sa wolfSSL_get_cipher_name_internal
  1058. */
  1059. const char* wolfSSL_get_cipher_name(WOLFSSL* ssl);
  1060. /*!
  1061. \ingroup IO
  1062. \brief この関数は、SSL接続の入出力機能として使用されるファイル記述子(FD)を返します。通常これはソケットファイル記述子になります。
  1063. \return fd 正常にコールがSSLセッションファイル記述子を返します。
  1064. _Example_
  1065. \code
  1066. int sockfd;
  1067. WOLFSSL* ssl = 0;
  1068. ...
  1069. sockfd = wolfSSL_get_fd(ssl);
  1070. ...
  1071. \endcode
  1072. \sa wolfSSL_set_fd
  1073. */
  1074. int wolfSSL_get_fd(const WOLFSSL*);
  1075. /*!
  1076. \ingroup Setup
  1077. \brief この関数は、wolfsslオブジェクトに基礎となるI / Oがブロックされていないことを通知します。アプリケーションがWolfSSLオブジェクトを作成した後、ブロッキング以外のソケットで使用される場合は、wolfssl_set_using_nonblock()を呼び出します。これにより、wolfsslオブジェクトは、Ewouldblockを受信することを意味します。
  1078. \return none 返品不可。
  1079. \param ssl wolfssl_new()で作成されたSSLセッションへのポインタ。
  1080. _Example_
  1081. \code
  1082. WOLFSSL* ssl = 0;
  1083. ...
  1084. wolfSSL_set_using_nonblock(ssl, 1);
  1085. \endcode
  1086. \sa wolfSSL_get_using_nonblock
  1087. \sa wolfSSL_dtls_got_timeout
  1088. \sa wolfSSL_dtls_get_current_timeout
  1089. */
  1090. void wolfSSL_set_using_nonblock(WOLFSSL* ssl, int nonblock);
  1091. /*!
  1092. \ingroup IO
  1093. \brief この機能により、WolfSSLが非ブロッキングI / Oを使用しているかどうかをアプリケーションが判断できます。WolfSSLがノンブロッキングI / Oを使用している場合、この関数は1を返します。これにより、wolfsslオブジェクトは、Ewouldblockを受信することを意味します。
  1094. \return 0 基礎となるI / Oがブロックされています。
  1095. \return 1 基礎となるI / Oは非ブロッキングです。
  1096. _Example_
  1097. \code
  1098. int ret = 0;
  1099. WOLFSSL* ssl = 0;
  1100. ...
  1101. ret = wolfSSL_get_using_nonblock(ssl);
  1102. if (ret == 1) {
  1103. // underlying I/O is non-blocking
  1104. }
  1105. ...
  1106. \endcode
  1107. \sa wolfSSL_set_session
  1108. */
  1109. int wolfSSL_get_using_nonblock(WOLFSSL*);
  1110. /*!
  1111. \ingroup IO
  1112. \brief この関数は、バッファ、データ、SSL接続、SSLにSZバイトを書き込みます。必要に応じて、wolfssl_write()はまだwolfssl_connect()またはwolfssl_accept()によってまだ実行されていない場合、wolfssl_write()はSSL / TLSセッションをネゴシエートします。wolfssl_write()は、ブロックと非ブロッキングI / Oの両方で動作します。基礎となる入出力がブロックされていない場合、wolfssl_write()がwolfssl_write()のニーズを満たすことができなかったときにwolfssl_write()が戻ります。この場合、wolfssl_get_error()への呼び出しはSSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEのいずれかを生成します。その結果、基礎となるI / Oが準備ができたら、呼び出し側プロセスはwolfssl_write()への呼び出しを繰り返す必要があります。基礎となる入出力がブロックされている場合、WolfSSL_WRITE()は、サイズSZのバッファデータが完全に書かれたかエラーが発生したら、戻るだけです。
  1113. \return >0 成功時に書かれたバイト数。
  1114. \return 0 失敗したときに返されます。特定のエラーコードについてwolfssl_get_error()を呼び出します。
  1115. \return SSL_FATAL_ERROR エラーが発生したとき、または非ブロッキングソケットを使用するときには、SSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEエラーが受信され、再度WOLFSSL_WRITE()を呼び出す必要がある場合は、障害が発生します。特定のエラーコードを取得するには、wolfssl_get_error()を使用してください。
  1116. \param ssl wolfssl_new()で作成されたSSLセッションへのポインタ。
  1117. \param data ピアに送信されるデータバッファ。
  1118. _Example_
  1119. \code
  1120. WOLFSSL* ssl = 0;
  1121. char msg[64] = “hello wolfssl!”;
  1122. int msgSz = (int)strlen(msg);
  1123. int flags;
  1124. int ret;
  1125. ...
  1126. ret = wolfSSL_write(ssl, msg, msgSz);
  1127. if (ret <= 0) {
  1128. // wolfSSL_write() failed, call wolfSSL_get_error()
  1129. }
  1130. \endcode
  1131. \sa wolfSSL_send
  1132. \sa wolfSSL_read
  1133. \sa wolfSSL_recv
  1134. */
  1135. int wolfSSL_write(WOLFSSL* ssl, const void* data, int sz);
  1136. /*!
  1137. \ingroup IO
  1138. \brief この関数は、SSLセッション(SSL)内部読み取りバッファからSZバイトをバッファデータに読み出します。読み取られたバイトは内部受信バッファから削除されます。必要に応じて、wolfssl_read()がまだwolfssl_connect()またはwolfssl_accept()によってまだ実行されていない場合は、wolfssl_read()がSSL / TLSセッションをネゴシエートします。 SSL / TLSプロトコルは、最大サイズのSSLレコードを使用します(最大レコードサイズは<wolfssl_root> /wolfssl/internal.h)。そのため、WolfSSLは、レコードを処理および復号化することができる前に、SSLレコード全体を内部的に読み取る必要があります。このため、wolfssl_read()への呼び出しは、呼び出し時に復号化された最大バッファサイズを返すことができます。検索され、次回のwolfssl_read()への呼び出しで復号化される内部WolfSSL受信バッファで待機していない追加の復号化データがあるかもしれません。 SZが内部読み取りバッファ内のバイト数より大きい場合、SSL_READ()は内部読み取りバッファで使用可能なバイトを返します。 BYTESが内部読み取りバッファにバッファされていない場合は、WOLFSSL_READ()への呼び出しは次のレコードの処理をトリガーします。
  1139. \return >0 成功時に読み取られたバイト数。
  1140. \return 0 失敗したときに返されます。これは、クリーン(通知アラートを閉じる)シャットダウンまたはピアが接続を閉じただけであることによって発生する可能性があります。特定のエラーコードについてwolfssl_get_error()を呼び出します。
  1141. \return SSL_FATAL_ERROR エラーが発生したとき、または非ブロッキングソケットを使用するときに、SSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEエラーが受信され、再度WOLFSL_READ()を呼び出す必要がある場合は、障害が発生します。特定のエラーコードを取得するには、wolfssl_get_error()を使用してください。
  1142. \param ssl wolfssl_new()で作成されたSSLセッションへのポインタ。
  1143. \param data wolfssl_read()がデータを読み取るバッファー。
  1144. _Example_
  1145. \code
  1146. WOLFSSL* ssl = 0;
  1147. char reply[1024];
  1148. ...
  1149. input = wolfSSL_read(ssl, reply, sizeof(reply));
  1150. if (input > 0) {
  1151. // “input” number of bytes returned into buffer “reply”
  1152. }
  1153. See wolfSSL examples (client, server, echoclient, echoserver) for more
  1154. complete examples of wolfSSL_read().
  1155. \endcode
  1156. \sa wolfSSL_recv
  1157. \sa wolfSSL_write
  1158. \sa wolfSSL_peek
  1159. \sa wolfSSL_pending
  1160. */
  1161. int wolfSSL_read(WOLFSSL* ssl, void* data, int sz);
  1162. /*!
  1163. \ingroup IO
  1164. \brief この関数はSSLセッション(SSL)内部読み取りバッファからSZバイトをバッファデータにコピーします。この関数は、内部SSLセッション受信バッファ内のデータが削除されていないか変更されていないことを除いて、wolfssl_read()と同じです。必要に応じて、wolfssl_read()のように、wolfssl_peek()はまだwolfssl_connect()またはwolfssl_accept()によってまだ実行されていない場合、wolfssl_peek()はSSL / TLSセッションをネゴシエートします。 SSL / TLSプロトコルは、最大サイズのSSLレコードを使用します(最大レコードサイズは<wolfssl_root> /wolfssl/internal.h)。そのため、WolfSSLは、レコードを処理および復号化することができる前に、SSLレコード全体を内部的に読み取る必要があります。このため、wolfssl_peek()への呼び出しは、呼び出し時に復号化された最大バッファサイズを返すことができます。 wolfssl_peek()/ wolfssl_read()への次の呼び出しで検索および復号化される内部WolfSSL受信バッファ内で待機していない追加の復号化データがあるかもしれません。 SZが内部読み取りバッファ内のバイト数よりも大きい場合、SSL_PEEK()は内部読み取りバッファで使用可能なバイトを返します。バイトが内部読み取りバッファにバッファされていない場合、Wolfssl_peek()への呼び出しは次のレコードの処理をトリガーします。
  1165. \return >0 成功時に読み取られたバイト数。
  1166. \return 0 失敗したときに返されます。これは、クリーン(通知アラートを閉じる)シャットダウンまたはピアが接続を閉じただけであることによって発生する可能性があります。特定のエラーコードについてwolfssl_get_error()を呼び出します。
  1167. \return SSL_FATAL_ERROR エラーが発生したとき、または非ブロッキングソケットを使用するときに、SSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEエラーが受信され、再度WolfSSL_PEEK()を呼び出す必要がある場合は、障害が発生します。特定のエラーコードを取得するには、wolfssl_get_error()を使用してください。
  1168. \param ssl wolfssl_new()で作成されたSSLセッションへのポインタ。
  1169. \param data wolfssl_peek()がデータを読み取るバッファー。
  1170. _Example_
  1171. \code
  1172. WOLFSSL* ssl = 0;
  1173. char reply[1024];
  1174. ...
  1175. input = wolfSSL_peek(ssl, reply, sizeof(reply));
  1176. if (input > 0) {
  1177. // “input” number of bytes returned into buffer “reply”
  1178. }
  1179. \endcode
  1180. \sa wolfSSL_read
  1181. */
  1182. int wolfSSL_peek(WOLFSSL* ssl, void* data, int sz);
  1183. /*!
  1184. \ingroup IO
  1185. \brief この関数はサーバー側で呼び出され、SSLクライアントがSSL / TLSハンドシェイクを開始するのを待ちます。この関数が呼び出されると、基礎となる通信チャネルはすでに設定されています。wolfssl_accept()は、ブロックと非ブロッキングI / Oの両方で動作します。基礎となる入出力がノンブロッキングである場合、wolfssl_accept()は、基礎となるI / Oがwolfssl_acceptのニーズを満たすことができなかったときに戻ります。この場合、wolfssl_get_error()への呼び出しはSSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEのいずれかを生成します。通話プロセスは、読み取り可能なデータが使用可能であり、wolfsslが停止した場所を拾うときに、wolfssl_acceptの呼び出しを繰り返す必要があります。ノンブロッキングソケットを使用する場合は、何も実行する必要がありますが、select()を使用して必要な条件を確認できます。基礎となるI / Oがブロックされている場合、wolfssl_accept()はハンドシェイクが終了したら、またはエラーが発生したら戻ります。
  1186. \return SSL_SUCCESS 成功すると。
  1187. \return SSL_FATAL_ERROR エラーが発生した場合は返されます。より詳細なエラーコードを取得するには、wolfssl_get_error()を呼び出します。
  1188. _Example_
  1189. \code
  1190. int ret = 0;
  1191. int err = 0;
  1192. WOLFSSL* ssl;
  1193. char buffer[80];
  1194. ...
  1195. ret = wolfSSL_accept(ssl);
  1196. if (ret != SSL_SUCCESS) {
  1197. err = wolfSSL_get_error(ssl, ret);
  1198. printf(“error = %d, %s\n”, err, wolfSSL_ERR_error_string(err, buffer));
  1199. }
  1200. \endcode
  1201. \sa wolfSSL_get_error
  1202. \sa wolfSSL_connect
  1203. */
  1204. int wolfSSL_accept(WOLFSSL*);
  1205. /*!
  1206. \ingroup Setup
  1207. \brief この関数は、割り当てられたwolfssl_ctxオブジェクトを解放します。この関数はCTX参照数を減らし、参照カウントが0に達したときにのみコンテキストを解放します。
  1208. \return none 返品不可。
  1209. _Example_
  1210. \code
  1211. WOLFSSL_CTX* ctx = 0;
  1212. ...
  1213. wolfSSL_CTX_free(ctx);
  1214. \endcode
  1215. \sa wolfSSL_CTX_new
  1216. \sa wolfSSL_new
  1217. \sa wolfSSL_free
  1218. */
  1219. void wolfSSL_CTX_free(WOLFSSL_CTX*);
  1220. /*!
  1221. \ingroup Setup
  1222. \brief この関数は割り当てられたwolfsslオブジェクトを解放します。
  1223. \return none 返品不可。
  1224. _Example_
  1225. \code
  1226. #include <wolfssl/ssl.h>
  1227. WOLFSSL* ssl = 0;
  1228. ...
  1229. wolfSSL_free(ssl);
  1230. \endcode
  1231. \sa wolfSSL_CTX_new
  1232. \sa wolfSSL_new
  1233. \sa wolfSSL_CTX_free
  1234. */
  1235. void wolfSSL_free(WOLFSSL*);
  1236. /*!
  1237. \ingroup TLS
  1238. \brief この関数は、SSLセッションSSLを使用してアクティブなSSL / TLS接続をシャットダウンします。この関数は、ピアに「Close Notify」アラートを送信しようとします。呼び出し側アプリケーションは、Peerがその「閉じる通知」アラートを応答に送信するのを待つか、または直接wolfssl_shutdownを呼び出した後(リソースを保存するために)wolfssl_shutdownを直接通話した後に基礎となる接続を停止するのを待つことができます。どちらのオプションはTLS仕様で許可されています。将来、基礎となる接続が再び使用される場合、同期をピア間で無傷のまま保つために完全な2方向のシャットダウン手順を実行する必要があります。 wolfssl_shutdown()は、ブロックと非ブロッキングI / Oの両方で動作します。基礎となるI / Oがノンブロッキングされていない場合、wolfsl_shutdown()がwolfssl_shutdown()のニーズを満たすことができなかった場合、wolfssl_shutdown()はエラーを返します。この場合、wolfssl_get_error()への呼び出しはSSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEのいずれかを生成します。その結果、基礎となるI / Oが準備ができたら、呼び出し側プロセスはwolfssl_shutdown()への呼び出しを繰り返す必要があります。
  1239. \return SSL_SUCCESS 成功に戻ります。
  1240. \return SSL_SHUTDOWN_NOT_DONE シャットダウンが終了していない場合は返され、機能を再度呼び出す必要があります。
  1241. \return SSL_FATAL_ERROR 失敗したときに返されます。より具体的なエラーコードに対してwolfssl_get_error()を呼び出します。
  1242. _Example_
  1243. \code
  1244. #include <wolfssl/ssl.h>
  1245. int ret = 0;
  1246. WOLFSSL* ssl = 0;
  1247. ...
  1248. ret = wolfSSL_shutdown(ssl);
  1249. if (ret != 0) {
  1250. // failed to shut down SSL connection
  1251. }
  1252. \endcode
  1253. \sa wolfSSL_free
  1254. \sa wolfSSL_CTX_free
  1255. */
  1256. int wolfSSL_shutdown(WOLFSSL*);
  1257. /*!
  1258. \ingroup IO
  1259. \brief この関数は、基礎となる書き込み操作のために指定されたフラグを使用して、バッファ、データ、データからSZバイトをSSL接続SSLに書き込みます。必要に応じて、wolfssl_send()がまだwolfssl_connect()またはwolfssl_accept()によってまだ実行されていない場合は、wolfssl_send()がSSL / TLSセッションをネゴシエートします。wolfssl_send()は、ブロックと非ブロッキングI / Oの両方で動作します。基礎となる入出力が非ブロックされていない場合、wolfssl_send()がwolfssl_sendのニーズを満たすことができなかったときにwolfssl_send()が戻ります。この場合、wolfssl_get_error()への呼び出しはSSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEのいずれかを生成します。その結果、基礎となる入出力が準備ができたら、呼び出し側プロセスはwolfssl_send()への呼び出しを繰り返す必要があります。基礎となる入出力がブロックされている場合、Wolfssl_send()は、サイズSZのバッファデータが完全に書き込まれたかエラーが発生したら、戻るだけです。
  1260. \return >0 成功時に書かれたバイト数。
  1261. \return 0 失敗したときに返されます。特定のエラーコードについてwolfssl_get_error()を呼び出します。
  1262. \return SSL_FATAL_ERROR エラーが発生したとき、または非ブロッキングソケットを使用するときに、SSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEエラーが受信され、再度WOLFSSL_SEND()を呼び出す必要がある場合は、障害が発生します。特定のエラーコードを取得するには、wolfssl_get_error()を使用してください。
  1263. \param ssl wolfssl_new()で作成されたSSLセッションへのポインタ。
  1264. \param data ピアに送信するデータバッファ。
  1265. \param sz ピアに送信されるデータのサイズ(バイト)。
  1266. _Example_
  1267. \code
  1268. WOLFSSL* ssl = 0;
  1269. char msg[64] = “hello wolfssl!”;
  1270. int msgSz = (int)strlen(msg);
  1271. int flags = ... ;
  1272. ...
  1273. input = wolfSSL_send(ssl, msg, msgSz, flags);
  1274. if (input != msgSz) {
  1275. // wolfSSL_send() failed
  1276. }
  1277. \endcode
  1278. \sa wolfSSL_write
  1279. \sa wolfSSL_read
  1280. \sa wolfSSL_recv
  1281. */
  1282. int wolfSSL_send(WOLFSSL* ssl, const void* data, int sz, int flags);
  1283. /*!
  1284. \ingroup IO
  1285. \brief この関数は、基礎となるRECV動作のために指定されたフラグを使用して、SSLセッション(SSL)内部読み取りバッファからSZバイトをバッファデータに読み出します。読み取られたバイトは内部受信バッファから削除されます。この関数はwolfssl_read()と同じです。ただし、アプリケーションが基礎となる読み取り操作のRECVフラグを設定できることを許可します。必要に応じてwolfssl_recv()がwolfssl_connect()またはwolfssl_accept()によってハンドシェイクがまだ実行されていない場合は、SSL / TLSセッションをネゴシエートします。 SSL / TLSプロトコルは、最大サイズのSSLレコードを使用します(最大レコードサイズは<wolfssl_root> /wolfssl/internal.h)。そのため、WolfSSLは、レコードを処理および復号化することができる前に、SSLレコード全体を内部的に読み取る必要があります。このため、wolfssl_recv()への呼び出しは、呼び出し時に復号化された最大バッファサイズを返すことができるだけです。 wolfssl_recv()への次の呼び出しで検索および復号化される内部WolfSSL受信バッファで待機していない追加の復号化されたデータがあるかもしれません。 SZが内部読み取りバッファ内のバイト数よりも大きい場合、SSL_RECV()は内部読み取りバッファで使用可能なバイトを返します。バイトが内部読み取りバッファにバッファされていない場合は、WOLFSSL_RECV()への呼び出しは次のレコードの処理をトリガーします。
  1286. \return >0 成功時に読み取られたバイト数。
  1287. \return 0 失敗したときに返されます。これは、クリーン(通知アラートを閉じる)シャットダウンまたはピアが接続を閉じただけであることによって発生する可能性があります。特定のエラーコードについてwolfssl_get_error()を呼び出します。
  1288. \return SSL_FATAL_ERROR エラーが発生した場合、または非ブロッキングソケットを使用するときには、SSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEエラーが発生し、アプリケーションが再びWOLFSSL_RECV()を呼び出す必要があります。特定のエラーコードを取得するには、wolfssl_get_error()を使用してください。
  1289. \param ssl wolfssl_new()で作成されたSSLセッションへのポインタ。
  1290. \param data wolfssl_recv()がデータを読み取るバッファー。
  1291. \param sz データを読み込むためのバイト数。
  1292. _Example_
  1293. \code
  1294. WOLFSSL* ssl = 0;
  1295. char reply[1024];
  1296. int flags = ... ;
  1297. ...
  1298. input = wolfSSL_recv(ssl, reply, sizeof(reply), flags);
  1299. if (input > 0) {
  1300. // “input” number of bytes returned into buffer “reply”
  1301. }
  1302. \endcode
  1303. \sa wolfSSL_read
  1304. \sa wolfSSL_write
  1305. \sa wolfSSL_peek
  1306. \sa wolfSSL_pending
  1307. */
  1308. int wolfSSL_recv(WOLFSSL* ssl, void* data, int sz, int flags);
  1309. /*!
  1310. \ingroup Debug
  1311. \brief この関数は、以前のAPI関数呼び出し(wolfssl_connect、wolfssl_accept、wolfssl_read、wolfssl_writeなど)がエラー戻りコード(ssl_failure)を呼び出した理由を表す一意のエラーコードを返します。前の関数の戻り値は、RETを介してwolfssl_get_errorに渡されます。wolfssl_get_errorが呼び出された後、一意のエラーコードを返します、wolfssl_err_error_string()を呼び出して人間が読めるエラー文字列を取得することができます。詳細については、wolfssl_err_error_string()を参照してください。
  1312. \return On 完了成功、この関数は、前のAPI関数が失敗した理由を説明する固有のエラーコードを返します。
  1313. \return SSL_ERROR_NONE RET> 0の場合は返されます.Ret <= 0の場合、以前のAPIがエラーコードを返すが実際に発生しなかった場合にこの値を返す場合があります。例は、ゼロSZパラメータを使用してwolfssl_read()を呼び出すことです。a 0 wolfssl_read()からの戻り値は通常エラーを示しますが、この場合はエラーは発生しませんでした。wolfssl_get_error()がその後呼び出された場合、ssl_error_noneが返されます。
  1314. \param ssl wolfssl_new()で作成されたSSLオブジェクトへのポインタ。
  1315. _Example_
  1316. \code
  1317. int err = 0;
  1318. WOLFSSL* ssl;
  1319. char buffer[80];
  1320. ...
  1321. err = wolfSSL_get_error(ssl, 0);
  1322. wolfSSL_ERR_error_string(err, buffer);
  1323. printf(“err = %d, %s\n”, err, buffer);
  1324. \endcode
  1325. \sa wolfSSL_ERR_error_string
  1326. \sa wolfSSL_ERR_error_string_n
  1327. \sa wolfSSL_ERR_print_errors_fp
  1328. \sa wolfSSL_load_error_strings
  1329. */
  1330. int wolfSSL_get_error(WOLFSSL* ssl, int ret);
  1331. /*!
  1332. \ingroup IO
  1333. \brief この関数はアラート履歴を取得します。
  1334. \return SSL_SUCCESS 関数が正常に完了したときに返されます。警告履歴があったか、またはいずれにも、戻り値はSSL_SUCCESSです。
  1335. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  1336. _Example_
  1337. \code
  1338. WOLFSSL_CTX* ctx = wolfSSL_CTX_new(protocol method);
  1339. WOLFSSL* ssl = wolfSSL_new(ctx);
  1340. WOLFSSL_ALERT_HISTORY* h;
  1341. ...
  1342. wolfSSL_get_alert_history(ssl, h);
  1343. // h now has a copy of the ssl->alert_history contents
  1344. \endcode
  1345. \sa wolfSSL_get_error
  1346. */
  1347. int wolfSSL_get_alert_history(WOLFSSL* ssl, WOLFSSL_ALERT_HISTORY *h);
  1348. /*!
  1349. \ingroup Setup
  1350. \brief この関数は、SSLオブジェクトSSLがSSL / TLS接続を確立するために使用されるときに使用されるセッションを設定します。セッションの再開の場合、wolfssl_shutdown()をセッションオブジェクトに呼び出す前に、アプリケーションはオブジェクトからwolfssl_get1_session()を呼び出して保存する必要があります。これはセッションへのポインタを返します。後で、アプリケーションは新しいWolfSSLオブジェクトを作成し、保存したセッションをwolfssl_set_session()に割り当てる必要があります。この時点で、アプリケーションはwolfssl_connect()を呼び出し、WolfSSLはセッションを再開しようとします。WolfSSLサーバーコードでは、デフォルトでセッションの再開を許可します。wolfssl_get1_session()によって返されたオブジェクトは、アプリケーションがそれを使用してそれを使用して解放される必要があります。
  1351. \return SSL_SUCCESS セッションを正常に設定すると返されます。
  1352. \return SSL_FAILURE 失敗した場合に返されます。これはセッションキャッシュが無効になっている、またはセッションがタイムアウトした場合によって発生する可能性があります。
  1353. \return When OpenSSL_EXTRAとWOLFSSL_ERROR_CODE_OPENSSLが定義されているため、セッションがタイムアウトしていてもSSL_SUCCESSが返されます。
  1354. \param ssl wolfssl_new()で作成されたSSLオブジェクトへのポインタ。
  1355. _Example_
  1356. \code
  1357. int ret;
  1358. WOLFSSL* ssl;
  1359. WOLFSSL_SESSION* session;
  1360. ...
  1361. session = wolfSSL_get1_session(ssl);
  1362. if (session == NULL) {
  1363. // failed to get session object from ssl object
  1364. }
  1365. ...
  1366. ret = wolfSSL_set_session(ssl, session);
  1367. if (ret != SSL_SUCCESS) {
  1368. // failed to set the SSL session
  1369. }
  1370. wolfSSL_SESSION_free(session);
  1371. ...
  1372. \endcode
  1373. \sa wolfSSL_get1_session
  1374. */
  1375. int wolfSSL_set_session(WOLFSSL* ssl, WOLFSSL_SESSION* session);
  1376. /*!
  1377. \ingroup IO
  1378. \brief NO_SESSION_CACHE_REFが定義されている場合、この関数はSSLで使用されている現在のセッション(WolfSSL_SESSION)へのポインタを返します。この関数は、wolfssl_sessionオブジェクトへの永続的なポインタを返します。返されるポインタは、wolfssl_freeが呼び出されたときに解放されます。この呼び出しは、現在のセッションを検査または変更するためにのみ使用されます。セッションの再開の場合は、wolfssl_get1_session()を使用することをお勧めします。NO_SESSION_CACHE_REFが定義されていない場合の後方互換性のために、この関数はローカルキャッシュに格納されている永続セッションオブジェクトポインタを返します。キャッシュサイズは有限であり、アプリケーションがwolfssl_set_session()を呼び出す時までにセッションオブジェクトが別のSSL接続によって上書きされる危険性があります。アプリケーションにNO_SESSION_CACHE_REFを定義し、セッション再開にwolfssl_get1_session()を使用することをお勧めします。
  1379. \return pointer 正常にコールが現在のSSLセッションオブジェクトへのポインタを返します。
  1380. \return NULL SSLがNULLの場合、SSLセッションキャッシュが無効になっている場合、WolfSSLはセッションIDを使用できない、またはミューテックス関数が失敗します。
  1381. _Example_
  1382. \code
  1383. WOLFSSL* ssl;
  1384. WOLFSSL_SESSION* session;
  1385. ...
  1386. session = wolfSSL_get_session(ssl);
  1387. if (session == NULL) {
  1388. // failed to get session pointer
  1389. }
  1390. ...
  1391. \endcode
  1392. \sa wolfSSL_get1_session
  1393. \sa wolfSSL_set_session
  1394. */
  1395. WOLFSSL_SESSION* wolfSSL_get_session(WOLFSSL* ssl);
  1396. /*!
  1397. \ingroup IO
  1398. \brief この機能は、期限切れになったセッションキャッシュからセッションをフラッシュします。時間比較にはTMが使用されます。WolfSSLは現在セッションに静的テーブルを使用しているため、フラッシングは不要です。そのため、この機能は現在サブだけです。この関数は、wolfsslがOpenSSL互換層でコンパイルされているときのOpenSSL互換性(ssl_flush_sessions)を提供します。
  1399. \return none いいえ返します。
  1400. \param ctx wolfssl_ctx_new()を使用して作成されたwolfssl_ctx構造へのポインタ。
  1401. _Example_
  1402. \code
  1403. WOLFSSL_CTX* ssl;
  1404. ...
  1405. wolfSSL_flush_sessions(ctx, time(0));
  1406. \endcode
  1407. \sa wolfSSL_get1_session
  1408. \sa wolfSSL_set_session
  1409. */
  1410. void wolfSSL_flush_sessions(WOLFSSL_CTX* ctx, long tm);
  1411. /*!
  1412. \ingroup TLS
  1413. \brief この関数はクライアントセッションをサーバーIDと関連付けます。Newsessionフラグがオンの場合、既存のセッションは再利用されません。
  1414. \return SSL_SUCCESS 関数がエラーなしで実行された場合に返されます。
  1415. \return BAD_FUNC_ARG wolfssl structまたはidパラメータがnullの場合、またはLenがゼロ以下の場合に返されます。
  1416. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  1417. \param id wolfssl_session構造体のServerIDメンバーにコピーされる定数バイトポインタ。
  1418. \param len セッションIDパラメータの長さを表すint型。
  1419. _Example_
  1420. \code
  1421. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol );
  1422. WOLFSSL* ssl = WOLFSSL_new(ctx);
  1423. const byte id[MAX_SIZE]; // or dynamically create space
  1424. int len = 0; // initialize length
  1425. int newSession = 0; // flag to allow
  1426. int ret = wolfSSL_SetServerID(ssl, id, len, newSession);
  1427. if (ret == WOLFSSL_SUCCESS) {
  1428. // The Id was successfully set
  1429. }
  1430. \endcode
  1431. \sa wolfSSL_set_session
  1432. */
  1433. int wolfSSL_SetServerID(WOLFSSL* ssl, const unsigned char* id,
  1434. int len, int newSession);
  1435. /*!
  1436. \ingroup IO
  1437. \brief この関数は、WolfSSL構造体のセッションインデックスを取得します。
  1438. \return int この関数は、wolfssl構造体内のSessionIndexを表すint型を返します。
  1439. _Example_
  1440. \code
  1441. WOLFSSL_CTX_new( protocol method );
  1442. WOLFSSL* ssl = WOLFSSL_new(ctx);
  1443. ...
  1444. int sesIdx = wolfSSL_GetSessionIndex(ssl);
  1445. if(sesIdx < 0 || sesIdx > sizeof(ssl->sessionIndex)/sizeof(int)){
  1446. // You have an out of bounds index number and something is not right.
  1447. }
  1448. \endcode
  1449. \sa wolfSSL_GetSessionAtIndex
  1450. */
  1451. int wolfSSL_GetSessionIndex(WOLFSSL* ssl);
  1452. /*!
  1453. \ingroup IO
  1454. \brief この関数はセッションキャッシュの指定されたインデックスでセッションを取得し、それをメモリにコピーします。wolfssl_session構造体はセッション情報を保持します。
  1455. \return SSL_SUCCESS 関数が正常に実行され、エラーがスローされなかった場合に返されます。
  1456. \return BAD_MUTEX_E アンロックまたはロックミューテックスエラーが発生した場合は返されます。
  1457. \return SSL_FAILURE 関数が正常に実行されなかった場合に返されます。
  1458. \param idx セッションインデックスを表すint型。
  1459. _Example_
  1460. \code
  1461. int idx; // The index to locate the session.
  1462. WOLFSSL_SESSION* session; // Buffer to copy to.
  1463. ...
  1464. if(wolfSSL_GetSessionAtIndex(idx, session) != SSL_SUCCESS){
  1465. // Failure case.
  1466. }
  1467. \endcode
  1468. \sa UnLockMutex
  1469. \sa LockMutex
  1470. \sa wolfSSL_GetSessionIndex
  1471. */
  1472. int wolfSSL_GetSessionAtIndex(int index, WOLFSSL_SESSION* session);
  1473. /*!
  1474. \ingroup IO
  1475. \brief wolfssl_session構造体からピア証明書チェーンを返します。
  1476. \return pointer ピア認証チェーンを含むWOLFSSL_X509_CHAIN構造体へのポインタ。
  1477. _Example_
  1478. \code
  1479. WOLFSSL_SESSION* session;
  1480. WOLFSSL_X509_CHAIN* chain;
  1481. ...
  1482. chain = wolfSSL_SESSION_get_peer_chain(session);
  1483. if(!chain){
  1484. // There was no chain. Failure case.
  1485. }
  1486. \endcode
  1487. \sa wolfSSL_GetSessionAtIndex
  1488. \sa wolfSSL_GetSessionIndex
  1489. \sa AddSession
  1490. */
  1491. WOLFSSL_X509_CHAIN* wolfSSL_SESSION_get_peer_chain(WOLFSSL_SESSION* session);
  1492. /*!
  1493. \ingroup Setup
  1494. \brief この関数はリモートピアの検証方法を設定し、またSSLコンテキストに登録されることを確認することもできます。検証コールバックは、検証障害が発生した場合にのみ呼び出されます。検証コールバックが必要な場合は、NULLポインタをverify_callbackに使用できます。ピア証明書の検証モードは、論理的またはフラグのリストです。可能なフラグ値は次のとおりです.SSL_VERIFY_NONEクライアントモード:クライアントはサーバーから受信した証明書を検証せず、ハンドシェイクは通常どおり続きます。サーバーモード:サーバーはクライアントに証明書要求を送信しません。そのため、クライアント検証は有効になりません。 ssl_verify_peerクライアントモード:クライアントはハンドシェイク中にサーバーから受信した証明書を検証します。これはwolfsslではデフォルトでオンにされます。したがって、このオプションを使用すると効果がありません。サーバーモード:サーバーは証明書要求をクライアントに送信し、受信したクライアント証明書を確認します。 ssl_verify_fail_if_no_peer_certクライアントモード:クライアント側で使用されていない場合は効果がありません。サーバーモード:要求されたときにクライアントが証明書の送信に失敗した場合は、サーバー側で検証が失敗します(SSLサーバーのSSL_VERIFY_PEERを使用する場合)。 ssl_verify_fail_except_pskクライアントモード:クライアント側で使用されていない場合は効果がありません。サーバーモード:PSK接続の場合を除き、検証はssl_verify_fail_if_no_peer_certと同じです。 PSK接続が行われている場合、接続はピア証明書なしで通過します。
  1495. \return none 返品不可。
  1496. \param ctx wolfssl_ctx_new()で作成されたSSLコンテキストへのポインタ。
  1497. \param mode セッションタイムアウト値(秒)
  1498. _Example_
  1499. \code
  1500. WOLFSSL_CTX* ctx = 0;
  1501. ...
  1502. wolfSSL_CTX_set_verify(ctx, (WOLFSSL_VERIFY_PEER |
  1503. WOLFSSL_VERIFY_FAIL_IF_NO_PEER_CERT), NULL);
  1504. \endcode
  1505. \sa wolfSSL_set_verify
  1506. */
  1507. void wolfSSL_CTX_set_verify(WOLFSSL_CTX* ctx, int mode,
  1508. VerifyCallback verify_callback);
  1509. /*!
  1510. \ingroup Setup
  1511. \brief この関数はリモートピアの検証方法を設定し、またSSLセッションに登録するのを登録することもできます。検証コールバックは、検証障害が発生した場合にのみ呼び出されます。検証コールバックが必要な場合は、NULLポインタをverify_callbackに使用できます。ピア証明書の検証モードは、論理的またはフラグのリストです。可能なフラグ値は次のとおりです.SSL_VERIFY_NONEクライアントモード:クライアントはサーバーから受信した証明書を検証せず、ハンドシェイクは通常どおり続きます。サーバーモード:サーバーはクライアントに証明書要求を送信しません。そのため、クライアント検証は有効になりません。 ssl_verify_peerクライアントモード:クライアントはハンドシェイク中にサーバーから受信した証明書を検証します。これはwolfsslではデフォルトでオンにされます。したがって、このオプションを使用すると効果がありません。サーバーモード:サーバーは証明書要求をクライアントに送信し、受信したクライアント証明書を確認します。 ssl_verify_fail_if_no_peer_certクライアントモード:クライアント側で使用されていない場合は効果がありません。サーバーモード:要求されたときにクライアントが証明書の送信に失敗した場合は、サーバー側で検証が失敗します(SSLサーバーのSSL_VERIFY_PEERを使用する場合)。 ssl_verify_fail_except_pskクライアントモード:クライアント側で使用されていない場合は効果がありません。サーバーモード:PSK接続の場合を除き、検証はssl_verify_fail_if_no_peer_certと同じです。 PSK接続が行われている場合、接続はピア証明書なしで通過します。
  1512. \return none 返品不可。
  1513. \param ssl wolfssl_new()で作成されたSSLセッションへのポインタ。
  1514. \param mode セッションタイムアウト値(秒単位)。
  1515. _Example_
  1516. \code
  1517. WOLFSSL* ssl = 0;
  1518. ...
  1519. wolfSSL_set_verify(ssl, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, 0);
  1520. \endcode
  1521. \sa wolfSSL_CTX_set_verify
  1522. */
  1523. void wolfSSL_set_verify(WOLFSSL* ssl, int mode, VerifyCallback verify_callback);
  1524. /*!
  1525. \ingroup CertsKeys
  1526. \brief この関数は、検証コールバックのためのユーザーCTXオブジェクト情報を格納します。
  1527. \return none 返品不可。
  1528. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  1529. _Example_
  1530. \code
  1531. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
  1532. WOLFSSL* ssl = wolfSSL_new(ctx);
  1533. (void*)ctx;
  1534. ...
  1535. if(ssl != NULL){
  1536. wolfSSL_SetCertCbCtx(ssl, ctx);
  1537. } else {
  1538. // Error case, the SSL is not initialized properly.
  1539. }
  1540. \endcode
  1541. \sa wolfSSL_CTX_save_cert_cache
  1542. \sa wolfSSL_CTX_restore_cert_cache
  1543. \sa wolfSSL_CTX_set_verify
  1544. */
  1545. void wolfSSL_SetCertCbCtx(WOLFSSL* ssl, void* ctx);
  1546. /*!
  1547. \ingroup CertsKeys
  1548. \brief この関数は、検証コールバックのためのユーザーCTXオブジェクト情報を格納します。
  1549. \return none 返品不可。
  1550. \param ctx wolfssl_ctx構造へのポインタ。
  1551. _Example_
  1552. \code
  1553. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
  1554. void* userCtx = NULL; // Assign some user defined context
  1555. ...
  1556. if(ctx != NULL){
  1557. wolfSSL_SetCertCbCtx(ctx, userCtx);
  1558. } else {
  1559. // Error case, the SSL is not initialized properly.
  1560. }
  1561. \endcode
  1562. \sa wolfSSL_CTX_save_cert_cache
  1563. \sa wolfSSL_CTX_restore_cert_cache
  1564. \sa wolfSSL_CTX_set_verify
  1565. */
  1566. void wolfSSL_CTX_SetCertCbCtx(WOLFSSL_CTX* ctx, void* userCtx);
  1567. /*!
  1568. \ingroup IO
  1569. \brief この関数は、wolfssl_read()によって読み取られるSSLオブジェクトでバッファされているバイト数を返します。
  1570. \return int この関数は、保留中のバイト数を返します。
  1571. _Example_
  1572. \code
  1573. int pending = 0;
  1574. WOLFSSL* ssl = 0;
  1575. ...
  1576. pending = wolfSSL_pending(ssl);
  1577. printf(“There are %d bytes buffered and available for reading”, pending);
  1578. \endcode
  1579. \sa wolfSSL_recv
  1580. \sa wolfSSL_read
  1581. \sa wolfSSL_peek
  1582. */
  1583. int wolfSSL_pending(WOLFSSL*);
  1584. /*!
  1585. \ingroup Debug
  1586. \brief この機能はOpenSSL互換性(SSL_LOAD_ERROR_STRING)のみであり、アクションを取ります。
  1587. \return none いいえ返します。
  1588. _Example_
  1589. \code
  1590. wolfSSL_load_error_strings();
  1591. \endcode
  1592. \sa wolfSSL_get_error
  1593. \sa wolfSSL_ERR_error_string
  1594. \sa wolfSSL_ERR_error_string_n
  1595. \sa wolfSSL_ERR_print_errors_fp
  1596. \sa wolfSSL_load_error_strings
  1597. */
  1598. void wolfSSL_load_error_strings(void);
  1599. /*!
  1600. \ingroup TLS
  1601. \brief この関数はwolfssl_ctx_new()内で内部的に呼び出されます。この関数はwolfssl_init()の周囲のラッパーで、wolfsslがOpenSSL互換層でコンパイルされたときにOpenSSL互換性(ssl_library_init)に存在します。wolfssl_init()は、より一般的に使用されているWolfSSL初期化機能です。
  1602. \return SSL_SUCCESS 成功した場合、通話が戻ります。
  1603. \return SSL_FATAL_ERROR 失敗したときに返されます。
  1604. _Example_
  1605. \code
  1606. int ret = 0;
  1607. ret = wolfSSL_library_init();
  1608. if (ret != SSL_SUCCESS) {
  1609. failed to initialize wolfSSL
  1610. }
  1611. ...
  1612. \endcode
  1613. \sa wolfSSL_Init
  1614. \sa wolfSSL_Cleanup
  1615. */
  1616. int wolfSSL_library_init(void);
  1617. /*!
  1618. \brief
  1619. \return WOLFSSL_SUCCESS 成功すると。
  1620. \return BAD_FUNC_ARG SSLがNULLの場合
  1621. \param ssl wolfssl_new()で作成されたSSLオブジェクトへのポインタ。
  1622. _Example_
  1623. \code
  1624. WOLFSSL* ssl;
  1625. int DevId = -2;
  1626. wolfSSL_SetDevId(ssl, devId);
  1627. \endcode
  1628. \sa wolfSSL_CTX_SetDevId
  1629. \sa wolfSSL_CTX_GetDevId
  1630. */
  1631. int wolfSSL_SetDevId(WOLFSSL* ssl, int devId);
  1632. /*!
  1633. \brief
  1634. \return WOLFSSL_SUCCESS 成功すると。
  1635. \return BAD_FUNC_ARG SSLがNULLの場合
  1636. \param ctx wolfssl_ctx_new()で作成されたSSLコンテキストへのポインタ。
  1637. _Example_
  1638. \code
  1639. WOLFSSL_CTX* ctx;
  1640. int DevId = -2;
  1641. wolfSSL_CTX_SetDevId(ctx, devId);
  1642. \endcode
  1643. \sa wolfSSL_SetDevId
  1644. \sa wolfSSL_CTX_GetDevId
  1645. */
  1646. int wolfSSL_CTX_SetDevId(WOLFSSL_CTX* ctx, int devId);
  1647. /*!
  1648. \brief
  1649. \return devId 成功すると。
  1650. \return INVALID_DEVID SSLとCTXの両方がNULLの場合。
  1651. \param ctx wolfssl_ctx_new()で作成されたSSLコンテキストへのポインタ。
  1652. _Example_
  1653. \code
  1654. WOLFSSL_CTX* ctx;
  1655. wolfSSL_CTX_GetDevId(ctx, ssl);
  1656. \endcode
  1657. \sa wolfSSL_SetDevId
  1658. \sa wolfSSL_CTX_SetDevId
  1659. */
  1660. int wolfSSL_CTX_GetDevId(WOLFSSL_CTX* ctx, WOLFSSL* ssl);
  1661. /*!
  1662. \ingroup Setup
  1663. \brief この関数はSSLセッションキャッシュを有効または無効にします。動作はモードに使用される値によって異なります。モードの値は次のとおりです.SSL_SESS_CACHE_OFF - セッションキャッシングを無効にします。デフォルトでセッションキャッシングがオンになっています。SSL_SESS_CACHE_NO_AUTO_CLEAR - セッションキャッシュのオートフラッシュを無効にします。デフォルトで自動フラッシングはオンになっています。
  1664. \return SSL_SUCCESS 成功に戻ります。
  1665. \param ctx wolfssl_ctx_new()で作成されたSSLコンテキストへのポインタ。
  1666. _Example_
  1667. \code
  1668. WOLFSSL_CTX* ctx = 0;
  1669. ...
  1670. ret = wolfSSL_CTX_set_session_cache_mode(ctx, SSL_SESS_CACHE_OFF);
  1671. if (ret != SSL_SUCCESS) {
  1672. // failed to turn SSL session caching off
  1673. }
  1674. \endcode
  1675. \sa wolfSSL_flush_sessions
  1676. \sa wolfSSL_get1_session
  1677. \sa wolfSSL_set_session
  1678. \sa wolfSSL_get_sessionID
  1679. \sa wolfSSL_CTX_set_timeout
  1680. */
  1681. long wolfSSL_CTX_set_session_cache_mode(WOLFSSL_CTX* ctx, long mode);
  1682. /*!
  1683. \brief SessionSecRETCBタイプには、署名があります。int(* sessioneCretcb)(wolfssl * ssl、void * secret、int * secretsz、void * ctx)。WolfSSL構造体のSESSIONSECRETCBメンバーはパラメータCBに設定されています。
  1684. \return SSL_SUCCESS 関数の実行がエラーを返されなかった場合に返されます。
  1685. \return SSL_FATAL_ERROR WolfSSL構造がNULLの場合に返されます。
  1686. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  1687. _Example_
  1688. \code
  1689. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
  1690. WOLFSSL* ssl = wolfSSL_new(ctx);
  1691. // Signature of SessionSecretCb
  1692. int SessionSecretCB (WOLFSSL* ssl, void* secret, int* secretSz,
  1693. void* ctx) = SessionSecretCb;
  1694. int wolfSSL_set_session_secret_cb(ssl, SessionSecretCB, (void*)ssl->ctx){
  1695. // Function body.
  1696. }
  1697. \endcode
  1698. \sa SessionSecretCb
  1699. */
  1700. int wolfSSL_set_session_secret_cb(WOLFSSL* ssl, SessionSecretCb cb, void* ctx);
  1701. /*!
  1702. \ingroup IO
  1703. \brief この関数はセッションキャッシュをファイルに持続します。追加のメモリ使用のため、MEMSAVEは使用されません。
  1704. \return SSL_SUCCESS 関数がエラーなしで実行された場合に返されます。セッションキャッシュはファイルに書き込まれました。
  1705. \return SSL_BAD_FILE FNAMEを開くことができないか、それ以外の場合は破損した場合に返されます。
  1706. \return FWRITE_ERROR XfWriteがファイルへの書き込みに失敗した場合に返されます。
  1707. \return BAD_MUTEX_E ミューテックスロック障害が発生した場合は返されます。
  1708. _Example_
  1709. \code
  1710. const char* fname;
  1711. ...
  1712. if(wolfSSL_save_session_cache(fname) != SSL_SUCCESS){
  1713. // Fail to write to file.
  1714. }
  1715. \endcode
  1716. \sa XFWRITE
  1717. \sa wolfSSL_restore_session_cache
  1718. \sa wolfSSL_memrestore_session_cache
  1719. */
  1720. int wolfSSL_save_session_cache(const char*);
  1721. /*!
  1722. \ingroup IO
  1723. \brief この関数はファイルから永続セッションキャッシュを復元します。追加のメモリ使用のため、MEMSTOREは使用しません。
  1724. \return SSL_SUCCESS 関数がエラーなしで実行された場合に返されます。
  1725. \return SSL_BAD_FILE 関数に渡されたファイルが破損していてXFOPENによって開くことができなかった場合に返されます。
  1726. \return FREAD_ERROR ファイルにXFREADから読み取りエラーが発生した場合は返されます。
  1727. \return CACHE_MATCH_ERROR セッションキャッシュヘッダの一致が失敗した場合に返されます。
  1728. \return BAD_MUTEX_E ミューテックスロック障害が発生した場合は返されます。
  1729. _Example_
  1730. \code
  1731. const char *fname;
  1732. ...
  1733. if(wolfSSL_restore_session_cache(fname) != SSL_SUCCESS){
  1734. // Failure case. The function did not return SSL_SUCCESS.
  1735. }
  1736. \endcode
  1737. \sa XFREAD
  1738. \sa XFOPEN
  1739. */
  1740. int wolfSSL_restore_session_cache(const char*);
  1741. /*!
  1742. \ingroup IO
  1743. \brief この関数はセッションキャッシュをメモリに保持します。
  1744. \return SSL_SUCCESS 関数がエラーなしで実行された場合に返されます。セッションキャッシュはメモリに正常に永続化されました。
  1745. \return BAD_MUTEX_E ミューテックスロックエラーが発生した場合は返されます。
  1746. \return BUFFER_E バッファサイズが小さすぎると返されます。
  1747. \param mem メモリコピーxmemcpy()の宛先を表すvoidポインタ。
  1748. _Example_
  1749. \code
  1750. void* mem;
  1751. int sz; // Max size of the memory buffer.
  1752. if(wolfSSL_memsave_session_cache(mem, sz) != SSL_SUCCESS){
  1753. // Failure case, you did not persist the session cache to memory
  1754. }
  1755. \endcode
  1756. \sa XMEMCPY
  1757. \sa wolfSSL_get_session_cache_memsize
  1758. */
  1759. int wolfSSL_memsave_session_cache(void* mem, int sz);
  1760. /*!
  1761. \ingroup IO
  1762. \brief この関数はメモリから永続セッションキャッシュを復元します。
  1763. \return SSL_SUCCESS 関数がエラーなしで実行された場合に返されます。
  1764. \return BUFFER_E メモリバッファが小さすぎると返されます。
  1765. \return BAD_MUTEX_E セッションキャッシュミューテックスロックが失敗した場合に返されます。
  1766. \return CACHE_MATCH_ERROR セッションキャッシュヘッダの一致が失敗した場合に返されます。
  1767. \param mem 復元の原因を含む定数のボイドポインタ。
  1768. _Example_
  1769. \code
  1770. const void* memoryFile;
  1771. int szMf;
  1772. ...
  1773. if(wolfSSL_memrestore_session_cache(memoryFile, szMf) != SSL_SUCCESS){
  1774. // Failure case. SSL_SUCCESS was not returned.
  1775. }
  1776. \endcode
  1777. \sa wolfSSL_save_session_cache
  1778. */
  1779. int wolfSSL_memrestore_session_cache(const void* mem, int sz);
  1780. /*!
  1781. \ingroup IO
  1782. \brief この関数は、セッションキャッシュ保存バッファをどのように大きくするかを返します。
  1783. \return int この関数は、セッションキャッシュ保存バッファのサイズを表す整数を返します。
  1784. _Example_
  1785. \code
  1786. int sz = // Minimum size for error checking;
  1787. ...
  1788. if(sz < wolfSSL_get_session_cache_memsize()){
  1789. // Memory buffer is too small
  1790. }
  1791. \endcode
  1792. \sa wolfSSL_memrestore_session_cache
  1793. */
  1794. int wolfSSL_get_session_cache_memsize(void);
  1795. /*!
  1796. \ingroup CertsKeys
  1797. \brief この関数はCertキャッシュをメモリからファイルに書き込みます。
  1798. \return SSL_SUCCESS CM_SaveCertCacheが正常に終了した場合。
  1799. \return BAD_FUNC_ARG 引数のいずれかの引数がNULLの場合に返されます。
  1800. \return SSL_BAD_FILE 証明書キャッシュ保存ファイルを開くことができなかった場合。
  1801. \return BAD_MUTEX_E ロックミューテックスが失敗した場合
  1802. \return MEMORY_E メモリの割り当てに失敗しました。
  1803. \return FWRITE_ERROR 証明書キャッシュファイルの書き込みに失敗しました。
  1804. \param ctx wolfssl_ctx構造へのポインタ、証明書情報を保持します。
  1805. _Example_
  1806. \code
  1807. WOLFSSL_CTX* ctx = WOLFSSL_CTX_new( protocol def );
  1808. const char* fname;
  1809. ...
  1810. if(wolfSSL_CTX_save_cert_cache(ctx, fname)){
  1811. // file was written.
  1812. }
  1813. \endcode
  1814. \sa CM_SaveCertCache
  1815. \sa DoMemSaveCertCache
  1816. */
  1817. int wolfSSL_CTX_save_cert_cache(WOLFSSL_CTX* ctx, const char* fname);
  1818. /*!
  1819. \ingroup CertsKeys
  1820. \brief この関数はファイルから証明書キャッシュを担当します。
  1821. \return SSL_SUCCESS 関数cm_restorecertcacheが正常に実行された場合に返されます。
  1822. \return SSL_BAD_FILE xfopenがxbadfileを返すと返されます。ファイルが破損しています。
  1823. \return MEMORY_E TEMPバッファの割り当てられたメモリが失敗した場合に返されます。
  1824. \return BAD_FUNC_ARG FNAMEまたはCTXにNULL値がある場合は返されます。
  1825. \param ctx wolfssl_ctx構造へのポインタ、証明書情報を保持します。
  1826. _Example_
  1827. \code
  1828. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
  1829. WOLFSSL* ssl = wolfSSL_new(ctx);
  1830. const char* fname = "path to file";
  1831. ...
  1832. if(wolfSSL_CTX_restore_cert_cache(ctx, fname)){
  1833. // check to see if the execution was successful
  1834. }
  1835. \endcode
  1836. \sa CM_RestoreCertCache
  1837. \sa XFOPEN
  1838. */
  1839. int wolfSSL_CTX_restore_cert_cache(WOLFSSL_CTX* ctx, const char* fname);
  1840. /*!
  1841. \ingroup CertsKeys
  1842. \brief この関数は証明書キャッシュをメモリに持続します。
  1843. \return SSL_SUCCESS 機能の実行に成功したことに戻ります。エラーが投げられていません。
  1844. \return BAD_MUTEX_E wolfssl_cert_managerメンバーのカーボックが0(ゼロ)ではなかったミューテックスエラー。
  1845. \return BAD_FUNC_ARG CTX、MEM、または使用がNULLの場合、またはSZが0以下の場合(0(ゼロ)。
  1846. \return BUFFER_E 出力バッファMEMが小さすぎました。
  1847. \param ctx wolfssl_ctx_new()を使用して作成されたwolfssl_ctx構造へのポインタ。
  1848. \param mem 宛先へのvoidポインタ(出力バッファ)。
  1849. \param sz 出力バッファのサイズ。
  1850. _Example_
  1851. \code
  1852. WOLFSSL_CTX* ctx = WOLFSSL_CTX_new( protocol );
  1853. void* mem;
  1854. int sz;
  1855. int* used;
  1856. ...
  1857. if(wolfSSL_CTX_memsave_cert_cache(ctx, mem, sz, used) != SSL_SUCCESS){
  1858. // The function returned with an error
  1859. }
  1860. \endcode
  1861. \sa DoMemSaveCertCache
  1862. \sa GetCertCacheMemSize
  1863. \sa CM_MemRestoreCertCache
  1864. \sa CM_GetCertCacheMemSize
  1865. */
  1866. int wolfSSL_CTX_memsave_cert_cache(WOLFSSL_CTX* ctx, void* mem, int sz, int* used);
  1867. /*!
  1868. \ingroup Setup
  1869. \brief この関数は証明書キャッシュをメモリから復元します。
  1870. \return SSL_SUCCESS 関数とサブルーチンがエラーなしで実行された場合に返されます。
  1871. \return BAD_FUNC_ARG CTXまたはMEMパラメータがNULLまたはSZパラメータがゼロ以下の場合に返されます。
  1872. \return BUFFER_E CERTキャッシュメモリバッファが小さすぎると戻ります。
  1873. \return CACHE_MATCH_ERROR CERTキャッシュヘッダーの不一致があった場合に返されます。
  1874. \return BAD_MUTEX_E ロックミューテックスが失敗した場合に返されます。
  1875. \param ctx wolfssl_ctx_new()を使用して作成されたwolfssl_ctx構造へのポインタ。
  1876. \param mem 証明書キャッシュに復元される値を持つvoidポインタ。
  1877. _Example_
  1878. \code
  1879. WOLFSSL_CTX* ctx = WOLFSSL_CTX_new( protocol method );
  1880. WOLFSSL* ssl = WOLFSSL_new(ctx);
  1881. void* mem;
  1882. int sz = (*int) sizeof(mem);
  1883. if(wolfSSL_CTX_memrestore_cert_cache(ssl->ctx, mem, sz)){
  1884. // The success case
  1885. }
  1886. \endcode
  1887. \sa CM_MemRestoreCertCache
  1888. */
  1889. int wolfSSL_CTX_memrestore_cert_cache(WOLFSSL_CTX* ctx, const void* mem, int sz);
  1890. /*!
  1891. \ingroup CertsKeys
  1892. \brief Certificate Cache Saveバッファが必要なサイズを返します。
  1893. \return int 成功したときにメモリサイズを表す整数値。
  1894. \return BAD_FUNC_ARG wolfssl_ctx構造体がNULLの場合に返されます。
  1895. \return BAD_MUTEX_E - ミューテックスロックエラーが発生した場合は返されます。
  1896. _Example_
  1897. \code
  1898. WOLFSSL_CTX* ctx = WOLFSSL_CTX_new(protocol);
  1899. ...
  1900. int certCacheSize = wolfSSL_CTX_get_cert_cache_memsize(ctx);
  1901. if(certCacheSize != BAD_FUNC_ARG || certCacheSize != BAD_MUTEX_E){
  1902. // Successfully retrieved the memory size.
  1903. }
  1904. \endcode
  1905. \sa CM_GetCertCacheMemSize
  1906. */
  1907. int wolfSSL_CTX_get_cert_cache_memsize(WOLFSSL_CTX*);
  1908. /*!
  1909. \ingroup Setup
  1910. \brief この関数は、与えられたwolfssl_ctxの暗号スイートリストを設定します。このCipher Suiteリストは、このコンテキストを使用して作成された新しいSSLセッション(WolfSSL)のデフォルトリストになります。リスト内の暗号は、最高から最低への好みの順にソートされるべきです。wolfssl_ctx_set_cipher_list()の各呼び出しは、関数が呼び出されるたびに、特定のSSLコンテキストの暗号スイートリストを提供されたリストにリセットします。暗号スイートリスト、リストは、ヌル終端テキスト文字列、およびコロン区切りリストです。たとえば、リストの値が「DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:AES256-SHA256」有効な暗号値は、src / internal.cのcipher_names []配列のフルネーム値です。(有効な暗号化値の明確なリストの場合はsrc / internal.cをチェックしてください)
  1911. \return SSL_SUCCESS 機能完了に成功したときに返されます。
  1912. \return SSL_FAILURE 失敗した場合に返されます。
  1913. \param ctx wolfssl_ctx_new()で作成されたSSLコンテキストへのポインタ。
  1914. _Example_
  1915. \code
  1916. WOLFSSL_CTX* ctx = 0;
  1917. ...
  1918. ret = wolfSSL_CTX_set_cipher_list(ctx,
  1919. “DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:AES256-SHA256”);
  1920. if (ret != SSL_SUCCESS) {
  1921. // failed to set cipher suite list
  1922. }
  1923. \endcode
  1924. \sa wolfSSL_set_cipher_list
  1925. \sa wolfSSL_CTX_new
  1926. */
  1927. int wolfSSL_CTX_set_cipher_list(WOLFSSL_CTX* ctx, const char* list);
  1928. /*!
  1929. \ingroup Setup
  1930. \brief この関数は、特定のWolfSSLオブジェクト(SSLセッション)の暗号スイートリストを設定します。リスト内の暗号は、最高から最低への好みの順にソートされるべきです。wolfssl_set_cipher_list()の各呼び出しは、関数が呼び出されるたびに、特定のSSLセッションの暗号スイートリストを提供されたリストにリセットします。暗号スイートリスト、リストは、ヌル終端テキスト文字列、およびコロン区切りリストです。例えば、リストのための1つの値は、「DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:AES256-SHA256」であり得る。有効な暗号化値は、src / internal.c(有効な暗号化値の明確なリストのリストの場合はsrc / internal.cを指定してください)のcipher_names []配列のフルネーム値です。
  1931. \return SSL_SUCCESS 機能完了に成功したときに返されます。
  1932. \return SSL_FAILURE 失敗した場合に返されます。
  1933. \param ssl wolfssl_new()で作成されたSSLセッションへのポインタ。
  1934. _Example_
  1935. \code
  1936. int ret = 0;
  1937. WOLFSSL* ssl = 0;
  1938. ...
  1939. ret = wolfSSL_set_cipher_list(ssl,
  1940. “DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:AES256-SHA256”);
  1941. if (ret != SSL_SUCCESS) {
  1942. // failed to set cipher suite list
  1943. }
  1944. \endcode
  1945. \sa wolfSSL_CTX_set_cipher_list
  1946. \sa wolfSSL_new
  1947. */
  1948. int wolfSSL_set_cipher_list(WOLFSSL* ssl, const char* list);
  1949. /*!
  1950. \brief UDP I / Oはノンブロッキングです。アプリケーションがWolfSSLオブジェクトを作成した後、ブロックされていないUDPソケットで使用される場合は、WolfsSL_DTLS_SET_USING_NONBLOCK()を呼び出します。これにより、wolfsslオブジェクトは、Ewouldblockを受信することを意味します。
  1951. \return none 返品不可。
  1952. \param ssl wolfssl_new()で作成されたDTLSセッションへのポインタ。
  1953. _Example_
  1954. \code
  1955. WOLFSSL* ssl = 0;
  1956. ...
  1957. wolfSSL_dtls_set_using_nonblock(ssl, 1);
  1958. \endcode
  1959. \sa wolfSSL_dtls_get_using_nonblock
  1960. \sa wolfSSL_dtls_got_timeout
  1961. \sa wolfSSL_dtls_get_current_timeout
  1962. */
  1963. void wolfSSL_dtls_set_using_nonblock(WOLFSSL* ssl, int nonblock);
  1964. /*!
  1965. \brief UDPを使用して非ブロッキングI / Oを使用する。WolfSSLがノンブロッキングI / Oを使用している場合、この関数は1を返します。これにより、wolfsslオブジェクトは、Ewouldblockを受信することを意味します。この機能はDTLSセッションにとってのみ意味があります。
  1966. \return 0 基礎となるI / Oがブロックされています。
  1967. \return 1 基礎となるI / Oは非ブロッキングです。
  1968. _Example_
  1969. \code
  1970. int ret = 0;
  1971. WOLFSSL* ssl = 0;
  1972. ...
  1973. ret = wolfSSL_dtls_get_using_nonblock(ssl);
  1974. if (ret == 1) {
  1975. // underlying I/O is non-blocking
  1976. }
  1977. ...
  1978. \endcode
  1979. \sa wolfSSL_dtls_set_using_nonblock
  1980. \sa wolfSSL_dtls_got_timeout
  1981. \sa wolfSSL_dtls_set_using_nonblock
  1982. */
  1983. int wolfSSL_dtls_get_using_nonblock(WOLFSSL*);
  1984. /*!
  1985. \brief wolfsslオブジェクト。遮断されていないソケットを使用する場合、ユーザーコード内の何かは、利用可能なRECVデータをチェックするときにいつでも待機しているのかを決定する必要があります。この関数によって返される値は、アプリケーションがどのくらい待機するかを示します。
  1986. \return seconds 現在のDTLSタイムアウト値(秒)
  1987. \return NOT_COMPILED_IN WolfSSLがDTLSサポートで構築されていない場合。
  1988. _Example_
  1989. \code
  1990. int timeout = 0;
  1991. WOLFSSL* ssl;
  1992. ...
  1993. timeout = wolfSSL_get_dtls_current_timeout(ssl);
  1994. printf(“DTLS timeout (sec) = %d\n”, timeout);
  1995. \endcode
  1996. \sa wolfSSL_dtls
  1997. \sa wolfSSL_dtls_get_peer
  1998. \sa wolfSSL_dtls_got_timeout
  1999. \sa wolfSSL_dtls_set_peer
  2000. */
  2001. int wolfSSL_dtls_get_current_timeout(WOLFSSL* ssl);
  2002. /*!
  2003. \ingroup Setup
  2004. \brief この関数はDTLSタイムアウトを設定します。
  2005. \return SSL_SUCCESS 関数がエラーなしで実行された場合に返されます。SSLのDTLS_TIMEOUT_INITとDTLS_TIMEOUTメンバーが設定されています。
  2006. \return BAD_FUNC_ARG wolfssl structがnullの場合、またはタイムアウトが0以下の場合に返されます。タイムアウト引数が許可されている最大値を超えると、戻ります。
  2007. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  2008. _Example_
  2009. \code
  2010. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
  2011. WOLFSSL* ssl = wolfSSL_new(ctx);
  2012. int timeout = TIMEOUT;
  2013. ...
  2014. if(wolfSSL_dtls_set_timeout_init(ssl, timeout)){
  2015. // the dtls timeout was set
  2016. } else {
  2017. // Failed to set DTLS timeout.
  2018. }
  2019. \endcode
  2020. \sa wolfSSL_dtls_set_timeout_max
  2021. \sa wolfSSL_dtls_got_timeout
  2022. */
  2023. int wolfSSL_dtls_set_timeout_init(WOLFSSL* ssl, int);
  2024. /*!
  2025. \brief
  2026. \return SSL_SUCCESS 関数がエラーなしで実行された場合に返されます。
  2027. \return BAD_FUNC_ARG wolfssl構造体がNULLの場合、またはTIMEOUT引数がゼロ以下である場合、またはWolfSSL構造体のDTLS_TIMEOUT_INITメンバーよりも小さい場合に返されます。
  2028. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  2029. _Example_
  2030. \code
  2031. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
  2032. WOLFSSL* ssl = wolfSSL_new(ctx);
  2033. int timeout = TIMEOUTVAL;
  2034. ...
  2035. int ret = wolfSSL_dtls_set_timeout_max(ssl);
  2036. if(!ret){
  2037. // Failed to set the max timeout
  2038. }
  2039. \endcode
  2040. \sa wolfSSL_dtls_set_timeout_init
  2041. \sa wolfSSL_dtls_got_timeout
  2042. */
  2043. int wolfSSL_dtls_set_timeout_max(WOLFSSL* ssl, int);
  2044. /*!
  2045. \brief 制御コードが送信がタイムアウトしたと考えると、WolfSSLオブジェクトで呼び出されます。タイムアウト値の調整を含む、最後の送信を再試行するために必要な操作を実行します。長すぎると、これは失敗を返します。
  2046. \return SSL_SUCCESS 成功に戻ります
  2047. \return SSL_FATAL_ERROR ピアからの応答を得ることなく、再送信/タイムアウトが多すぎる場合に返されます。
  2048. \return NOT_COMPILED_IN WolfSSLがDTLSサポートでコンパイルされていない場合は返されます。
  2049. _Example_
  2050. \code
  2051. See the following files for usage examples:
  2052. <wolfssl_root>/examples/client/client.c
  2053. <wolfssl_root>/examples/server/server.c
  2054. \endcode
  2055. \sa wolfSSL_dtls_get_current_timeout
  2056. \sa wolfSSL_dtls_get_peer
  2057. \sa wolfSSL_dtls_set_peer
  2058. \sa wolfSSL_dtls
  2059. */
  2060. int wolfSSL_dtls_got_timeout(WOLFSSL* ssl);
  2061. /*!
  2062. \brief DTLSを使用するように構成されています。
  2063. \return 1 SSLセッション(SSL)がDTLSを使用するように設定されている場合、この関数は1を返します。
  2064. \return 0 そうでなければ。
  2065. _Example_
  2066. \code
  2067. int ret = 0;
  2068. WOLFSSL* ssl;
  2069. ...
  2070. ret = wolfSSL_dtls(ssl);
  2071. if (ret) {
  2072. // SSL session has been configured to use DTLS
  2073. }
  2074. \endcode
  2075. \sa wolfSSL_dtls_get_current_timeout
  2076. \sa wolfSSL_dtls_get_peer
  2077. \sa wolfSSL_dtls_got_timeout
  2078. \sa wolfSSL_dtls_set_peer
  2079. */
  2080. int wolfSSL_dtls(WOLFSSL* ssl);
  2081. /*!
  2082. \brief ピースズ。
  2083. \return SSL_SUCCESS 成功に戻ります。
  2084. \return SSL_FAILURE 失敗したときに返されます。
  2085. \return SSL_NOT_IMPLEMENTED WolfSSLがDTLSサポートでコンパイルされていない場合は返されます。
  2086. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  2087. \param peer ピアのSOCKADDR_IN構造へのポインタ。
  2088. _Example_
  2089. \code
  2090. int ret = 0;
  2091. WOLFSSL* ssl;
  2092. sockaddr_in addr;
  2093. ...
  2094. ret = wolfSSL_dtls_set_peer(ssl, &addr, sizeof(addr));
  2095. if (ret != SSL_SUCCESS) {
  2096. // failed to set DTLS peer
  2097. }
  2098. \endcode
  2099. \sa wolfSSL_dtls_get_current_timeout
  2100. \sa wolfSSL_dtls_get_peer
  2101. \sa wolfSSL_dtls_got_timeout
  2102. \sa wolfSSL_dtls
  2103. */
  2104. int wolfSSL_dtls_set_peer(WOLFSSL* ssl, void* peer, unsigned int peerSz);
  2105. /*!
  2106. \brief DTLSピアこの関数は、PeerszをSSLセッションに格納されている実際のDTLSピアサイズに比較します。ピアがピアに収まる場合、ピアのSOCKADDR_INはピアにコピーされ、ピースがピアのサイズに設定されます。
  2107. \return SSL_SUCCESS 成功に戻ります。
  2108. \return SSL_FAILURE 失敗したときに返されます。
  2109. \return SSL_NOT_IMPLEMENTED WolfSSLがDTLSサポートでコンパイルされていない場合は返されます。
  2110. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  2111. \param peer ピアのSOCKADDR_IN構造を保存するには、メモリの場所へのポインタ。
  2112. _Example_
  2113. \code
  2114. int ret = 0;
  2115. WOLFSSL* ssl;
  2116. sockaddr_in addr;
  2117. ...
  2118. ret = wolfSSL_dtls_get_peer(ssl, &addr, sizeof(addr));
  2119. if (ret != SSL_SUCCESS) {
  2120. // failed to get DTLS peer
  2121. }
  2122. \endcode
  2123. \sa wolfSSL_dtls_get_current_timeout
  2124. \sa wolfSSL_dtls_got_timeout
  2125. \sa wolfSSL_dtls_set_peer
  2126. \sa wolfSSL_dtls
  2127. */
  2128. int wolfSSL_dtls_get_peer(WOLFSSL* ssl, void* peer, unsigned int* peerSz);
  2129. /*!
  2130. \ingroup Debug
  2131. \brief この関数は、wolfssl_get_error()によって返されたエラーコードをより人間が読めるエラー文字列に変換します。errnumberは、wolfssl_get_error()によって返され、データはエラー文字列が配置されるストレージバッファです。MAX_ERROR_SZで定義されているように、データの最大長はデフォルトで80文字です。これはwolfssl / wolfcrypt / error.hです。
  2132. \return success 正常に完了すると、この関数はデータに返されるのと同じ文字列を返します。
  2133. \return failure 失敗すると、この関数は適切な障害理由、MSGを持つ文字列を返します。
  2134. \param errNumber wolfssl_get_error()によって返されたエラーコード。
  2135. _Example_
  2136. \code
  2137. int err = 0;
  2138. WOLFSSL* ssl;
  2139. char buffer[80];
  2140. ...
  2141. err = wolfSSL_get_error(ssl, 0);
  2142. wolfSSL_ERR_error_string(err, buffer);
  2143. printf(“err = %d, %s\n”, err, buffer);
  2144. \endcode
  2145. \sa wolfSSL_get_error
  2146. \sa wolfSSL_ERR_error_string_n
  2147. \sa wolfSSL_ERR_print_errors_fp
  2148. \sa wolfSSL_load_error_strings
  2149. */
  2150. char* wolfSSL_ERR_error_string(unsigned long,char*);
  2151. /*!
  2152. \ingroup Debug
  2153. \brief この関数は、wolfssl_err_error_string()のバージョンです。ここで、lenはbufに書き込まれ得る最大文字数を指定します。wolfssl_err_error_string()と同様に、この関数はwolfssl_get_error()から返されたエラーコードをより人間が読めるエラー文字列に変換します。人間が読める文字列はbufに置かれます。
  2154. \return none いいえ返します。
  2155. \param e wolfssl_get_error()によって返されたエラーコード。
  2156. \param buff eと一致する人間が読めるエラー文字列を含む出力バッファ。
  2157. _Example_
  2158. \code
  2159. int err = 0;
  2160. WOLFSSL* ssl;
  2161. char buffer[80];
  2162. ...
  2163. err = wolfSSL_get_error(ssl, 0);
  2164. wolfSSL_ERR_error_string_n(err, buffer, 80);
  2165. printf(“err = %d, %s\n”, err, buffer);
  2166. \endcode
  2167. \sa wolfSSL_get_error
  2168. \sa wolfSSL_ERR_error_string
  2169. \sa wolfSSL_ERR_print_errors_fp
  2170. \sa wolfSSL_load_error_strings
  2171. */
  2172. void wolfSSL_ERR_error_string_n(unsigned long e, char* buf,
  2173. unsigned long sz);
  2174. /*!
  2175. \ingroup TLS
  2176. \brief この関数は、Options構造体のClosEnotifyまたはConnresetまたはSentNotifyメンバーのシャットダウン条件をチェックします。オプション構造はWolfSSL構造内にあります。
  2177. \return 1 SSL_SENT_SHUTDOWNが返されます。
  2178. \return 2 ss_received_shutdownが返されます。
  2179. _Example_
  2180. \code
  2181. #include <wolfssl/ssl.h>
  2182. WOLFSSL_CTX* ctx = WOLFSSL_CTX_new( protocol method );
  2183. WOLFSSL* ssl = WOLFSSL_new(ctx);
  2184. int ret;
  2185. ret = wolfSSL_get_shutdown(ssl);
  2186. if(ret == 1){
  2187. SSL_SENT_SHUTDOWN
  2188. } else if(ret == 2){
  2189. SSL_RECEIVED_SHUTDOWN
  2190. } else {
  2191. Fatal error.
  2192. }
  2193. \endcode
  2194. \sa wolfSSL_SESSION_free
  2195. */
  2196. int wolfSSL_get_shutdown(const WOLFSSL*);
  2197. /*!
  2198. \ingroup IO
  2199. \brief この関数は、オプション構造体の再開メンバを返します。フラグはセッションを再利用するかどうかを示します。そうでなければ、新しいセッションを確立する必要があります。
  2200. \return This 関数セッションの再利用のフラグを表すオプション構造に保持されているint型を返します。
  2201. _Example_
  2202. \code
  2203. WOLFSSL* ssl = wolfSSL_new(ctx);
  2204. if(!wolfSSL_session_reused(sslResume)){
  2205. // No session reuse allowed.
  2206. }
  2207. \endcode
  2208. \sa wolfSSL_SESSION_free
  2209. \sa wolfSSL_GetSessionIndex
  2210. \sa wolfSSL_memsave_session_cache
  2211. */
  2212. int wolfSSL_session_reused(WOLFSSL*);
  2213. /*!
  2214. \ingroup TLS
  2215. \brief この関数は、接続が確立されているかどうかを確認します。
  2216. \return 0 接続が確立されていない場合、すなわちWolfSSL構造体がNULLまたはハンドシェイクが行われていない場合に返されます。
  2217. \return 1 接続が確立されていない場合は返されます.WolfSSL構造体はNULLまたはハンドシェイクが行われていません。
  2218. \code
  2219. #include <wolfssl/ssl.h>
  2220. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
  2221. WOLFSSL* ssl = wolfSSL_new(ctx);
  2222. ...
  2223. if(wolfSSL_is_init_finished(ssl)){
  2224. Handshake is done and connection is established
  2225. }
  2226. \endcode
  2227. \sa wolfSSL_set_accept_state
  2228. \sa wolfSSL_get_keys
  2229. \sa wolfSSL_set_shutdown
  2230. */
  2231. int wolfSSL_is_init_finished(WOLFSSL*);
  2232. /*!
  2233. \ingroup IO
  2234. \brief 文字列として使用されているSSLバージョンを返します。
  2235. \return "SSLv3" SSLv3を使う
  2236. \return "TLSv1" TLSV1を使用する
  2237. \return "TLSv1.1" TLSV1.1を使用する
  2238. \return "TLSv1.2" TLSV1.2を使用する
  2239. \return "TLSv1.3" TLSV1.3を使用する
  2240. \return "DTLS": DTLSを使う
  2241. \return "DTLSv1.2" DTLSV1.2を使用する
  2242. \return "unknown" どのバージョンのTLSが使用されているかを判断するという問題がありました。
  2243. _Example_
  2244. \code
  2245. wolfSSL_Init();
  2246. WOLFSSL_CTX* ctx;
  2247. WOLFSSL* ssl;
  2248. WOLFSSL_METHOD method = // Some wolfSSL method
  2249. ctx = wolfSSL_CTX_new(method);
  2250. ssl = wolfSSL_new(ctx);
  2251. printf(wolfSSL_get_version("Using version: %s", ssl));
  2252. \endcode
  2253. \sa wolfSSL_lib_version
  2254. */
  2255. const char* wolfSSL_get_version(WOLFSSL*);
  2256. /*!
  2257. \ingroup IO
  2258. \brief SSLセッションで現在の暗号スイートを返します。
  2259. \return ssl->options.cipherSuite 現在の暗号スイートを表す整数。
  2260. \return 0 提供されているSSLセッションはNULLです。
  2261. _Example_
  2262. \code
  2263. wolfSSL_Init();
  2264. WOLFSSL_CTX* ctx;
  2265. WOLFSSL* ssl;
  2266. WOLFSSL_METHOD method = // Some wolfSSL method
  2267. ctx = wolfSSL_CTX_new(method);
  2268. ssl = wolfSSL_new(ctx);
  2269. if(wolfSSL_get_current_cipher_suite(ssl) == 0)
  2270. {
  2271. // Error getting cipher suite
  2272. }
  2273. \endcode
  2274. \sa wolfSSL_CIPHER_get_name
  2275. \sa wolfSSL_get_current_cipher
  2276. \sa wolfSSL_get_cipher_list
  2277. */
  2278. int wolfSSL_get_current_cipher_suite(WOLFSSL* ssl);
  2279. /*!
  2280. \ingroup IO
  2281. \brief この関数は、SSLセッションの現在の暗号へのポインタを返します。
  2282. \return The 関数WolfSSL構造体の暗号メンバーのアドレスを返します。これはwolfssl_icipher構造へのポインタです。
  2283. \return NULL WolfSSL構造がNULLの場合に返されます。
  2284. _Example_
  2285. \code
  2286. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
  2287. WOLFSSL* ssl = wolfSSL_new(ctx);
  2288. WOLFSSL_CIPHER* cipherCurr = wolfSSL_get_current_cipher;
  2289. if(!cipherCurr){
  2290. // Failure case.
  2291. } else {
  2292. // The cipher was returned to cipherCurr
  2293. }
  2294. \endcode
  2295. \sa wolfSSL_get_cipher
  2296. \sa wolfSSL_get_cipher_name_internal
  2297. \sa wolfSSL_get_cipher_name
  2298. */
  2299. WOLFSSL_CIPHER* wolfSSL_get_current_cipher(WOLFSSL*);
  2300. /*!
  2301. \ingroup IO
  2302. \brief この関数は、SSLオブジェクト内のCipher Suiteと使用可能なスイートと一致し、文字列表現を返します。
  2303. \return string この関数は、一致した暗号スイートの文字列表現を返します。
  2304. \return none スイートが一致していない場合は「なし」を返します。
  2305. _Example_
  2306. \code
  2307. // gets cipher name in the format DHE_RSA ...
  2308. const char* wolfSSL_get_cipher_name_internal(WOLFSSL* ssl){
  2309. WOLFSSL_CIPHER* cipher;
  2310. const char* fullName;
  2311. cipher = wolfSSL_get_curent_cipher(ssl);
  2312. fullName = wolfSSL_CIPHER_get_name(cipher);
  2313. if(fullName){
  2314. // sanity check on returned cipher
  2315. }
  2316. \endcode
  2317. \sa wolfSSL_get_cipher
  2318. \sa wolfSSL_get_current_cipher
  2319. \sa wolfSSL_get_cipher_name_internal
  2320. \sa wolfSSL_get_cipher_name
  2321. */
  2322. const char* wolfSSL_CIPHER_get_name(const WOLFSSL_CIPHER* cipher);
  2323. /*!
  2324. \ingroup IO
  2325. \brief この関数は、SSLオブジェクト内の暗号スイートと使用可能なスイートと一致します。
  2326. \return This 関数Suiteが一致させたString値を返します。スイートが一致していない場合は「なし」を返します。
  2327. _Example_
  2328. \code
  2329. #ifdef WOLFSSL_DTLS
  2330. // make sure a valid suite is used
  2331. if(wolfSSL_get_cipher(ssl) == NULL){
  2332. WOLFSSL_MSG(“Can not match cipher suite imported”);
  2333. return MATCH_SUITE_ERROR;
  2334. }
  2335. #endif // WOLFSSL_DTLS
  2336. \endcode
  2337. \sa wolfSSL_CIPHER_get_name
  2338. \sa wolfSSL_get_current_cipher
  2339. */
  2340. const char* wolfSSL_get_cipher(WOLFSSL*);
  2341. /*!
  2342. \ingroup Setup
  2343. \brief この関数は、wolfssl構造からのwolfssl_sessionを参照型として返します。これには、wolfssl_session_freeを呼び出してセッション参照を解除する必要があります。 wolfssl_sessionは、セッションの再開を実行するために必要なすべての必要な情報を含むことを指摘し、新しいハンドシェイクなしで接続を再確立します。セッションの再開の場合、wolfssl_shutdown()をセッションオブジェクトに呼び出す前に、アプリケーションはオブジェクトからwolfssl_get1_session()を呼び出して保存する必要があります。これはセッションへのポインタを返します。後で、アプリケーションは新しいWolfSSLオブジェクトを作成し、保存したセッションをwolfssl_set_session()に割り当てる必要があります。この時点で、アプリケーションはwolfssl_connect()を呼び出し、WolfSSLはセッションを再開しようとします。 WolfSSLサーバーコードでは、デフォルトでセッションの再開を許可します。 wolfssl_get1_session()によって返されたオブジェクトは、アプリケーションがそれを使用してそれを使用して解放される必要があります。
  2344. \return WOLFSSL_SESSION 成功の場合はセッションポインタを返します。
  2345. \return NULL SSLがNULLの場合、SSLセッションキャッシュが無効になっている場合、WolfSSLはセッションIDを使用できない、またはミューテックス関数が失敗します。
  2346. _Example_
  2347. \code
  2348. WOLFSSL* ssl;
  2349. WOLFSSL_SESSION* ses;
  2350. // attempt/complete handshake
  2351. wolfSSL_connect(ssl);
  2352. ses = wolfSSL_get1_session(ssl);
  2353. // check ses information
  2354. // disconnect / setup new SSL instance
  2355. wolfSSL_set_session(ssl, ses);
  2356. // attempt/resume handshake
  2357. wolfSSL_SESSION_free(ses);
  2358. \endcode
  2359. \sa wolfSSL_new
  2360. \sa wolfSSL_free
  2361. \sa wolfSSL_SESSION_free
  2362. */
  2363. WOLFSSL_SESSION* wolfSSL_get1_session(WOLFSSL* ssl);
  2364. /*!
  2365. \ingroup Setup
  2366. \brief wolfsslv23_client_method()関数は、アプリケーションがクライアントであることを示すために使用され、SSL 3.0 - TLS 1.3の間でサーバーでサポートされている最高のプロトコルバージョンをサポートします。この関数は、wolfssl_ctx_new()を使用してSSL / TLSコンテキストを作成するときに使用される新しいWolfssl_method構造体のメモリを割り当てて初期化します。WolfSSLクライアントとサーバーの両方が堅牢なバージョンのダウングレード機能を持っています。特定のプロトコルバージョンメソッドがどちらの側で使用されている場合は、そのバージョンのみがネゴシエートされたり、エラーが返されます。たとえば、TLSV1を使用し、SSLv3のみに接続しようとするクライアントは、TLSV1.1に接続しても失敗します。この問題を解決するために、wolfsslv23_client_method()関数を使用するクライアントは、サーバーでサポートされている最高のプロトコルバージョンを使用し、必要に応じてSSLv3にダウングレードします。この場合、クライアントはSSLv3 - TLSv1.3を実行しているサーバーに接続できるようになります。
  2367. \return pointer 成功すると、wolfssl_methodへのポインタがあります。
  2368. \return Failure xmallocを呼び出すときにメモリ割り当てが失敗した場合、基礎となるMalloc()実装の失敗値が返されます(通常はerrnoがenomeemに設定されます)。
  2369. _Example_
  2370. \code
  2371. WOLFSSL_METHOD* method;
  2372. WOLFSSL_CTX* ctx;
  2373. method = wolfSSLv23_client_method();
  2374. if (method == NULL) {
  2375. // unable to get method
  2376. }
  2377. ctx = wolfSSL_CTX_new(method);
  2378. ...
  2379. \endcode
  2380. \sa wolfSSLv3_client_method
  2381. \sa wolfTLSv1_client_method
  2382. \sa wolfTLSv1_1_client_method
  2383. \sa wolfTLSv1_2_client_method
  2384. \sa wolfTLSv1_3_client_method
  2385. \sa wolfDTLSv1_client_method
  2386. \sa wolfSSL_CTX_new
  2387. */
  2388. WOLFSSL_METHOD* wolfSSLv23_client_method(void);
  2389. /*!
  2390. \ingroup IO
  2391. \brief これは、内部メモリバッファの先頭へのバイトポインタを設定するために使用されます。
  2392. \return size 成功すると、バッファのサイズが返されます
  2393. \return SSL_FATAL_ERROR エラーケースに遭遇した場合
  2394. \param bio のメモリバッファを取得するためのwolfssl_bio構造。
  2395. _Example_
  2396. \code
  2397. WOLFSSL_BIO* bio;
  2398. const byte* p;
  2399. int ret;
  2400. bio = wolfSSL_BIO_new(wolfSSL_BIO_s_mem());
  2401. ret = wolfSSL_BIO_get_mem_data(bio, &p);
  2402. // check ret value
  2403. \endcode
  2404. \sa wolfSSL_BIO_new
  2405. \sa wolfSSL_BIO_s_mem
  2406. \sa wolfSSL_BIO_set_fp
  2407. \sa wolfSSL_BIO_free
  2408. */
  2409. int wolfSSL_BIO_get_mem_data(WOLFSSL_BIO* bio,void* p);
  2410. /*!
  2411. \ingroup IO
  2412. \brief 使用するBIOのファイル記述子を設定します。
  2413. \return SSL_SUCCESS(1) 成功すると。
  2414. \param bio FDを設定するためのWOLFSSL_BIO構造。
  2415. \param fd 使用するファイル記述子。
  2416. _Example_
  2417. \code
  2418. WOLFSSL_BIO* bio;
  2419. int fd;
  2420. // setup bio
  2421. wolfSSL_BIO_set_fd(bio, fd, BIO_NOCLOSE);
  2422. \endcode
  2423. \sa wolfSSL_BIO_new
  2424. \sa wolfSSL_BIO_free
  2425. */
  2426. long wolfSSL_BIO_set_fd(WOLFSSL_BIO* b, int fd, int flag);
  2427. /*!
  2428. \ingroup IO
  2429. \brief BIOが解放されたときにI / Oストリームを閉じる必要があることを示すために使用されるクローズフラグを設定します。
  2430. \return SSL_SUCCESS(1) 成功すると。
  2431. \param bio wolfssl_bio構造体。
  2432. _Example_
  2433. \code
  2434. WOLFSSL_BIO* bio;
  2435. // setup bio
  2436. wolfSSL_BIO_set_close(bio, BIO_NOCLOSE);
  2437. \endcode
  2438. \sa wolfSSL_BIO_new
  2439. \sa wolfSSL_BIO_free
  2440. */
  2441. int wolfSSL_BIO_set_close(WOLFSSL_BIO *b, long flag);
  2442. /*!
  2443. \ingroup IO
  2444. \brief これはBio_Socketタイプのwolfssl_bio_methodを取得するために使用されます。
  2445. \return WOLFSSL_BIO_METHOD ソケットタイプであるwolfssl_bio_method構造へのポインタ
  2446. _Example_
  2447. \code
  2448. WOLFSSL_BIO* bio;
  2449. bio = wolfSSL_BIO_new(wolfSSL_BIO_s_socket);
  2450. \endcode
  2451. \sa wolfSSL_BIO_new
  2452. \sa wolfSSL_BIO_s_mem
  2453. */
  2454. WOLFSSL_BIO_METHOD *wolfSSL_BIO_s_socket(void);
  2455. /*!
  2456. \ingroup IO
  2457. \brief これは、WolfSSL_BIOのライトバッファのサイズを設定するために使用されます。書き込みバッファが以前に設定されている場合、この関数はサイズをリセットするときに解放されます。読み書きインデックスを0にリセットするという点で、wolfssl_bio_resetに似ています。
  2458. \return SSL_SUCCESS 書き込みバッファの設定に成功しました。
  2459. \return SSL_FAILURE エラーケースに遭遇した場合
  2460. \param bio FDを設定するためのWOLFSSL_BIO構造。
  2461. _Example_
  2462. \code
  2463. WOLFSSL_BIO* bio;
  2464. int ret;
  2465. bio = wolfSSL_BIO_new(wolfSSL_BIO_s_mem());
  2466. ret = wolfSSL_BIO_set_write_buf_size(bio, 15000);
  2467. // check return value
  2468. \endcode
  2469. \sa wolfSSL_BIO_new
  2470. \sa wolfSSL_BIO_s_mem
  2471. \sa wolfSSL_BIO_free
  2472. */
  2473. int wolfSSL_BIO_set_write_buf_size(WOLFSSL_BIO *b, long size);
  2474. /*!
  2475. \ingroup IO
  2476. \brief これは2つのBIOSを一緒にペアリングするために使用されます。一対のBIOSは、2つの方法パイプと同様に、他方で読み取られることができ、その逆も同様である。BIOSの両方が同じスレッド内にあることが予想されます。この機能はスレッドセーフではありません。2つのBIOSのうちの1つを解放すると、両方ともペアになっています。書き込みバッファサイズが以前に設定されていない場合、それはペアになる前に17000(wolfssl_bio_size)のデフォルトサイズに設定されます。
  2477. \return SSL_SUCCESS 2つのBIOSをうまくペアリングします。
  2478. \return SSL_FAILURE エラーケースに遭遇した場合
  2479. \param b1 ペアを設定するためのwolfssl_bio構造。
  2480. _Example_
  2481. \code
  2482. WOLFSSL_BIO* bio;
  2483. WOLFSSL_BIO* bio2;
  2484. int ret;
  2485. bio = wolfSSL_BIO_new(wolfSSL_BIO_s_bio());
  2486. bio2 = wolfSSL_BIO_new(wolfSSL_BIO_s_bio());
  2487. ret = wolfSSL_BIO_make_bio_pair(bio, bio2);
  2488. // check ret value
  2489. \endcode
  2490. \sa wolfSSL_BIO_new
  2491. \sa wolfSSL_BIO_s_mem
  2492. \sa wolfSSL_BIO_free
  2493. */
  2494. int wolfSSL_BIO_make_bio_pair(WOLFSSL_BIO *b1, WOLFSSL_BIO *b2);
  2495. /*!
  2496. \ingroup IO
  2497. \brief これは、読み取り要求フラグを0に戻すために使用されます。
  2498. \return SSL_SUCCESS 値を正常に設定します。
  2499. \return SSL_FAILURE エラーケースに遭遇した場合
  2500. _Example_
  2501. \code
  2502. WOLFSSL_BIO* bio;
  2503. int ret;
  2504. ...
  2505. ret = wolfSSL_BIO_ctrl_reset_read_request(bio);
  2506. // check ret value
  2507. \endcode
  2508. \sa wolfSSL_BIO_new, wolfSSL_BIO_s_mem
  2509. \sa wolfSSL_BIO_new, wolfSSL_BIO_free
  2510. */
  2511. int wolfSSL_BIO_ctrl_reset_read_request(WOLFSSL_BIO *b);
  2512. /*!
  2513. \ingroup IO
  2514. \brief これは、読み取り用のバッファポインタを取得するために使用されます。WOLFSSL_BIO_NREADとは異なり、内部読み取りインデックスは関数呼び出しから返された番号によって高度にはなりません。返される値を超えて読み取ると、アレイの境界から読み出される可能性があります。
  2515. \return >=0 成功すると、読み取るバイト数を返します
  2516. \param bio wolfssl_bio構造体から読み取り。
  2517. _Example_
  2518. \code
  2519. WOLFSSL_BIO* bio;
  2520. char* bufPt;
  2521. int ret;
  2522. // set up bio
  2523. ret = wolfSSL_BIO_nread0(bio, &bufPt); // read as many bytes as possible
  2524. // handle negative ret check
  2525. // read ret bytes from bufPt
  2526. \endcode
  2527. \sa wolfSSL_BIO_new
  2528. \sa wolfSSL_BIO_nwrite0
  2529. */
  2530. int wolfSSL_BIO_nread0(WOLFSSL_BIO *bio, char **buf);
  2531. /*!
  2532. \ingroup IO
  2533. \brief これは、読み取り用のバッファポインタを取得するために使用されます。内部読み取りインデックスは、読み取り元のバッファの先頭に指されているBUFを使用して、関数呼び出しから返される数によって高度です。数numで要求された値よりもバイトが少ない場合、より少ない値が返されます。返される値を超えて読み取ると、アレイの境界から読み出される可能性があります。
  2534. \return >=0 成功すると、読み取るバイト数を返します
  2535. \return WOLFSSL_BIO_ERROR(-1) Return -1を読むものではないエラーケースについて
  2536. \param bio wolfssl_bio構造体から読み取り。
  2537. \param buf 読み取り配列の先頭に設定するポインタ。
  2538. _Example_
  2539. \code
  2540. WOLFSSL_BIO* bio;
  2541. char* bufPt;
  2542. int ret;
  2543. // set up bio
  2544. ret = wolfSSL_BIO_nread(bio, &bufPt, 10); // try to read 10 bytes
  2545. // handle negative ret check
  2546. // read ret bytes from bufPt
  2547. \endcode
  2548. \sa wolfSSL_BIO_new
  2549. \sa wolfSSL_BIO_nwrite
  2550. */
  2551. int wolfSSL_BIO_nread(WOLFSSL_BIO *bio, char **buf, int num);
  2552. /*!
  2553. \ingroup IO
  2554. \brief 関数によって返される数のバイトを書き込むためにバッファーへのポインタを取得します。返されるポインタに追加のバイトを書き込んだ場合、返された値は範囲外の書き込みにつながる可能性があります。
  2555. \return int 返されたバッファポインタに書き込むことができるバイト数を返します。
  2556. \return WOLFSSL_BIO_UNSET(-2) バイオペアの一部ではない場合
  2557. \return WOLFSSL_BIO_ERROR(-1) に書くべき部屋がこれ以上ない場合
  2558. \param bio WOLFSSL_BIO構造に書き込む構造。
  2559. \param buf 書き込むためのバッファへのポインタ。
  2560. _Example_
  2561. \code
  2562. WOLFSSL_BIO* bio;
  2563. char* bufPt;
  2564. int ret;
  2565. // set up bio
  2566. ret = wolfSSL_BIO_nwrite(bio, &bufPt, 10); // try to write 10 bytes
  2567. // handle negative ret check
  2568. // write ret bytes to bufPt
  2569. \endcode
  2570. \sa wolfSSL_BIO_new
  2571. \sa wolfSSL_BIO_free
  2572. \sa wolfSSL_BIO_nread
  2573. */
  2574. int wolfSSL_BIO_nwrite(WOLFSSL_BIO *bio, char **buf, int num);
  2575. /*!
  2576. \ingroup IO
  2577. \brief バイオを初期状態にリセットします。タイプBIO_BIOの例として、これは読み書きインデックスをリセットします。
  2578. \return 0 バイオのリセットに成功しました。
  2579. \return WOLFSSL_BIO_ERROR(-1) 不良入力または失敗したリセットで返されます。
  2580. _Example_
  2581. \code
  2582. WOLFSSL_BIO* bio;
  2583. // setup bio
  2584. wolfSSL_BIO_reset(bio);
  2585. //use pt
  2586. \endcode
  2587. \sa wolfSSL_BIO_new
  2588. \sa wolfSSL_BIO_free
  2589. */
  2590. int wolfSSL_BIO_reset(WOLFSSL_BIO *bio);
  2591. /*!
  2592. \ingroup IO
  2593. \brief この関数は、指定されたオフセットへのファイルポインタを調整します。これはファイルの先頭からのオフセットです。
  2594. \return 0 正常に探しています。
  2595. \return -1 エラーケースに遭遇した場合
  2596. \param bio 設定するwolfssl_bio構造体。
  2597. _Example_
  2598. \code
  2599. WOLFSSL_BIO* bio;
  2600. XFILE fp;
  2601. int ret;
  2602. bio = wolfSSL_BIO_new(wolfSSL_BIO_s_file());
  2603. ret = wolfSSL_BIO_set_fp(bio, &fp);
  2604. // check ret value
  2605. ret = wolfSSL_BIO_seek(bio, 3);
  2606. // check ret value
  2607. \endcode
  2608. \sa wolfSSL_BIO_new
  2609. \sa wolfSSL_BIO_s_mem
  2610. \sa wolfSSL_BIO_set_fp
  2611. \sa wolfSSL_BIO_free
  2612. */
  2613. int wolfSSL_BIO_seek(WOLFSSL_BIO *bio, int ofs);
  2614. /*!
  2615. \ingroup IO
  2616. \brief これはファイルに設定および書き込むために使用されます。現在ファイル内のデータを上書きし、BIOが解放されたときにファイルを閉じるように設定されます。
  2617. \return SSL_SUCCESS ファイルの開きと設定に成功しました。
  2618. \return SSL_FAILURE エラーケースに遭遇した場合
  2619. \param bio ファイルを設定するwolfssl_bio構造体。
  2620. _Example_
  2621. \code
  2622. WOLFSSL_BIO* bio;
  2623. int ret;
  2624. bio = wolfSSL_BIO_new(wolfSSL_BIO_s_file());
  2625. ret = wolfSSL_BIO_write_filename(bio, “test.txt”);
  2626. // check ret value
  2627. \endcode
  2628. \sa wolfSSL_BIO_new
  2629. \sa wolfSSL_BIO_s_file
  2630. \sa wolfSSL_BIO_set_fp
  2631. \sa wolfSSL_BIO_free
  2632. */
  2633. int wolfSSL_BIO_write_filename(WOLFSSL_BIO *bio, char *name);
  2634. /*!
  2635. \ingroup IO
  2636. \brief これはファイル値の終わりを設定するために使用されます。一般的な値は予想される正の値と混同されないように-1です。
  2637. \return 0 完了に戻りました
  2638. \param bio ファイル値の終わりを設定するためのwolfssl_bio構造体。
  2639. _Example_
  2640. \code
  2641. WOLFSSL_BIO* bio;
  2642. int ret;
  2643. bio = wolfSSL_BIO_new(wolfSSL_BIO_s_mem());
  2644. ret = wolfSSL_BIO_set_mem_eof_return(bio, -1);
  2645. // check ret value
  2646. \endcode
  2647. \sa wolfSSL_BIO_new
  2648. \sa wolfSSL_BIO_s_mem
  2649. \sa wolfSSL_BIO_set_fp
  2650. \sa wolfSSL_BIO_free
  2651. */
  2652. long wolfSSL_BIO_set_mem_eof_return(WOLFSSL_BIO *bio, int v);
  2653. /*!
  2654. \ingroup IO
  2655. \brief これはWolfSSL_BIOメモリポインタのゲッター関数です。
  2656. \return SSL_SUCCESS ポインタSSL_SUCCESSを返す正常に(現在1の値)。
  2657. \return SSL_FAILURE null引数が渡された場合(現在0の値)に渡された場合は返されます。
  2658. \param bio メモリポインタを取得するためのWOLFSSL_BIO構造体へのポインタ。
  2659. _Example_
  2660. \code
  2661. WOLFSSL_BIO* bio;
  2662. WOLFSSL_BUF_MEM* pt;
  2663. // setup bio
  2664. wolfSSL_BIO_get_mem_ptr(bio, &pt);
  2665. //use pt
  2666. \endcode
  2667. \sa wolfSSL_BIO_new
  2668. \sa wolfSSL_BIO_s_mem
  2669. */
  2670. long wolfSSL_BIO_get_mem_ptr(WOLFSSL_BIO *bio, WOLFSSL_BUF_MEM **m);
  2671. /*!
  2672. \ingroup CertsKeys
  2673. \brief この関数はX509の名前をバッファにコピーします。
  2674. \return A WOLFSSL_X509_NAME構造名メンバーのデータが正常に実行された場合、バッファへのPOINTER found struffer nameメンバーのデータが返されます。
  2675. \param name wolfssl_x509構造へのポインタ。
  2676. \param in wolfssl_x509_name構造からコピーされた名前を保持するためのバッファ。
  2677. _Example_
  2678. \code
  2679. WOLFSSL_X509 x509;
  2680. char* name;
  2681. ...
  2682. name = wolfSSL_X509_NAME_oneline(wolfSSL_X509_get_issuer_name(x509), 0, 0);
  2683. if(name <= 0){
  2684. // There’s nothing in the buffer.
  2685. }
  2686. \endcode
  2687. \sa wolfSSL_X509_get_subject_name
  2688. \sa wolfSSL_X509_get_issuer_name
  2689. \sa wolfSSL_X509_get_isCA
  2690. \sa wolfSSL_get_peer_certificate
  2691. \sa wolfSSL_X509_version
  2692. */
  2693. char* wolfSSL_X509_NAME_oneline(WOLFSSL_X509_NAME* name, char* in, int sz);
  2694. /*!
  2695. \ingroup CertsKeys
  2696. \brief この関数は証明書発行者の名前を返します。
  2697. \return point WOLFSSL_X509構造体の発行者メンバーへのポインタが返されます。
  2698. \return NULL 渡された証明書がNULLの場合
  2699. _Example_
  2700. \code
  2701. WOLFSSL_X509* x509;
  2702. WOLFSSL_X509_NAME issuer;
  2703. ...
  2704. issuer = wolfSSL_X509_NAME_oneline(wolfSSL_X509_get_issuer_name(x509), 0, 0);
  2705. if(!issuer){
  2706. // NULL was returned
  2707. } else {
  2708. // issuer hods the name of the certificate issuer.
  2709. }
  2710. \endcode
  2711. \sa wolfSSL_X509_get_subject_name
  2712. \sa wolfSSL_X509_get_isCA
  2713. \sa wolfSSL_get_peer_certificate
  2714. \sa wolfSSL_X509_NAME_oneline
  2715. */
  2716. WOLFSSL_X509_NAME* wolfSSL_X509_get_issuer_name(WOLFSSL_X509*);
  2717. /*!
  2718. \ingroup CertsKeys
  2719. \brief この関数は、wolfssl_x509構造の件名メンバーを返します。
  2720. \return pointer wolfssl_x509_name構造へのポインタ。WOLFSSL_X509構造体がNULLの場合、または構造体の件名メンバーがNULLの場合、ポインタはNULLになることがあります。
  2721. _Example_
  2722. \code
  2723. WOLFSSL_X509* cert;
  2724. WOLFSSL_X509_NAME name;
  2725. name = wolfSSL_X509_get_subject_name(cert);
  2726. if(name == NULL){
  2727. // Deal with the NULL cacse
  2728. }
  2729. \endcode
  2730. \sa wolfSSL_X509_get_issuer_name
  2731. \sa wolfSSL_X509_get_isCA
  2732. \sa wolfSSL_get_peer_certificate
  2733. */
  2734. WOLFSSL_X509_NAME* wolfSSL_X509_get_subject_name(WOLFSSL_X509*);
  2735. /*!
  2736. \ingroup CertsKeys
  2737. \brief wolfssl_x509構造のISCAメンバーをチェックして値を返します。
  2738. \return isCA wolfssl_x509構造のISCAメンバー内の値を返します。
  2739. \return 0 有効なX509構造が渡されない場合は返されます。
  2740. _Example_
  2741. \code
  2742. WOLFSSL* ssl;
  2743. ...
  2744. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
  2745. WOLFSSL* ssl = wolfSSL_new(ctx);
  2746. ...
  2747. if(wolfSSL_X509_get_isCA(ssl)){
  2748. // This is the CA
  2749. }else {
  2750. // Failure case
  2751. }
  2752. \endcode
  2753. \sa wolfSSL_X509_get_issuer_name
  2754. \sa wolfSSL_X509_get_isCA
  2755. */
  2756. int wolfSSL_X509_get_isCA(WOLFSSL_X509*);
  2757. /*!
  2758. \ingroup CertsKeys
  2759. \brief この関数は、渡されたNID値に関連するテキストを取得します。
  2760. \return int テキストバッファのサイズを返します。
  2761. \param name wolfssl_x509_nameテキストを検索する。
  2762. \param nid 検索するNID。
  2763. \param buf 見つかったときにテキストを保持するためのバッファー。
  2764. _Example_
  2765. \code
  2766. WOLFSSL_X509_NAME* name;
  2767. char buffer[100];
  2768. int bufferSz;
  2769. int ret;
  2770. // get WOLFSSL_X509_NAME
  2771. ret = wolfSSL_X509_NAME_get_text_by_NID(name, NID_commonName,
  2772. buffer, bufferSz);
  2773. //check ret value
  2774. \endcode
  2775. \sa none
  2776. */
  2777. int wolfSSL_X509_NAME_get_text_by_NID(WOLFSSL_X509_NAME* name, int nid,
  2778. char* buf, int len);
  2779. /*!
  2780. \ingroup CertsKeys
  2781. \brief この関数は、wolfssl_x509構造のSigoidメンバーに格納されている値を返します。
  2782. \return 0 wolfssl_x509構造がNULLの場合に返されます。
  2783. \return int x509オブジェクトから取得された整数値が返されます。
  2784. _Example_
  2785. \code
  2786. WOLFSSL_X509 x509 = (WOLFSSL_X509*)XMALLOC(sizeof(WOLFSSL_X509), NULL,
  2787. DYNAMIC_TYPE_X509);
  2788. ...
  2789. int x509SigType = wolfSSL_X509_get_signature_type(x509);
  2790. if(x509SigType != EXPECTED){
  2791. // Deal with an unexpected value
  2792. }
  2793. \endcode
  2794. \sa wolfSSL_X509_get_signature
  2795. \sa wolfSSL_X509_version
  2796. \sa wolfSSL_X509_get_der
  2797. \sa wolfSSL_X509_get_serial_number
  2798. \sa wolfSSL_X509_notBefore
  2799. \sa wolfSSL_X509_notAfter
  2800. \sa wolfSSL_X509_free
  2801. */
  2802. int wolfSSL_X509_get_signature_type(WOLFSSL_X509*);
  2803. /*!
  2804. \brief
  2805. _Example_
  2806. \code
  2807. WOLFSSL_X509* x509 = (WOLFSSL_X509*)XMALOC(sizeof(WOLFSSL_X509), NULL,
  2808. DYNAMIC_TYPE_X509) ;
  2809. wolfSSL_X509_free(x509);
  2810. \endcode
  2811. \sa wolfSSL_X509_get_signature
  2812. \sa wolfSSL_X509_version
  2813. \sa wolfSSL_X509_get_der
  2814. \sa wolfSSL_X509_get_serial_number
  2815. \sa wolfSSL_X509_notBefore
  2816. \sa wolfSSL_X509_notAfter
  2817. */
  2818. void wolfSSL_X509_free(WOLFSSL_X509* x509);
  2819. /*!
  2820. \ingroup CertsKeys
  2821. \brief x509署名を取得し、それをバッファに保存します。
  2822. \return SSL_SUCCESS 関数が正常に実行された場合に返されます。署名がバッファにロードされます。
  2823. \return SSL_FATAL_ERRROR X509構造体またはBUFSZメンバーがNULLの場合に返します。SIG構造の長さメンバのチェックもある(SIGはX509のメンバーである)。
  2824. \param x509 wolfssl_x509構造へのポインタ。
  2825. \param buf バッファへの文字ポインタ。
  2826. _Example_
  2827. \code
  2828. WOLFSSL_X509* x509 = (WOLFSSL_X509)XMALOC(sizeof(WOLFSSL_X509), NULL,
  2829. DYNAMIC_TYPE_X509);
  2830. unsigned char* buf; // Initialize
  2831. int* bufSz = sizeof(buf)/sizeof(unsigned char);
  2832. ...
  2833. if(wolfSSL_X509_get_signature(x509, buf, bufSz) != SSL_SUCCESS){
  2834. // The function did not execute successfully.
  2835. } else{
  2836. // The buffer was written to correctly.
  2837. }
  2838. \endcode
  2839. \sa wolfSSL_X509_get_serial_number
  2840. \sa wolfSSL_X509_get_signature_type
  2841. \sa wolfSSL_X509_get_device_type
  2842. */
  2843. int wolfSSL_X509_get_signature(WOLFSSL_X509* x509, unsigned char* buf, int* bufSz);
  2844. /*!
  2845. \ingroup CertsKeys
  2846. \brief この関数は、wolfssl_x509_stre構造に証明書を追加します。
  2847. \return SSL_SUCCESS 証明書が正常に追加された場合。
  2848. \return SSL_FATAL_ERROR: 証明書が正常に追加されない場合
  2849. \param str 証明書を追加する証明書ストア。
  2850. _Example_
  2851. \code
  2852. WOLFSSL_X509_STORE* str;
  2853. WOLFSSL_X509* x509;
  2854. int ret;
  2855. ret = wolfSSL_X509_STORE_add_cert(str, x509);
  2856. //check ret value
  2857. \endcode
  2858. \sa wolfSSL_X509_free
  2859. */
  2860. int wolfSSL_X509_STORE_add_cert(WOLFSSL_X509_STORE* store, WOLFSSL_X509* x509);
  2861. /*!
  2862. \ingroup CertsKeys
  2863. \brief この関数は、wolfssl_x509_store_ctx構造体のチェーン変数のgetter関数です。現在チェーンは取り込まれていません。
  2864. \return pointer 成功した場合wolfssl_stack(stack_of(wolfssl_x509))ポインタと同じ
  2865. \return Null 失敗すると
  2866. _Example_
  2867. \code
  2868. WOLFSSL_STACK* sk;
  2869. WOLFSSL_X509_STORE_CTX* ctx;
  2870. sk = wolfSSL_X509_STORE_CTX_get_chain(ctx);
  2871. //check sk for NULL and then use it. sk needs freed after done.
  2872. \endcode
  2873. \sa wolfSSL_sk_X509_free
  2874. */
  2875. WOLFSSL_STACK* wolfSSL_X509_STORE_CTX_get_chain(
  2876. WOLFSSL_X509_STORE_CTX* ctx);
  2877. /*!
  2878. \ingroup CertsKeys
  2879. \brief この関数は、渡されたwolfssl_x509_store構造体の動作を変更するためのフラグを取ります。使用されるフラグの例はwolfssl_crl_checkです。
  2880. \return SSL_SUCCESS フラグを設定するときにエラーが発生しなかった場合。
  2881. \return <0 障害の際に負の値が返されます。
  2882. \param str フラグを設定する証明書ストア。
  2883. _Example_
  2884. \code
  2885. WOLFSSL_X509_STORE* str;
  2886. int ret;
  2887. // create and set up str
  2888. ret = wolfSSL_X509_STORE_set_flags(str, WOLFSSL_CRL_CHECKALL);
  2889. If (ret != SSL_SUCCESS) {
  2890. //check ret value and handle error case
  2891. }
  2892. \endcode
  2893. \sa wolfSSL_X509_STORE_new
  2894. \sa wolfSSL_X509_STORE_free
  2895. */
  2896. int wolfSSL_X509_STORE_set_flags(WOLFSSL_X509_STORE* store,
  2897. unsigned long flag);
  2898. /*!
  2899. \ingroup CertsKeys
  2900. \brief これは、BYTEアレイとして符号化された有効性の証明書「NOT BEFISE」を機能します。
  2901. \return NULL wolfssl_x509構造がNULLの場合に返されます。
  2902. \return byte NetBeforEdataを含む返されます。
  2903. _Example_
  2904. \code
  2905. WOLFSSL_X509* x509 = (WOLFSSL_X509*)XMALLOC(sizeof(WOLFSSL_X509), NULL,
  2906. DYNAMIC_TYPE_X509);
  2907. ...
  2908. byte* notBeforeData = wolfSSL_X509_notBefore(x509);
  2909. \endcode
  2910. \sa wolfSSL_X509_get_signature
  2911. \sa wolfSSL_X509_version
  2912. \sa wolfSSL_X509_get_der
  2913. \sa wolfSSL_X509_get_serial_number
  2914. \sa wolfSSL_X509_notAfter
  2915. \sa wolfSSL_X509_free
  2916. */
  2917. const byte* wolfSSL_X509_notBefore(WOLFSSL_X509* x509);
  2918. /*!
  2919. \ingroup CertsKeys
  2920. \brief これは、BYTE配列として符号化された有効性の証明書「未処理」を機能します。
  2921. \return NULL wolfssl_x509構造がNULLの場合に返されます。
  2922. \return byte NOTAFTERDATAを含む返されます。
  2923. _Example_
  2924. \code
  2925. WOLFSSL_X509* x509 = (WOLFSSL_X509*)XMALLOC(sizeof(WOLFSSL_X509), NULL,
  2926. DYNAMIC_TYPE_X509);
  2927. ...
  2928. byte* notAfterData = wolfSSL_X509_notAfter(x509);
  2929. \endcode
  2930. \sa wolfSSL_X509_get_signature
  2931. \sa wolfSSL_X509_version
  2932. \sa wolfSSL_X509_get_der
  2933. \sa wolfSSL_X509_get_serial_number
  2934. \sa wolfSSL_X509_notBefore
  2935. \sa wolfSSL_X509_free
  2936. */
  2937. const byte* wolfSSL_X509_notAfter(WOLFSSL_X509* x509);
  2938. /*!
  2939. \ingroup Setup
  2940. \brief この関数は、wolfssl_asn1_integer値をwolfssl_bignum構造にコピーするために使用されます。
  2941. \return pointer wolfssl_asn1_integer値を正常にコピーすると、wolfssl_bignumポインタが返されます。
  2942. \return Null 失敗すると。
  2943. \param ai wolfssl asn1_integer構造体からコピーする。
  2944. _Example_
  2945. \code
  2946. WOLFSSL_ASN1_INTEGER* ai;
  2947. WOLFSSL_BIGNUM* bn;
  2948. // create ai
  2949. bn = wolfSSL_ASN1_INTEGER_to_BN(ai, NULL);
  2950. // or if having already created bn and wanting to reuse structure
  2951. // wolfSSL_ASN1_INTEGER_to_BN(ai, bn);
  2952. // check bn is or return value is not NULL
  2953. \endcode
  2954. \sa none
  2955. */
  2956. WOLFSSL_BIGNUM *wolfSSL_ASN1_INTEGER_to_BN(const WOLFSSL_ASN1_INTEGER *ai,
  2957. WOLFSSL_BIGNUM *bn);
  2958. /*!
  2959. \ingroup Setup
  2960. \brief この関数は、wolfssl_ctx構造で構築されている内部チェーンに証明書を追加します。
  2961. \return SSL_SUCCESS 証明書の追加に成功したら。
  2962. \return SSL_FAILURE チェーンに証明書を追加することが失敗した場合。
  2963. \param ctx 証明書を追加するためのwolfssl_ctx構造。
  2964. _Example_
  2965. \code
  2966. WOLFSSL_CTX* ctx;
  2967. WOLFSSL_X509* x509;
  2968. int ret;
  2969. // create ctx
  2970. ret = wolfSSL_CTX_add_extra_chain_cert(ctx, x509);
  2971. // check ret value
  2972. \endcode
  2973. \sa wolfSSL_CTX_new
  2974. \sa wolfSSL_CTX_free
  2975. */
  2976. long wolfSSL_CTX_add_extra_chain_cert(WOLFSSL_CTX* ctx, WOLFSSL_X509* x509);
  2977. /*!
  2978. \ingroup Setup
  2979. \brief この関数は、wolfssl_ctx構造からGet Read Hapeフラグを返します。
  2980. \return flag 成功すると、読み取り先のフラグを返します。
  2981. \return SSL_FAILURE ctxがnullの場合、ssl_failureが返されます。
  2982. _Example_
  2983. \code
  2984. WOLFSSL_CTX* ctx;
  2985. int flag;
  2986. // setup ctx
  2987. flag = wolfSSL_CTX_get_read_ahead(ctx);
  2988. //check flag
  2989. \endcode
  2990. \sa wolfSSL_CTX_new
  2991. \sa wolfSSL_CTX_free
  2992. \sa wolfSSL_CTX_set_read_ahead
  2993. */
  2994. int wolfSSL_CTX_get_read_ahead(WOLFSSL_CTX*);
  2995. /*!
  2996. \ingroup Setup
  2997. \brief この関数は、wolfssl_ctx構造内の読み出し先のフラグを設定します。
  2998. \return SSL_SUCCESS CTXが先読みフラグを設定した場合。
  2999. \return SSL_FAILURE ctxがnullの場合、ssl_failureが返されます。
  3000. _Example_
  3001. \code
  3002. WOLFSSL_CTX* ctx;
  3003. int flag;
  3004. int ret;
  3005. // setup ctx
  3006. ret = wolfSSL_CTX_set_read_ahead(ctx, flag);
  3007. // check return value
  3008. \endcode
  3009. \sa wolfSSL_CTX_new
  3010. \sa wolfSSL_CTX_free
  3011. \sa wolfSSL_CTX_get_read_ahead
  3012. */
  3013. int wolfSSL_CTX_set_read_ahead(WOLFSSL_CTX* ctx, int v);
  3014. /*!
  3015. \ingroup Setup
  3016. \brief この関数はOCSPで使用するオプション引数を設定します。
  3017. \return SSL_FAILURE CTXまたはITのCERT ManagerがNULLの場合。
  3018. \return SSL_SUCCESS 正常に設定されている場合。
  3019. \param ctx wolfssl_ctx構造ユーザー引数を設定するための構造。
  3020. _Example_
  3021. \code
  3022. WOLFSSL_CTX* ctx;
  3023. void* data;
  3024. int ret;
  3025. // setup ctx
  3026. ret = wolfSSL_CTX_set_tlsext_status_arg(ctx, data);
  3027. //check ret value
  3028. \endcode
  3029. \sa wolfSSL_CTX_new
  3030. \sa wolfSSL_CTX_free
  3031. */
  3032. long wolfSSL_CTX_set_tlsext_status_arg(WOLFSSL_CTX* ctx, void* arg);
  3033. /*!
  3034. \ingroup Setup
  3035. \brief この関数は、PRFコールバックに渡すオプションの引数を設定します。
  3036. \return SSL_FAILURE CTXがNULLの場合
  3037. \return SSL_SUCCESS 正常に設定されている場合。
  3038. \param ctx wolfssl_ctx構造ユーザー引数を設定するための構造。
  3039. _Example_
  3040. \code
  3041. WOLFSSL_CTX* ctx;
  3042. void* data;
  3043. int ret;
  3044. // setup ctx
  3045. ret = wolfSSL_CTX_set_tlsext_opaques_prf_input_callback_arg(ctx, data);
  3046. //check ret value
  3047. \endcode
  3048. \sa wolfSSL_CTX_new
  3049. \sa wolfSSL_CTX_free
  3050. */
  3051. long wolfSSL_CTX_set_tlsext_opaque_prf_input_callback_arg(
  3052. WOLFSSL_CTX* ctx, void* arg);
  3053. /*!
  3054. \ingroup Setup
  3055. \brief この関数は、SSLのオプションマスクを設定します。いくつかの有効なオプションは、ssl_op_all、ssl_op_cookie_exchange、ssl_op_no_sslv2、ssl_op_no_sslv3、ssl_op_no_tlsv1_1、ssl_op_no_tlsv1_2、ssl_op_no_compressionです。
  3056. \return val SSLに格納されている更新されたオプションマスク値を返します。
  3057. \param s オプションマスクを設定するためのWolfSSL構造。
  3058. _Example_
  3059. \code
  3060. WOLFSSL* ssl;
  3061. unsigned long mask;
  3062. mask = SSL_OP_NO_TLSv1
  3063. mask = wolfSSL_set_options(ssl, mask);
  3064. // check mask
  3065. \endcode
  3066. \sa wolfSSL_new
  3067. \sa wolfSSL_free
  3068. \sa wolfSSL_get_options
  3069. */
  3070. long wolfSSL_set_options(WOLFSSL *s, long op);
  3071. /*!
  3072. \ingroup Setup
  3073. \brief この関数は現在のオプションマスクを返します。
  3074. \return val SSLに格納されているマスク値を返します。
  3075. _Example_
  3076. \code
  3077. WOLFSSL* ssl;
  3078. unsigned long mask;
  3079. mask = wolfSSL_get_options(ssl);
  3080. // check mask
  3081. \endcode
  3082. \sa wolfSSL_new
  3083. \sa wolfSSL_free
  3084. \sa wolfSSL_set_options
  3085. */
  3086. long wolfSSL_get_options(const WOLFSSL *s);
  3087. /*!
  3088. \ingroup Setup
  3089. \brief これは、渡されたデバッグ引数を設定するために使用されます。
  3090. \return SSL_SUCCESS 設定の成功した引数について。
  3091. \return SSL_FAILURE NULL SSLが渡された場合。
  3092. \param ssl 引数を設定するためのWolfSSL構造。
  3093. _Example_
  3094. \code
  3095. WOLFSSL* ssl;
  3096. void* args;
  3097. int ret;
  3098. // create ssl object
  3099. ret = wolfSSL_set_tlsext_debug_arg(ssl, args);
  3100. // check ret value
  3101. \endcode
  3102. \sa wolfSSL_new
  3103. \sa wolfSSL_free
  3104. */
  3105. long wolfSSL_set_tlsext_debug_arg(WOLFSSL *s, void *arg);
  3106. /*!
  3107. \ingroup openSSL
  3108. \brief この関数は、サーバがOCSPステータス応答(OCSPステイプルとも呼ばれる)を送受信するクライアントアプリケーションが要求されたときに呼び出されます。
  3109. \return 1 成功すると。
  3110. \return 0 エラー時に。
  3111. \param s ssl_new()関数によって作成されたwolfssl構造体へのポインタ
  3112. _Example_
  3113. \code
  3114. WOLFSSL *ssl;
  3115. WOLFSSL_CTX *ctx;
  3116. int ret;
  3117. ctx = wolfSSL_CTX_new(wolfSSLv23_server_method());
  3118. ssl = wolfSSL_new(ctx);
  3119. ret = WolfSSL_set_tlsext_status_type(ssl,TLSEXT_STATUSTYPE_ocsp);
  3120. wolfSSL_free(ssl);
  3121. wolfSSL_CTX_free(ctx);
  3122. \endcode
  3123. \sa wolfSSL_new
  3124. \sa wolfSSL_CTX_new
  3125. \sa wolfSSL_free
  3126. \sa wolfSSL_CTX_free
  3127. */
  3128. long wolfSSL_set_tlsext_status_type(WOLFSSL *s, int type);
  3129. /*!
  3130. \ingroup Setup
  3131. \brief これは、ピアの証明書を確認しようとした後に結果を取得するために使用されます。
  3132. \return X509_V_OK 成功した検証について
  3133. \return SSL_FAILURE NULL SSLが渡された場合。
  3134. _Example_
  3135. \code
  3136. WOLFSSL* ssl;
  3137. long ret;
  3138. // attempt/complete handshake
  3139. ret = wolfSSL_get_verify_result(ssl);
  3140. // check ret value
  3141. \endcode
  3142. \sa wolfSSL_new
  3143. \sa wolfSSL_free
  3144. */
  3145. long wolfSSL_get_verify_result(const WOLFSSL *ssl);
  3146. /*!
  3147. \ingroup Debug
  3148. \brief この関数は、wolfssl_get_error()によって返されたエラーコードをより多くの人間が読めるエラー文字列に変換し、その文字列を出力ファイルに印刷します。ERRは、WOLFSSL_GET_ERROR()によって返され、FPがエラー文字列が配置されるファイルであるエラーコードです。
  3149. \return none いいえ返します。
  3150. \param fp に書き込まれる人間が読めるエラー文字列の出力ファイル。
  3151. _Example_
  3152. \code
  3153. int err = 0;
  3154. WOLFSSL* ssl;
  3155. FILE* fp = ...
  3156. ...
  3157. err = wolfSSL_get_error(ssl, 0);
  3158. wolfSSL_ERR_print_errors_fp(fp, err);
  3159. \endcode
  3160. \sa wolfSSL_get_error
  3161. \sa wolfSSL_ERR_error_string
  3162. \sa wolfSSL_ERR_error_string_n
  3163. \sa wolfSSL_load_error_strings
  3164. */
  3165. void wolfSSL_ERR_print_errors_fp(XFILE fp, int err);
  3166. /*!
  3167. \ingroup Debug
  3168. \brief この関数は提供されたコールバックを使用してエラー報告を処理します。コールバック関数はエラー回線ごとに実行されます。文字列、長さ、およびUSERDATAはコールバックパラメータに渡されます。
  3169. \return none いいえ返します。
  3170. \param cb コールバック関数
  3171. _Example_
  3172. \code
  3173. int error_cb(const char *str, size_t len, void *u)
  3174. { fprintf((FILE*)u, "%-*.*s\n", (int)len, (int)len, str); return 0; }
  3175. ...
  3176. FILE* fp = ...
  3177. wolfSSL_ERR_print_errors_cb(error_cb, fp);
  3178. \endcode
  3179. \sa wolfSSL_get_error
  3180. \sa wolfSSL_ERR_error_string
  3181. \sa wolfSSL_ERR_error_string_n
  3182. \sa wolfSSL_load_error_strings
  3183. */
  3184. void wolfSSL_ERR_print_errors_cb (
  3185. int (*cb)(const char *str, size_t len, void *u), void *u);
  3186. /*!
  3187. \brief wolfssl_ctx構造
  3188. \return none いいえ返します。
  3189. \param ctx wolfssl_ctx_new()を使用して作成されたwolfssl_ctx構造へのポインタ。
  3190. _Example_
  3191. \code
  3192. WOLFSSL_CTX* ctx = WOLFSSL_CTX_new( protocol def );
  3193. static WC_INLINE unsigned int my_psk_client_cb(WOLFSSL* ssl, const char* hint,
  3194. char* identity, unsigned int id_max_len, unsigned char* key,
  3195. Unsigned int key_max_len){
  3196. wolfSSL_CTX_set_psk_client_callback(ctx, my_psk_client_cb);
  3197. \endcode
  3198. \sa wolfSSL_set_psk_client_callback
  3199. \sa wolfSSL_set_psk_server_callback
  3200. \sa wolfSSL_CTX_set_psk_server_callback
  3201. \sa wolfSSL_CTX_set_psk_client_callback
  3202. */
  3203. void wolfSSL_CTX_set_psk_client_callback(WOLFSSL_CTX* ctx,
  3204. wc_psk_client_callback);
  3205. /*!
  3206. \brief
  3207. \return none いいえ返します。
  3208. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  3209. _Example_
  3210. \code
  3211. WOLFSSL* ssl;
  3212. static WC_INLINE unsigned int my_psk_client_cb(WOLFSSL* ssl, const char* hint,
  3213. char* identity, unsigned int id_max_len, unsigned char* key,
  3214. Unsigned int key_max_len){
  3215. if(ssl){
  3216. wolfSSL_set_psk_client_callback(ssl, my_psk_client_cb);
  3217. } else {
  3218. // could not set callback
  3219. }
  3220. \endcode
  3221. \sa wolfSSL_CTX_set_psk_client_callback
  3222. \sa wolfSSL_CTX_set_psk_server_callback
  3223. \sa wolfSSL_set_psk_server_callback
  3224. */
  3225. void wolfSSL_set_psk_client_callback(WOLFSSL* ssl,
  3226. wc_psk_client_callback);
  3227. /*!
  3228. \ingroup CertsKeys
  3229. \brief この関数はPSKアイデンティティヒントを返します。
  3230. \return pointer WolfSSL構造の配列メンバーに格納されている値へのconst charポインタが返されます。
  3231. \return NULL WOLFSSLまたは配列構造がNULLの場合に返されます。
  3232. _Example_
  3233. \code
  3234. WOLFSSL* ssl = wolfSSL_new(ctx);
  3235. char* idHint;
  3236. ...
  3237. idHint = wolfSSL_get_psk_identity_hint(ssl);
  3238. if(idHint){
  3239. // The hint was retrieved
  3240. return idHint;
  3241. } else {
  3242. // Hint wasn’t successfully retrieved
  3243. }
  3244. \endcode
  3245. \sa wolfSSL_get_psk_identity
  3246. */
  3247. const char* wolfSSL_get_psk_identity_hint(const WOLFSSL*);
  3248. /*!
  3249. \ingroup CertsKeys
  3250. \brief 関数は、配列構造のClient_Identityメンバーへの定数ポインタを返します。
  3251. \return string 配列構造のclient_identityメンバの文字列値。
  3252. \return NULL WOLFSSL構造がNULLの場合、またはWOLFSSL構造の配列メンバーがNULLの場合。
  3253. _Example_
  3254. \code
  3255. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
  3256. WOLFSSL* ssl = wolfSSL_new(ctx);
  3257. const char* pskID;
  3258. ...
  3259. pskID = wolfSSL_get_psk_identity(ssl);
  3260. if(pskID == NULL){
  3261. // There is not a value in pskID
  3262. }
  3263. \endcode
  3264. \sa wolfSSL_get_psk_identity_hint
  3265. \sa wolfSSL_use_psk_identity_hint
  3266. */
  3267. const char* wolfSSL_get_psk_identity(const WOLFSSL*);
  3268. /*!
  3269. \ingroup CertsKeys
  3270. \brief この関数は、wolfssl_ctx構造体のserver_hintメンバーにHINT引数を格納します。
  3271. \return SSL_SUCCESS 機能の実行が成功したために返されます。
  3272. \param ctx wolfssl_ctx_new()を使用して作成されたwolfssl_ctx構造へのポインタ。
  3273. _Example_
  3274. \code
  3275. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
  3276. const char* hint;
  3277. int ret;
  3278. ret = wolfSSL_CTX_use_psk_identity_hint(ctx, hint);
  3279. if(ret == SSL_SUCCESS){
  3280. // Function was successful.
  3281. return ret;
  3282. } else {
  3283. // Failure case.
  3284. }
  3285. \endcode
  3286. \sa wolfSSL_use_psk_identity_hint
  3287. */
  3288. int wolfSSL_CTX_use_psk_identity_hint(WOLFSSL_CTX* ctx, const char* hint);
  3289. /*!
  3290. \ingroup CertsKeys
  3291. \brief この関数は、wolfssl構造内の配列構造のserver_hintメンバーにHINT引数を格納します。
  3292. \return SSL_SUCCESS ヒントがWolfSSL構造に正常に保存された場合に返されます。
  3293. \return SSL_FAILURE WOLFSSLまたは配列構造がNULLの場合に返されます。
  3294. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  3295. _Example_
  3296. \code
  3297. WOLFSSL* ssl = wolfSSL_new(ctx);
  3298. const char* hint;
  3299. ...
  3300. if(wolfSSL_use_psk_identity_hint(ssl, hint) != SSL_SUCCESS){
  3301. // Handle failure case.
  3302. }
  3303. \endcode
  3304. \sa wolfSSL_CTX_use_psk_identity_hint
  3305. */
  3306. int wolfSSL_use_psk_identity_hint(WOLFSSL* ssl, const char* hint);
  3307. /*!
  3308. \brief wolfssl_ctx構造体
  3309. \return none いいえ返します。
  3310. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  3311. _Example_
  3312. \code
  3313. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
  3314. WOLFSSL* ssl = wolfSSL_new(ctx);
  3315. static unsigned int my_psk_server_cb(WOLFSSL* ssl, const char* identity,
  3316. unsigned char* key, unsigned int key_max_len)
  3317. {
  3318. // Function body.
  3319. }
  3320. if(ctx != NULL){
  3321. wolfSSL_CTX_set_psk_server_callback(ctx, my_psk_server_cb);
  3322. } else {
  3323. // The CTX object was not properly initialized.
  3324. }
  3325. \endcode
  3326. \sa wc_psk_server_callback
  3327. \sa wolfSSL_set_psk_client_callback
  3328. \sa wolfSSL_set_psk_server_callback
  3329. \sa wolfSSL_CTX_set_psk_client_callback
  3330. */
  3331. void wolfSSL_CTX_set_psk_server_callback(WOLFSSL_CTX* ctx,
  3332. wc_psk_server_callback cb);
  3333. /*!
  3334. \brief WolfSSL構造オプションメンバー。
  3335. \return none いいえ返します。
  3336. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  3337. _Example_
  3338. \code
  3339. WOLFSSL_CTX* ctx;
  3340. WOLFSSL* ssl;
  3341. static unsigned int my_psk_server_cb(WOLFSSL* ssl, const char* identity,
  3342. unsigned char* key, unsigned int key_max_len)
  3343. {
  3344. // Function body.
  3345. }
  3346. if(ssl != NULL && cb != NULL){
  3347. wolfSSL_set_psk_server_callback(ssl, my_psk_server_cb);
  3348. }
  3349. \endcode
  3350. \sa wolfSSL_set_psk_client_callback
  3351. \sa wolfSSL_CTX_set_psk_server_callback
  3352. \sa wolfSSL_CTX_set_psk_client_callback
  3353. \sa wolfSSL_get_psk_identity_hint
  3354. \sa wc_psk_server_callback
  3355. \sa InitSuites
  3356. */
  3357. void wolfSSL_set_psk_server_callback(WOLFSSL* ssl,
  3358. wc_psk_server_callback cb);
  3359. /*!
  3360. \brief
  3361. \return WOLFSSL_SUCCESS またはwolfssl_failure.
  3362. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  3363. \sa wolfSSL_get_psk_callback_ctx
  3364. \sa wolfSSL_CTX_set_psk_callback_ctx
  3365. \sa wolfSSL_CTX_get_psk_callback_ctx
  3366. */
  3367. int wolfSSL_set_psk_callback_ctx(WOLFSSL* ssl, void* psk_ctx);
  3368. /*!
  3369. \brief
  3370. \return WOLFSSL_SUCCESS またはwolfssl_failure.
  3371. \param ctx wolfssl_ctx_new()を使用して作成されたwolfssl_ctx構造へのポインタ。
  3372. \sa wolfSSL_set_psk_callback_ctx
  3373. \sa wolfSSL_get_psk_callback_ctx
  3374. \sa wolfSSL_CTX_get_psk_callback_ctx
  3375. */
  3376. int wolfSSL_CTX_set_psk_callback_ctx(WOLFSSL_CTX* ctx, void* psk_ctx);
  3377. /*!
  3378. \brief
  3379. \return void ユーザーPSKコンテキストへのポインタ
  3380. \sa wolfSSL_set_psk_callback_ctx
  3381. \sa wolfSSL_CTX_set_psk_callback_ctx
  3382. \sa wolfSSL_CTX_get_psk_callback_ctx
  3383. */
  3384. void* wolfSSL_get_psk_callback_ctx(WOLFSSL* ssl);
  3385. /*!
  3386. \brief
  3387. \return void ユーザーPSKコンテキストへのポインタ
  3388. \sa wolfSSL_CTX_set_psk_callback_ctx
  3389. \sa wolfSSL_set_psk_callback_ctx
  3390. \sa wolfSSL_get_psk_callback_ctx
  3391. */
  3392. void* wolfSSL_CTX_get_psk_callback_ctx(WOLFSSL_CTX* ctx);
  3393. /*!
  3394. \ingroup Setup
  3395. \brief この機能により、CTX構造のHAVAnonメンバーがコンパイル中に定義されている場合は、CTX構造のHABANONメンバーを有効にします。
  3396. \return SSL_SUCCESS 機能が正常に実行され、CTXのHaveannonメンバーが1に設定されている場合に返されます。
  3397. \return SSL_FAILURE CTX構造がNULLの場合に返されます。
  3398. _Example_
  3399. \code
  3400. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
  3401. WOLFSSL* ssl = wolfSSL_new(ctx);
  3402. ...
  3403. #ifdef HAVE_ANON
  3404. if(cipherList == NULL){
  3405. wolfSSL_CTX_allow_anon_cipher(ctx);
  3406. if(wolfSSL_CTX_set_cipher_list(ctx, “ADH_AES128_SHA”) != SSL_SUCCESS){
  3407. // failure case
  3408. }
  3409. }
  3410. #endif
  3411. \endcode
  3412. \sa none
  3413. */
  3414. int wolfSSL_CTX_allow_anon_cipher(WOLFSSL_CTX*);
  3415. /*!
  3416. \ingroup Setup
  3417. \brief wolfsslv23_server_method()関数は、アプリケーションがサーバーであることを示すために使用され、SSL 3.0 - TLS 1.3からプロトコルバージョンと接続するクライアントをサポートします。この関数は、wolfssl_ctx_new()を使用してSSL / TLSコンテキストを作成するときに使用される新しいWolfssl_method構造体のメモリを割り当てて初期化します。
  3418. \return pointer 成功した場合、呼び出しは新しく作成されたwolfssl_method構造へのポインタを返します。
  3419. \return Failure xmallocを呼び出すときにメモリ割り当てが失敗した場合、基礎となるMalloc()実装の失敗値が返されます(通常はerrnoがenomeemに設定されます)。
  3420. _Example_
  3421. \code
  3422. WOLFSSL_METHOD* method;
  3423. WOLFSSL_CTX* ctx;
  3424. method = wolfSSLv23_server_method();
  3425. if (method == NULL) {
  3426. // unable to get method
  3427. }
  3428. ctx = wolfSSL_CTX_new(method);
  3429. ...
  3430. \endcode
  3431. \sa wolfSSLv3_server_method
  3432. \sa wolfTLSv1_server_method
  3433. \sa wolfTLSv1_1_server_method
  3434. \sa wolfTLSv1_2_server_method
  3435. \sa wolfTLSv1_3_server_method
  3436. \sa wolfDTLSv1_server_method
  3437. \sa wolfSSL_CTX_new
  3438. */
  3439. WOLFSSL_METHOD *wolfSSLv23_server_method(void);
  3440. /*!
  3441. \ingroup Setup
  3442. \brief これは、WolfSSL構造体の内部エラー状態を取得するために使用されます。
  3443. \return wolfssl_error SSLエラー状態、通常はマイナスを返します
  3444. \return BAD_FUNC_ARG SSLがNULLの場合
  3445. _Example_
  3446. \code
  3447. WOLFSSL* ssl;
  3448. int ret;
  3449. // create ssl object
  3450. ret = wolfSSL_state(ssl);
  3451. // check ret value
  3452. \endcode
  3453. \sa wolfSSL_new
  3454. \sa wolfSSL_free
  3455. */
  3456. int wolfSSL_state(WOLFSSL* ssl);
  3457. /*!
  3458. \ingroup CertsKeys
  3459. \brief この関数はピアの証明書を取得します。
  3460. \return pointer WOLFSSL_X509構造のPECRERTメンバーへのポインタが存在する場合は。
  3461. \return 0 ピア証明書発行者サイズが定義されていない場合に返されます。
  3462. _Example_
  3463. \code
  3464. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
  3465. WOLFSSL* ssl = wolfSSL_new(ctx);
  3466. ...
  3467. WOLFSSL_X509* peerCert = wolfSSL_get_peer_certificate(ssl);
  3468. if(peerCert){
  3469. // You have a pointer peerCert to the peer certification
  3470. }
  3471. \endcode
  3472. \sa wolfSSL_X509_get_issuer_name
  3473. \sa wolfSSL_X509_get_subject_name
  3474. \sa wolfSSL_X509_get_isCA
  3475. */
  3476. WOLFSSL_X509* wolfSSL_get_peer_certificate(WOLFSSL* ssl);
  3477. /*!
  3478. \ingroup Debug
  3479. \brief この関数は、wolfssl_get_error()を呼び出してssl_error_want_readを取得するのと似ています。基礎となるエラー状態がSSL_ERROR_WANT_READの場合、この関数は1を返しますが、それ以外の場合は0です。
  3480. \return 1 WOLFSSL_GET_ERROR()はSSL_ERROR_WANT_READを返し、基礎となるI / Oには読み取り可能なデータがあります。
  3481. \return 0 SSL_ERROR_WANT_READエラー状態はありません。
  3482. _Example_
  3483. \code
  3484. int ret;
  3485. WOLFSSL* ssl = 0;
  3486. ...
  3487. ret = wolfSSL_want_read(ssl);
  3488. if (ret == 1) {
  3489. // underlying I/O has data available for reading (SSL_ERROR_WANT_READ)
  3490. }
  3491. \endcode
  3492. \sa wolfSSL_want_write
  3493. \sa wolfSSL_get_error
  3494. */
  3495. int wolfSSL_want_read(WOLFSSL*);
  3496. /*!
  3497. \ingroup Debug
  3498. \brief この関数は、wolfssl_get_error()を呼び出し、RETURSのSSL_ERROR_WANT_WRITEを取得するのと同じです。基礎となるエラー状態がSSL_ERROR_WANT_WRITEの場合、この関数は1を返しますが、それ以外の場合は0です。
  3499. \return 1 WOLFSSL_GET_ERROR()はSSL_ERROR_WANT_WRITEを返します。基礎となるI / Oは、基礎となるSSL接続で進行状況を行うために書き込まれるデータを必要とします。
  3500. \return 0 ssl_error_want_writeエラー状態はありません。
  3501. _Example_
  3502. \code
  3503. int ret;
  3504. WOLFSSL* ssl = 0;
  3505. ...
  3506. ret = wolfSSL_want_write(ssl);
  3507. if (ret == 1) {
  3508. // underlying I/O needs data to be written (SSL_ERROR_WANT_WRITE)
  3509. }
  3510. \endcode
  3511. \sa wolfSSL_want_read
  3512. \sa wolfSSL_get_error
  3513. */
  3514. int wolfSSL_want_write(WOLFSSL*);
  3515. /*!
  3516. \ingroup Setup
  3517. \brief wolfsslデフォルトでは、有効な日付範囲と検証済みの署名のためにピア証明書をチェックします。wolfssl_connect()またはwolfssl_accept()の前にこの関数を呼び出すと、実行するチェックのリストにドメイン名チェックが追加されます。DN受信時にピア証明書を確認するためのドメイン名を保持します。
  3518. \return SSL_SUCCESS 成功すると。
  3519. \return SSL_FAILURE メモリエラーが発生した場合に返されます。
  3520. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  3521. _Example_
  3522. \code
  3523. int ret = 0;
  3524. WOLFSSL* ssl;
  3525. char* domain = (char*) “www.yassl.com”;
  3526. ...
  3527. ret = wolfSSL_check_domain_name(ssl, domain);
  3528. if (ret != SSL_SUCCESS) {
  3529. // failed to enable domain name check
  3530. }
  3531. \endcode
  3532. \sa none
  3533. */
  3534. int wolfSSL_check_domain_name(WOLFSSL* ssl, const char* dn);
  3535. /*!
  3536. \ingroup TLS
  3537. \brief 使用するためにWolfSSLライブラリを初期化します。アプリケーションごとに1回、その他のライブラリへの呼び出しの前に呼び出す必要があります。
  3538. \return SSL_SUCCESS 成功した場合、通話が戻ります。
  3539. \return BAD_MUTEX_E 返される可能性があるエラーです。
  3540. _Example_
  3541. \code
  3542. int ret = 0;
  3543. ret = wolfSSL_Init();
  3544. if (ret != SSL_SUCCESS) {
  3545. failed to initialize wolfSSL library
  3546. }
  3547. \endcode
  3548. \sa wolfSSL_Cleanup
  3549. */
  3550. int wolfSSL_Init(void);
  3551. /*!
  3552. \ingroup TLS
  3553. \brief さらなる使用からWOLFSSLライブラリを初期化します。ライブラリによって使用されるリソースを解放しますが、呼び出される必要はありません。
  3554. \return SSL_SUCCESS エラーを返しません。
  3555. _Example_
  3556. \code
  3557. wolfSSL_Cleanup();
  3558. \endcode
  3559. \sa wolfSSL_Init
  3560. */
  3561. int wolfSSL_Cleanup(void);
  3562. /*!
  3563. \ingroup IO
  3564. \brief この関数は現在のライブラリーバージョンを返します。
  3565. \return LIBWOLFSSL_VERSION_STRING バージョンを定義するconst charポインタ。
  3566. _Example_
  3567. \code
  3568. char version[MAXSIZE];
  3569. version = wolfSSL_KeepArrays();
  3570. if(version != ExpectedVersion){
  3571. // Handle the mismatch case
  3572. }
  3573. \endcode
  3574. \sa word32_wolfSSL_lib_version_hex
  3575. */
  3576. const char* wolfSSL_lib_version(void);
  3577. /*!
  3578. \ingroup IO
  3579. \brief この関数は、現在のライブラリーのバージョンを16進表記で返します。
  3580. \return LILBWOLFSSL_VERSION_HEX wolfssl / version.hで定義されている16進数バージョンを返します。
  3581. _Example_
  3582. \code
  3583. word32 libV;
  3584. libV = wolfSSL_lib_version_hex();
  3585. if(libV != EXPECTED_HEX){
  3586. // How to handle an unexpected value
  3587. } else {
  3588. // The expected result for libV
  3589. }
  3590. \endcode
  3591. \sa wolfSSL_lib_version
  3592. */
  3593. word32 wolfSSL_lib_version_hex(void);
  3594. /*!
  3595. \ingroup IO
  3596. \brief SSLメソッドの側面に基づいて、実際の接続または承認を実行します。クライアント側から呼び出された場合、サーバ側から呼び出された場合にwolfssl_accept()が実行されている間にwolfssl_connect()が行われる。
  3597. \return SSL_SUCCESS 成功した場合に返却されます。(注意、古いバージョンは0を返します)
  3598. \return SSL_FATAL_ERROR 基礎となる呼び出しがエラーになった場合に返されます。特定のエラーコードを取得するには、wolfssl_get_error()を使用してください。
  3599. _Example_
  3600. \code
  3601. int ret = SSL_FATAL_ERROR;
  3602. WOLFSSL* ssl = 0;
  3603. ...
  3604. ret = wolfSSL_negotiate(ssl);
  3605. if (ret == SSL_FATAL_ERROR) {
  3606. // SSL establishment failed
  3607. int error_code = wolfSSL_get_error(ssl);
  3608. ...
  3609. }
  3610. ...
  3611. \endcode
  3612. \sa SSL_connect
  3613. \sa SSL_accept
  3614. */
  3615. int wolfSSL_negotiate(WOLFSSL* ssl);
  3616. /*!
  3617. \ingroup Setup
  3618. \brief SSL接続に圧縮を使用する機能をオンにします。両側には圧縮がオンになっている必要があります。そうでなければ圧縮は使用されません。ZLIBライブラリは実際のデータ圧縮を実行します。ライブラリにコンパイルするには、システムの設定システムに--with-libzを使用し、そうでない場合はhand_libzを定義します。送受信されるメッセージの実際のサイズを減らす前にデータを圧縮している間に、圧縮によって保存されたデータの量は通常、ネットワークの遅いすべてのネットワークを除いたものよりも分析に時間がかかります。
  3619. \return SSL_SUCCESS 成功すると。
  3620. \return NOT_COMPILED_IN 圧縮サポートがライブラリに組み込まれていない場合に返されます。
  3621. _Example_
  3622. \code
  3623. int ret = 0;
  3624. WOLFSSL* ssl = 0;
  3625. ...
  3626. ret = wolfSSL_set_compression(ssl);
  3627. if (ret == SSL_SUCCESS) {
  3628. // successfully enabled compression for SSL session
  3629. }
  3630. \endcode
  3631. \sa none
  3632. */
  3633. int wolfSSL_set_compression(WOLFSSL* ssl);
  3634. /*!
  3635. \ingroup Setup
  3636. \brief この関数はSSLセッションタイムアウト値を秒単位で設定します。
  3637. \return SSL_SUCCESS セッションを正常に設定すると返されます。
  3638. \return BAD_FUNC_ARG SSLがNULLの場合に返されます。
  3639. \param ssl wolfssl_new()で作成されたSSLオブジェクトへのポインタ。
  3640. _Example_
  3641. \code
  3642. int ret = 0;
  3643. WOLFSSL* ssl = 0;
  3644. ...
  3645. ret = wolfSSL_set_timeout(ssl, 500);
  3646. if (ret != SSL_SUCCESS) {
  3647. // failed to set session timeout value
  3648. }
  3649. ...
  3650. \endcode
  3651. \sa wolfSSL_get1_session
  3652. \sa wolfSSL_set_session
  3653. */
  3654. int wolfSSL_set_timeout(WOLFSSL* ssl, unsigned int to);
  3655. /*!
  3656. \ingroup Setup
  3657. \brief この関数は、指定されたSSLコンテキストに対して、SSLセッションのタイムアウト値を秒単位で設定します。
  3658. \return the wolfssl_error_code_opensslの場合、以前のタイムアウト値
  3659. \return defined 成功しています。定義されていない場合、SSL_SUCCESSは返されます。
  3660. \return BAD_FUNC_ARG 入力コンテキスト(CTX)がNULLのときに返されます。
  3661. \param ctx wolfssl_ctx_new()で作成されたSSLコンテキストへのポインタ。
  3662. _Example_
  3663. \code
  3664. WOLFSSL_CTX* ctx = 0;
  3665. ...
  3666. ret = wolfSSL_CTX_set_timeout(ctx, 500);
  3667. if (ret != SSL_SUCCESS) {
  3668. // failed to set session timeout value
  3669. }
  3670. \endcode
  3671. \sa wolfSSL_flush_sessions
  3672. \sa wolfSSL_get1_session
  3673. \sa wolfSSL_set_session
  3674. \sa wolfSSL_get_sessionID
  3675. \sa wolfSSL_CTX_set_session_cache_mode
  3676. */
  3677. int wolfSSL_CTX_set_timeout(WOLFSSL_CTX* ctx, unsigned int to);
  3678. /*!
  3679. \ingroup openSSL
  3680. \brief ピアの証明書チェーンを取得します。
  3681. \return chain 正常にコールがピアの証明書チェーンを返します。
  3682. \return 0 無効なWolfSSLポインタが関数に渡されると返されます。
  3683. _Example_
  3684. \code
  3685. none
  3686. \endcode
  3687. \sa wolfSSL_get_chain_count
  3688. \sa wolfSSL_get_chain_length
  3689. \sa wolfSSL_get_chain_cert
  3690. \sa wolfSSL_get_chain_cert_pem
  3691. */
  3692. WOLFSSL_X509_CHAIN* wolfSSL_get_peer_chain(WOLFSSL* ssl);
  3693. /*!
  3694. \ingroup openSSL
  3695. \brief ピアの証明書チェーン数を取得します。
  3696. \return Success 正常にコールがピアの証明書チェーン数を返します。
  3697. \return 0 無効なチェーンポインタが関数に渡されると返されます。
  3698. _Example_
  3699. \code
  3700. none
  3701. \endcode
  3702. \sa wolfSSL_get_peer_chain
  3703. \sa wolfSSL_get_chain_length
  3704. \sa wolfSSL_get_chain_cert
  3705. \sa wolfSSL_get_chain_cert_pem
  3706. */
  3707. int wolfSSL_get_chain_count(WOLFSSL_X509_CHAIN* chain);
  3708. /*!
  3709. \ingroup openSSL
  3710. \brief Index(IDX)のピアのASN1.DER証明書長をバイト単位で取得します。
  3711. \return Success 正常にコールがインデックス別にピアの証明書長をバイト単位で返します。
  3712. \return 0 無効なチェーンポインタが関数に渡されると返されます。
  3713. \param chain 有効なwolfssl_x509_chain構造へのポインタ。
  3714. _Example_
  3715. \code
  3716. none
  3717. \endcode
  3718. \sa wolfSSL_get_peer_chain
  3719. \sa wolfSSL_get_chain_count
  3720. \sa wolfSSL_get_chain_cert
  3721. \sa wolfSSL_get_chain_cert_pem
  3722. */
  3723. int wolfSSL_get_chain_length(WOLFSSL_X509_CHAIN* chain, int idx);
  3724. /*!
  3725. \ingroup openSSL
  3726. \brief インデックス(IDX)でピアのASN1.DER証明書を取得します。
  3727. \return Success 正常にコールがインデックスでピアの証明書を返します。
  3728. \return 0 無効なチェーンポインタが関数に渡されると返されます。
  3729. \param chain 有効なwolfssl_x509_chain構造へのポインタ。
  3730. _Example_
  3731. \code
  3732. none
  3733. \endcode
  3734. \sa wolfSSL_get_peer_chain
  3735. \sa wolfSSL_get_chain_count
  3736. \sa wolfSSL_get_chain_length
  3737. \sa wolfSSL_get_chain_cert_pem
  3738. */
  3739. unsigned char* wolfSSL_get_chain_cert(WOLFSSL_X509_CHAIN* chain, int idx);
  3740. /*!
  3741. \ingroup CertsKeys
  3742. \brief この関数は、証明書のチェーンからのピアのWOLFSSL_X509構造体をインデックス(IDX)で取得します。
  3743. \return pointer WOLFSSL_X509構造体へのポインタを返します。
  3744. \param chain 動的メモリsession_cacheの場合に使用されるWOLFSSL_X509_CHAINへのポインタ。
  3745. 注意:本関数から返された構造体をwolfSSL_FreeX509()を呼び出して解放するのはユーザーの責任です。
  3746. _Example_
  3747. \code
  3748. WOLFSSL_X509_CHAIN* chain = &session->chain;
  3749. int idx = 999; // set idx
  3750. ...
  3751. WOLFSSL_X509* ptr;
  3752. prt = wolfSSL_get_chain_X509(chain, idx);
  3753. if(ptr != NULL){
  3754. //ptr contains the cert at the index specified
  3755. wolfSSL_FreeX509(ptr);
  3756. } else {
  3757. // ptr is NULL
  3758. }
  3759. \endcode
  3760. \sa InitDecodedCert
  3761. \sa ParseCertRelative
  3762. \sa CopyDecodedToX509
  3763. */
  3764. WOLFSSL_X509* wolfSSL_get_chain_X509(WOLFSSL_X509_CHAIN* chain, int idx);
  3765. /*!
  3766. \ingroup openSSL
  3767. \brief インデックス(IDX)でピアのPEM証明書を取得します。
  3768. \return Success 正常にコールがインデックスでピアの証明書を返します。
  3769. \return 0 無効なチェーンポインタが関数に渡されると返されます。
  3770. \param chain 有効なwolfssl_x509_chain構造へのポインタ。
  3771. _Example_
  3772. \code
  3773. none
  3774. \endcode
  3775. \sa wolfSSL_get_peer_chain
  3776. \sa wolfSSL_get_chain_count
  3777. \sa wolfSSL_get_chain_length
  3778. \sa wolfSSL_get_chain_cert
  3779. */
  3780. int wolfSSL_get_chain_cert_pem(WOLFSSL_X509_CHAIN* chain, int idx,
  3781. unsigned char* buf, int inLen, int* outLen);
  3782. /*!
  3783. \ingroup openSSL
  3784. \brief セッションのIDを取得します。セッションIDは常に32バイトの長さです。
  3785. \return id セッションID。
  3786. _Example_
  3787. \code
  3788. none
  3789. \endcode
  3790. \sa SSL_get_session
  3791. */
  3792. const unsigned char* wolfSSL_get_sessionID(const WOLFSSL_SESSION* s);
  3793. /*!
  3794. \ingroup openSSL
  3795. \brief ピアの証明書のシリアル番号を取得します。シリアル番号バッファ(IN)は少なくとも32バイト以上であり、入力として* INOUTSZ引数として提供されます。関数を呼び出した後* INOUTSZはINバッファに書き込まれた実際の長さをバイト単位で保持します。
  3796. \return SSL_SUCCESS 成功すると。
  3797. \return BAD_FUNC_ARG 関数の不良引数が見つかった場合に返されます。
  3798. \param in シリアル番号バッファは少なくとも32バイトの長さであるべきです
  3799. _Example_
  3800. \code
  3801. none
  3802. \endcode
  3803. \sa SSL_get_peer_certificate
  3804. */
  3805. int wolfSSL_X509_get_serial_number(WOLFSSL_X509* x509, unsigned char* in,
  3806. int* inOutSz);
  3807. /*!
  3808. \ingroup CertsKeys
  3809. \brief 証明書から件名の共通名を返します。
  3810. \return NULL X509構造がNULLの場合に返されます
  3811. \return string サブジェクトの共通名の文字列表現は成功に返されます
  3812. _Example_
  3813. \code
  3814. WOLFSSL_X509 x509 = (WOLFSSL_X509*)XMALLOC(sizeof(WOLFSSL_X509), NULL,
  3815. DYNAMIC_TYPE_X509);
  3816. ...
  3817. int x509Cn = wolfSSL_X509_get_subjectCN(x509);
  3818. if(x509Cn == NULL){
  3819. // Deal with NULL case
  3820. } else {
  3821. // x509Cn contains the common name
  3822. }
  3823. \endcode
  3824. \sa wolfSSL_X509_Name_get_entry
  3825. \sa wolfSSL_X509_get_next_altname
  3826. \sa wolfSSL_X509_get_issuer_name
  3827. \sa wolfSSL_X509_get_subject_name
  3828. */
  3829. char* wolfSSL_X509_get_subjectCN(WOLFSSL_X509*);
  3830. /*!
  3831. \ingroup CertsKeys
  3832. \brief この関数は、wolfssl_x509構造体のDERエンコードされた証明書を取得します。
  3833. \return buffer この関数はDerbuffer構造体のバッファメンバーを返します。これはバイト型です。
  3834. \return NULL x509またはoutszパラメーターがnullの場合に返されます。
  3835. \param x509 証明書情報を含むWolfSSL_X509構造へのポインタ。
  3836. _Example_
  3837. \code
  3838. WOLFSSL_X509 x509 = (WOLFSSL_X509*)XMALLOC(sizeof(WOLFSSL_X509), NULL,
  3839. DYNAMIC_TYPE_X509);
  3840. int* outSz; // initialize
  3841. ...
  3842. byte* x509Der = wolfSSL_X509_get_der(x509, outSz);
  3843. if(x509Der == NULL){
  3844. // Failure case one of the parameters was NULL
  3845. }
  3846. \endcode
  3847. \sa wolfSSL_X509_version
  3848. \sa wolfSSL_X509_Name_get_entry
  3849. \sa wolfSSL_X509_get_next_altname
  3850. \sa wolfSSL_X509_get_issuer_name
  3851. \sa wolfSSL_X509_get_subject_name
  3852. */
  3853. const unsigned char* wolfSSL_X509_get_der(WOLFSSL_X509* x509, int* outSz);
  3854. /*!
  3855. \ingroup CertsKeys
  3856. \brief この関数は、x509がnullのかどうかを確認し、そうでない場合は、x509構造体のノッカスメンバーを返します。
  3857. \return pointer ASN1_TIMEを使用してX509構造体のノカフターメンバーに構造体を表明します。
  3858. \return NULL X509オブジェクトがNULLの場合に返されます。
  3859. _Example_
  3860. \code
  3861. WOLFSSL_X509* x509 = (WOLFSSL_X509)XMALOC(sizeof(WOLFSSL_X509), NULL,
  3862. DYNAMIC_TYPE_X509) ;
  3863. ...
  3864. const WOLFSSL_ASN1_TIME* notAfter = wolfSSL_X509_get_notAfter(x509);
  3865. if(notAfter == NULL){
  3866. // Failure case, the x509 object is null.
  3867. }
  3868. \endcode
  3869. \sa wolfSSL_X509_get_notBefore
  3870. */
  3871. WOLFSSL_ASN1_TIME* wolfSSL_X509_get_notAfter(WOLFSSL_X509*);
  3872. /*!
  3873. \ingroup CertsKeys
  3874. \brief この関数はX509証明書のバージョンを取得します。
  3875. \return 0 X509構造がNULLの場合に返されます。
  3876. \return version X509構造に保存されているバージョンが返されます。
  3877. _Example_
  3878. \code
  3879. WOLFSSL_X509* x509;
  3880. int version;
  3881. ...
  3882. version = wolfSSL_X509_version(x509);
  3883. if(!version){
  3884. // The function returned 0, failure case.
  3885. }
  3886. \endcode
  3887. \sa wolfSSL_X509_get_subject_name
  3888. \sa wolfSSL_X509_get_issuer_name
  3889. \sa wolfSSL_X509_get_isCA
  3890. \sa wolfSSL_get_peer_certificate
  3891. */
  3892. int wolfSSL_X509_version(WOLFSSL_X509*);
  3893. /*!
  3894. \ingroup CertsKeys
  3895. \brief no_stdio_filesystemが定義されている場合、この関数はヒープメモリを割り当て、wolfssl_x509構造を初期化してそれにポインタを返します。
  3896. \return *WOLFSSL_X509 関数が正常に実行された場合、WolfSSL_X509構造ポインタが返されます。
  3897. \return NULL Xftellマクロの呼び出しが負の値を返す場合。
  3898. \param x509 wolfssl_x509ポインタへのポインタ。
  3899. _Example_
  3900. \code
  3901. WOLFSSL_X509* x509a = (WOLFSSL_X509*)XMALLOC(sizeof(WOLFSSL_X509), NULL,
  3902. DYNAMIC_TYPE_X509);
  3903. WOLFSSL_X509** x509 = x509a;
  3904. XFILE file; (mapped to struct fs_file*)
  3905. ...
  3906. WOLFSSL_X509* newX509 = wolfSSL_X509_d2i_fp(x509, file);
  3907. if(newX509 == NULL){
  3908. // The function returned NULL
  3909. }
  3910. \endcode
  3911. \sa wolfSSL_X509_d2i
  3912. \sa XFTELL
  3913. \sa XREWIND
  3914. \sa XFSEEK
  3915. */
  3916. WOLFSSL_X509*
  3917. wolfSSL_X509_d2i_fp(WOLFSSL_X509** x509, FILE* file);
  3918. /*!
  3919. \ingroup CertsKeys
  3920. \brief 関数はX509証明書をメモリにロードします。
  3921. \return pointer 実行された実行は、wolfssl_x509構造へのポインタを返します。
  3922. \return NULL 証明書が書き込まれなかった場合に返されます。
  3923. \param fname ロードする証明書ファイル。
  3924. _Example_
  3925. \code
  3926. #define cliCert “certs/client-cert.pem”
  3927. X509* x509;
  3928. x509 = wolfSSL_X509_load_certificate_file(cliCert, SSL_FILETYPE_PEM);
  3929. AssertNotNull(x509);
  3930. \endcode
  3931. \sa InitDecodedCert
  3932. \sa PemToDer
  3933. \sa wolfSSL_get_certificate
  3934. \sa AssertNotNull
  3935. */
  3936. WOLFSSL_X509*
  3937. wolfSSL_X509_load_certificate_file(const char* fname, int format);
  3938. /*!
  3939. \ingroup CertsKeys
  3940. \brief この関数は、デバイスの種類をX509構造からバッファにコピーします。
  3941. \return pointer X509構造からデバイスの種類を保持するバイトポインタを返します。
  3942. \return NULL バッファサイズがNULLの場合に返されます。
  3943. \param x509 wolfssl_x509_new()で作成されたwolfssl_x509構造へのポインタ。
  3944. \param in デバイスタイプ(バッファ)を保持するバイトタイプへのポインタ。
  3945. _Example_
  3946. \code
  3947. WOLFSSL_X509* x509 = (WOLFSSL_X509)XMALOC(sizeof(WOLFSSL_X509), NULL,
  3948. DYNAMIC_TYPE_X509);
  3949. byte* in;
  3950. int* inOutSz;
  3951. ...
  3952. byte* deviceType = wolfSSL_X509_get_device_type(x509, in, inOutSz);
  3953. if(!deviceType){
  3954. // Failure case, NULL was returned.
  3955. }
  3956. \endcode
  3957. \sa wolfSSL_X509_get_hw_type
  3958. \sa wolfSSL_X509_get_hw_serial_number
  3959. \sa wolfSSL_X509_d2i
  3960. */
  3961. unsigned char*
  3962. wolfSSL_X509_get_device_type(WOLFSSL_X509* x509, unsigned char* in,
  3963. int* inOutSz);
  3964. /*!
  3965. \ingroup CertsKeys
  3966. \brief この関数は、wolfssl_x509構造のHWTypeメンバーをバッファにコピーします。
  3967. \return byte この関数は、wolfssl_x509構造のHWTypeメンバーに以前に保持されているデータのバイトタイプを返します。
  3968. \return NULL inoutszがnullの場合に返されます。
  3969. \param x509 証明書情報を含むWolfSSL_X509構造へのポインタ。
  3970. \param in バッファを表すバイトを入力するポインタ。
  3971. _Example_
  3972. \code
  3973. WOLFSSL_X509* x509; // X509 certificate
  3974. byte* in; // initialize the buffer
  3975. int* inOutSz; // holds the size of the buffer
  3976. ...
  3977. byte* hwType = wolfSSL_X509_get_hw_type(x509, in, inOutSz);
  3978. if(hwType == NULL){
  3979. // Failure case function returned NULL.
  3980. }
  3981. \endcode
  3982. \sa wolfSSL_X509_get_hw_serial_number
  3983. \sa wolfSSL_X509_get_device_type
  3984. */
  3985. unsigned char*
  3986. wolfSSL_X509_get_hw_type(WOLFSSL_X509* x509, unsigned char* in,
  3987. int* inOutSz);
  3988. /*!
  3989. \ingroup CertsKeys
  3990. \brief この関数はX509オブジェクトのhwserialNumメンバを返します。
  3991. \return pointer この関数は、X509オブジェクトからロードされたシリアル番号を含むINバッファへのバイトポインタを返します。
  3992. \param x509 証明書情報を含むWOLFSSL_X509構造へのポインタ。
  3993. \param in コピーされるバッファへのポインタ。
  3994. _Example_
  3995. \code
  3996. char* serial;
  3997. byte* in;
  3998. int* inOutSz;
  3999. WOLFSSL_X509 x509;
  4000. ...
  4001. serial = wolfSSL_X509_get_hw_serial_number(x509, in, inOutSz);
  4002. if(serial == NULL || serial <= 0){
  4003. // Failure case
  4004. }
  4005. \endcode
  4006. \sa wolfSSL_X509_get_subject_name
  4007. \sa wolfSSL_X509_get_issuer_name
  4008. \sa wolfSSL_X509_get_isCA
  4009. \sa wolfSSL_get_peer_certificate
  4010. \sa wolfSSL_X509_version
  4011. */
  4012. unsigned char*
  4013. wolfSSL_X509_get_hw_serial_number(WOLFSSL_X509* x509,
  4014. unsigned char* in, int* inOutSz);
  4015. /*!
  4016. \ingroup IO
  4017. \brief この関数はクライアント側で呼び出され、ピアの証明書チェーンを取得するのに十分な長さだけサーバーを持つSSL / TLSハンドシェイクを開始します。この関数が呼び出されると、基礎となる通信チャネルはすでに設定されています。 wolfssl_connect_cert()は、ブロックと非ブロックI / Oの両方で動作します。基礎となるI / Oがノンブロッキングである場合、wolfsl_connect_cert()は、wolfssl_connect_cert_cert()のニーズを満たすことができなかったときに戻ります。ハンドシェイクを続けます。この場合、wolfssl_get_error()への呼び出しはSSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEのいずれかを生成します。通話プロセスは、基礎となるI / Oが準備ができて、wolfsslがオフになっているところを拾うときに、wolfssl_connect_cert()への呼び出しを繰り返す必要があります。ノンブロッキングソケットを使用する場合は、何も実行する必要がありますが、select()を使用して必要な条件を確認できます。基礎となる入出力がブロックされている場合、wolfssl_connect_cert()はピアの証明書チェーンが受信されたらのみ返されます。
  4018. \return SSL_SUCCESS 成功すると。
  4019. \return SSL_FAILURE SSLセッションパラメータがNULLの場合、返されます。
  4020. \return SSL_FATAL_ERROR エラーが発生した場合は返されます。より詳細なエラーコードを取得するには、wolfssl_get_error()を呼び出します。
  4021. _Example_
  4022. \code
  4023. int ret = 0;
  4024. int err = 0;
  4025. WOLFSSL* ssl;
  4026. char buffer[80];
  4027. ...
  4028. ret = wolfSSL_connect_cert(ssl);
  4029. if (ret != SSL_SUCCESS) {
  4030. err = wolfSSL_get_error(ssl, ret);
  4031. printf(“error = %d, %s\n”, err, wolfSSL_ERR_error_string(err, buffer));
  4032. }
  4033. \endcode
  4034. \sa wolfSSL_get_error
  4035. \sa wolfSSL_connect
  4036. \sa wolfSSL_accept
  4037. */
  4038. int wolfSSL_connect_cert(WOLFSSL* ssl);
  4039. /*!
  4040. \ingroup openSSL
  4041. \brief WOLFSSL_D2I_PKCS12_BIO(D2I_PKCS12_BIO)は、WOLFSSL_BIOから構造WC_PKCS12へのPKCS12情報にコピーされます。この情報は、オプションのMAC情報を保持するための構造とともにコンテンツに関する情報のリストとして構造内に分割されています。構造体WC_PKCS12で情報がチャンク(ただし復号化されていない)に分割された後、それはその後、呼び出しによって解析および復号化され得る。
  4042. \return WC_PKCS12 WC_PKCS12構造へのポインタ。
  4043. \return Failure 関数に失敗した場合はNULLを返します。
  4044. \param bio PKCS12バッファを読み取るためのWOLFSSL_BIO構造。
  4045. _Example_
  4046. \code
  4047. WC_PKCS12* pkcs;
  4048. WOLFSSL_BIO* bio;
  4049. WOLFSSL_X509* cert;
  4050. WOLFSSL_EVP_PKEY* pkey;
  4051. STACK_OF(X509) certs;
  4052. //bio loads in PKCS12 file
  4053. wolfSSL_d2i_PKCS12_bio(bio, &pkcs);
  4054. wolfSSL_PKCS12_parse(pkcs, “a password”, &pkey, &cert, &certs)
  4055. wc_PKCS12_free(pkcs)
  4056. //use cert, pkey, and optionally certs stack
  4057. \endcode
  4058. \sa wolfSSL_PKCS12_parse
  4059. \sa wc_PKCS12_free
  4060. */
  4061. WC_PKCS12* wolfSSL_d2i_PKCS12_bio(WOLFSSL_BIO* bio,
  4062. WC_PKCS12** pkcs12);
  4063. /*!
  4064. \ingroup openSSL
  4065. \brief WOLFSSL_I2D_PKCS12_BIO(I2D_PKCS12_BIO)は、構造WC_PKCS12からWOLFSSL_BIOへの証明書情報にコピーされます。
  4066. \return 1 成功のために。
  4067. \return Failure 0。
  4068. \param bio PKCS12バッファを書き込むためのWOLFSSL_BIO構造。
  4069. _Example_
  4070. \code
  4071. WC_PKCS12 pkcs12;
  4072. FILE *f;
  4073. byte buffer[5300];
  4074. char file[] = "./test.p12";
  4075. int bytes;
  4076. WOLFSSL_BIO* bio;
  4077. pkcs12 = wc_PKCS12_new();
  4078. f = fopen(file, "rb");
  4079. bytes = (int)fread(buffer, 1, sizeof(buffer), f);
  4080. fclose(f);
  4081. //convert the DER file into an internal structure
  4082. wc_d2i_PKCS12(buffer, bytes, pkcs12);
  4083. bio = wolfSSL_BIO_new(wolfSSL_BIO_s_mem());
  4084. //convert PKCS12 structure into bio
  4085. wolfSSL_i2d_PKCS12_bio(bio, pkcs12);
  4086. wc_PKCS12_free(pkcs)
  4087. //use bio
  4088. \endcode
  4089. \sa wolfSSL_PKCS12_parse
  4090. \sa wc_PKCS12_free
  4091. */
  4092. WC_PKCS12* wolfSSL_i2d_PKCS12_bio(WOLFSSL_BIO* bio,
  4093. WC_PKCS12* pkcs12);
  4094. /*!
  4095. \ingroup openSSL
  4096. \brief pkcs12は、configureコマンドへの-enable-openSSLAXTRAを追加することで有効にできます。それは復号化のためにトリプルDESとRC4を使うことができるので、OpenSSlextra(--enable-des3 -enable-arc4)を有効にするときにもこれらの機能を有効にすることをお勧めします。 wolfsslは現在RC2をサポートしていませんので、RC2での復号化は現在利用できません。これは、.p12ファイルを作成するためにOpenSSLコマンドラインで使用されるデフォルトの暗号化方式では注目すかもしれません。 WOLFSSL_PKCS12_PARSE(PKCS12_PARSE)。この関数が最初に行っているのは、存在する場合はMacが正しいチェックです。 MACが失敗した場合、関数は返され、保存されているコンテンツ情報のいずれかを復号化しようとしません。この関数は、バッグタイプを探している各コンテンツ情報を介して解析します。バッグタイプがわかっている場合は、必要に応じて復号化され、構築されている証明書のリストに格納されているか、見つかったキーとして保存されます。すべてのバッグを介して解析した後、見つかったキーは、一致するペアが見つかるまで証明書リストと比較されます。この一致するペアはキーと証明書として返され、オプションで見つかった証明書リストはstack_of証明書として返されます。瞬間、CRL、秘密または安全なバッグがスキップされ、解析されません。デバッグプリントアウトを見ることで、これらまたは他の「不明」バッグがスキップされているかどうかがわかります。フレンドリー名などの追加の属性は、PKCS12ファイルを解析するときにスキップされます。
  4097. \return SSL_SUCCESS PKCS12の解析に成功しました。
  4098. \return SSL_FAILURE エラーケースに遭遇した場合
  4099. \param pkcs12 wc_pkcs12解析する構造
  4100. \param paswd PKCS12を復号化するためのパスワード。
  4101. \param pkey PKCS12からデコードされた秘密鍵を保持するための構造。
  4102. \param cert PKCS12から復号された証明書を保持する構造
  4103. _Example_
  4104. \code
  4105. WC_PKCS12* pkcs;
  4106. WOLFSSL_BIO* bio;
  4107. WOLFSSL_X509* cert;
  4108. WOLFSSL_EVP_PKEY* pkey;
  4109. STACK_OF(X509) certs;
  4110. //bio loads in PKCS12 file
  4111. wolfSSL_d2i_PKCS12_bio(bio, &pkcs);
  4112. wolfSSL_PKCS12_parse(pkcs, “a password”, &pkey, &cert, &certs)
  4113. wc_PKCS12_free(pkcs)
  4114. //use cert, pkey, and optionally certs stack
  4115. \endcode
  4116. \sa wolfSSL_d2i_PKCS12_bio
  4117. \sa wc_PKCS12_free
  4118. */
  4119. int wolfSSL_PKCS12_parse(WC_PKCS12* pkcs12, const char* psw,
  4120. WOLFSSL_EVP_PKEY** pkey, WOLFSSL_X509** cert, WOLF_STACK_OF(WOLFSSL_X509)** ca);
  4121. /*!
  4122. \ingroup CertsKeys
  4123. \brief サーバーDIFFIE-HELLMANエフェメラルパラメータ設定。この関数は、サーバーがDHEを使用する暗号スイートをネゴシエートしている場合に使用するグループパラメータを設定します。
  4124. \return SSL_SUCCESS 成功すると。
  4125. \return MEMORY_ERROR メモリエラーが発生した場合に返されます。
  4126. \return SIDE_ERROR この関数がSSLサーバではなくSSLクライアントで呼び出されると返されます。
  4127. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  4128. \param p Diffie-Hellman素数パラメータ。
  4129. \param pSz pのサイズ。
  4130. \param g Diffie-Hellman "Generator"パラメータ。
  4131. _Example_
  4132. \code
  4133. WOLFSSL* ssl;
  4134. static unsigned char p[] = {...};
  4135. static unsigned char g[] = {...};
  4136. ...
  4137. wolfSSL_SetTmpDH(ssl, p, sizeof(p), g, sizeof(g));
  4138. \endcode
  4139. \sa SSL_accept
  4140. */
  4141. int wolfSSL_SetTmpDH(WOLFSSL* ssl, const unsigned char* p, int pSz,
  4142. const unsigned char* g, int gSz);
  4143. /*!
  4144. \ingroup CertsKeys
  4145. \brief 関数はwolfssl_settmph_buffer_wrapperを呼び出します。これはDiffie-Hellmanパラメータのラッパーです。
  4146. \return SSL_SUCCESS 実行に成功した場合。
  4147. \return SSL_BAD_FILETYPE ファイルの種類がpemではなく、asn.1ではない場合WC_DHParamSLOADが正常に戻っていない場合は、も返されます。
  4148. \return SSL_NO_PEM_HEADER PEMヘッダーがない場合はPemToderから返します。
  4149. \return SSL_BAD_FILE PemToderにファイルエラーがある場合は返されます。
  4150. \return SSL_FATAL_ERROR コピーエラーが発生した場合はPemToderから返されました。
  4151. \return MEMORY_E - メモリ割り当てエラーが発生した場合
  4152. \return BAD_FUNC_ARG wolfssl構造体がnullの場合、またはそうでない場合はサブルーチンに渡された場合に返されます。
  4153. \return DH_KEY_SIZE_E wolfssl_settmph()またはwolfssl_ctx_settmph()のキーサイズエラーがある場合に返されます。
  4154. \return SIDE_ERROR wolfssl_settmphのサーバー側ではない場合は返されます。
  4155. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  4156. \param buf wolfssl_settmph_file_wrapperから渡された割り当てバッファー。
  4157. \param sz ファイルのサイズ(wolfssl_settmph_file_wrapper内のfname)を保持するロングint。
  4158. _Example_
  4159. \code
  4160. Static int wolfSSL_SetTmpDH_file_wrapper(WOLFSSL_CTX* ctx, WOLFSSL* ssl,
  4161. Const char* fname, int format);
  4162. long sz = 0;
  4163. byte* myBuffer = staticBuffer[FILE_BUFFER_SIZE];
  4164. if(ssl)
  4165. ret = wolfSSL_SetTmpDH_buffer(ssl, myBuffer, sz, format);
  4166. \endcode
  4167. \sa wolfSSL_SetTmpDH_buffer_wrapper
  4168. \sa wc_DhParamsLoad
  4169. \sa wolfSSL_SetTmpDH
  4170. \sa PemToDer
  4171. \sa wolfSSL_CTX_SetTmpDH
  4172. \sa wolfSSL_CTX_SetTmpDH_file
  4173. */
  4174. int wolfSSL_SetTmpDH_buffer(WOLFSSL* ssl, const unsigned char* b, long sz,
  4175. int format);
  4176. /*!
  4177. \ingroup CertsKeys
  4178. \brief この関数は、wolfssl_settmph_file_wrapperを呼び出してサーバdiffie-hellmanパラメータを設定します。
  4179. \return SSL_SUCCESS この機能の正常な完了とそのサブルーチンの完了に戻りました。
  4180. \return MEMORY_E この関数またはサブルーチンにメモリ割り当てが失敗した場合に返されます。
  4181. \return SIDE_ERROR WolfSSL構造体にあるオプション構造のサイドメンバーがサーバー側ではない場合。
  4182. \return SSL_BAD_FILETYPE 証明書が一連のチェックに失敗した場合は返します。
  4183. \return DH_KEY_SIZE_E DHパラメーターのキーサイズがWolfSSL構造体のMinkKeyszメンバーの値より小さい場合に返されます。
  4184. \return DH_KEY_SIZE_E DHパラメータのキーサイズがwolfssl構造体のMAXDHKEYSZメンバーの値よりも大きい場合に返されます。
  4185. \return BAD_FUNC_ARG wolfssl構造など、引数値がnullの場合に返します。
  4186. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  4187. \param fname 証明書を保持している定数の文字ポインタ。
  4188. _Example_
  4189. \code
  4190. WOLFSSL* ssl = wolfSSL_new(ctx);
  4191. const char* dhParam;
  4192. AssertIntNE(SSL_SUCCESS,
  4193. wolfSSL_SetTmpDH_file(ssl, dhParam, SSL_FILETYPE_PEM));
  4194. \endcode
  4195. \sa wolfSSL_CTX_SetTmpDH_file
  4196. \sa wolfSSL_SetTmpDH_file_wrapper
  4197. \sa wolfSSL_SetTmpDH_buffer
  4198. \sa wolfSSL_CTX_SetTmpDH_buffer
  4199. \sa wolfSSL_SetTmpDH_buffer_wrapper
  4200. \sa wolfSSL_SetTmpDH
  4201. \sa wolfSSL_CTX_SetTmpDH
  4202. */
  4203. int wolfSSL_SetTmpDH_file(WOLFSSL* ssl, const char* f, int format);
  4204. /*!
  4205. \ingroup CertsKeys
  4206. \brief サーバーCTX Diffie-Hellmanのパラメータを設定します。
  4207. \return SSL_SUCCESS 関数とすべてのサブルーチンがエラーなしで戻った場合に返されます。
  4208. \return BAD_FUNC_ARG CTX、P、またはGパラメーターがNULLの場合に返されます。
  4209. \return DH_KEY_SIZE_E DHパラメータのキーサイズがwolfssl_ctx構造体のMindHKEYSZメンバーの値より小さい場合に返されます。
  4210. \return DH_KEY_SIZE_E DHパラメータのキーサイズがwolfssl_ctx構造体のMaxDhkeySZメンバーの値よりも大きい場合に返されます。
  4211. \return MEMORY_E この関数またはサブルーチンにメモリの割り当てが失敗した場合は返されます。
  4212. \param ctx wolfssl_ctx_new()を使用して作成されたwolfssl_ctx構造へのポインタ。
  4213. \param p ServerDH_P構造体のバッファメンバーにロードされた定数の符号なし文字ポインタ。
  4214. \param pSz pのサイズを表すint型は、max_dh_sizeに初期化されます。
  4215. \param g ServerDh_g構造体のバッファメンバーにロードされた定数の符号なし文字ポインタ。
  4216. \code
  4217. WOLFSSL_CTX* ctx = WOLFSSL_CTX_new( protocol );
  4218. byte* p;
  4219. byte* g;
  4220. word32 pSz = (word32)sizeof(p)/sizeof(byte);
  4221. word32 gSz = (word32)sizeof(g)/sizeof(byte);
  4222. int ret = wolfSSL_CTX_SetTmpDH(ctx, p, pSz, g, gSz);
  4223. if(ret != SSL_SUCCESS){
  4224. // Failure case
  4225. }
  4226. \endcode
  4227. \sa wolfSSL_SetTmpDH
  4228. \sa wc_DhParamsLoad
  4229. */
  4230. int wolfSSL_CTX_SetTmpDH(WOLFSSL_CTX* ctx, const unsigned char* p,
  4231. int pSz, const unsigned char* g, int gSz);
  4232. /*!
  4233. \ingroup CertsKeys
  4234. \brief wolfssl_settmph_buffer_wrapperを呼び出すラッパー関数
  4235. \return 0 実行が成功するために返されました。
  4236. \return BAD_FUNC_ARG CTXパラメータまたはBUFパラメータがNULLの場合に返されます。
  4237. \return MEMORY_E メモリ割り当てエラーがある場合
  4238. \return SSL_BAD_FILETYPE フォーマットが正しくない場合は返されます。
  4239. \param ctx wolfssl_ctx_new()を使用して作成されたWolfSSL構造へのポインタ。
  4240. \param buf バッファとして割り当てられ、wolfssl_settmpdh_buffer_wrapperに渡された定数の符号なし文字型へのポインタ。
  4241. \param sz wolfssl_settmph_file_wrapper()のFNAMEパラメータから派生した長い整数型。
  4242. _Example_
  4243. \code
  4244. static int wolfSSL_SetTmpDH_file_wrapper(WOLFSSL_CTX* ctx, WOLFSSL* ssl,
  4245. Const char* fname, int format);
  4246. #ifdef WOLFSSL_SMALL_STACK
  4247. byte staticBuffer[1]; // force heap usage
  4248. #else
  4249. byte* staticBuffer;
  4250. long sz = 0;
  4251. if(ssl){
  4252. ret = wolfSSL_SetTmpDH_buffer(ssl, myBuffer, sz, format);
  4253. } else {
  4254. ret = wolfSSL_CTX_SetTmpDH_buffer(ctx, myBuffer, sz, format);
  4255. }
  4256. \endcode
  4257. \sa wolfSSL_SetTmpDH_buffer_wrapper
  4258. \sa wolfSSL_SetTMpDH_buffer
  4259. \sa wolfSSL_SetTmpDH_file_wrapper
  4260. \sa wolfSSL_CTX_SetTmpDH_file
  4261. */
  4262. int wolfSSL_CTX_SetTmpDH_buffer(WOLFSSL_CTX* ctx, const unsigned char* b,
  4263. long sz, int format);
  4264. /*!
  4265. \ingroup CertsKeys
  4266. \brief この関数は、wolfssl_settmph_file_wrapperを呼び出してサーバーDiffie-Hellmanパラメータを設定します。
  4267. \return SSL_SUCCESS wolfssl_settmph_file_wrapperまたはそのサブルーチンのいずれかが正常に戻った場合に返されます。
  4268. \return MEMORY_E 動的メモリの割り当てがサブルーチンで失敗した場合に返されます。
  4269. \return BAD_FUNC_ARG CTXまたはFNAMEパラメータがNULLまたはサブルーチンがNULL引数に渡された場合に返されます。
  4270. \return SSL_BAD_FILE 証明書ファイルが開くことができない場合、またはファイルの一連のチェックがwolfssl_settmpdh_file_wrapperから失敗した場合に返されます。
  4271. \return SSL_BAD_FILETYPE フォーマットがwolfssl_settmph_buffer_wrapper()からPEMまたはASN.1ではない場合に返されます。
  4272. \return DH_KEY_SIZE_E DHパラメータのキーサイズがwolfssl_ctx構造体のMindHKEYSZメンバーの値より小さい場合に返されます。
  4273. \return DH_KEY_SIZE_E DHパラメータのキーサイズがwolfssl_ctx構造体のMaxDhkeySZメンバーの値よりも大きい場合に返されます。
  4274. \return SIDE_ERROR wolfssl_settmph()で返されたサイドがサーバー終了ではない場合。
  4275. \return SSL_NO_PEM_HEADER PEMヘッダーがない場合はPemToderから返されます。
  4276. \return SSL_FATAL_ERROR メモリコピーの失敗がある場合はPemToderから返されます。
  4277. \param ctx wolfssl_ctx_new()を使用して作成されたwolfssl_ctx構造へのポインタ。
  4278. \param fname 証明書ファイルへの定数文字ポインタ。
  4279. _Example_
  4280. \code
  4281. #define dhParam “certs/dh2048.pem”
  4282. #DEFINE aSSERTiNTne(x, y) AssertInt(x, y, !=, ==)
  4283. WOLFSSL_CTX* ctx;
  4284. AssertNotNull(ctx = wolfSSL_CTX_new(wolfSSLv23_client_method()))
  4285. AssertIntNE(SSL_SUCCESS, wolfSSL_CTX_SetTmpDH_file(NULL, dhParam,
  4286. SSL_FILETYPE_PEM));
  4287. \endcode
  4288. \sa wolfSSL_SetTmpDH_buffer_wrapper
  4289. \sa wolfSSL_SetTmpDH
  4290. \sa wolfSSL_CTX_SetTmpDH
  4291. \sa wolfSSL_SetTmpDH_buffer
  4292. \sa wolfSSL_CTX_SetTmpDH_buffer
  4293. \sa wolfSSL_SetTmpDH_file_wrapper
  4294. \sa AllocDer
  4295. \sa PemToDer
  4296. */
  4297. int wolfSSL_CTX_SetTmpDH_file(WOLFSSL_CTX* ctx, const char* f,
  4298. int format);
  4299. /*!
  4300. \ingroup CertsKeys
  4301. \brief この関数は、wolfssl_ctx構造体のminkkeyszメンバーにアクセスして、Diffie Hellmanキーサイズの最小サイズ(ビット単位)を設定します。
  4302. \return SSL_SUCCESS 関数が正常に完了した場合に返されます。
  4303. \return BAD_FUNC_ARG wolfssl_ctx構造体がnullの場合、またはキーz_BITSが16,000を超えるか、または8によって割り切れない場合に返されます。
  4304. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  4305. _Example_
  4306. \code
  4307. public static int CTX_SetMinDhKey_Sz(IntPtr ctx, short minDhKey){
  4308. return wolfSSL_CTX_SetMinDhKey_Sz(local_ctx, minDhKeyBits);
  4309. \endcode
  4310. \sa wolfSSL_SetMinDhKey_Sz
  4311. \sa wolfSSL_CTX_SetMaxDhKey_Sz
  4312. \sa wolfSSL_SetMaxDhKey_Sz
  4313. \sa wolfSSL_GetDhKey_Sz
  4314. \sa wolfSSL_CTX_SetTMpDH_file
  4315. */
  4316. int wolfSSL_CTX_SetMinDhKey_Sz(WOLFSSL_CTX* ctx, word16);
  4317. /*!
  4318. \ingroup CertsKeys
  4319. \brief WolfSSL構造のDiffie-Hellmanキーの最小サイズ(ビット単位)を設定します。
  4320. \return SSL_SUCCESS 最小サイズは正常に設定されました。
  4321. \return BAD_FUNC_ARG wolfssl構造はNULL、またはKeysz_BITSが16,000を超えるか、または8によって割り切れない場合
  4322. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  4323. _Example_
  4324. \code
  4325. WOLFSSL* ssl = wolfSSL_new(ctx);
  4326. word16 keySz_bits;
  4327. ...
  4328. if(wolfSSL_SetMinDhKey_Sz(ssl, keySz_bits) != SSL_SUCCESS){
  4329. // Failed to set.
  4330. }
  4331. \endcode
  4332. \sa wolfSSL_CTX_SetMinDhKey_Sz
  4333. \sa wolfSSL_GetDhKey_Sz
  4334. */
  4335. int wolfSSL_SetMinDhKey_Sz(WOLFSSL* ssl, word16 keySz_bits);
  4336. /*!
  4337. \ingroup CertsKeys
  4338. \brief この関数は、wolfssl_ctx構造体のmaxdhkeyszメンバーにアクセスして、Diffie Hellmanキーサイズの最大サイズ(ビット単位)を設定します。
  4339. \return SSL_SUCCESS 関数が正常に完了した場合に返されます。
  4340. \return BAD_FUNC_ARG wolfssl_ctx構造体がnullの場合、またはキーz_BITSが16,000を超えるか、または8によって割り切れない場合に返されます。
  4341. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  4342. _Example_
  4343. \code
  4344. public static int CTX_SetMaxDhKey_Sz(IntPtr ctx, short maxDhKey){
  4345. return wolfSSL_CTX_SetMaxDhKey_Sz(local_ctx, keySz_bits);
  4346. \endcode
  4347. \sa wolfSSL_SetMinDhKey_Sz
  4348. \sa wolfSSL_CTX_SetMinDhKey_Sz
  4349. \sa wolfSSL_SetMaxDhKey_Sz
  4350. \sa wolfSSL_GetDhKey_Sz
  4351. \sa wolfSSL_CTX_SetTMpDH_file
  4352. */
  4353. int wolfSSL_CTX_SetMaxDhKey_Sz(WOLFSSL_CTX* ctx, word16 keySz_bits);
  4354. /*!
  4355. \ingroup CertsKeys
  4356. \brief WolfSSL構造のDiffie-Hellmanキーの最大サイズ(ビット単位)を設定します。
  4357. \return SSL_SUCCESS 最大サイズは正常に設定されました。
  4358. \return BAD_FUNC_ARG WOLFSSL構造はNULLまたはKEYSZパラメータは許容サイズより大きかったか、または8によって割り切れませんでした。
  4359. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  4360. _Example_
  4361. \code
  4362. WOLFSSL* ssl = wolfSSL_new(ctx);
  4363. word16 keySz;
  4364. ...
  4365. if(wolfSSL_SetMaxDhKey(ssl, keySz) != SSL_SUCCESS){
  4366. // Failed to set.
  4367. }
  4368. \endcode
  4369. \sa wolfSSL_CTX_SetMaxDhKey_Sz
  4370. \sa wolfSSL_GetDhKey_Sz
  4371. */
  4372. int wolfSSL_SetMaxDhKey_Sz(WOLFSSL* ssl, word16 keySz_bits);
  4373. /*!
  4374. \ingroup CertsKeys
  4375. \brief オプション構造のメンバーであるDHKEYSZ(ビット内)の値を返します。この値は、Diffie-Hellmanキーサイズをバイト単位で表します。
  4376. \return dhKeySz サイズを表す整数値であるssl-> options.dhkeyszで保持されている値を返します。
  4377. \return BAD_FUNC_ARG wolfssl構造体がNULLの場合に返します。
  4378. _Example_
  4379. \code
  4380. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
  4381. WOLFSSL* ssl = wolfSSL_new(ctx);
  4382. int dhKeySz;
  4383. ...
  4384. dhKeySz = wolfSSL_GetDhKey_Sz(ssl);
  4385. if(dhKeySz == BAD_FUNC_ARG || dhKeySz <= 0){
  4386. // Failure case
  4387. } else {
  4388. // dhKeySz holds the size of the key.
  4389. }
  4390. \endcode
  4391. \sa wolfSSL_SetMinDhKey_sz
  4392. \sa wolfSSL_CTX_SetMinDhKey_Sz
  4393. \sa wolfSSL_CTX_SetTmpDH
  4394. \sa wolfSSL_SetTmpDH
  4395. \sa wolfSSL_CTX_SetTmpDH_file
  4396. */
  4397. int wolfSSL_GetDhKey_Sz(WOLFSSL*);
  4398. /*!
  4399. \ingroup CertsKeys
  4400. \brief wolfssl_ctx構造体とwolfssl_cert_manager構造の両方で最小RSAキーサイズを設定します。
  4401. \return SSL_SUCCESS 機能の実行に成功したことに戻ります。
  4402. \return BAD_FUNC_ARG CTX構造がNULLの場合、またはKEYSZがゼロより小さいか、または8によって割り切れない場合は返されます。
  4403. \param ctx wolfssl_ctx_new()を使用して作成されたwolfssl_ctx構造へのポインタ。
  4404. _Example_
  4405. \code
  4406. WOLFSSL_CTX* ctx = SSL_CTX_new(method);
  4407. (void)minDhKeyBits;
  4408. ourCert = myoptarg;
  4409. minDhKeyBits = atoi(myoptarg);
  4410. if(wolfSSL_CTX_SetMinRsaKey_Sz(ctx, minRsaKeyBits) != SSL_SUCCESS){
  4411. \endcode
  4412. \sa wolfSSL_SetMinRsaKey_Sz
  4413. */
  4414. int wolfSSL_CTX_SetMinRsaKey_Sz(WOLFSSL_CTX* ctx, short keySz);
  4415. /*!
  4416. \ingroup CertsKeys
  4417. \brief WolfSSL構造にあるRSAのためのビットで最小許容キーサイズを設定します。
  4418. \return SSL_SUCCESS 最小値が正常に設定されました。
  4419. \return BAD_FUNC_ARG SSL構造がNULLの場合、またはKSYSZがゼロより小さい場合、または8によって割り切れない場合は返されます。
  4420. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  4421. _Example_
  4422. \code
  4423. WOLFSSL* ssl = wolfSSL_new(ctx);
  4424. short keySz;
  4425. int isSet = wolfSSL_SetMinRsaKey_Sz(ssl, keySz);
  4426. if(isSet != SSL_SUCCESS){
  4427. Failed to set.
  4428. }
  4429. \endcode
  4430. \sa wolfSSL_CTX_SetMinRsaKey_Sz
  4431. */
  4432. int wolfSSL_SetMinRsaKey_Sz(WOLFSSL* ssl, short keySz);
  4433. /*!
  4434. \ingroup CertsKeys
  4435. \brief wolf_ctx構造体とwolfssl_cert_manager構造体のECCキーの最小サイズをビット単位で設定します。
  4436. \return SSL_SUCCESS 実行が成功したために返され、MineCkeyszメンバーが設定されます。
  4437. \return BAD_FUNC_ARG wolfssl_ctx構造体がnullの場合、またはキーが負の場合、または8によって割り切れない場合は返されます。
  4438. \param ctx wolfssl_ctx_new()を使用して作成されたwolfssl_ctx構造へのポインタ。
  4439. _Example_
  4440. \code
  4441. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
  4442. short keySz; // minimum key size
  4443. if(wolfSSL_CTX_SetMinEccKey(ctx, keySz) != SSL_SUCCESS){
  4444. // Failed to set min key size
  4445. }
  4446. \endcode
  4447. \sa wolfSSL_SetMinEccKey_Sz
  4448. */
  4449. int wolfSSL_CTX_SetMinEccKey_Sz(WOLFSSL_CTX* ssl, short keySz);
  4450. /*!
  4451. \ingroup CertsKeys
  4452. \brief オプション構造のMineCckeyszメンバーの値を設定します。オプション構造体は、WolfSSL構造のメンバーであり、SSLパラメータを介してアクセスされます。
  4453. \return SSL_SUCCESS 関数がオプション構造のMineCckeyszメンバーを正常に設定した場合。
  4454. \return BAD_FUNC_ARG wolfssl_ctx構造体がnullの場合、またはキーサイズ(keysz)が0(ゼロ)未満の場合、または8で割り切れない場合。
  4455. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  4456. _Example_
  4457. \code
  4458. WOLFSSL* ssl = wolfSSL_new(ctx); // New session
  4459. short keySz = 999; // should be set to min key size allowable
  4460. ...
  4461. if(wolfSSL_SetMinEccKey_Sz(ssl, keySz) != SSL_SUCCESS){
  4462. // Failure case.
  4463. }
  4464. \endcode
  4465. \sa wolfSSL_CTX_SetMinEccKey_Sz
  4466. \sa wolfSSL_CTX_SetMinRsaKey_Sz
  4467. \sa wolfSSL_SetMinRsaKey_Sz
  4468. */
  4469. int wolfSSL_SetMinEccKey_Sz(WOLFSSL* ssl, short keySz);
  4470. /*!
  4471. \ingroup CertsKeys
  4472. \brief この関数は、eap_tlsとeap-ttlsによって、マスターシークレットからキーイングマテリアルを導出します。
  4473. \return BUFFER_E バッファの実際のサイズが許容最大サイズを超える場合は返されます。
  4474. \return MEMORY_E メモリ割り当てにエラーがある場合は返されます。
  4475. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  4476. \param msk p_hash関数の結果を保持するvoidポインタ変数。
  4477. \param len MSK変数の長さを表す符号なし整数。
  4478. _Example_
  4479. \code
  4480. WOLFSSL* ssl = wolfSSL_new(ctx);;
  4481. void* msk;
  4482. unsigned int len;
  4483. const char* label;
  4484. return wolfSSL_make_eap_keys(ssl, msk, len, label);
  4485. \endcode
  4486. \sa wc_PRF
  4487. \sa wc_HmacFinal
  4488. \sa wc_HmacUpdate
  4489. */
  4490. int wolfSSL_make_eap_keys(WOLFSSL* ssl, void* key, unsigned int len,
  4491. const char* label);
  4492. /*!
  4493. \ingroup IO
  4494. \brief Writev Semanticsをシミュレートしますが、SSL_Write()の動作のために実際にはブロックしないため、フロント追加が小さくなる可能性があるためWritevを使いやすいソフトウェアに移植する。
  4495. \return >0 成功時に書かれたバイト数。
  4496. \return 0 失敗したときに返されます。特定のエラーコードについてwolfssl_get_error()を呼び出します。
  4497. \return MEMORY_ERROR メモリエラーが発生した場合に返されます。
  4498. \return SSL_FATAL_ERROR エラーが発生したとき、または非ブロッキングソケットを使用するときには、SSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEエラーが受信され、再度WOLFSSL_WRITE()を呼び出す必要がある場合は、障害が発生します。特定のエラーコードを取得するには、wolfssl_get_error()を使用してください。
  4499. \param ssl wolfssl_new()で作成されたSSLセッションへのポインタ。
  4500. \param iov 書き込みへのI / Oベクトルの配列
  4501. _Example_
  4502. \code
  4503. WOLFSSL* ssl = 0;
  4504. char *bufA = “hello\n”;
  4505. char *bufB = “hello world\n”;
  4506. int iovcnt;
  4507. struct iovec iov[2];
  4508. iov[0].iov_base = buffA;
  4509. iov[0].iov_len = strlen(buffA);
  4510. iov[1].iov_base = buffB;
  4511. iov[1].iov_len = strlen(buffB);
  4512. iovcnt = 2;
  4513. ...
  4514. ret = wolfSSL_writev(ssl, iov, iovcnt);
  4515. // wrote “ret” bytes, or error if <= 0.
  4516. \endcode
  4517. \sa wolfSSL_write
  4518. */
  4519. int wolfSSL_writev(WOLFSSL* ssl, const struct iovec* iov,
  4520. int iovcnt);
  4521. /*!
  4522. \ingroup Setup
  4523. \brief この関数はCA署名者リストをアンロードし、署名者全体のテーブルを解放します。
  4524. \return SSL_SUCCESS 機能の実行に成功したことに戻ります。
  4525. \return BAD_FUNC_ARG wolfssl_ctx構造体がnullの場合、または他の方法では未解決の引数値がサブルーチンに渡された場合に返されます。
  4526. \return BAD_MUTEX_E ミューテックスエラーが発生した場合は返されます。lockmutex()は0を返しませんでした。
  4527. _Example_
  4528. \code
  4529. WOLFSSL_METHOD method = wolfTLSv1_2_client_method();
  4530. WOLFSSL_CTX* ctx = WOLFSSL_CTX_new(method);
  4531. if(!wolfSSL_CTX_UnloadCAs(ctx)){
  4532. // The function did not unload CAs
  4533. }
  4534. \endcode
  4535. \sa wolfSSL_CertManagerUnloadCAs
  4536. \sa LockMutex
  4537. \sa FreeSignerTable
  4538. \sa UnlockMutex
  4539. */
  4540. int wolfSSL_CTX_UnloadCAs(WOLFSSL_CTX*);
  4541. /*!
  4542. \ingroup Setup
  4543. \brief この関数は、以前にロードされたすべての信頼できるピア証明書をアンロードするために使用されます。マクロwolfssl_trust_peer_certを定義することで機能が有効になっています。
  4544. \return SSL_SUCCESS 成功すると。
  4545. \return BAD_FUNC_ARG CTXがNULLの場合は返されます。
  4546. \return SSL_BAD_FILE ファイルが存在しない場合は返されます。読み込め、または破損していません。
  4547. \return MEMORY_E メモリ不足状態が発生した場合に返されます。
  4548. _Example_
  4549. \code
  4550. int ret = 0;
  4551. WOLFSSL_CTX* ctx;
  4552. ...
  4553. ret = wolfSSL_CTX_Unload_trust_peers(ctx);
  4554. if (ret != SSL_SUCCESS) {
  4555. // error unloading trusted peer certs
  4556. }
  4557. ...
  4558. \endcode
  4559. \sa wolfSSL_CTX_trust_peer_buffer
  4560. \sa wolfSSL_CTX_trust_peer_cert
  4561. */
  4562. int wolfSSL_CTX_Unload_trust_peers(WOLFSSL_CTX*);
  4563. /*!
  4564. \ingroup Setup
  4565. \brief この関数は、TLS / SSLハンドシェイクを実行するときにピアを検証するために使用する証明書をロードします。ハンドシェイク中に送信されたピア証明書は、使用可能なときにスキッドを使用することによって比較されます。これら2つのことが一致しない場合は、ロードされたCASが使用されます。ファイルの代わりにバッファーの場合は、wolfssl_ctx_trust_peer_certと同じ機能です。特徴はマクロwolfssl_trust_peer_certを定義することによって有効になっています適切な使用法の例を参照してください。
  4566. \return SSL_SUCCESS 成功すると
  4567. \return SSL_FAILURE CTXがNULLの場合、または両方のファイルと種類が無効な場合は返されます。
  4568. \return SSL_BAD_FILETYPE ファイルが間違った形式である場合は返されます。
  4569. \return SSL_BAD_FILE ファイルが存在しない場合は返されます。読み込め、または破損していません。
  4570. \return MEMORY_E メモリ不足状態が発生した場合に返されます。
  4571. \return ASN_INPUT_E base16デコードがファイルに対して失敗した場合に返されます。
  4572. \param ctx wolfssl_ctx_new()で作成されたSSLコンテキストへのポインタ。
  4573. \param buffer 証明書を含むバッファへのポインタ。
  4574. \param sz バッファ入力の長さ。
  4575. _Example_
  4576. \code
  4577. int ret = 0;
  4578. WOLFSSL_CTX* ctx;
  4579. ...
  4580. ret = wolfSSL_CTX_trust_peer_buffer(ctx, bufferPtr, bufferSz,
  4581. SSL_FILETYPE_PEM);
  4582. if (ret != SSL_SUCCESS) {
  4583. // error loading trusted peer cert
  4584. }
  4585. ...
  4586. \endcode
  4587. \sa wolfSSL_CTX_load_verify_buffer
  4588. \sa wolfSSL_CTX_use_certificate_file
  4589. \sa wolfSSL_CTX_use_PrivateKey_file
  4590. \sa wolfSSL_CTX_use_certificate_chain_file
  4591. \sa wolfSSL_CTX_trust_peer_cert
  4592. \sa wolfSSL_CTX_Unload_trust_peers
  4593. \sa wolfSSL_use_certificate_file
  4594. \sa wolfSSL_use_PrivateKey_file
  4595. \sa wolfSSL_use_certificate_chain_file
  4596. */
  4597. int wolfSSL_CTX_trust_peer_buffer(WOLFSSL_CTX* ctx, const unsigned char* in,
  4598. long sz, int format);
  4599. /*!
  4600. \ingroup CertsKeys
  4601. \brief この関数はCA証明書バッファをWolfSSLコンテキストにロードします。バッファ以外のバージョンのように動作し、ファイルの代わりに入力としてバッファと呼ばれる機能が異なるだけです。バッファはサイズSZの引数によって提供されます。形式バッファのフォーマットタイプを指定します。SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEM。フォーマットがPEM内にある限り、バッファあたり複数のCA証明書をロードすることができます。適切な使用法の例をご覧ください。
  4602. \return SSL_SUCCESS 成功すると
  4603. \return SSL_BAD_FILETYPE ファイルが間違った形式である場合は返されます。
  4604. \return SSL_BAD_FILE ファイルが存在しない場合は返されます。読み込め、または破損していません。
  4605. \return MEMORY_E メモリ不足状態が発生した場合に返されます。
  4606. \return ASN_INPUT_E base16デコードがファイルに対して失敗した場合に返されます。
  4607. \return BUFFER_E チェーンバッファが受信バッファよりも大きい場合に返されます。
  4608. \param ctx wolfssl_ctx_new()で作成されたSSLコンテキストへのポインタ。
  4609. \param in CA証明書バッファへのポインタ。
  4610. \param sz 入力CA証明書バッファのサイズ、IN。
  4611. _Example_
  4612. \code
  4613. int ret = 0;
  4614. int sz = 0;
  4615. WOLFSSL_CTX* ctx;
  4616. byte certBuff[...];
  4617. ...
  4618. ret = wolfSSL_CTX_load_verify_buffer(ctx, certBuff, sz, SSL_FILETYPE_PEM);
  4619. if (ret != SSL_SUCCESS) {
  4620. // error loading CA certs from buffer
  4621. }
  4622. ...
  4623. \endcode
  4624. \sa wolfSSL_CTX_load_verify_locations
  4625. \sa wolfSSL_CTX_use_certificate_buffer
  4626. \sa wolfSSL_CTX_use_PrivateKey_buffer
  4627. \sa wolfSSL_CTX_use_certificate_chain_buffer
  4628. \sa wolfSSL_use_certificate_buffer
  4629. \sa wolfSSL_use_PrivateKey_buffer
  4630. \sa wolfSSL_use_certificate_chain_buffer
  4631. */
  4632. int wolfSSL_CTX_load_verify_buffer(WOLFSSL_CTX* ctx, const unsigned char* in,
  4633. long sz, int format);
  4634. /*!
  4635. \ingroup CertsKeys
  4636. \brief この関数はCA証明書バッファをWolfSSLコンテキストにロードします。バッファ以外のバージョンのように動作し、ファイルの代わりに入力としてバッファと呼ばれる機能が異なるだけです。バッファはサイズSZの引数によって提供されます。形式バッファのフォーマットタイプを指定します。SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEM。フォーマットがPEM内にある限り、バッファあたり複数のCA証明書をロードすることができます。_EXバージョンはPR 2413に追加され、UserChainとFlagsの追加の引数をサポートします。
  4637. \return SSL_SUCCESS 成功すると
  4638. \return SSL_BAD_FILETYPE ファイルが間違った形式である場合は返されます。
  4639. \return SSL_BAD_FILE ファイルが存在しない場合は返されます。読み込め、または破損していません。
  4640. \return MEMORY_E メモリ不足状態が発生した場合に返されます。
  4641. \return ASN_INPUT_E base16デコードがファイルに対して失敗した場合に返されます。
  4642. \return BUFFER_E チェーンバッファが受信バッファよりも大きい場合に返されます。
  4643. \param ctx wolfssl_ctx_new()で作成されたSSLコンテキストへのポインタ。
  4644. \param in CA証明書バッファへのポインタ。
  4645. \param sz 入力CA証明書バッファのサイズ、IN。
  4646. \param format バッファ証明書の形式、SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEM。
  4647. \param userChain フォーマットwolfssl_filetype_asn1を使用する場合、このセットはゼロ以外のセットを示しています.Derのチェーンが表示されています。
  4648. _Example_
  4649. \code
  4650. int ret = 0;
  4651. int sz = 0;
  4652. WOLFSSL_CTX* ctx;
  4653. byte certBuff[...];
  4654. ...
  4655. // Example for force loading an expired certificate
  4656. ret = wolfSSL_CTX_load_verify_buffer_ex(ctx, certBuff, sz, SSL_FILETYPE_PEM,
  4657. 0, (WOLFSSL_LOAD_FLAG_DATE_ERR_OKAY));
  4658. if (ret != SSL_SUCCESS) {
  4659. // error loading CA certs from buffer
  4660. }
  4661. ...
  4662. \endcode
  4663. \sa wolfSSL_CTX_load_verify_buffer
  4664. \sa wolfSSL_CTX_load_verify_locations
  4665. \sa wolfSSL_CTX_use_certificate_buffer
  4666. \sa wolfSSL_CTX_use_PrivateKey_buffer
  4667. \sa wolfSSL_CTX_use_certificate_chain_buffer
  4668. \sa wolfSSL_use_certificate_buffer
  4669. \sa wolfSSL_use_PrivateKey_buffer
  4670. \sa wolfSSL_use_certificate_chain_buffer
  4671. */
  4672. int wolfSSL_CTX_load_verify_buffer_ex(WOLFSSL_CTX* ctx,
  4673. const unsigned char* in, long sz,
  4674. int format, int userChain, word32 flags);
  4675. /*!
  4676. \ingroup CertsKeys
  4677. \brief この関数は、CA証明書チェーンバッファをWolfSSLコンテキストにロードします。バッファ以外のバージョンのように動作し、ファイルの代わりに入力としてバッファと呼ばれる機能が異なるだけです。バッファはサイズSZの引数によって提供されます。形式バッファのフォーマットタイプを指定します。SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEM。フォーマットがPEM内にある限り、バッファあたり複数のCA証明書をロードすることができます。適切な使用法の例をご覧ください。
  4678. \return SSL_SUCCESS 成功すると
  4679. \return SSL_BAD_FILETYPE ファイルが間違った形式である場合は返されます。
  4680. \return SSL_BAD_FILE ファイルが存在しない場合は返されます。読み込め、または破損していません。
  4681. \return MEMORY_E メモリ不足状態が発生した場合に返されます。
  4682. \return ASN_INPUT_E base16デコードがファイルに対して失敗した場合に返されます。
  4683. \return BUFFER_E チェーンバッファが受信バッファよりも大きい場合に返されます。
  4684. \param ctx wolfssl_ctx_new()で作成されたSSLコンテキストへのポインタ。
  4685. \param in CA証明書バッファへのポインタ。
  4686. \param sz 入力CA証明書バッファのサイズ、IN。
  4687. _Example_
  4688. \code
  4689. int ret = 0;
  4690. int sz = 0;
  4691. WOLFSSL_CTX* ctx;
  4692. byte certBuff[...];
  4693. ...
  4694. ret = wolfSSL_CTX_load_verify_chain_buffer_format(ctx,
  4695. certBuff, sz, WOLFSSL_FILETYPE_ASN1);
  4696. if (ret != SSL_SUCCESS) {
  4697. // error loading CA certs from buffer
  4698. }
  4699. ...
  4700. \endcode
  4701. \sa wolfSSL_CTX_load_verify_locations
  4702. \sa wolfSSL_CTX_use_certificate_buffer
  4703. \sa wolfSSL_CTX_use_PrivateKey_buffer
  4704. \sa wolfSSL_CTX_use_certificate_chain_buffer
  4705. \sa wolfSSL_use_certificate_buffer
  4706. \sa wolfSSL_use_PrivateKey_buffer
  4707. \sa wolfSSL_use_certificate_chain_buffer
  4708. */
  4709. int wolfSSL_CTX_load_verify_chain_buffer_format(WOLFSSL_CTX* ctx,
  4710. const unsigned char* in,
  4711. long sz, int format);
  4712. /*!
  4713. \ingroup CertsKeys
  4714. \brief この関数は証明書バッファをWolfSSLコンテキストにロードします。バッファ以外のバージョンのように動作し、ファイルの代わりに入力としてバッファと呼ばれる機能が異なるだけです。バッファはサイズSZの引数によって提供されます。形式バッファのフォーマットタイプを指定します。SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEM。適切な使用法の例をご覧ください。
  4715. \return SSL_SUCCESS 成功すると
  4716. \return SSL_BAD_FILETYPE ファイルが間違った形式である場合は返されます。
  4717. \return SSL_BAD_FILE ファイルが存在しない場合は返されます。読み込め、または破損していません。
  4718. \return MEMORY_E メモリ不足状態が発生した場合に返されます。
  4719. \return ASN_INPUT_E base16デコードがファイルに対して失敗した場合に返されます。
  4720. \param ctx wolfssl_ctx_new()で作成されたSSLコンテキストへのポインタ。
  4721. \param in ロードする証明書を含む入力バッファ。
  4722. \param sz 入力バッファのサイズ。
  4723. _Example_
  4724. \code
  4725. int ret = 0;
  4726. int sz = 0;
  4727. WOLFSSL_CTX* ctx;
  4728. byte certBuff[...];
  4729. ...
  4730. ret = wolfSSL_CTX_use_certificate_buffer(ctx, certBuff, sz, SSL_FILETYPE_PEM);
  4731. if (ret != SSL_SUCCESS) {
  4732. // error loading certificate from buffer
  4733. }
  4734. ...
  4735. \endcode
  4736. \sa wolfSSL_CTX_load_verify_buffer
  4737. \sa wolfSSL_CTX_use_PrivateKey_buffer
  4738. \sa wolfSSL_CTX_use_certificate_chain_buffer
  4739. \sa wolfSSL_use_certificate_buffer
  4740. \sa wolfSSL_use_PrivateKey_buffer
  4741. \sa wolfSSL_use_certificate_chain_buffer
  4742. */
  4743. int wolfSSL_CTX_use_certificate_buffer(WOLFSSL_CTX* ctx,
  4744. const unsigned char* in, long sz,
  4745. int format);
  4746. /*!
  4747. \ingroup CertsKeys
  4748. \brief この関数は、秘密鍵バッファをSSLコンテキストにロードします。バッファ以外のバージョンのように動作し、ファイルの代わりに入力としてバッファと呼ばれる機能が異なるだけです。バッファはサイズSZの引数によって提供されます。形式バッファのフォーマットタイプを指定します。SSL_FILETYPE_ASN1OR SSL_FILETYPE_PEM。適切な使用法の例をご覧ください。
  4749. \return SSL_SUCCESS 成功すると
  4750. \return SSL_BAD_FILETYPE ファイルが間違った形式である場合は返されます。
  4751. \return SSL_BAD_FILE ファイルが存在しない場合は返されます。読み込め、または破損していません。
  4752. \return MEMORY_E メモリ不足状態が発生した場合に返されます。
  4753. \return ASN_INPUT_E base16デコードがファイルに対して失敗した場合に返されます。
  4754. \return NO_PASSWORD キーファイルが暗号化されているがパスワードが提供されていない場合は返されます。
  4755. \param ctx wolfssl_ctx_new()で作成されたSSLコンテキストへのポインタ。
  4756. \param in ロードする秘密鍵を含む入力バッファ。
  4757. \param sz 入力バッファのサイズ。
  4758. _Example_
  4759. \code
  4760. int ret = 0;
  4761. int sz = 0;
  4762. WOLFSSL_CTX* ctx;
  4763. byte keyBuff[...];
  4764. ...
  4765. ret = wolfSSL_CTX_use_PrivateKey_buffer(ctx, keyBuff, sz, SSL_FILETYPE_PEM);
  4766. if (ret != SSL_SUCCESS) {
  4767. // error loading private key from buffer
  4768. }
  4769. ...
  4770. \endcode
  4771. \sa wolfSSL_CTX_load_verify_buffer
  4772. \sa wolfSSL_CTX_use_certificate_buffer
  4773. \sa wolfSSL_CTX_use_certificate_chain_buffer
  4774. \sa wolfSSL_use_certificate_buffer
  4775. \sa wolfSSL_use_PrivateKey_buffer
  4776. \sa wolfSSL_use_certificate_chain_buffer
  4777. */
  4778. int wolfSSL_CTX_use_PrivateKey_buffer(WOLFSSL_CTX* ctx,
  4779. const unsigned char* in, long sz,
  4780. int format);
  4781. /*!
  4782. \ingroup CertsKeys
  4783. \brief この関数は、証明書チェーンバッファをWolfSSLコンテキストにロードします。バッファ以外のバージョンのように動作し、ファイルの代わりに入力としてバッファと呼ばれる機能が異なるだけです。バッファはサイズSZの引数によって提供されます。バッファはPEM形式で、ルート証明書で終わる対象の証明書から始めてください。適切な使用法の例をご覧ください。
  4784. \return SSL_SUCCESS 成功すると
  4785. \return SSL_BAD_FILETYPE ファイルが間違った形式である場合は返されます。
  4786. \return SSL_BAD_FILE ファイルが存在しない場合は返されます。読み込め、または破損していません。
  4787. \return MEMORY_E メモリ不足状態が発生した場合に返されます。
  4788. \return ASN_INPUT_E base16デコードがファイルに対して失敗した場合に返されます。
  4789. \return BUFFER_E チェーンバッファが受信バッファよりも大きい場合に返されます。
  4790. \param ctx wolfssl_ctx_new()で作成されたSSLコンテキストへのポインタ。
  4791. \param in ロードされるPEM形式の証明書チェーンを含む入力バッファ。
  4792. _Example_
  4793. \code
  4794. int ret = 0;
  4795. int sz = 0;
  4796. WOLFSSL_CTX* ctx;
  4797. byte certChainBuff[...];
  4798. ...
  4799. ret = wolfSSL_CTX_use_certificate_chain_buffer(ctx, certChainBuff, sz);
  4800. if (ret != SSL_SUCCESS) {
  4801. // error loading certificate chain from buffer
  4802. }
  4803. ...
  4804. \endcode
  4805. \sa wolfSSL_CTX_load_verify_buffer
  4806. \sa wolfSSL_CTX_use_certificate_buffer
  4807. \sa wolfSSL_CTX_use_PrivateKey_buffer
  4808. \sa wolfSSL_use_certificate_buffer
  4809. \sa wolfSSL_use_PrivateKey_buffer
  4810. \sa wolfSSL_use_certificate_chain_buffer
  4811. */
  4812. int wolfSSL_CTX_use_certificate_chain_buffer(WOLFSSL_CTX* ctx,
  4813. const unsigned char* in, long sz);
  4814. /*!
  4815. \ingroup CertsKeys
  4816. \brief この関数は、証明書バッファをWolfSSLオブジェクトにロードします。バッファ以外のバージョンのように動作し、ファイルの代わりに入力としてバッファと呼ばれる機能が異なるだけです。バッファはサイズSZの引数によって提供されます。形式バッファのフォーマットタイプを指定します。SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEM。適切な使用法の例をご覧ください。
  4817. \return SSL_SUCCESS 成功すると。
  4818. \return SSL_BAD_FILETYPE ファイルが間違った形式である場合は返されます。
  4819. \return SSL_BAD_FILE ファイルが存在しない場合は返されます。読み込め、または破損していません。
  4820. \return MEMORY_E メモリ不足状態が発生した場合に返されます。
  4821. \return ASN_INPUT_E base16デコードがファイルに対して失敗した場合に返されます。
  4822. \param ssl wolfssl_new()で作成されたSSLセッションへのポインタ。
  4823. \param in ロードする証明書を含むバッファ。
  4824. \param sz バッファにある証明書のサイズ。
  4825. _Example_
  4826. \code
  4827. int buffSz;
  4828. int ret;
  4829. byte certBuff[...];
  4830. WOLFSSL* ssl = 0;
  4831. ...
  4832. ret = wolfSSL_use_certificate_buffer(ssl, certBuff, buffSz, SSL_FILETYPE_PEM);
  4833. if (ret != SSL_SUCCESS) {
  4834. // failed to load certificate from buffer
  4835. }
  4836. \endcode
  4837. \sa wolfSSL_CTX_load_verify_buffer
  4838. \sa wolfSSL_CTX_use_certificate_buffer
  4839. \sa wolfSSL_CTX_use_PrivateKey_buffer
  4840. \sa wolfSSL_CTX_use_certificate_chain_buffer
  4841. \sa wolfSSL_use_PrivateKey_buffer
  4842. \sa wolfSSL_use_certificate_chain_buffer
  4843. */
  4844. int wolfSSL_use_certificate_buffer(WOLFSSL* ssl, const unsigned char* in,
  4845. long sz, int format);
  4846. /*!
  4847. \ingroup CertsKeys
  4848. \brief この関数は、秘密鍵バッファをWolfSSLオブジェクトにロードします。バッファ以外のバージョンのように動作し、ファイルの代わりに入力としてバッファと呼ばれる機能が異なるだけです。バッファはサイズSZの引数によって提供されます。形式バッファのフォーマットタイプを指定します。SSL_FILETYPE_ASN1またはSSL_FILETYPE_PEM。適切な使用法の例をご覧ください。
  4849. \return SSL_SUCCESS 成功すると。
  4850. \return SSL_BAD_FILETYPE ファイルが間違った形式である場合は返されます。
  4851. \return SSL_BAD_FILE ファイルが存在しない場合は返されます。読み込め、または破損していません。
  4852. \return MEMORY_E メモリ不足状態が発生した場合に返されます。
  4853. \return ASN_INPUT_E base16デコードがファイルに対して失敗した場合に返されます。
  4854. \return NO_PASSWORD キーファイルが暗号化されているがパスワードが提供されていない場合は返されます。
  4855. \param ssl wolfssl_new()で作成されたSSLセッションへのポインタ。
  4856. \param in ロードする秘密鍵を含むバッファ。
  4857. \param sz バッファにある秘密鍵のサイズ。
  4858. _Example_
  4859. \code
  4860. int buffSz;
  4861. int ret;
  4862. byte keyBuff[...];
  4863. WOLFSSL* ssl = 0;
  4864. ...
  4865. ret = wolfSSL_use_PrivateKey_buffer(ssl, keyBuff, buffSz, SSL_FILETYPE_PEM);
  4866. if (ret != SSL_SUCCESS) {
  4867. // failed to load private key from buffer
  4868. }
  4869. \endcode
  4870. \sa wolfSSL_use_PrivateKey
  4871. \sa wolfSSL_CTX_load_verify_buffer
  4872. \sa wolfSSL_CTX_use_certificate_buffer
  4873. \sa wolfSSL_CTX_use_PrivateKey_buffer
  4874. \sa wolfSSL_CTX_use_certificate_chain_buffer
  4875. \sa wolfSSL_use_certificate_buffer
  4876. \sa wolfSSL_use_certificate_chain_buffer
  4877. */
  4878. int wolfSSL_use_PrivateKey_buffer(WOLFSSL* ssl, const unsigned char* in,
  4879. long sz, int format);
  4880. /*!
  4881. \ingroup CertsKeys
  4882. \brief この関数は、証明書チェーンバッファをWolfSSLオブジェクトにロードします。バッファ以外のバージョンのように動作し、ファイルの代わりに入力としてバッファと呼ばれる機能が異なるだけです。バッファはサイズSZの引数によって提供されます。バッファはPEM形式で、ルート証明書で終わる対象の証明書から始めてください。適切な使用法の例をご覧ください。
  4883. \return SSL_SUCCES 成功すると。
  4884. \return SSL_BAD_FILETYPE ファイルが間違った形式である場合は返されます。
  4885. \return SSL_BAD_FILE ファイルが存在しない場合は返されます。読み込め、または破損していません。
  4886. \return MEMORY_E メモリ不足状態が発生した場合に返されます。
  4887. \return ASN_INPUT_E base16デコードがファイルに対して失敗した場合に返されます。
  4888. \return BUFFER_E チェーンバッファが受信バッファよりも大きい場合に返されます。
  4889. \param ssl wolfssl_new()で作成されたSSLセッションへのポインタ。
  4890. \param in ロードする証明書を含むバッファ。
  4891. _Example_
  4892. \code
  4893. int buffSz;
  4894. int ret;
  4895. byte certChainBuff[...];
  4896. WOLFSSL* ssl = 0;
  4897. ...
  4898. ret = wolfSSL_use_certificate_chain_buffer(ssl, certChainBuff, buffSz);
  4899. if (ret != SSL_SUCCESS) {
  4900. // failed to load certificate chain from buffer
  4901. }
  4902. \endcode
  4903. \sa wolfSSL_CTX_load_verify_buffer
  4904. \sa wolfSSL_CTX_use_certificate_buffer
  4905. \sa wolfSSL_CTX_use_PrivateKey_buffer
  4906. \sa wolfSSL_CTX_use_certificate_chain_buffer
  4907. \sa wolfSSL_use_certificate_buffer
  4908. \sa wolfSSL_use_PrivateKey_buffer
  4909. */
  4910. int wolfSSL_use_certificate_chain_buffer(WOLFSSL* ssl,
  4911. const unsigned char* in, long sz);
  4912. /*!
  4913. \ingroup CertsKeys
  4914. \brief この関数は、SSLが所有する証明書またはキーをアンロードします。
  4915. \return SSL_SUCCESS - 関数が正常に実行された場合に返されます。
  4916. \return BAD_FUNC_ARG - wolfsslオブジェクトがnullの場合に返されます。
  4917. _Example_
  4918. \code
  4919. WOLFSSL* ssl = wolfSSL_new(ctx);
  4920. ...
  4921. int unloadKeys = wolfSSL_UnloadCertsKeys(ssl);
  4922. if(unloadKeys != SSL_SUCCESS){
  4923. // Failure case.
  4924. }
  4925. \endcode
  4926. \sa wolfSSL_CTX_UnloadCAs
  4927. */
  4928. int wolfSSL_UnloadCertsKeys(WOLFSSL*);
  4929. /*!
  4930. \ingroup Setup
  4931. \brief この機能は、可能な限りハンドシェイクメッセージのグループ化をオンにします。
  4932. \return SSL_SUCCESS 成功に戻ります。
  4933. \return BAD_FUNC_ARG 入力コンテキストがNULLの場合、返されます。
  4934. _Example_
  4935. \code
  4936. WOLFSSL_CTX* ctx = 0;
  4937. ...
  4938. ret = wolfSSL_CTX_set_group_messages(ctx);
  4939. if (ret != SSL_SUCCESS) {
  4940. // failed to set handshake message grouping
  4941. }
  4942. \endcode
  4943. \sa wolfSSL_set_group_messages
  4944. \sa wolfSSL_CTX_new
  4945. */
  4946. int wolfSSL_CTX_set_group_messages(WOLFSSL_CTX*);
  4947. /*!
  4948. \ingroup Setup
  4949. \brief この機能は、可能な限りハンドシェイクメッセージのグループ化をオンにします。
  4950. \return SSL_SUCCESS 成功に戻ります。
  4951. \return BAD_FUNC_ARG 入力コンテキストがNULLの場合、返されます。
  4952. _Example_
  4953. \code
  4954. WOLFSSL* ssl = 0;
  4955. ...
  4956. ret = wolfSSL_set_group_messages(ssl);
  4957. if (ret != SSL_SUCCESS) {
  4958. // failed to set handshake message grouping
  4959. }
  4960. \endcode
  4961. \sa wolfSSL_CTX_set_group_messages
  4962. \sa wolfSSL_new
  4963. */
  4964. int wolfSSL_set_group_messages(WOLFSSL*);
  4965. /*!
  4966. \brief
  4967. \return none いいえ返します。
  4968. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  4969. \param cbf フォームの関数ポインタであるCallBackFozzerタイプ:int(* callbackfuzzer)(wolfssl * ssl、consigned char * buf、int sz、int型、void * fuzzctx);
  4970. _Example_
  4971. \code
  4972. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
  4973. WOLFSSL* ssl = wolfSSL_new(ctx);
  4974. void* fCtx;
  4975. int callbackFuzzerCB(WOLFSSL* ssl, const unsigned char* buf, int sz,
  4976. int type, void* fuzzCtx){
  4977. // function definition
  4978. }
  4979. wolfSSL_SetFuzzerCb(ssl, callbackFuzzerCB, fCtx);
  4980. \endcode
  4981. \sa CallbackFuzzer
  4982. */
  4983. void wolfSSL_SetFuzzerCb(WOLFSSL* ssl, CallbackFuzzer cbf, void* fCtx);
  4984. /*!
  4985. \brief
  4986. \return 0 関数がエラーなしで実行された場合に返されます。
  4987. \return BAD_FUNC_ARG 許容できない値で関数に渡された引数があった場合に返されます。
  4988. \return COOKIE_SECRET_SZ 秘密サイズが0の場合に返されます。
  4989. \return MEMORY_ERROR 新しいCookie Secretにメモリを割り当てる問題がある場合は返されました。
  4990. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  4991. \param secret 秘密バッファを表す定数バイトポインタ。
  4992. _Example_
  4993. \code
  4994. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
  4995. WOLFSSL* ssl = wolfSSL_new(ctx);
  4996. const* byte secret;
  4997. word32 secretSz; // size of secret
  4998. if(!wolfSSL_DTLS_SetCookieSecret(ssl, secret, secretSz)){
  4999. // Code block for failure to set DTLS cookie secret
  5000. } else {
  5001. // Success! Cookie secret is set.
  5002. }
  5003. \endcode
  5004. \sa ForceZero
  5005. \sa wc_RNG_GenerateBlock
  5006. */
  5007. int wolfSSL_DTLS_SetCookieSecret(WOLFSSL* ssl,
  5008. const unsigned char* secret,
  5009. unsigned int secretSz);
  5010. /*!
  5011. \brief
  5012. \return rng 成功すると。
  5013. \return NULL SSLがNULLの場合
  5014. _Example_
  5015. \code
  5016. WOLFSSL* ssl;
  5017. wolfSSL_GetRNG(ssl);
  5018. \endcode
  5019. \sa wolfSSL_CTX_new_rng
  5020. */
  5021. WC_RNG* wolfSSL_GetRNG(WOLFSSL* ssl);
  5022. /*!
  5023. \ingroup Setup
  5024. \brief この関数は、許可されている最小のダウングレードバージョンを設定します。接続が(wolfsslv23_client_methodまたはwolfsslv23_server_method)を使用して、接続がダウングレードできる場合にのみ適用されます。
  5025. \return SSL_SUCCESS エラーなしで返された関数と最小バージョンが設定されている場合に返されます。
  5026. \return BAD_FUNC_ARG wolfssl_ctx構造がNULLの場合、または最小バージョンがサポートされていない場合に返されます。
  5027. \param ctx wolfssl_ctx_new()を使用して作成されたwolfssl_ctx構造へのポインタ。
  5028. _Example_
  5029. \code
  5030. WOLFSSL_CTX* ctx = WOLFSSL_CTX_new( protocol method );
  5031. WOLFSSL* ssl = WOLFSSL_new(ctx);
  5032. int version; // macrop representation
  5033. if(wolfSSL_CTX_SetMinVersion(ssl->ctx, version) != SSL_SUCCESS){
  5034. // Failed to set min version
  5035. }
  5036. \endcode
  5037. \sa SetMinVersionHelper
  5038. */
  5039. int wolfSSL_CTX_SetMinVersion(WOLFSSL_CTX* ctx, int version);
  5040. /*!
  5041. \ingroup TLS
  5042. \brief この関数は、許可されている最小のダウングレードバージョンを設定します。接続が(wolfsslv23_client_methodまたはwolfsslv23_server_method)を使用して、接続がダウングレードできる場合にのみ適用されます。
  5043. \return SSL_SUCCESS この関数とそのサブルーチンがエラーなしで実行された場合に返されます。
  5044. \return BAD_FUNC_ARG SSLオブジェクトがNULLの場合に返されます。サブルーチンでは、良いバージョンが一致しない場合、このエラーはスローされます。
  5045. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  5046. _Example_
  5047. \code
  5048. WOLFSSL_CTX* ctx = WOLFSSL_CTX_new(protocol method);
  5049. WOLFSSL* ssl = WOLFSSL_new(ctx);
  5050. int version; macro representation
  5051. if(wolfSSL_CTX_SetMinVersion(ssl->ctx, version) != SSL_SUCCESS){
  5052. Failed to set min version
  5053. }
  5054. \endcode
  5055. \sa SetMinVersionHelper
  5056. */
  5057. int wolfSSL_SetMinVersion(WOLFSSL* ssl, int version);
  5058. /*!
  5059. \brief ビルドオプションと設定に依存します。WolfSSLを構築するときにshow_sizesが定義されている場合、この関数はWolfSSLオブジェクト(スイート、暗号など)内の個々のオブジェクトのサイズもstdoutに印刷されます。
  5060. \return size この関数は、WolfSSLオブジェクトのサイズを返します。
  5061. _Example_
  5062. \code
  5063. int size = 0;
  5064. size = wolfSSL_GetObjectSize();
  5065. printf(“sizeof(WOLFSSL) = %d\n”, size);
  5066. \endcode
  5067. \sa wolfSSL_new
  5068. */
  5069. int wolfSSL_GetObjectSize(void); /* object size based on build */
  5070. /*!
  5071. \brief アプリケーションがトランスポートレイヤ間で何バイトを送信したい場合は、指定された平文の入力サイズを指定してください。SSL / TLSハンドシェイクが完了した後に呼び出す必要があります。
  5072. \return size 成功すると、要求されたサイズが返されます
  5073. \return INPUT_SIZE_E 入力サイズが最大TLSフラグメントサイズより大きい場合は返されます(WOLFSSL_GETMAXOUTPUTSIZE())。
  5074. \return BAD_FUNC_ARG 無効な関数引数に戻り、またはSSL / TLSハンドシェイクがまだ完了していない場合
  5075. \param ssl wolfssl_new()を使用して作成されたwolfsslオブジェクトへのポインタ。
  5076. _Example_
  5077. \code
  5078. none
  5079. \endcode
  5080. \sa wolfSSL_GetMaxOutputSize
  5081. */
  5082. int wolfSSL_GetOutputSize(WOLFSSL* ssl, int inSz);
  5083. /*!
  5084. \brief プロトコル規格で指定されている最大SSL / TLSレコードサイズのいずれかに対応します。この関数は、アプリケーションがwolfssl_getOutputSize()と呼ばれ、input_size_eエラーを受信したときに役立ちます。SSL / TLSハンドシェイクが完了した後に呼び出す必要があります。
  5085. \return size 成功すると、最大出力サイズが返されます
  5086. \return BAD_FUNC_ARG 無効な関数引数のときに返されるか、SSL / TLSハンドシェイクがまだ完了していない場合。
  5087. _Example_
  5088. \code
  5089. none
  5090. \endcode
  5091. \sa wolfSSL_GetOutputSize
  5092. */
  5093. int wolfSSL_GetMaxOutputSize(WOLFSSL*);
  5094. /*!
  5095. \ingroup Setup
  5096. \brief この関数は、バージョンで指定されたバージョンを使用して、指定されたSSLセッション(WolfSSLオブジェクト)のSSL / TLSプロトコルバージョンを設定します。これにより、SSLセッション(SSL)のプロトコル設定が最初に定義され、SSLコンテキスト(WolfSSL_CTX_NEW())メソッドの種類によって上書きされます。
  5097. \return SSL_SUCCESS 成功すると。
  5098. \return BAD_FUNC_ARG 入力SSLオブジェクトがNULLまたは誤ったプロトコルバージョンがバージョンで指定されている場合に返されます。
  5099. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  5100. _Example_
  5101. \code
  5102. int ret = 0;
  5103. WOLFSSL* ssl;
  5104. ...
  5105. ret = wolfSSL_SetVersion(ssl, WOLFSSL_TLSV1);
  5106. if (ret != SSL_SUCCESS) {
  5107. // failed to set SSL session protocol version
  5108. }
  5109. \endcode
  5110. \sa wolfSSL_CTX_new
  5111. */
  5112. int wolfSSL_SetVersion(WOLFSSL* ssl, int version);
  5113. /*!
  5114. \brief MAC /暗号化コールバック。コールバックは成功の場合は0を返すか、エラーの場合は<0です。SSLとCTXポインタはユーザーの利便性に利用できます。MacOutは、MACの結果を保存する必要がある出力バッファです。MacinはMac入力バッファーとMacinszのサイズを注意しています。MacContentとMacverifyは、Wolfssl_SettlShmacinner()に必要であり、そのまま通過します。Encoutは、暗号化の結果を格納する必要がある出力バッファです。ENCINはENCSZが入力のサイズである間は暗号化する入力バッファです。コールバックの例は、wolfssl / test.h mymacencryptcb()を見つけることができます。
  5115. \return none 返品不可。
  5116. _Example_
  5117. \code
  5118. none
  5119. \endcode
  5120. \sa wolfSSL_SetMacEncryptCtx
  5121. \sa wolfSSL_GetMacEncryptCtx
  5122. */
  5123. void wolfSSL_CTX_SetMacEncryptCb(WOLFSSL_CTX* ctx, CallbackMacEncrypti cb);
  5124. /*!
  5125. \brief CTXへのコールバックコンテキスト。
  5126. \return none 返品不可。
  5127. _Example_
  5128. \code
  5129. none
  5130. \endcode
  5131. \sa wolfSSL_CTX_SetMacEncryptCb
  5132. \sa wolfSSL_GetMacEncryptCtx
  5133. */
  5134. void wolfSSL_SetMacEncryptCtx(WOLFSSL* ssl, void *ctx);
  5135. /*!
  5136. \brief Mac / Encryptコールバックコンテキストは、wolfssl_setmacencryptx()で保存されていました。
  5137. \return pointer 正常にコールがコンテキストへの有効なポインタを返します。
  5138. \return NULL 空白のコンテキストのために返されます。
  5139. _Example_
  5140. \code
  5141. none
  5142. \endcode
  5143. \sa wolfSSL_CTX_SetMacEncryptCb
  5144. \sa wolfSSL_SetMacEncryptCtx
  5145. */
  5146. void* wolfSSL_GetMacEncryptCtx(WOLFSSL* ssl);
  5147. /*!
  5148. \brief コールバックを復号化/確認します。コールバックは成功の場合は0を返すか、エラーの場合は<0です。SSLとCTXポインタはユーザーの利便性に利用できます。DECOUTは、復号化の結果を格納する出力バッファです。DECINは暗号化された入力バッファーとDecinszのサイズを注意しています。コンテンツと検証は、WolfSSL_SettlShmacinner()に必要であり、そのまま通過します。PADSZは、パディングの合計値で設定する出力変数です。つまり、MACサイズとパディングバイトとパッドバイトを加えています。コールバックの例は、wolfssl / test.h mydecryptverifycb()を見つけることができます。
  5149. \return none いいえ返します。
  5150. _Example_
  5151. \code
  5152. none
  5153. \endcode
  5154. \sa wolfSSL_SetMacEncryptCtx
  5155. \sa wolfSSL_GetMacEncryptCtx
  5156. */
  5157. void wolfSSL_CTX_SetDecryptVerifyCb(WOLFSSL_CTX* ctx,
  5158. CallbackDecryptVerify cb);
  5159. /*!
  5160. \brief コールバックコンテキストをCTXに復号化/検証します。
  5161. \return none いいえ返します。
  5162. _Example_
  5163. \code
  5164. none
  5165. \endcode
  5166. \sa wolfSSL_CTX_SetDecryptVerifyCb
  5167. \sa wolfSSL_GetDecryptVerifyCtx
  5168. */
  5169. void wolfSSL_SetDecryptVerifyCtx(WOLFSSL* ssl, void *ctx);
  5170. /*!
  5171. \brief wolfssl_setdecryptverifyctx()で以前に保存されているコールバックコンテキストを復号化/検証します。
  5172. \return pointer 正常にコールがコンテキストへの有効なポインタを返します。
  5173. \return NULL 空白のコンテキストのために返されます。
  5174. _Example_
  5175. \code
  5176. none
  5177. \endcode
  5178. \sa wolfSSL_CTX_SetDecryptVerifyCb
  5179. \sa wolfSSL_SetDecryptVerifyCtx
  5180. */
  5181. void* wolfSSL_GetDecryptVerifyCtx(WOLFSSL* ssl);
  5182. /*!
  5183. \brief VERIFYパラメーターは、これがピア・メッセージの検証のためのものであるかどうかを指定します。
  5184. \return pointer 正常にコールが秘密に有効なポインタを返します。秘密のサイズは、Wolfssl_gethmacsize()から入手できます。
  5185. \return NULL エラー状態に戻ります。
  5186. \param ssl wolfssl_new()を使用して作成されたwolfsslオブジェクトへのポインタ。
  5187. _Example_
  5188. \code
  5189. none
  5190. \endcode
  5191. \sa wolfSSL_GetHmacSize
  5192. */
  5193. const unsigned char* wolfSSL_GetMacSecret(WOLFSSL* ssl, int verify);
  5194. /*!
  5195. \brief
  5196. \return pointer 正常にコールがキーへの有効なポインタを返します。キーのサイズは、wolfssl_getkeysize()から取得できます。
  5197. \return NULL エラー状態に戻ります。
  5198. _Example_
  5199. \code
  5200. none
  5201. \endcode
  5202. \sa wolfSSL_GetKeySize
  5203. \sa wolfSSL_GetClientWriteIV
  5204. */
  5205. const unsigned char* wolfSSL_GetClientWriteKey(WOLFSSL*);
  5206. /*!
  5207. \brief ハンドシェイクプロセスから。
  5208. \return pointer 正常にコールがIVへの有効なポインタを返します。IVのサイズは、wolfssl_getCipherBlockSize()から取得できます。
  5209. \return NULL エラー状態に戻ります。
  5210. _Example_
  5211. \code
  5212. none
  5213. \endcode
  5214. \sa wolfSSL_GetCipherBlockSize()
  5215. \sa wolfSSL_GetClientWriteKey()
  5216. */
  5217. const unsigned char* wolfSSL_GetClientWriteIV(WOLFSSL*);
  5218. /*!
  5219. \brief
  5220. \return pointer 正常にコールがキーへの有効なポインタを返します。キーのサイズは、wolfssl_getkeysize()から取得できます。
  5221. \return NULL エラー状態に戻ります。
  5222. _Example_
  5223. \code
  5224. none
  5225. \endcode
  5226. \sa wolfSSL_GetKeySize
  5227. \sa wolfSSL_GetServerWriteIV
  5228. */
  5229. const unsigned char* wolfSSL_GetServerWriteKey(WOLFSSL*);
  5230. /*!
  5231. \brief ハンドシェイクプロセスから。
  5232. \return pointer 正常にコールがIVへの有効なポインタを返します。IVのサイズは、wolfssl_getCipherBlockSize()から取得できます。
  5233. \return NULL エラー状態に戻ります。
  5234. \sa wolfSSL_GetCipherBlockSize
  5235. \sa wolfSSL_GetClientWriteKey
  5236. */
  5237. const unsigned char* wolfSSL_GetServerWriteIV(WOLFSSL*);
  5238. /*!
  5239. \brief
  5240. \return size 正常にコールがキーサイズをバイト単位で返します。
  5241. \return BAD_FUNC_ARG エラー状態に戻ります。
  5242. _Example_
  5243. \code
  5244. none
  5245. \endcode
  5246. \sa wolfSSL_GetClientWriteKey
  5247. \sa wolfSSL_GetServerWriteKey
  5248. */
  5249. int wolfSSL_GetKeySize(WOLFSSL*);
  5250. /*!
  5251. \ingroup CertsKeys
  5252. \brief WolfSSL構造体に保持されているSpecs構造体のIV_SIZEメンバーを返します。
  5253. \return iv_size ssl-> specs.iv_sizeで保持されている値を返します。
  5254. \return BAD_FUNC_ARG WolfSSL構造がNULLの場合に返されます。
  5255. _Example_
  5256. \code
  5257. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
  5258. WOLFSSL* ssl = wolfSSL_new(ctx);
  5259. int ivSize;
  5260. ...
  5261. ivSize = wolfSSL_GetIVSize(ssl);
  5262. if(ivSize > 0){
  5263. // ivSize holds the specs.iv_size value.
  5264. }
  5265. \endcode
  5266. \sa wolfSSL_GetKeySize
  5267. \sa wolfSSL_GetClientWriteIV
  5268. \sa wolfSSL_GetServerWriteIV
  5269. */
  5270. int wolfSSL_GetIVSize(WOLFSSL*);
  5271. /*!
  5272. \brief
  5273. \return success 成功した場合、呼び出しがWolfSSLオブジェクトの側面に応じてwolfssl_server_endまたはwolfssl_client_endを返します。
  5274. \return BAD_FUNC_ARG エラー状態に戻ります。
  5275. _Example_
  5276. \code
  5277. none
  5278. \endcode
  5279. \sa wolfSSL_GetClientWriteKey
  5280. \sa wolfSSL_GetServerWriteKey
  5281. */
  5282. int wolfSSL_GetSide(WOLFSSL*);
  5283. /*!
  5284. \brief 少なくともTLSバージョン1.1以上です。
  5285. \return true/false 成功した場合、呼び出しがTRUEまたは0の場合は0を返します。
  5286. \return BAD_FUNC_ARG エラー状態に戻ります。
  5287. _Example_
  5288. \code
  5289. none
  5290. \endcode
  5291. \sa wolfSSL_GetSide
  5292. */
  5293. int wolfSSL_IsTLSv1_1(WOLFSSL*);
  5294. /*!
  5295. \brief ハンドシェイクから。
  5296. \return If コールが成功すると、wolfssl_cipher_null、wolfssl_des、wolfssl_triple_des、wolfssl_aes、wolfssl_aes_gcm、wolfssl_aes_ccm、wolfssl_camellia。
  5297. \return BAD_FUNC_ARG エラー状態に戻ります。
  5298. _Example_
  5299. \code
  5300. none
  5301. \endcode
  5302. \sa wolfSSL_GetCipherBlockSize
  5303. \sa wolfSSL_GetKeySize
  5304. */
  5305. int wolfSSL_GetBulkCipher(WOLFSSL*);
  5306. /*!
  5307. \brief ハンドシェイク。
  5308. \return size 正常にコールが暗号ブロックサイズのサイズをバイト単位で戻します。
  5309. \return BAD_FUNC_ARG エラー状態に戻ります。
  5310. _Example_
  5311. \code
  5312. none
  5313. \endcode
  5314. \sa wolfSSL_GetBulkCipher
  5315. \sa wolfSSL_GetKeySize
  5316. */
  5317. int wolfSSL_GetCipherBlockSize(WOLFSSL*);
  5318. /*!
  5319. \brief ハンドシェーク。暗号タイプのwolfssl_aead_typeの場合。
  5320. \return size 正常にコールがEAD MACサイズのサイズをバイト単位で戻します。
  5321. \return BAD_FUNC_ARG エラー状態に戻ります。
  5322. _Example_
  5323. \code
  5324. none
  5325. \endcode
  5326. \sa wolfSSL_GetBulkCipher
  5327. \sa wolfSSL_GetKeySize
  5328. */
  5329. int wolfSSL_GetAeadMacSize(WOLFSSL*);
  5330. /*!
  5331. \brief ハンドシェーク。wolfssl_aead_type以外の暗号タイプの場合。
  5332. \return size 正常にコールが(H)MACサイズのサイズをバイト単位で戻します。
  5333. \return BAD_FUNC_ARG エラー状態に戻ります。
  5334. _Example_
  5335. \code
  5336. none
  5337. \endcode
  5338. \sa wolfSSL_GetBulkCipher
  5339. \sa wolfSSL_GetHmacType
  5340. */
  5341. int wolfSSL_GetHmacSize(WOLFSSL*);
  5342. /*!
  5343. \brief ハンドシェーク。wolfssl_aead_type以外の暗号タイプの場合。
  5344. \return If コールが成功すると、次のいずれかが返されます.MD5、SHA、SHA256、SHA384。
  5345. \return BAD_FUNC_ARG エラー状態に対して返される可能性があります。
  5346. \return SSL_FATAL_ERROR エラー状態にも返される可能性があります。
  5347. _Example_
  5348. \code
  5349. none
  5350. \endcode
  5351. \sa wolfSSL_GetBulkCipher
  5352. \sa wolfSSL_GetHmacSize
  5353. */
  5354. int wolfSSL_GetHmacType(WOLFSSL*);
  5355. /*!
  5356. \brief ハンドシェイクから。
  5357. \return If 正常にコールは次のいずれかを返します.WolfSSL_BLOCK_TYPE、WOLFSSL_STREAM_TYPE、WOLFSSL_AEAD_TYPE。
  5358. \return BAD_FUNC_ARG エラー状態に戻ります。
  5359. _Example_
  5360. \code
  5361. none
  5362. \endcode
  5363. \sa wolfSSL_GetBulkCipher
  5364. \sa wolfSSL_GetHmacType
  5365. */
  5366. int wolfSSL_GetCipherType(WOLFSSL*);
  5367. /*!
  5368. \brief 送受信結果は、少なくともwolfssl_gethmacsize()バイトであるべきである内部に書き込まれます。メッセージのサイズはSZで指定され、内容はメッセージの種類であり、検証はこれがピアメッセージの検証であるかどうかを指定します。wolfssl_aead_typeを除く暗号タイプに有効です。
  5369. \return 1 成功すると。
  5370. \return BAD_FUNC_ARG エラー状態に戻ります。
  5371. _Example_
  5372. \code
  5373. none
  5374. \endcode
  5375. \sa wolfSSL_GetBulkCipher
  5376. \sa wolfSSL_GetHmacType
  5377. */
  5378. int wolfSSL_SetTlsHmacInner(WOLFSSL* ssl, byte* inner,
  5379. word32 sz, int content, int verify);
  5380. /*!
  5381. \brief コールバックは成功の場合は0を返すか、エラーの場合は<0です。SSLとCTXポインタはユーザーの利便性に利用できます。INSは入力バッファーが入力の長さを表します。OUTは、署名の結果を保存する必要がある出力バッファです。OUTSZは、呼び出し時に出力バッファのサイズを指定する入力/出力変数であり、署名の実際のサイズを戻す前に格納する必要があります。keyderはASN1フォーマットのECC秘密鍵であり、Keyszはキーのキーの長さです。コールバックの例は、wolfssl / test.h myeccsign()を見つけることができます。
  5382. \return none いいえ返します。
  5383. _Example_
  5384. \code
  5385. none
  5386. \endcode
  5387. \sa wolfSSL_SetEccSignCtx
  5388. \sa wolfSSL_GetEccSignCtx
  5389. */
  5390. void wolfSSL_CTX_SetEccSignCb(WOLFSSL_CTX* ctx, CallbackEccSign cb);
  5391. /*!
  5392. \brief CTXへのコンテキスト。
  5393. \return none いいえ返します。
  5394. \param ssl wolfssl_new()を使用して作成されたwolfsslオブジェクトへのポインタ。
  5395. _Example_
  5396. \code
  5397. none
  5398. \endcode
  5399. \sa wolfSSL_CTX_SetEccSignCb
  5400. \sa wolfSSL_GetEccSignCtx
  5401. */
  5402. void wolfSSL_SetEccSignCtx(WOLFSSL* ssl, void *ctx);
  5403. /*!
  5404. \brief 以前にwolfssl_seteccsignctx()で保存されていたコンテキスト。
  5405. \return pointer 正常にコールがコンテキストへの有効なポインタを返します。
  5406. \return NULL 空白のコンテキストのために返されます。
  5407. _Example_
  5408. \code
  5409. none
  5410. \endcode
  5411. \sa wolfSSL_CTX_SetEccSignCb
  5412. \sa wolfSSL_SetEccSignCtx
  5413. */
  5414. void* wolfSSL_GetEccSignCtx(WOLFSSL* ssl);
  5415. /*!
  5416. \brief CTXへのコンテキスト。
  5417. \return none いいえ返します。
  5418. \param ctx wolfssl_ctx_new()で作成されたwolfssl_ctx構造へのポインタ。
  5419. _Example_
  5420. \code
  5421. none
  5422. \endcode
  5423. \sa wolfSSL_CTX_SetEccSignCb
  5424. \sa wolfSSL_CTX_GetEccSignCtx
  5425. */
  5426. void wolfSSL_CTX_SetEccSignCtx(WOLFSSL_CTX* ctx, void *userCtx);
  5427. /*!
  5428. \brief 以前にwolfssl_seteccsignctx()で保存されていたコンテキスト。
  5429. \return pointer 正常にコールがコンテキストへの有効なポインタを返します。
  5430. \return NULL 空白のコンテキストのために返されます。
  5431. _Example_
  5432. \code
  5433. none
  5434. \endcode
  5435. \sa wolfSSL_CTX_SetEccSignCb
  5436. \sa wolfSSL_CTX_SetEccSignCtx
  5437. */
  5438. void* wolfSSL_CTX_GetEccSignCtx(WOLFSSL_CTX* ctx);
  5439. /*!
  5440. \brief コールバックは成功の場合は0を返すか、エラーの場合は<0です。SSLとCTXポインタはユーザーの利便性に利用できます。SIGは検証の署名であり、SIGSZは署名の長さを表します。ハッシュはメッセージのダイジェストを含む入力バッファであり、HASHSZはハッシュの長さを意味します。結果は、検証の結果を格納する出力変数、成功のために1、失敗のために0を記憶する必要があります。keyderはASN1フォーマットのECC秘密鍵であり、Keyszはキーのキーの長さです。コールバックの例は、wolfssl / test.h myeccverify()を見つけることができます。
  5441. \return none いいえ返します。
  5442. _Example_
  5443. \code
  5444. none
  5445. \endcode
  5446. \sa wolfSSL_SetEccVerifyCtx
  5447. \sa wolfSSL_GetEccVerifyCtx
  5448. */
  5449. void wolfSSL_CTX_SetEccVerifyCb(WOLFSSL_CTX* ctx, CallbackEccVerify cb);
  5450. /*!
  5451. \brief CTXへのコンテキスト。
  5452. \return none いいえ返します。
  5453. _Example_
  5454. \code
  5455. none
  5456. \endcode
  5457. \sa wolfSSL_CTX_SetEccVerifyCb
  5458. \sa wolfSSL_GetEccVerifyCtx
  5459. */
  5460. void wolfSSL_SetEccVerifyCtx(WOLFSSL* ssl, void *ctx);
  5461. /*!
  5462. \brief 以前にwolfssl_setecverifyctx()で保存されていたコンテキスト。
  5463. \return pointer 正常にコールがコンテキストへの有効なポインタを返します。
  5464. \return NULL 空白のコンテキストのために返されます。
  5465. _Example_
  5466. \code
  5467. none
  5468. \endcode
  5469. \sa wolfSSL_CTX_SetEccVerifyCb
  5470. \sa wolfSSL_SetEccVerifyCtx
  5471. */
  5472. void* wolfSSL_GetEccVerifyCtx(WOLFSSL* ssl);
  5473. /*!
  5474. \brief コールバックは成功の場合は0を返すか、エラーの場合は<0です。SSLとCTXポインタはユーザーの利便性に利用できます。INSは入力バッファーが入力の長さを表します。OUTは、署名の結果を保存する必要がある出力バッファです。OUTSZは、呼び出し時に出力バッファのサイズを指定する入力/出力変数であり、署名の実際のサイズを戻す前に格納する必要があります。keyderはASN1フォーマットのRSA秘密鍵であり、Keyszはバイト数のキーの長さです。コールバックの例は、wolfssl / test.h myrsasign()を見つけることができます。
  5475. \return none いいえ返します。
  5476. _Example_
  5477. \code
  5478. none
  5479. \endcode
  5480. \sa wolfSSL_SetRsaSignCtx
  5481. \sa wolfSSL_GetRsaSignCtx
  5482. */
  5483. void wolfSSL_CTX_SetRsaSignCb(WOLFSSL_CTX* ctx, CallbackRsaSign cb);
  5484. /*!
  5485. \brief ctxに。
  5486. \return none いいえ返します。
  5487. _Example_
  5488. \code
  5489. none
  5490. \endcode
  5491. \sa wolfSSL_CTX_SetRsaSignCb
  5492. \sa wolfSSL_GetRsaSignCtx
  5493. */
  5494. void wolfSSL_SetRsaSignCtx(WOLFSSL* ssl, void *ctx);
  5495. /*!
  5496. \brief 以前にwolfssl_setrsAsignctx()で保存されていたコンテキスト。
  5497. \return pointer 正常にコールがコンテキストへの有効なポインタを返します。
  5498. \return NULL 空白のコンテキストのために返されます。
  5499. \param none パラメータはありません。
  5500. _Example_
  5501. \code
  5502. none
  5503. \endcode
  5504. \sa wolfSSL_CTX_SetRsaSignCb
  5505. \sa wolfSSL_SetRsaSignCtx
  5506. */
  5507. void* wolfSSL_GetRsaSignCtx(WOLFSSL* ssl);
  5508. /*!
  5509. \brief コールバックは、成功のための平文バイト数または<0エラーの場合は<0を返すべきです。SSLとCTXポインタはユーザーの利便性に利用できます。SIGは検証の署名であり、SIGSZは署名の長さを表します。復号化プロセスとパディングの後に検証バッファの先頭に設定する必要があります。keyderはASN1形式のRSA公開鍵であり、Keyszはキーのキーの長さです。コールバックの例は、wolfssl / test.h myrsaverify()を見つけることができます。
  5510. \return none いいえ返します。
  5511. \sa wolfSSL_SetRsaVerifyCtx
  5512. \sa wolfSSL_GetRsaVerifyCtx
  5513. */
  5514. void wolfSSL_CTX_SetRsaVerifyCb(WOLFSSL_CTX* ctx, CallbackRsaVerify cb);
  5515. /*!
  5516. \brief CTXへのコンテキスト。
  5517. \return none いいえ返します。
  5518. _Example_
  5519. \code
  5520. none
  5521. \endcode
  5522. \sa wolfSSL_CTX_SetRsaVerifyCb
  5523. \sa wolfSSL_GetRsaVerifyCtx
  5524. */
  5525. void wolfSSL_SetRsaVerifyCtx(WOLFSSL* ssl, void *ctx);
  5526. /*!
  5527. \brief 以前にwolfssl_setrsaverifyctx()で保存されていたコンテキスト。
  5528. \return pointer 正常にコールがコンテキストへの有効なポインタを返します。
  5529. \return NULL 空白のコンテキストのために返されます。
  5530. _Example_
  5531. \code
  5532. none
  5533. \endcode
  5534. \sa wolfSSL_CTX_SetRsaVerifyCb
  5535. \sa wolfSSL_SetRsaVerifyCtx
  5536. */
  5537. void* wolfSSL_GetRsaVerifyCtx(WOLFSSL* ssl);
  5538. /*!
  5539. \brief 暗号化します。コールバックは成功の場合は0を返すか、エラーの場合は<0です。SSLとCTXポインタはユーザーの利便性に利用できます。INは入力バッファですが、INSZは入力の長さを表します。暗号化の結果を保存する必要がある出力バッファです。OUTSZは、呼び出し時に出力バッファのサイズを指定する入力/出力変数であり、暗号化の実際のサイズは戻って前に格納されるべきです。keyderはASN1形式のRSA公開鍵であり、Keyszはキーのキーの長さです。例コールバックの例は、wolfssl / test.h myrsaenc()を見つけることができます。
  5540. \return none いいえ返します。
  5541. \code
  5542. none
  5543. \endcode
  5544. \sa wolfSSL_SetRsaEncCtx
  5545. \sa wolfSSL_GetRsaEncCtx
  5546. */
  5547. void wolfSSL_CTX_SetRsaEncCb(WOLFSSL_CTX* ctx, CallbackRsaEnc cb);
  5548. /*!
  5549. \brief CTXへのコールバックコンテキスト。
  5550. \return none いいえ返します。
  5551. _Example_
  5552. \code
  5553. none
  5554. \endcode
  5555. \sa wolfSSL_CTX_SetRsaEncCb
  5556. \sa wolfSSL_GetRsaEncCtx
  5557. */
  5558. void wolfSSL_SetRsaEncCtx(WOLFSSL* ssl, void *ctx);
  5559. /*!
  5560. \brief コールバックコンテキストは、wolfssl_setrsaencctx()で以前に保存されていました。
  5561. \return pointer 正常にコールがコンテキストへの有効なポインタを返します。
  5562. \return NULL 空白のコンテキストのために返されます。
  5563. _Example_
  5564. \code
  5565. none
  5566. \endcode
  5567. \sa wolfSSL_CTX_SetRsaEncCb
  5568. \sa wolfSSL_SetRsaEncCtx
  5569. */
  5570. void* wolfSSL_GetRsaEncCtx(WOLFSSL* ssl);
  5571. /*!
  5572. \brief 復号化します。コールバックは、成功のための平文バイト数または<0エラーの場合は<0を返すべきです。SSLとCTXポインタはユーザーの利便性に利用できます。INは、復号化する入力バッファが入力の長さを表します。復号化プロセスおよび任意のパディングの後、復号化バッファの先頭に設定する必要があります。keyderはASN1フォーマットのRSA秘密鍵であり、Keyszはバイト数のキーの長さです。コールバックの例は、wolfssl / test.h myrsadec()を見つけることができます。
  5573. \return none いいえ返します。
  5574. _Example_
  5575. \code
  5576. none
  5577. \endcode
  5578. \sa wolfSSL_SetRsaDecCtx
  5579. \sa wolfSSL_GetRsaDecCtx
  5580. */
  5581. void wolfSSL_CTX_SetRsaDecCb(WOLFSSL_CTX* ctx, CallbackRsaDec cb);
  5582. /*!
  5583. \brief CTXへのコールバックコンテキスト。
  5584. \return none いいえ返します。
  5585. _Example_
  5586. \code
  5587. none
  5588. \endcode
  5589. \sa wolfSSL_CTX_SetRsaDecCb
  5590. \sa wolfSSL_GetRsaDecCtx
  5591. */
  5592. void wolfSSL_SetRsaDecCtx(WOLFSSL* ssl, void *ctx);
  5593. /*!
  5594. \brief コールバックコンテキストは、wolfssl_setrsadecctx()で以前に保存されていました。
  5595. \return pointer 正常にコールがコンテキストへの有効なポインタを返します。
  5596. \return NULL 空白のコンテキストのために返されます。
  5597. _Example_
  5598. \code
  5599. none
  5600. \endcode
  5601. \sa wolfSSL_CTX_SetRsaDecCb
  5602. \sa wolfSSL_SetRsaDecCtx
  5603. */
  5604. void* wolfSSL_GetRsaDecCtx(WOLFSSL* ssl);
  5605. /*!
  5606. \brief 新しいCA証明書がWolfSSLにロードされたときに呼び出される(WolfSSL_CTX)。コールバックには、符号化された証明書を持つバッファが与えられます。
  5607. \return none 返品不可。
  5608. \param ctx wolfssl_ctx_new()で作成されたSSLコンテキストへのポインタ。
  5609. _Example_
  5610. \code
  5611. WOLFSSL_CTX* ctx = 0;
  5612. // CA callback prototype
  5613. int MyCACallback(unsigned char *der, int sz, int type);
  5614. // Register the custom CA callback with the SSL context
  5615. wolfSSL_CTX_SetCACb(ctx, MyCACallback);
  5616. int MyCACallback(unsigned char* der, int sz, int type)
  5617. {
  5618. // custom CA callback function, DER-encoded cert
  5619. // located in “der” of size “sz” with type “type”
  5620. }
  5621. \endcode
  5622. \sa wolfSSL_CTX_load_verify_locations
  5623. */
  5624. void wolfSSL_CTX_SetCACb(WOLFSSL_CTX* ctx, CallbackCACache cb);
  5625. /*!
  5626. \ingroup CertManager
  5627. \brief 新しい証明書マネージャコンテキストを割り当てて初期化します。このコンテキストは、SSLのニーズとは無関係に使用できます。証明書をロードしたり、証明書を確認したり、失効状況を確認したりするために使用することができます。
  5628. \return WOLFSSL_CERT_MANAGER 正常にコールが有効なwolfssl_cert_managerポインタを返します。
  5629. \return NULL エラー状態に戻ります。
  5630. \sa wolfSSL_CertManagerFree
  5631. */
  5632. WOLFSSL_CERT_MANAGER* wolfSSL_CertManagerNew_ex(void* heap);
  5633. /*!
  5634. \ingroup CertManager
  5635. \brief 新しい証明書マネージャコンテキストを割り当てて初期化します。このコンテキストは、SSLのニーズとは無関係に使用できます。証明書をロードしたり、証明書を確認したり、失効状況を確認したりするために使用することができます。
  5636. \return WOLFSSL_CERT_MANAGER 正常にコールが有効なwolfssl_cert_managerポインタを返します。
  5637. \return NULL エラー状態に戻ります。
  5638. _Example_
  5639. \code
  5640. #import <wolfssl/ssl.h>
  5641. WOLFSSL_CERT_MANAGER* cm;
  5642. cm = wolfSSL_CertManagerNew();
  5643. if (cm == NULL) {
  5644. // error creating new cert manager
  5645. }
  5646. \endcode
  5647. \sa wolfSSL_CertManagerFree
  5648. */
  5649. WOLFSSL_CERT_MANAGER* wolfSSL_CertManagerNew(void);
  5650. /*!
  5651. \ingroup CertManager
  5652. \brief 証明書マネージャのコンテキストに関連付けられているすべてのリソースを解放します。証明書マネージャを使用する必要がなくなるときにこれを呼び出します。
  5653. \return none
  5654. _Example_
  5655. \code
  5656. #include <wolfssl/ssl.h>
  5657. WOLFSSL_CERT_MANAGER* cm;
  5658. ...
  5659. wolfSSL_CertManagerFree(cm);
  5660. \endcode
  5661. \sa wolfSSL_CertManagerNew
  5662. */
  5663. void wolfSSL_CertManagerFree(WOLFSSL_CERT_MANAGER*);
  5664. /*!
  5665. \ingroup CertManager
  5666. \brief ManagerコンテキストへのCA証明書のロードの場所を指定します。PEM証明書カフェイルには、複数の信頼できるCA証明書が含まれている可能性があります。capathがnullでない場合、PEM形式のCA証明書を含むディレクトリを指定します。
  5667. \return SSL_SUCCESS 成功した場合、通話が戻ります。
  5668. \return SSL_BAD_FILETYPE ファイルが間違った形式である場合は返されます。
  5669. \return SSL_BAD_FILE ファイルが存在しない場合は返されます。読み込め、または破損していません。
  5670. \return MEMORY_E メモリ不足状態が発生した場合に返されます。
  5671. \return ASN_INPUT_E base16デコードがファイルに対して失敗した場合に返されます。
  5672. \return BAD_FUNC_ARG ポインタが提供されていない場合に返されるエラーです。
  5673. \return SSL_FATAL_ERROR - 失敗時に返されます。
  5674. \param cm wolfssl_certmanagernew()を使用して作成されたwolfssl_cert_manager構造体へのポインタ。
  5675. \param file ロードするCA証明書を含むファイルの名前へのポインタ。
  5676. _Example_
  5677. \code
  5678. #include <wolfssl/ssl.h>
  5679. int ret = 0;
  5680. WOLFSSL_CERT_MANAGER* cm;
  5681. ...
  5682. ret = wolfSSL_CertManagerLoadCA(cm, “path/to/cert-file.pem”, 0);
  5683. if (ret != SSL_SUCCESS) {
  5684. // error loading CA certs into cert manager
  5685. }
  5686. \endcode
  5687. \sa wolfSSL_CertManagerVerify
  5688. */
  5689. int wolfSSL_CertManagerLoadCA(WOLFSSL_CERT_MANAGER* cm, const char* f,
  5690. const char* d);
  5691. /*!
  5692. \ingroup CertManager
  5693. \brief wolfssl_ctx_load_verify_bufferを呼び出して、関数に渡されたCM内の情報を失うことなく一時的なCMを使用してその結果を返すことによってCAバッファをロードします。
  5694. \return SSL_FATAL_ERROR wolfssl_cert_manager構造体がNULLの場合、またはwolfssl_ctx_new()がNULLを返す場合に返されます。
  5695. \return SSL_SUCCESS 実行が成功するために返されます。
  5696. \param cm wolfssl_certmanagernew()を使用して作成されたwolfssl_cert_manager構造体へのポインタ。
  5697. \param in CERT情報用のバッファー。
  5698. \param sz バッファの長さ。
  5699. _Example_
  5700. \code
  5701. WOLFSSL_CERT_MANAGER* cm = (WOLFSSL_CERT_MANAGER*)vp;
  5702. const unsigned char* in;
  5703. long sz;
  5704. int format;
  5705. if(wolfSSL_CertManagerLoadCABuffer(vp, sz, format) != SSL_SUCCESS){
  5706. Error returned. Failure case code block.
  5707. }
  5708. \endcode
  5709. \sa wolfSSL_CTX_load_verify_buffer
  5710. \sa ProcessChainBuffer
  5711. \sa ProcessBuffer
  5712. \sa cm_pick_method
  5713. */
  5714. int wolfSSL_CertManagerLoadCABuffer(WOLFSSL_CERT_MANAGER* cm,
  5715. const unsigned char* in, long sz, int format);
  5716. /*!
  5717. \ingroup CertManager
  5718. \brief この関数はCA署名者リストをアンロードします。
  5719. \return SSL_SUCCESS 機能の実行に成功したことに戻ります。
  5720. \return BAD_FUNC_ARG wolfssl_cert_managerがnullの場合に返されます。
  5721. \return BAD_MUTEX_E ミューテックスエラーが発生した場合は返されます。
  5722. _Example_
  5723. \code
  5724. #include <wolfssl/ssl.h>
  5725. WOLFSSL_CTX* ctx = wolfSSL_CTX_new(protocol method);
  5726. WOLFSSL_CERT_MANAGER* cm = wolfSSL_CertManagerNew();
  5727. ...
  5728. if(wolfSSL_CertManagerUnloadCAs(ctx->cm) != SSL_SUCCESS){
  5729. Failure case.
  5730. }
  5731. \endcode
  5732. \sa FreeSignerTable
  5733. \sa UnlockMutex
  5734. */
  5735. int wolfSSL_CertManagerUnloadCAs(WOLFSSL_CERT_MANAGER* cm);
  5736. /*!
  5737. \ingroup CertManager
  5738. \brief 関数は信頼できるピアリンクリストを解放し、信頼できるピアリストのロックを解除します。
  5739. \return SSL_SUCCESS 関数が正常に完了した場合
  5740. \return BAD_FUNC_ARG wolfssl_cert_managerがnullの場合
  5741. \return BAD_MUTEX_E ミューテックスエラーTPLOCKでは、WOLFSSL_CERT_MANAGER構造体のメンバーは0(ニル)です。
  5742. _Example_
  5743. \code
  5744. #include <wolfssl/ssl.h>
  5745. WOLFSSL_CTX* ctx = WOLFSSL_CTX_new(Protocol define);
  5746. WOLFSSL_CERT_MANAGER* cm = wolfSSL_CertManagerNew();
  5747. ...
  5748. if(wolfSSL_CertManagerUnload_trust_peers(cm) != SSL_SUCCESS){
  5749. The function did not execute successfully.
  5750. }
  5751. \endcode
  5752. \sa UnLockMutex
  5753. */
  5754. int wolfSSL_CertManagerUnload_trust_peers(WOLFSSL_CERT_MANAGER* cm);
  5755. /*!
  5756. \ingroup CertManager
  5757. \brief 証明書マネージャのコンテキストで確認する証明書を指定します。フォーマットはSSL_FILETYPE_PEMまたはSSL_FILETYPE_ASN1にすることができます。
  5758. \return SSL_SUCCESS 成功した場合
  5759. \return ASN_SIG_CONFIRM_E 署名が検証できなかった場合に返されます。
  5760. \return ASN_SIG_OID_E 署名の種類がサポートされていない場合は返されます。
  5761. \return CRL_CERT_REVOKED この証明書が取り消された場合に返されるエラーです。
  5762. \return CRL_MISSING 現在の発行者CRLが利用できない場合に返されるエラーです。
  5763. \return ASN_BEFORE_DATE_E 現在の日付が前日の前にある場合は返されます。
  5764. \return ASN_AFTER_DATE_E 現在の日付が後の日付の後の場合は返されます。
  5765. \return SSL_BAD_FILETYPE ファイルが間違った形式である場合は返されます。
  5766. \return SSL_BAD_FILE ファイルが存在しない場合は返されます。読み込め、または破損していません。
  5767. \return MEMORY_E メモリ不足状態が発生した場合に返されます。
  5768. \return ASN_INPUT_E base16デコードがファイルに対して失敗した場合に返されます。
  5769. \return BAD_FUNC_ARG ポインタが提供されていない場合に返されるエラーです。
  5770. \param cm wolfssl_certmanagernew()を使用して作成されたwolfssl_cert_manager構造体へのポインタ。
  5771. \param fname 検証する証明書を含むファイルの名前へのポインタ。
  5772. _Example_
  5773. \code
  5774. int ret = 0;
  5775. WOLFSSL_CERT_MANAGER* cm;
  5776. ...
  5777. ret = wolfSSL_CertManagerVerify(cm, “path/to/cert-file.pem”,
  5778. SSL_FILETYPE_PEM);
  5779. if (ret != SSL_SUCCESS) {
  5780. error verifying certificate
  5781. }
  5782. \endcode
  5783. \sa wolfSSL_CertManagerLoadCA
  5784. \sa wolfSSL_CertManagerVerifyBuffer
  5785. */
  5786. int wolfSSL_CertManagerVerify(WOLFSSL_CERT_MANAGER* cm, const char* f,
  5787. int format);
  5788. /*!
  5789. \ingroup CertManager
  5790. \brief 証明書マネージャのコンテキストを使用して確認する証明書バッファを指定します。フォーマットはSSL_FILETYPE_PEMまたはSSL_FILETYPE_ASN1にすることができます。
  5791. \return SSL_SUCCESS 成功した場合
  5792. \return ASN_SIG_CONFIRM_E 署名が検証できなかった場合に返されます。
  5793. \return ASN_SIG_OID_E 署名の種類がサポートされていない場合は返されます。
  5794. \return CRL_CERT_REVOKED この証明書が取り消された場合に返されるエラーです。
  5795. \return CRL_MISSING 現在の発行者CRLが利用できない場合に返されるエラーです。
  5796. \return ASN_BEFORE_DATE_E 現在の日付が前日の前にある場合は返されます。
  5797. \return ASN_AFTER_DATE_E 現在の日付が後の日付の後の場合は返されます。
  5798. \return SSL_BAD_FILETYPE ファイルが間違った形式である場合は返されます。
  5799. \return SSL_BAD_FILE ファイルが存在しない場合は返されます。読み込め、または破損していません。
  5800. \return MEMORY_E メモリ不足状態が発生した場合に返されます。
  5801. \return ASN_INPUT_E base16デコードがファイルに対して失敗した場合に返されます。
  5802. \return BAD_FUNC_ARG ポインタが提供されていない場合に返されるエラーです。
  5803. \param cm wolfssl_certmanagernew()を使用して作成されたwolfssl_cert_manager構造体へのポインタ。
  5804. \param buff 検証する証明書を含むバッファ。
  5805. \param sz バッファのサイズ、BUF。
  5806. _Example_
  5807. \code
  5808. #include <wolfssl/ssl.h>
  5809. int ret = 0;
  5810. int sz = 0;
  5811. WOLFSSL_CERT_MANAGER* cm;
  5812. byte certBuff[...];
  5813. ...
  5814. ret = wolfSSL_CertManagerVerifyBuffer(cm, certBuff, sz, SSL_FILETYPE_PEM);
  5815. if (ret != SSL_SUCCESS) {
  5816. error verifying certificate
  5817. }
  5818. \endcode
  5819. \sa wolfSSL_CertManagerLoadCA
  5820. \sa wolfSSL_CertManagerVerify
  5821. */
  5822. int wolfSSL_CertManagerVerifyBuffer(WOLFSSL_CERT_MANAGER* cm,
  5823. const unsigned char* buff, long sz, int format);
  5824. /*!
  5825. \ingroup CertManager
  5826. \brief この関数は、証明書マネージャーのverifyCallback関数を設定します。存在する場合、それはロードされた各CERTに対して呼び出されます。検証エラーがある場合は、検証コールバックを使用してエラーを過度に乗り越えます。
  5827. \return none 返品不可。
  5828. \param cm wolfssl_certmanagernew()を使用して作成されたwolfssl_cert_manager構造体へのポインタ。
  5829. _Example_
  5830. \code
  5831. #include <wolfssl/ssl.h>
  5832. int myVerify(int preverify, WOLFSSL_X509_STORE_CTX* store)
  5833. { // do custom verification of certificate }
  5834. WOLFSSL_CTX* ctx = WOLFSSL_CTX_new(Protocol define);
  5835. WOLFSSL_CERT_MANAGER* cm = wolfSSL_CertManagerNew();
  5836. ...
  5837. wolfSSL_CertManagerSetVerify(cm, myVerify);
  5838. \endcode
  5839. \sa wolfSSL_CertManagerVerify
  5840. */
  5841. void wolfSSL_CertManagerSetVerify(WOLFSSL_CERT_MANAGER* cm,
  5842. VerifyCallback vc);
  5843. /*!
  5844. \brief CRLリスト。
  5845. \return SSL_SUCCESS 関数が予想どおりに返された場合は返します。wolfssl_cert_manager構造体のCRLENABLEDメンバーがオンになっている場合。
  5846. \return MEMORY_E 割り当てられたメモリが失敗した場合は返します。
  5847. \return BAD_FUNC_ARG wolfssl_cert_managerがnullの場合
  5848. \param cm wolfssl_cert_manager構造体へのポインタ。
  5849. \param der DERフォーマット証明書へのポインタ。
  5850. _Example_
  5851. \code
  5852. WOLFSSL_CERT_MANAGER* cm;
  5853. byte* der;
  5854. int sz; // size of der
  5855. ...
  5856. if(wolfSSL_CertManagerCheckCRL(cm, der, sz) != SSL_SUCCESS){
  5857. // Error returned. Deal with failure case.
  5858. }
  5859. \endcode
  5860. \sa CheckCertCRL
  5861. \sa ParseCertRelative
  5862. \sa wolfSSL_CertManagerSetCRL_CB
  5863. \sa InitDecodedCert
  5864. */
  5865. int wolfSSL_CertManagerCheckCRL(WOLFSSL_CERT_MANAGER* cm,
  5866. unsigned char* der, int sz);
  5867. /*!
  5868. \ingroup CertManager
  5869. \brief 証明書マネージャを使用して証明書を検証するときに証明書失効リストの確認をオンにします。デフォルトでは、CRLチェックはオフです。オプションには、wolfssl_crl_checkallが含まれます。これは、チェーン内の各証明書に対してCRL検査を実行します。これはデフォルトであるリーフ証明書のみです。
  5870. \return SSL_SUCCESS 成功した場合、通話が戻ります。
  5871. \return NOT_COMPILED_IN WolfSSLがCRLを有効にして構築されていない場合は返されます。
  5872. \return MEMORY_E メモリ不足状態が発生した場合に返されます。
  5873. \return BAD_FUNC_ARG ポインタが提供されていない場合に返されるエラーです。
  5874. \return SSL_FAILURE CRLコンテキストを正しく初期化できない場合は返されます。
  5875. \param cm wolfssl_certmanagernew()を使用して作成されたwolfssl_cert_manager構造体へのポインタ。
  5876. _Example_
  5877. \code
  5878. #include <wolfssl/ssl.h>
  5879. int ret = 0;
  5880. WOLFSSL_CERT_MANAGER* cm;
  5881. ...
  5882. ret = wolfSSL_CertManagerEnableCRL(cm, 0);
  5883. if (ret != SSL_SUCCESS) {
  5884. error enabling cert manager
  5885. }
  5886. ...
  5887. \endcode
  5888. \sa wolfSSL_CertManagerDisableCRL
  5889. */
  5890. int wolfSSL_CertManagerEnableCRL(WOLFSSL_CERT_MANAGER* cm,
  5891. int options);
  5892. /*!
  5893. \ingroup CertManager
  5894. \brief 証明書マネージャを使用して証明書を検証するときに証明書失効リストの確認をオフにします。デフォルトでは、CRLチェックはオフです。この関数を使用して、このCertificate Managerコンテキストを使用してCRL検査を一時的または恒久的に無効にして、以前はCRL検査が有効になっていました。
  5895. \return SSL_SUCCESS 成功した場合、通話が戻ります。
  5896. \return BAD_FUNC_ARG 関数ポインタが提供されていない場合に返されるエラーです。
  5897. _Example_
  5898. \code
  5899. #include <wolfssl/ssl.h>
  5900. int ret = 0;
  5901. WOLFSSL_CERT_MANAGER* cm;
  5902. ...
  5903. ret = wolfSSL_CertManagerDisableCRL(cm);
  5904. if (ret != SSL_SUCCESS) {
  5905. error disabling cert manager
  5906. }
  5907. ...
  5908. \endcode
  5909. \sa wolfSSL_CertManagerEnableCRL
  5910. */
  5911. int wolfSSL_CertManagerDisableCRL(WOLFSSL_CERT_MANAGER*);
  5912. /*!
  5913. \ingroup CertManager
  5914. \brief 証明書の失効確認のために証明書をCRLにロードする際にエラーチェックを行い、その後証明書をLoadCRL()へ渡します。
  5915. \return SSL_SUCCESS wolfSSL_CertManagerLoadCRLでエラーが発生せず、loadCRLが成功で戻る場合に返されます。
  5916. \return BAD_FUNC_ARG WOLFSSL_CERT_MANAGER構造体がNULLの場合
  5917. \return SSL_FATAL_ERROR wolfSSL_CertManagerEnableCRLがSSL_SUCCESS以外のを返す場合。
  5918. \return BAD_PATH_ERROR pathがNULLの場合
  5919. \return MEMORY_E LOADCRLがヒープメモリの割り当てに失敗した場合。
  5920. \param cm wolfSSL_CertManagerNew()を使用して作成されたWOLFSSL_CERT_MANAGER構造体へのポインタ。
  5921. \param path CRLへのパスを保持しているバッファーへのポインタ。
  5922. \param type ロードする証明書の種類。
  5923. _Example_
  5924. \code
  5925. #include <wolfssl/ssl.h>
  5926. int wolfSSL_LoadCRL(WOLFSSL* ssl, const char* path, int type,
  5927. int monitor);
  5928. wolfSSL_CertManagerLoadCRL(SSL_CM(ssl), path, type, monitor);
  5929. \endcode
  5930. \sa wolfSSL_CertManagerEnableCRL
  5931. \sa wolfSSL_LoadCRL
  5932. */
  5933. int wolfSSL_CertManagerLoadCRL(WOLFSSL_CERT_MANAGER* cm,
  5934. const char* path, int type, int monitor);
  5935. /*!
  5936. \ingroup CertManager
  5937. \brief この関数は、BufferLoadCRLを呼び出すことによってCRLファイルをロードします。
  5938. \return SSL_SUCCESS 関数がエラーなしで完了した場合に返されます。
  5939. \return BAD_FUNC_ARG wolfssl_cert_managerがnullの場合に返されます。
  5940. \return SSL_FATAL_ERROR wolfssl_cert_managerに関連付けられているエラーがある場合は返されます。
  5941. \param cm wolfssl_cert_manager構造体へのポインタ。
  5942. \param buff 定数バイトタイプとバッファです。
  5943. \param sz バッファのサイズを表す長いint。
  5944. _Example_
  5945. \code
  5946. #include <wolfssl/ssl.h>
  5947. WOLFSSL_CERT_MANAGER* cm;
  5948. const unsigned char* buff;
  5949. long sz; size of buffer
  5950. int type; cert type
  5951. ...
  5952. int ret = wolfSSL_CertManagerLoadCRLBuffer(cm, buff, sz, type);
  5953. if(ret == SSL_SUCCESS){
  5954. return ret;
  5955. } else {
  5956. Failure case.
  5957. }
  5958. \endcode
  5959. \sa BufferLoadCRL
  5960. \sa wolfSSL_CertManagerEnableCRL
  5961. */
  5962. int wolfSSL_CertManagerLoadCRLBuffer(WOLFSSL_CERT_MANAGER* cm,
  5963. const unsigned char* buff, long sz,
  5964. int type);
  5965. /*!
  5966. \ingroup CertManager
  5967. \brief この関数はCRL証明書マネージャコールバックを設定します。LABE_CRLが定義されていて一致するCRLレコードが見つからない場合、CBMissingCRLは呼び出されます(WolfSSL_CertManagerSetCRL_CBを介して設定)。これにより、CRLを外部に検索してロードすることができます。
  5968. \return SSL_SUCCESS 関数とサブルーチンの実行が成功したら返されます。
  5969. \return BAD_FUNC_ARG wolfssl_cert_manager構造体がNULLの場合に返されます。
  5970. \param cm 証明書の情報を保持しているWOLFSSL_CERT_MANAGER構造。
  5971. _Example_
  5972. \code
  5973. #include <wolfssl/ssl.h>
  5974. WOLFSSL_CTX* ctx = wolfSSL_CTX_new(protocol method);
  5975. WOLFSSL* ssl = wolfSSL_new(ctx);
  5976. void cb(const char* url){
  5977. Function body.
  5978. }
  5979. CbMissingCRL cb = CbMissingCRL;
  5980. if(ctx){
  5981. return wolfSSL_CertManagerSetCRL_Cb(SSL_CM(ssl), cb);
  5982. }
  5983. \endcode
  5984. \sa CbMissingCRL
  5985. \sa wolfSSL_SetCRL_Cb
  5986. */
  5987. int wolfSSL_CertManagerSetCRL_Cb(WOLFSSL_CERT_MANAGER* cm,
  5988. CbMissingCRL cb);
  5989. /*!
  5990. \ingroup CertManager
  5991. \brief この関数は証明書マネジャーに保持されているCRLを解放します。
  5992. アプリケーションはCRLをwolfSSL_CertManagerFreeCRLを呼び出して解放した後に、新しいCRLをロードすることができます。
  5993. \return SSL_SUCCESS 関数の実行に成功した場合に返されます。
  5994. \return BAD_FUNC_ARG WOLFSSL_CERT_MANAGER構造体へのポインターがNULLで渡された場合に返されます。
  5995. \param cm wolfSSL_CertManagerNew()で生成されたWOLFSSL_CERT_MANAGER構造体へのポインター。
  5996. _Example_
  5997. \code
  5998. #include <wolfssl/ssl.h>
  5999. const char* crl1 = "./certs/crl/crl.pem";
  6000. WOLFSSL_CERT_MANAGER* cm = NULL;
  6001. cm = wolfSSL_CertManagerNew();
  6002. wolfSSL_CertManagerLoadCRL(cm, crl1, WOLFSSL_FILETYPE_PEM, 0);
  6003. wolfSSL_CertManagerFreeCRL(cm);
  6004. \endcode
  6005. \sa wolfSSL_CertManagerLoadCRL
  6006. */
  6007. int wolfSSL_CertManagerFreeCRL(WOLFSSL_CERT_MANAGER* cm);
  6008. /*!
  6009. \ingroup CertManager
  6010. \brief この機能により、OCSPENABLED OCSPENABLEDがOCSPチェックオプションが有効になっていることを意味します。
  6011. \return SSL_SUCCESS 機能の実行に成功したことに戻ります。wolfssl_cert_managerのOCSPENABLEDメンバーが有効になっています。
  6012. \return BAD_FUNC_ARG wolfssl_cert_manager構造体がnullの場合、または許可されていない引数値がサブルーチンに渡された場合に返されます。
  6013. \return MEMORY_E この関数内にメモリを割り当てるエラーまたはサブルーチンがある場合に返されます。
  6014. \param cm wolfssl_certmanagernew()を使用して作成されたwolfssl_cert_manager構造体へのポインタ。
  6015. \param der 証明書へのバイトポインタ。
  6016. _Example_
  6017. \code
  6018. #import <wolfssl/ssl.h>
  6019. WOLFSSL* ssl = wolfSSL_new(ctx);
  6020. byte* der;
  6021. int sz; size of der
  6022. ...
  6023. if(wolfSSL_CertManagerCheckOCSP(cm, der, sz) != SSL_SUCCESS){
  6024. Failure case.
  6025. }
  6026. \endcode
  6027. \sa ParseCertRelative
  6028. \sa CheckCertOCSP
  6029. */
  6030. int wolfSSL_CertManagerCheckOCSP(WOLFSSL_CERT_MANAGER* cm,
  6031. unsigned char* der, int sz);
  6032. /*!
  6033. \ingroup CertManager
  6034. \brief OCSPがオフになっている場合はOCSPをオンにし、[設定]オプションを使用可能になっている場合。
  6035. \return SSL_SUCCESS 関数呼び出しが成功した場合に返されます。
  6036. \return BAD_FUNC_ARG cm構造体がnullの場合
  6037. \return MEMORY_E wolfssl_ocsp struct値がnullの場合
  6038. \return SSL_FAILURE WOLFSSL_OCSP構造体の初期化は初期化に失敗します。
  6039. \return NOT_COMPILED_IN 正しい機能を有効にしてコンパイルされていないビルド。
  6040. \param cm wolfssl_certmanagernew()を使用して作成されたwolfssl_cert_manager構造体へのポインタ。
  6041. _Example_
  6042. \code
  6043. #include <wolfssl/ssl.h>
  6044. WOLFSSL_CTX* ctx = wolfSSL_CTX_new(protocol method);
  6045. WOLFSSL* ssl = wolfSSL_new(ctx);
  6046. WOLFSSL_CERT_MANAGER* cm = wolfSSL_CertManagerNew();
  6047. int options;
  6048. if(wolfSSL_CertManagerEnableOCSP(SSL_CM(ssl), options) != SSL_SUCCESS){
  6049. Failure case.
  6050. }
  6051. \endcode
  6052. \sa wolfSSL_CertManagerNew
  6053. */
  6054. int wolfSSL_CertManagerEnableOCSP(WOLFSSL_CERT_MANAGER* cm,
  6055. int options);
  6056. /*!
  6057. \ingroup CertManager
  6058. \brief OCSP証明書の失効を無効にします。
  6059. \return SSL_SUCCESS WolfSSL_CertMangerDisableCRLは、WolfSSL_CERT_MANAGER構造体のCRLEnabledメンバを無効にしました。
  6060. \return BAD_FUNC_ARG WOLFSSL構造はヌルでした。
  6061. _Example_
  6062. \code
  6063. #include <wolfssl/ssl.h>
  6064. WOLFSSL_CTX* ctx = wolfSSL_CTX_new(method);
  6065. WOLFSSL* ssl = wolfSSL_new(ctx);
  6066. ...
  6067. if(wolfSSL_CertManagerDisableOCSP(ssl) != SSL_SUCCESS){
  6068. Fail case.
  6069. }
  6070. \endcode
  6071. \sa wolfSSL_DisableCRL
  6072. */
  6073. int wolfSSL_CertManagerDisableOCSP(WOLFSSL_CERT_MANAGER*);
  6074. /*!
  6075. \ingroup CertManager
  6076. \brief この関数は、URLをwolfssl_cert_manager構造体のOCSpoverrideURLメンバーにコピーします。
  6077. \return SSL_SUCCESS この機能は期待どおりに実行できました。
  6078. \return BAD_FUNC_ARG wolfssl_cert_manager構造体はnullです。
  6079. \return MEMEORY_E 証明書マネージャのOCSPoverRideURLメンバーにメモリを割り当てることができませんでした。
  6080. _Example_
  6081. \code
  6082. #include <wolfssl/ssl.h>
  6083. WOLFSSL_CERT_MANAGER* cm = wolfSSL_CertManagerNew();
  6084. const char* url;
  6085. int wolfSSL_SetOCSP_OverrideURL(WOLFSSL* ssl, const char* url)
  6086. if(wolfSSL_CertManagerSetOCSPOverrideURL(SSL_CM(ssl), url) != SSL_SUCCESS){
  6087. Failure case.
  6088. }
  6089. \endcode
  6090. \sa ocspOverrideURL
  6091. \sa wolfSSL_SetOCSP_OverrideURL
  6092. */
  6093. int wolfSSL_CertManagerSetOCSPOverrideURL(WOLFSSL_CERT_MANAGER* cm,
  6094. const char* url);
  6095. /*!
  6096. \ingroup CertManager
  6097. \brief この関数は、wolfssl_cert_managerのOCSPコールバックを設定します。
  6098. \return SSL_SUCCESS 実行に成功したことに戻ります。引数はwolfssl_cert_manager構造体に保存されます。
  6099. \return BAD_FUNC_ARG wolfssl_cert_managerがnullの場合に返されます。
  6100. \param cm wolfssl_cert_manager構造体へのポインタ。
  6101. \param ioCb CBocSpio型の関数ポインタ。
  6102. \param respFreeCb - CBOCSPRESPFREAS型の関数ポインタ。
  6103. _Example_
  6104. \code
  6105. #include <wolfssl/ssl.h>
  6106. wolfSSL_SetOCSP_Cb(WOLFSSL* ssl, CbOCSPIO ioCb,
  6107. CbOCSPRespFree respFreeCb, void* ioCbCtx){
  6108. return wolfSSL_CertManagerSetOCSP_Cb(SSL_CM(ssl), ioCb, respFreeCb, ioCbCtx);
  6109. \endcode
  6110. \sa wolfSSL_CertManagerSetOCSPOverrideURL
  6111. \sa wolfSSL_CertManagerCheckOCSP
  6112. \sa wolfSSL_CertManagerEnableOCSPStapling
  6113. \sa wolfSSL_ENableOCSP
  6114. \sa wolfSSL_DisableOCSP
  6115. \sa wolfSSL_SetOCSP_Cb
  6116. */
  6117. int wolfSSL_CertManagerSetOCSP_Cb(WOLFSSL_CERT_MANAGER* cm,
  6118. CbOCSPIO ioCb, CbOCSPRespFree respFreeCb,
  6119. void* ioCbCtx);
  6120. /*!
  6121. \ingroup CertManager
  6122. \brief この関数は、オプションをオンにしないとOCSPステープルをオンにします。オプションを設定します。
  6123. \return SSL_SUCCESS エラーがなく、関数が正常に実行された場合に返されます。
  6124. \return BAD_FUNC_ARG wolfssl_cert_manager構造体がNULLまたはそうでない場合は、サブルーチンに渡された未解決の引数値があった場合に返されます。
  6125. \return MEMORY_E メモリ割り当てがある問題が発生した場合は返されます。
  6126. \return SSL_FAILURE OCSP構造体の初期化が失敗した場合に返されます。
  6127. \return NOT_COMPILED_IN wolfsslがhaber_certificate_status_requestオプションでコンパイルされていない場合に返されます。
  6128. _Example_
  6129. \code
  6130. int wolfSSL_CTX_EnableOCSPStapling(WOLFSSL_CTX* ctx){
  6131. return wolfSSL_CertManagerEnableOCSPStapling(ctx->cm);
  6132. \endcode
  6133. \sa wolfSSL_CTX_EnableOCSPStapling
  6134. */
  6135. int wolfSSL_CertManagerEnableOCSPStapling(
  6136. WOLFSSL_CERT_MANAGER* cm);
  6137. /*!
  6138. \brief
  6139. \return SSL_SUCCESS 関数とサブルーチンはエラーなしで返されました。
  6140. \return BAD_FUNC_ARG WolfSSL構造がNULLの場合に返されます。
  6141. \return MEMORY_E メモリの割り当てが失敗した場合に返されます。
  6142. \return SSL_FAILURE initcrl関数が正常に戻されない場合に返されます。
  6143. \return NOT_COMPILED_IN have_crlはコンパイル中に有効になっていませんでした。
  6144. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  6145. _Example_
  6146. \code
  6147. WOLFSSL* ssl = wolfSSL_new(ctx);
  6148. if (wolfSSL_EnableCRL(ssl, WOLFSSL_CRL_CHECKALL) != SSL_SUCCESS){
  6149. // Failure case. SSL_SUCCESS was not returned by this function or
  6150. a subroutine
  6151. }
  6152. \endcode
  6153. \sa wolfSSL_CertManagerEnableCRL
  6154. \sa InitCRL
  6155. */
  6156. int wolfSSL_EnableCRL(WOLFSSL* ssl, int options);
  6157. /*!
  6158. \brief
  6159. \return SSL_SUCCESS WolfSSL_CertMangerDisableCRLは、WolfSSL_CERT_MANAGER構造体のCRLEnabledメンバを無効にしました。
  6160. \return BAD_FUNC_ARG WOLFSSL構造はヌルでした。
  6161. _Example_
  6162. \code
  6163. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
  6164. WOLFSSL* ssl = wolfSSL_new(ctx);
  6165. ...
  6166. if(wolfSSL_DisableCRL(ssl) != SSL_SUCCESS){
  6167. // Failure case
  6168. }
  6169. \endcode
  6170. \sa wolfSSL_CertManagerDisableCRL
  6171. \sa wolfSSL_CertManagerDisableOCSP
  6172. */
  6173. int wolfSSL_DisableCRL(WOLFSSL* ssl);
  6174. /*!
  6175. \brief 失効検査の証明書
  6176. \return WOLFSSL_SUCCESS 関数とすべてのサブルーチンがエラーなしで実行された場合に返されます。
  6177. \return SSL_FATAL_ERROR サブルーチンの1つが正常に戻されない場合に返されます。
  6178. \return BAD_FUNC_ARG wolfssl_cert_managerまたはwolfssl構造がnullの場合
  6179. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  6180. \param path CRLファイルへのパスを保持する定数文字ポインタ。
  6181. \param type 証明書の種類を表す整数。
  6182. _Example_
  6183. \code
  6184. WOLFSSL* ssl = wolfSSL_new(ctx);
  6185. const char* crlPemDir;
  6186. if(wolfSSL_LoadCRL(ssl, crlPemDir, SSL_FILETYPE_PEM, 0) != SSL_SUCCESS){
  6187. // Failure case. Did not return SSL_SUCCESS.
  6188. }
  6189. \endcode
  6190. \sa wolfSSL_CertManagerLoadCRL
  6191. \sa wolfSSL_CertManagerEnableCRL
  6192. \sa LoadCRL
  6193. */
  6194. int wolfSSL_LoadCRL(WOLFSSL* ssl, const char* path, int type, int monitor);
  6195. /*!
  6196. \brief
  6197. \return SSL_SUCCESS 関数またはサブルーチンがエラーなしで実行された場合に返されます。wolfssl_cert_managerのCBMissingCRLメンバーが設定されています。
  6198. \return BAD_FUNC_ARG WOLFSSLまたはWOLFSSL_CERT_MANAGER構造体がNULLの場合に返されます。
  6199. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  6200. _Example_
  6201. \code
  6202. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
  6203. WOLFSSL* ssl = wolfSSL_new(ctx);
  6204. void cb(const char* url) // required signature
  6205. {
  6206. // Function body
  6207. }
  6208. int crlCb = wolfSSL_SetCRL_Cb(ssl, cb);
  6209. if(crlCb != SSL_SUCCESS){
  6210. // The callback was not set properly
  6211. }
  6212. \endcode
  6213. \sa CbMissingCRL
  6214. \sa wolfSSL_CertManagerSetCRL_Cb
  6215. */
  6216. int wolfSSL_SetCRL_Cb(WOLFSSL* ssl, CbMissingCRL cb);
  6217. /*!
  6218. \brief
  6219. \return SSL_SUCCESS 関数とサブルーチンがエラーなしで実行された場合に返されます。
  6220. \return BAD_FUNC_ARG この関数またはサブルーチンの引数が無効な引数値を受信した場合に返されます。
  6221. \return MEMORY_E 構造体やその他の変数にメモリを割り当てるエラーが発生した場合は返されます。
  6222. \return NOT_COMPILED_IN wolfsslがhane_ocspオプションでコンパイルされていない場合に返されます。
  6223. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  6224. _Example_
  6225. \code
  6226. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
  6227. WOLFSSL* ssl = wolfSSL_new(ctx);
  6228. int options; // initialize to option constant
  6229. int ret = wolfSSL_EnableOCSP(ssl, options);
  6230. if(ret != SSL_SUCCESS){
  6231. // OCSP is not enabled
  6232. }
  6233. \endcode
  6234. \sa wolfSSL_CertManagerEnableOCSP
  6235. */
  6236. int wolfSSL_EnableOCSP(WOLFSSL* ssl, int options);
  6237. /*!
  6238. \brief
  6239. \return SSL_SUCCESS 関数とそのサブルーチンがエラーなしで戻った場合に返されます。wolfssl_cert_manager構造体のOCSPENABLEDメンバーは正常に設定されました。
  6240. \return BAD_FUNC_ARG WolfSSL構造がNULLの場合に返されます。
  6241. _Example_
  6242. \code
  6243. WOLFSSL* ssl = wolfSSL_new(ctx);
  6244. if(wolfSSL_DisableOCSP(ssl) != SSL_SUCCESS){
  6245. // Returned with an error. Failure case in this block.
  6246. }
  6247. \endcode
  6248. \sa wolfSSL_CertManagerDisableOCSP
  6249. */
  6250. int wolfSSL_DisableOCSP(WOLFSSL*);
  6251. /*!
  6252. \brief wolfssl_cert_manager構造体。
  6253. \return SSL_SUCCESS 機能の実行に成功したことに戻ります。
  6254. \return BAD_FUNC_ARG wolfssl構造体がnullの場合、または未解決の引数がサブルーチンに渡された場合に返されます。
  6255. \return MEMORY_E サブルーチンにメモリを割り当てるエラーが発生した場合に返されます。
  6256. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  6257. _Example_
  6258. \code
  6259. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
  6260. WOLFSSL* ssl = wolfSSL_new(ctx);
  6261. char url[URLSZ];
  6262. ...
  6263. if(wolfSSL_SetOCSP_OverrideURL(ssl, url)){
  6264. // The override url is set to the new value
  6265. }
  6266. \endcode
  6267. \sa wolfSSL_CertManagerSetOCSPOverrideURL
  6268. */
  6269. int wolfSSL_SetOCSP_OverrideURL(WOLFSSL* ssl, const char* url);
  6270. /*!
  6271. \brief wolfssl_cert_manager構造体。
  6272. \return SSL_SUCCESS 関数がエラーなしで実行された場合に返されます。CMのOCSPIOCB、OCSPRESPFREECB、およびOCSPIOCTXメンバーが設定されています。
  6273. \return BAD_FUNC_ARG WOLFSSLまたはWOLFSSL_CERT_MANAGER構造がNULLの場合に返されます。
  6274. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  6275. \param ioCb CBocSpioを入力するための関数ポインタ。
  6276. \param respFreeCb 応答メモリを解放するための呼び出しであるCBocSpreSpFreeを入力するための関数ポインタ。
  6277. _Example_
  6278. \code
  6279. WOLFSSL* ssl = wolfSSL_new(ctx);
  6280. int OCSPIO_CB(void* , const char*, int , unsigned char* , int,
  6281. unsigned char**){ // must have this signature
  6282. // Function Body
  6283. }
  6284. void OCSPRespFree_CB(void* , unsigned char* ){ // must have this signature
  6285. // function body
  6286. }
  6287. void* ioCbCtx;
  6288. CbOCSPRespFree CB_OCSPRespFree;
  6289. if(wolfSSL_SetOCSP_Cb(ssl, OCSPIO_CB( pass args ), CB_OCSPRespFree,
  6290. ioCbCtx) != SSL_SUCCESS){
  6291. // Callback not set
  6292. }
  6293. \endcode
  6294. \sa wolfSSL_CertManagerSetOCSP_Cb
  6295. \sa CbOCSPIO
  6296. \sa CbOCSPRespFree
  6297. */
  6298. int wolfSSL_SetOCSP_Cb(WOLFSSL* ssl, CbOCSPIO ioCb, CbOCSPRespFree respFreeCb,
  6299. void* ioCbCtx);
  6300. /*!
  6301. \brief
  6302. \return SSL_SUCCESS この関数とそれがサブルーチンの場合はエラーなしで実行されます。
  6303. \return BAD_FUNC_ARG CTX構造体がNULLの場合、またはその他の点ではサブルーチンに無効な引数があった場合に返されます。
  6304. \return MEMORY_E 関数の実行中にメモリの割り当てエラーが発生した場合に返されます。
  6305. \return SSL_FAILURE wolfssl_cert_managerのCRLメンバーが正しく初期化されなかった場合に返されます。
  6306. \return NOT_COMPILED_IN wolfsslはhane_crlオプションでコンパイルされませんでした。
  6307. _Example_
  6308. \code
  6309. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
  6310. WOLFSSL* ssl = wolfSSL_new(ctx);
  6311. ...
  6312. if(wolfSSL_CTX_EnableCRL(ssl->ctx, options) != SSL_SUCCESS){
  6313. // The function failed
  6314. }
  6315. \endcode
  6316. \sa wolfSSL_CertManagerEnableCRL
  6317. \sa InitCRL
  6318. \sa wolfSSL_CTX_DisableCRL
  6319. */
  6320. int wolfSSL_CTX_EnableCRL(WOLFSSL_CTX* ctx, int options);
  6321. /*!
  6322. \brief
  6323. \return SSL_SUCCESS 関数がエラーなしで実行された場合に返されます。wolfssl_cert_manager構造体のCRLEnabledメンバーは0に設定されています。
  6324. \return BAD_FUNC_ARG CTX構造体またはCM構造体にNULL値がある場合に返されます。
  6325. _Example_
  6326. \code
  6327. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
  6328. WOLFSSL* ssl = wolfSSL_new(ctx);
  6329. ...
  6330. if(wolfSSL_CTX_DisableCRL(ssl->ctx) != SSL_SUCCESS){
  6331. // Failure case.
  6332. }
  6333. \endcode
  6334. \sa wolfSSL_CertManagerDisableCRL
  6335. */
  6336. int wolfSSL_CTX_DisableCRL(WOLFSSL_CTX* ctx);
  6337. /*!
  6338. \brief wolfssl_certmanagerLoadcr()。
  6339. \return SSL_SUCCESS - 関数とそのサブルーチンがエラーなしで実行された場合に返されます。
  6340. \return BAD_FUNC_ARG - この関数またはサブルーチンがNULL構造に渡された場合に返されます。
  6341. \return BAD_PATH_ERROR - パス変数がnullとして開くと戻ります。
  6342. \return MEMORY_E - メモリの割り当てが失敗した場合に返されます。
  6343. \param ctx wolfssl_ctx_new()を使用して作成されたwolfssl_ctx構造へのポインタ。
  6344. \param path 証明書へのパス。
  6345. \param type 証明書の種類を保持する整数変数。
  6346. _Example_
  6347. \code
  6348. WOLFSSL_CTX* ctx;
  6349. const char* path;
  6350. return wolfSSL_CTX_LoadCRL(ctx, path, SSL_FILETYPE_PEM, 0);
  6351. \endcode
  6352. \sa wolfSSL_CertManagerLoadCRL
  6353. \sa LoadCRL
  6354. */
  6355. int wolfSSL_CTX_LoadCRL(WOLFSSL_CTX* ctx, const char* path, int type, int monitor);
  6356. /*!
  6357. \brief wolfssl_certmanagersetCRL_CBを呼び出して、WolfSSL_CERT_MANAGER構造のメンバー。
  6358. \return SSL_SUCCESS 実行が成功するために返されました。WOLFSSL_CERT_MANAGER構造体のCBMSSINGCRLはCBに正常に設定されました。
  6359. \return BAD_FUNC_ARG wolfssl_ctxまたはwolfssl_cert_managerがNULLの場合に返されます。
  6360. \param ctx wolfssl_ctx_new()で作成されたwolfssl_ctx構造へのポインタ。
  6361. _Example_
  6362. \code
  6363. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
  6364. void cb(const char* url) // Required signature
  6365. {
  6366. // Function body
  6367. }
  6368. if (wolfSSL_CTX_SetCRL_Cb(ctx, cb) != SSL_SUCCESS){
  6369. // Failure case, cb was not set correctly.
  6370. }
  6371. \endcode
  6372. \sa wolfSSL_CertManagerSetCRL_Cb
  6373. \sa CbMissingCRL
  6374. */
  6375. int wolfSSL_CTX_SetCRL_Cb(WOLFSSL_CTX* ctx, CbMissingCRL cb);
  6376. /*!
  6377. \brief wolfsslの機能オプションの値が1つ以上のオプションで構成されている場合は、次のオプションを1つ以上にします.wolfssl_ocsp_enable - OCSPルックアップを有効にするwolfssl_ocsp_url_override - 証明書のURLの代わりにURLをオーバーライドします。オーバーライドURLは、wolfssl_ctx_setocsp_overrideURL()関数を使用して指定されます。この関数は、wolfsslがOCSPサポート(--enable-ocsp、#define hane_ocsp)でコンパイルされたときにのみOCSPオプションを設定します。
  6378. \return SSL_SUCCESS 成功したときに返されます。
  6379. \return SSL_FAILURE 失敗したときに返されます。
  6380. \return NOT_COMPILED_IN この関数が呼び出されたときに返されますが、wolfsslがコンパイルされたときにOCSPサポートは有効になっていませんでした。
  6381. \param ctx wolfssl_ctx_new()で作成されたSSLコンテキストへのポインタ。
  6382. _Example_
  6383. \code
  6384. WOLFSSL_CTX* ctx = 0;
  6385. ...
  6386. wolfSSL_CTX_OCSP_set_options(ctx, WOLFSSL_OCSP_ENABLE);
  6387. \endcode
  6388. \sa wolfSSL_CTX_OCSP_set_override_url
  6389. */
  6390. int wolfSSL_CTX_EnableOCSP(WOLFSSL_CTX* ctx, int options);
  6391. /*!
  6392. \brief wolfssl_cert_manager構造体のOCSPENABLEDメンバーに影響を与えます。
  6393. \return SSL_SUCCESS 関数がエラーなしで実行された場合に返されます。CMのOCSPENABLEDメンバーは無効になっています。
  6394. \return BAD_FUNC_ARG wolfssl_ctx構造がnullの場合に返されます。
  6395. _Example_
  6396. \code
  6397. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
  6398. WOLFSSL* ssl = wolfSSL_new(ctx);
  6399. ...
  6400. if(!wolfSSL_CTX_DisableOCSP(ssl->ctx)){
  6401. // OCSP is not disabled
  6402. }
  6403. \endcode
  6404. \sa wolfSSL_DisableOCSP
  6405. \sa wolfSSL_CertManagerDisableOCSP
  6406. */
  6407. int wolfSSL_CTX_DisableOCSP(WOLFSSL_CTX*);
  6408. /*!
  6409. \brief wolfssl_csp_url_overrideオプションがwolfssl_ctx_enableocspを使用して設定されていない限り、OCSPは個々の証明書にあるURLを使用します。
  6410. \return SSL_SUCCESS 成功したときに返されます。
  6411. \return SSL_FAILURE 失敗したときに返されます。
  6412. \return NOT_COMPILED_IN この関数が呼び出されたときに返されますが、wolfsslがコンパイルされたときにOCSPサポートは有効になっていませんでした。
  6413. \param ctx wolfssl_ctx_new()で作成されたSSLコンテキストへのポインタ。
  6414. _Example_
  6415. \code
  6416. WOLFSSL_CTX* ctx = 0;
  6417. ...
  6418. wolfSSL_CTX_OCSP_set_override_url(ctx, “custom-url-here”);
  6419. \endcode
  6420. \sa wolfSSL_CTX_OCSP_set_options
  6421. */
  6422. int wolfSSL_CTX_SetOCSP_OverrideURL(WOLFSSL_CTX* ctx, const char* url);
  6423. /*!
  6424. \brief
  6425. \return SSL_SUCCESS 関数が正常に実行された場合に返されます。CM内のOCSPIOCB、OCSPRESPFREECB、およびOCSPIOCTXメンバーは正常に設定されました。
  6426. \return BAD_FUNC_ARG wolfssl_ctxまたはwolfssl_cert_manager構造体がnullの場合に返されます。
  6427. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  6428. \param ioCb 関数ポインタであるCBocSpio型。
  6429. \param respFreeCb 関数ポインタであるCBocSprepSprepFree型。
  6430. _Example_
  6431. \code
  6432. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
  6433. CbOCSPIO ocspIOCb;
  6434. CbOCSPRespFree ocspRespFreeCb;
  6435. void* ioCbCtx;
  6436. int isSetOCSP = wolfSSL_CTX_SetOCSP_Cb(ctx, ocspIOCb,
  6437. ocspRespFreeCb, ioCbCtx);
  6438. if(isSetOCSP != SSL_SUCCESS){
  6439. // The function did not return successfully.
  6440. }
  6441. \endcode
  6442. \sa wolfSSL_CertManagerSetOCSP_Cb
  6443. \sa CbOCSPIO
  6444. \sa CbOCSPRespFree
  6445. */
  6446. int wolfSSL_CTX_SetOCSP_Cb(WOLFSSL_CTX* ctx,
  6447. CbOCSPIO ioCb, CbOCSPRespFree respFreeCb,
  6448. void* ioCbCtx);
  6449. /*!
  6450. \brief wolfssl_certmanagerEnableOcspStapling()。
  6451. \return SSL_SUCCESS エラーがなく、関数が正常に実行された場合に返されます。
  6452. \return BAD_FUNC_ARG wolfssl_ctx構造体がNULLまたはそうでない場合は、サブルーチンに渡された未解決の引数値があった場合に返されます。
  6453. \return MEMORY_E メモリ割り当てがある問題が発生した場合は返されます。
  6454. \return SSL_FAILURE OCSP構造体の初期化が失敗した場合に返されます。
  6455. \return NOT_COMPILED_IN wolfsslがhaber_certificate_status_requestオプションでコンパイルされていない場合に返されます。
  6456. _Example_
  6457. \code
  6458. WOLFSSL* ssl = WOLFSSL_new();
  6459. ssl->method.version; // set to desired protocol
  6460. ...
  6461. if(!wolfSSL_CTX_EnableOCSPStapling(ssl->ctx)){
  6462. // OCSP stapling is not enabled
  6463. }
  6464. \endcode
  6465. \sa wolfSSL_CertManagerEnableOCSPStapling
  6466. \sa InitOCSP
  6467. */
  6468. int wolfSSL_CTX_EnableOCSPStapling(WOLFSSL_CTX*);
  6469. /*!
  6470. \ingroup CertsKeys
  6471. \brief 通常、SSLハンドシェイクの最後に、WolfSSLは一時的なアレイを解放します。ハンドシェイクが始まる前にこの関数を呼び出すと、WolfSSLは一時的な配列を解放するのを防ぎます。Wolfssl_get_keys()またはPSKのヒントなどのものには、一時的な配列が必要になる場合があります。ユーザが一時的な配列で行われると、wolfssl_freearray()のいずれかが即座にリソースを解放することができ、あるいは、関連するSSLオブジェクトが解放されたときにリソースが解放されるようになる可能性がある。
  6472. \return none 返品不可。
  6473. _Example_
  6474. \code
  6475. WOLFSSL* ssl;
  6476. ...
  6477. wolfSSL_KeepArrays(ssl);
  6478. \endcode
  6479. \sa wolfSSL_FreeArrays
  6480. */
  6481. void wolfSSL_KeepArrays(WOLFSSL*);
  6482. /*!
  6483. \ingroup CertsKeys
  6484. \brief 通常、SSLハンドシェイクの最後に、WolfSSLは一時的なアレイを解放します。wolfssl_keeparrays()がハンドシェイクの前に呼び出された場合、WolfSSLは一時的な配列を解放しません。この関数は一時的な配列を明示的に解放し、ユーザーが一時的な配列で行われたときに呼び出されるべきであり、SSLオブジェクトがこれらのリソースを解放するのを待ったくない。
  6485. \return none 返品不可。
  6486. _Example_
  6487. \code
  6488. WOLFSSL* ssl;
  6489. ...
  6490. wolfSSL_FreeArrays(ssl);
  6491. \endcode
  6492. \sa wolfSSL_KeepArrays
  6493. */
  6494. void wolfSSL_FreeArrays(WOLFSSL*);
  6495. /*!
  6496. \brief 'ssl'パラメータに渡されたオブジェクト。これは、WolfSSLクライアントによってSNI拡張機能がClientHelloで送信され、WolfSSL ServerはServerHello + SNIまたはSNIミスマッチの場合は致命的なAlert Hello + SNIを応答します。
  6497. \return WOLFSSL_SUCCESS 成功すると。
  6498. \return BAD_FUNC_ARG 次のいずれかの場合で返されるエラーです.SSLはNULL、データはNULL、タイプは不明な値です。(下記参照)
  6499. \return MEMORY_E 十分なメモリがないときにエラーが返されます。
  6500. \param ssl wolfssl_new()で作成されたSSLオブジェクトへのポインタ。
  6501. \param type どの種類のサーバー名がデータに渡されたかを示します。既知の型は次のとおりです。enum {wolfssl_sni_host_name = 0};
  6502. \param data サーバー名データへのポインタ。
  6503. _Example_
  6504. \code
  6505. int ret = 0;
  6506. WOLFSSL_CTX* ctx = 0;
  6507. WOLFSSL* ssl = 0;
  6508. ctx = wolfSSL_CTX_new(method);
  6509. if (ctx == NULL) {
  6510. // context creation failed
  6511. }
  6512. ssl = wolfSSL_new(ctx);
  6513. if (ssl == NULL) {
  6514. // ssl creation failed
  6515. }
  6516. ret = wolfSSL_UseSNI(ssl, WOLFSSL_SNI_HOST_NAME, "www.yassl.com",
  6517. strlen("www.yassl.com"));
  6518. if (ret != WOLFSSL_SUCCESS) {
  6519. // sni usage failed
  6520. }
  6521. \endcode
  6522. \sa wolfSSL_new
  6523. \sa wolfSSL_CTX_UseSNI
  6524. */
  6525. int wolfSSL_UseSNI(WOLFSSL* ssl, unsigned char type,
  6526. const void* data, unsigned short size);
  6527. /*!
  6528. \brief SSLコンテキストから作成されたオブジェクトは 'ctx'パラメータに渡されました。これは、WolfSSLクライアントによってSNI拡張機能がClientHelloで送信され、WolfSSLサーバーはServerHello + SNIまたはSNIの不一致の場合には致命的なALERT Hello + SNIを応答します。
  6529. \return WOLFSSL_SUCCESS 成功すると。
  6530. \return BAD_FUNC_ARG 次のいずれかの場合で返されるエラーです.CTXはNULL、データはNULL、タイプは不明な値です。(下記参照)
  6531. \return MEMORY_E 十分なメモリがないときにエラーが返されます。
  6532. \param ctx wolfssl_ctx_new()で作成されたSSLコンテキストへのポインタ。
  6533. \param type どの種類のサーバー名がデータに渡されたかを示します。既知の型は次のとおりです。enum {wolfssl_sni_host_name = 0};
  6534. \param data サーバー名データへのポインタ。
  6535. _Example_
  6536. \code
  6537. int ret = 0;
  6538. WOLFSSL_CTX* ctx = 0;
  6539. ctx = wolfSSL_CTX_new(method);
  6540. if (ctx == NULL) {
  6541. // context creation failed
  6542. }
  6543. ret = wolfSSL_CTX_UseSNI(ctx, WOLFSSL_SNI_HOST_NAME, "www.yassl.com",
  6544. strlen("www.yassl.com"));
  6545. if (ret != WOLFSSL_SUCCESS) {
  6546. // sni usage failed
  6547. }
  6548. \endcode
  6549. \sa wolfSSL_CTX_new
  6550. \sa wolfSSL_UseSNI
  6551. */
  6552. int wolfSSL_CTX_UseSNI(WOLFSSL_CTX* ctx, unsigned char type,
  6553. const void* data, unsigned short size);
  6554. /*!
  6555. \brief 'ssl'パラメータに渡されたSSLオブジェクト内のサーバー名表示を使用したSSLセッションの動作。オプションを以下に説明します。
  6556. \return none いいえ返します。
  6557. \param ssl wolfssl_new()で作成されたSSLオブジェクトへのポインタ。
  6558. \param type どの種類のサーバー名がデータに渡されたかを示します。既知の型は次のとおりです。enum {wolfssl_sni_host_name = 0};
  6559. \param options 選択されたオプションを持つビット単位のセマフォ。利用可能なオプションは次のとおりです。enum {wolfssl_sni_continue_on_mismatch = 0x01、wolfssl_sni_answer_on_mismatch = 0x02};通常、サーバーは、クライアントによって提供されたホスト名がサーバーと表示されているホスト名がサーバーで提供されている場合、サーバーはhandshakeを中止します。
  6560. \param WOLFSSL_SNI_CONTINUE_ON_MISMATCH このオプションを設定すると、サーバーはセッションを中止する代わりにSNI応答を送信しません。
  6561. _Example_
  6562. \code
  6563. int ret = 0;
  6564. WOLFSSL_CTX* ctx = 0;
  6565. WOLFSSL* ssl = 0;
  6566. ctx = wolfSSL_CTX_new(method);
  6567. if (ctx == NULL) {
  6568. // context creation failed
  6569. }
  6570. ssl = wolfSSL_new(ctx);
  6571. if (ssl == NULL) {
  6572. // ssl creation failed
  6573. }
  6574. ret = wolfSSL_UseSNI(ssl, 0, "www.yassl.com", strlen("www.yassl.com"));
  6575. if (ret != WOLFSSL_SUCCESS) {
  6576. // sni usage failed
  6577. }
  6578. wolfSSL_SNI_SetOptions(ssl, WOLFSSL_SNI_HOST_NAME,
  6579. WOLFSSL_SNI_CONTINUE_ON_MISMATCH);
  6580. \endcode
  6581. \sa wolfSSL_new
  6582. \sa wolfSSL_UseSNI
  6583. \sa wolfSSL_CTX_SNI_SetOptions
  6584. */
  6585. void wolfSSL_SNI_SetOptions(WOLFSSL* ssl, unsigned char type,
  6586. unsigned char options);
  6587. /*!
  6588. \brief SSLセッションを使用したSSLオブジェクトのサーバ名指示を使用して、SSLコンテキストから作成されたSSLオブジェクトから作成されます。オプションを以下に説明します。
  6589. \return none いいえ返します。
  6590. \param ctx wolfssl_ctx_new()で作成されたSSLコンテキストへのポインタ。
  6591. \param type どの種類のサーバー名がデータに渡されたかを示します。既知の型は次のとおりです。enum {wolfssl_sni_host_name = 0};
  6592. \param options 選択されたオプションを持つビット単位のセマフォ。利用可能なオプションは次のとおりです。enum {wolfssl_sni_continue_on_mismatch = 0x01、wolfssl_sni_answer_on_mismatch = 0x02};通常、サーバーは、クライアントによって提供されたホスト名がサーバーと表示されているホスト名がサーバーで提供されている場合、サーバーはhandshakeを中止します。
  6593. \param WOLFSSL_SNI_CONTINUE_ON_MISMATCH このオプションを設定すると、サーバーはセッションを中止する代わりにSNI応答を送信しません。
  6594. _Example_
  6595. \code
  6596. int ret = 0;
  6597. WOLFSSL_CTX* ctx = 0;
  6598. ctx = wolfSSL_CTX_new(method);
  6599. if (ctx == NULL) {
  6600. // context creation failed
  6601. }
  6602. ret = wolfSSL_CTX_UseSNI(ctx, 0, "www.yassl.com", strlen("www.yassl.com"));
  6603. if (ret != WOLFSSL_SUCCESS) {
  6604. // sni usage failed
  6605. }
  6606. wolfSSL_CTX_SNI_SetOptions(ctx, WOLFSSL_SNI_HOST_NAME,
  6607. WOLFSSL_SNI_CONTINUE_ON_MISMATCH);
  6608. \endcode
  6609. \sa wolfSSL_CTX_new
  6610. \sa wolfSSL_CTX_UseSNI
  6611. \sa wolfSSL_SNI_SetOptions
  6612. */
  6613. void wolfSSL_CTX_SNI_SetOptions(WOLFSSL_CTX* ctx,
  6614. unsigned char type, unsigned char options);
  6615. /*!
  6616. \brief クライアントによってクライアントから提供された名前表示クライアントによって送信されたメッセージセッションを開始する。SNIを取得するためのコンテキストまたはセッション設定が必要ありません。
  6617. \return WOLFSSL_SUCCESS 成功すると。
  6618. \return BAD_FUNC_ARG このケースで返されるエラーは、次のいずれかの場合で返されます。バッファはNULL、BUFFERSZ <= 0、SNIはNULL、INOUTSZはNULLまたは<= 0です。
  6619. \return BUFFER_ERROR 不正なクライアントhelloメッセージがあるときにエラーが返されます。
  6620. \return INCOMPLETE_DATA 抽出を完了するのに十分なデータがない場合に返されるエラーです。
  6621. \param buffer クライアントから提供されたデータへのポインタ(クライアントhello)。
  6622. \param bufferSz クライアントhelloメッセージのサイズ。
  6623. \param type どの種類のサーバー名がバッファーから取得されているかを示します。既知の型は次のとおりです。enum {wolfssl_sni_host_name = 0};
  6624. \param sni 出力が保存される場所へのポインタ。
  6625. _Example_
  6626. \code
  6627. unsigned char buffer[1024] = {0};
  6628. unsigned char result[32] = {0};
  6629. int length = 32;
  6630. // read Client Hello to buffer...
  6631. ret = wolfSSL_SNI_GetFromBuffer(buffer, sizeof(buffer), 0, result, &length));
  6632. if (ret != WOLFSSL_SUCCESS) {
  6633. // sni retrieve failed
  6634. }
  6635. \endcode
  6636. \sa wolfSSL_UseSNI
  6637. \sa wolfSSL_CTX_UseSNI
  6638. \sa wolfSSL_SNI_GetRequest
  6639. */
  6640. int wolfSSL_SNI_GetFromBuffer(
  6641. const unsigned char* clientHello, unsigned int helloSz,
  6642. unsigned char type, unsigned char* sni, unsigned int* inOutSz);
  6643. /*!
  6644. \ingroup IO
  6645. \brief この関数はSNIオブジェクトのステータスを取得します。
  6646. \return value SNIがNULLでない場合、この関数はSNI構造体のステータスメンバーのバイト値を返します。
  6647. \return 0 SNIオブジェクトがNULLの場合
  6648. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  6649. _Example_
  6650. \code
  6651. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
  6652. WOLFSSL* ssl = wolfSSL_new(ctx);
  6653. #define AssertIntEQ(x, y) AssertInt(x, y, ==, !=)
  6654. Byte type = WOLFSSL_SNI_HOST_NAME;
  6655. char* request = (char*)&type;
  6656. AssertIntEQ(WOLFSSL_SNI_NO_MATCH, wolfSSL_SNI_Status(ssl, type));
  6657. \endcode
  6658. \sa TLSX_SNI_Status
  6659. \sa TLSX_SNI_find
  6660. \sa TLSX_Find
  6661. */
  6662. unsigned char wolfSSL_SNI_Status(WOLFSSL* ssl, unsigned char type);
  6663. /*!
  6664. \brief SSLセッションでクライアントによって提供されるサーバー名の表示。
  6665. \return size 提供されたSNIデータのサイズ。
  6666. \param ssl wolfssl_new()で作成されたSSLオブジェクトへのポインタ。
  6667. \param type どの種類のサーバー名がデータ内で取得されているかを示します。既知の型は次のとおりです。enum {wolfssl_sni_host_name = 0};
  6668. _Example_
  6669. \code
  6670. int ret = 0;
  6671. WOLFSSL_CTX* ctx = 0;
  6672. WOLFSSL* ssl = 0;
  6673. ctx = wolfSSL_CTX_new(method);
  6674. if (ctx == NULL) {
  6675. // context creation failed
  6676. }
  6677. ssl = wolfSSL_new(ctx);
  6678. if (ssl == NULL) {
  6679. // ssl creation failed
  6680. }
  6681. ret = wolfSSL_UseSNI(ssl, 0, "www.yassl.com", strlen("www.yassl.com"));
  6682. if (ret != WOLFSSL_SUCCESS) {
  6683. // sni usage failed
  6684. }
  6685. if (wolfSSL_accept(ssl) == SSL_SUCCESS) {
  6686. void *data = NULL;
  6687. unsigned short size = wolfSSL_SNI_GetRequest(ssl, 0, &data);
  6688. }
  6689. \endcode
  6690. \sa wolfSSL_UseSNI
  6691. \sa wolfSSL_CTX_UseSNI
  6692. */
  6693. unsigned short wolfSSL_SNI_GetRequest(WOLFSSL *ssl,
  6694. unsigned char type, void** data);
  6695. /*!
  6696. \ingroup Setup
  6697. \brief wolfsslセッションにALPNを設定します。
  6698. \return WOLFSSL_SUCCESS: 成功すると。
  6699. \return BAD_FUNC_ARG SSLまたはPROTOCOL_NAME_LISTがNULLまたはPROTOCOL_NAME_LISTSZが大きすぎたり、オプションがサポートされていないものを含みます。
  6700. \return MEMORY_ERROR プロトコルリストのメモリの割り当て中にエラーが発生しました。
  6701. \return SSL_FAILURE 失敗すると。
  6702. \param ssl 使用するWolfSSLセッション。
  6703. \param protocol_name_list 使用するプロトコル名のリスト。カンマ区切り文字列が必要です。
  6704. \param protocol_name_listSz プロトコル名のリストのサイズ。
  6705. _Example_
  6706. \code
  6707. wolfSSL_Init();
  6708. WOLFSSL_CTX* ctx;
  6709. WOLFSSL* ssl;
  6710. WOLFSSL_METHOD method = // Some wolfSSL method
  6711. ctx = wolfSSL_CTX_new(method);
  6712. ssl = wolfSSL_new(ctx);
  6713. char alpn_list[] = {};
  6714. if (wolfSSL_UseALPN(ssl, alpn_list, sizeof(alpn_list),
  6715. WOLFSSL_APN_FAILED_ON_MISMATCH) != WOLFSSL_SUCCESS)
  6716. {
  6717. // Error setting session ticket
  6718. }
  6719. \endcode
  6720. \sa TLSX_UseALPN
  6721. */
  6722. int wolfSSL_UseALPN(WOLFSSL* ssl, char *protocol_name_list,
  6723. unsigned int protocol_name_listSz,
  6724. unsigned char options);
  6725. /*!
  6726. \ingroup TLS
  6727. \brief この関数は、サーバーによって設定されたプロトコル名を取得します。
  6728. \return SSL_SUCCESS エラーが投げられていない正常な実行に戻りました。
  6729. \return SSL_FATAL_ERROR 拡張子が見つからなかった場合、またはピアとプロトコルが一致しなかった場合に返されます。2つ以上のプロトコル名が受け入れられている場合は、スローされたエラーもあります。
  6730. \return SSL_ALPN_NOT_FOUND ピアとプロトコルの一致が見つからなかったことを示す返されました。
  6731. \return BAD_FUNC_ARG 関数に渡されたnull引数があった場合に返されます。
  6732. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  6733. \param protocol_name プロトコル名を表すCHARへのポインタは、ALPN構造に保持されます。
  6734. _Example_
  6735. \code
  6736. WOLFSSL_CTX* ctx = WOLFSSL_CTX_new( protocol method );
  6737. WOLFSSL* ssl = WOLFSSL_new(ctx);
  6738. ...
  6739. int err;
  6740. char* protocol_name = NULL;
  6741. Word16 protocol_nameSz = 0;
  6742. err = wolfSSL_ALPN_GetProtocol(ssl, &protocol_name, &protocol_nameSz);
  6743. if(err == SSL_SUCCESS){
  6744. // Sent ALPN protocol
  6745. }
  6746. \endcode
  6747. \sa TLSX_ALPN_GetRequest
  6748. \sa TLSX_Find
  6749. */
  6750. int wolfSSL_ALPN_GetProtocol(WOLFSSL* ssl, char **protocol_name,
  6751. unsigned short *size);
  6752. /*!
  6753. \ingroup TLS
  6754. \brief この関数は、alpn_client_listデータをSSLオブジェクトからバッファにコピーします。
  6755. \return SSL_SUCCESS 関数がエラーなしで実行された場合に返されます。SSLオブジェクトのALPN_CLIENT_LISTメンバーがLISTパラメータにコピーされました。
  6756. \return BAD_FUNC_ARG listまたはlistszパラメーターがnullの場合に返されます。
  6757. \return BUFFER_ERROR リストバッファに問題がある場合は(NULLまたはサイズが0の場合)に問題がある場合は返されます。
  6758. \return MEMORY_ERROR メモリを動的に割り当てる問題がある場合に返されます。
  6759. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  6760. \param list バッファへのポインタ。SSLオブジェクトからのデータがコピーされます。
  6761. _Example_
  6762. \code
  6763. #import <wolfssl/ssl.h>
  6764. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method);
  6765. WOLFSSL* ssl = wolfSSL_new(ctx);
  6766. #ifdef HAVE_ALPN
  6767. char* list = NULL;
  6768. word16 listSz = 0;
  6769. err = wolfSSL_ALPN_GetPeerProtocol(ssl, &list, &listSz);
  6770. if(err == SSL_SUCCESS){
  6771. List of protocols names sent by client
  6772. }
  6773. \endcode
  6774. \sa wolfSSL_UseALPN
  6775. */
  6776. int wolfSSL_ALPN_GetPeerProtocol(WOLFSSL* ssl, char **list,
  6777. unsigned short *listSz);
  6778. /*!
  6779. \brief 'ssl'パラメータに渡されたSSLオブジェクト内の最大フラグメント長。これは、最大フラグメント長拡張機能がWolfSSLクライアントによってClientHelloで送信されることを意味します。
  6780. \return SSL_SUCCESS 成功すると。
  6781. \return BAD_FUNC_ARG 次のいずれかの場合に返されるエラーです.SSLはNULL、MFLは範囲外です。
  6782. \return MEMORY_E 十分なメモリがないときにエラーが返されます。
  6783. \param ssl wolfssl_new()で作成されたSSLオブジェクトへのポインタ。
  6784. _Example_
  6785. \code
  6786. int ret = 0;
  6787. WOLFSSL_CTX* ctx = 0;
  6788. WOLFSSL* ssl = 0;
  6789. ctx = wolfSSL_CTX_new(method);
  6790. if (ctx == NULL) {
  6791. // context creation failed
  6792. }
  6793. ssl = wolfSSL_new(ctx);
  6794. if (ssl == NULL) {
  6795. // ssl creation failed
  6796. }
  6797. ret = wolfSSL_UseMaxFragment(ssl, WOLFSSL_MFL_2_11);
  6798. if (ret != 0) {
  6799. // max fragment usage failed
  6800. }
  6801. \endcode
  6802. \sa wolfSSL_new
  6803. \sa wolfSSL_CTX_UseMaxFragment
  6804. */
  6805. int wolfSSL_UseMaxFragment(WOLFSSL* ssl, unsigned char mfl);
  6806. /*!
  6807. \brief SSLコンテキストから作成されたSSLオブジェクトの最大フラグメント長さ 'ctx'パラメータに渡されました。これは、最大フラグメント長拡張機能がWolfSSLクライアントによってClientHelloで送信されることを意味します。
  6808. \return SSL_SUCCESS 成功すると。
  6809. \return BAD_FUNC_ARG 次のいずれかの場合に返されるエラーです.CTXはNULL、MFLは範囲外です。
  6810. \return MEMORY_E 十分なメモリがないときにエラーが返されます。
  6811. \param ctx wolfssl_ctx_new()で作成されたSSLコンテキストへのポインタ。
  6812. _Example_
  6813. \code
  6814. int ret = 0;
  6815. WOLFSSL_CTX* ctx = 0;
  6816. ctx = wolfSSL_CTX_new(method);
  6817. if (ctx == NULL) {
  6818. // context creation failed
  6819. }
  6820. ret = wolfSSL_CTX_UseMaxFragment(ctx, WOLFSSL_MFL_2_11);
  6821. if (ret != 0) {
  6822. // max fragment usage failed
  6823. }
  6824. \endcode
  6825. \sa wolfSSL_CTX_new
  6826. \sa wolfSSL_UseMaxFragment
  6827. */
  6828. int wolfSSL_CTX_UseMaxFragment(WOLFSSL_CTX* ctx, unsigned char mfl);
  6829. /*!
  6830. \brief 'ssl'パラメータに渡されたSSLオブジェクト内のtruncated HMAC。これは、切り捨てられたHMAC拡張機能がWolfSSLクライアントによってClientHelloで送信されることを意味します。
  6831. \return SSL_SUCCESS 成功すると。
  6832. \return BAD_FUNC_ARG 次のいずれかの場合に返されるエラーです.SSLはNULLです
  6833. \return MEMORY_E 十分なメモリがないときにエラーが返されます。
  6834. _Example_
  6835. \code
  6836. int ret = 0;
  6837. WOLFSSL_CTX* ctx = 0;
  6838. WOLFSSL* ssl = 0;
  6839. ctx = wolfSSL_CTX_new(method);
  6840. if (ctx == NULL) {
  6841. // context creation failed
  6842. }
  6843. ssl = wolfSSL_new(ctx);
  6844. if (ssl == NULL) {
  6845. // ssl creation failed
  6846. }
  6847. ret = wolfSSL_UseTruncatedHMAC(ssl);
  6848. if (ret != 0) {
  6849. // truncated HMAC usage failed
  6850. }
  6851. \endcode
  6852. \sa wolfSSL_new
  6853. \sa wolfSSL_CTX_UseMaxFragment
  6854. */
  6855. int wolfSSL_UseTruncatedHMAC(WOLFSSL* ssl);
  6856. /*!
  6857. \brief 'ctx'パラメータに渡されたSSLコンテキストから作成されたSSLオブジェクトのためのTruncated HMAC。これは、切り捨てられたHMAC拡張機能がWolfSSLクライアントによってClientHelloで送信されることを意味します。
  6858. \return SSL_SUCCESS 成功すると。
  6859. \return BAD_FUNC_ARG 次のいずれかの場合に返されるエラーです.CTXはNULL
  6860. \return MEMORY_E 十分なメモリがないときにエラーが返されます。
  6861. _Example_
  6862. \code
  6863. int ret = 0;
  6864. WOLFSSL_CTX* ctx = 0;
  6865. ctx = wolfSSL_CTX_new(method);
  6866. if (ctx == NULL) {
  6867. // context creation failed
  6868. }
  6869. ret = wolfSSL_CTX_UseTruncatedHMAC(ctx);
  6870. if (ret != 0) {
  6871. // truncated HMAC usage failed
  6872. }
  6873. \endcode
  6874. \sa wolfSSL_CTX_new
  6875. \sa wolfSSL_UseMaxFragment
  6876. */
  6877. int wolfSSL_CTX_UseTruncatedHMAC(WOLFSSL_CTX* ctx);
  6878. /*!
  6879. \brief OCSPで提示された証明書失効チェックのコストを下げます。
  6880. \return SSL_SUCCESS tlsx_usecertificateStatusRequestがエラーなしで実行された場合に返されます。
  6881. \return MEMORY_E メモリの割り当てにエラーがある場合は返されます。
  6882. \return BAD_FUNC_ARG NULLまたはその他の点では、関数に渡された値が渡される引数がある場合に返されます。
  6883. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  6884. \param status_type tlsx_usecertificateSrequest()に渡され、CertificateStatusRequest構造体に格納されているバイトタイプ。
  6885. _Example_
  6886. \code
  6887. WOLFSSL* ssl = wolfSSL_new(ctx);
  6888. if (wolfSSL_UseOCSPStapling(ssl, WOLFSSL_CSR2_OCSP,
  6889. WOLFSSL_CSR2_OCSP_USE_NONCE) != SSL_SUCCESS){
  6890. // Failed case.
  6891. }
  6892. \endcode
  6893. \sa TLSX_UseCertificateStatusRequest
  6894. \sa wolfSSL_CTX_UseOCSPStapling
  6895. */
  6896. int wolfSSL_UseOCSPStapling(WOLFSSL* ssl,
  6897. unsigned char status_type, unsigned char options);
  6898. /*!
  6899. \brief
  6900. \return SSL_SUCCESS 関数とサブルーチンがエラーなしで実行された場合に返されます。
  6901. \return BAD_FUNC_ARG 未解決の値がサブルーチンに渡された場合、wolfssl_ctx構造体がNULLまたはそうでない場合は返されます。
  6902. \return MEMORY_E 関数またはサブルーチンがメモリを正しく割り振ることができなかった場合に返されます。
  6903. \param ctx wolfssl_ctx_new()を使用して作成されたwolfssl_ctx構造へのポインタ。
  6904. \param status_type tlsx_usecertificateSrequest()に渡され、CertificateStatusRequest構造体に格納されているバイトタイプ。
  6905. _Example_
  6906. \code
  6907. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
  6908. WOLFSSL* ssl = wolfSSL_new(ctx);
  6909. byte statusRequest = 0; // Initialize status request
  6910. switch(statusRequest){
  6911. case WOLFSSL_CSR_OCSP:
  6912. if(wolfSSL_CTX_UseOCSPStapling(ssl->ctx, WOLFSSL_CSR_OCSP,
  6913. WOLF_CSR_OCSP_USE_NONCE) != SSL_SUCCESS){
  6914. // UseCertificateStatusRequest failed
  6915. }
  6916. // Continue switch cases
  6917. \endcode
  6918. \sa wolfSSL_UseOCSPStaplingV2
  6919. \sa wolfSSL_UseOCSPStapling
  6920. \sa TLSX_UseCertificateStatusRequest
  6921. */
  6922. int wolfSSL_CTX_UseOCSPStapling(WOLFSSL_CTX* ctx,
  6923. unsigned char status_type, unsigned char options);
  6924. /*!
  6925. \brief
  6926. \return SSL_SUCCESS - 関数とサブルーチンがエラーなしで実行された場合に返されます。
  6927. \return MEMORY_E - メモリエラーの割り当てがあった場合に返されます。
  6928. \return BAD_FUNC_ARG - NULLまたはそれ以外の場合は解読されていない引数が関数またはサブルーチンに渡された場合に返されます。
  6929. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  6930. \param status_type OCSPステータスタイプをロードするバイトタイプ。
  6931. _Example_
  6932. \code
  6933. WOLFSSL* ssl = wolfSSL_new(ctx);
  6934. ...
  6935. if (wolfSSL_UseOCSPStaplingV2(ssl, WOLFSSL_CSR2_OCSP_MULTI, 0) != SSL_SUCCESS){
  6936. // Did not execute properly. Failure case code block.
  6937. }
  6938. \endcode
  6939. \sa TLSX_UseCertificatStatusRequestV2
  6940. \sa wolfSSL_SNI_SetOptions
  6941. \sa wolfSSL_CTX_SNI_SetOptions
  6942. */
  6943. int wolfSSL_UseOCSPStaplingV2(WOLFSSL* ssl,
  6944. unsigned char status_type, unsigned char options);
  6945. /*!
  6946. \brief OCSPステイプルのために。
  6947. \return SSL_SUCCESS 関数とサブルーチンがエラーなしで実行された場合。
  6948. \return BAD_FUNC_ARG wolfssl_ctx構造がnullの場合、または側数変数がクライアント側ではない場合に返されます。
  6949. \return MEMORY_E メモリの割り当てが失敗した場合に返されます。
  6950. \param ctx wolfssl_ctx_new()を使用して作成されたwolfssl_ctx構造へのポインタ。
  6951. \param status_type CertificatStatusRequest構造体にあるバイトタイプで、wolfssl_csr2_ocspまたはwolfssl_csr2_ocsp_multiでなければなりません。
  6952. _Example_
  6953. \code
  6954. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
  6955. byte status_type;
  6956. byte options;
  6957. ...
  6958. if(wolfSSL_CTX_UseOCSPStaplingV2(ctx, status_type, options); != SSL_SUCCESS){
  6959. // Failure case.
  6960. }
  6961. \endcode
  6962. \sa TLSX_UseCertificateStatusRequestV2
  6963. \sa wc_RNG_GenerateBlock
  6964. \sa TLSX_Push
  6965. */
  6966. int wolfSSL_CTX_UseOCSPStaplingV2(WOLFSSL_CTX* ctx,
  6967. unsigned char status_type, unsigned char options);
  6968. /*!
  6969. \brief サポートされている楕円曲線拡張子は、 'SSL'パラメータに渡されたSSLオブジェクトでサポートされています。これは、サポートされているカーブがWolfSSLクライアントによってClientHelloで送信されることを意味します。この機能は複数の曲線を有効にするために複数の時間と呼ぶことができます。
  6970. \return SSL_SUCCESS 成功すると。
  6971. \return BAD_FUNC_ARG 次のいずれかの場合に返されるエラーです.SSLはNULLです。名前は未知の値です。(下記参照)
  6972. \return MEMORY_E 十分なメモリがないときにエラーが返されます。
  6973. \param ssl wolfssl_new()で作成されたSSLオブジェクトへのポインタ。
  6974. _Example_
  6975. \code
  6976. int ret = 0;
  6977. WOLFSSL_CTX* ctx = 0;
  6978. WOLFSSL* ssl = 0;
  6979. ctx = wolfSSL_CTX_new(method);
  6980. if (ctx == NULL) {
  6981. // context creation failed
  6982. }
  6983. ssl = wolfSSL_new(ctx);
  6984. if (ssl == NULL) {
  6985. // ssl creation failed
  6986. }
  6987. ret = wolfSSL_UseSupportedCurve(ssl, WOLFSSL_ECC_SECP256R1);
  6988. if (ret != 0) {
  6989. // Elliptic Curve Extension usage failed
  6990. }
  6991. \endcode
  6992. \sa wolfSSL_CTX_new
  6993. \sa wolfSSL_CTX_UseSupportedCurve
  6994. */
  6995. int wolfSSL_UseSupportedCurve(WOLFSSL* ssl, word16 name);
  6996. /*!
  6997. \brief サポートされている楕円曲線は、 'ctx'パラメータに渡されたSSLコンテキストから作成されたSSLオブジェクトの拡張子です。これは、サポートされているカーブがWolfSSLクライアントによってClientHelloで送信されることを意味します。この機能は複数の曲線を有効にするために複数の時間と呼ぶことができます。
  6998. \return SSL_SUCCESS 成功すると。
  6999. \return BAD_FUNC_ARG 次のいずれかの場合に返されるエラーです.CTXはNULL、名前は未知の値です。(下記参照)
  7000. \return MEMORY_E 十分なメモリがないときにエラーが返されます。
  7001. \param ctx wolfssl_ctx_new()で作成されたSSLコンテキストへのポインタ。
  7002. _Example_
  7003. \code
  7004. int ret = 0;
  7005. WOLFSSL_CTX* ctx = 0;
  7006. ctx = wolfSSL_CTX_new(method);
  7007. if (ctx == NULL) {
  7008. // context creation failed
  7009. }
  7010. ret = wolfSSL_CTX_UseSupportedCurve(ctx, WOLFSSL_ECC_SECP256R1);
  7011. if (ret != 0) {
  7012. // Elliptic Curve Extension usage failed
  7013. }
  7014. \endcode
  7015. \sa wolfSSL_CTX_new
  7016. \sa wolfSSL_UseSupportedCurve
  7017. */
  7018. int wolfSSL_CTX_UseSupportedCurve(WOLFSSL_CTX* ctx,
  7019. word16 name);
  7020. /*!
  7021. \ingroup IO
  7022. \brief この関数は、供給されたWOLFSSL構造の安全な再交渉を強制します。これはお勧めできません。
  7023. \return SSL_SUCCESS 安全な再ネゴシエーションを正常に設定します。
  7024. \return BAD_FUNC_ARG SSLがNULLの場合、エラーを返します。
  7025. \return MEMORY_E 安全な再交渉のためにメモリを割り当てることができない場合、エラーを返します。
  7026. _Example_
  7027. \code
  7028. wolfSSL_Init();
  7029. WOLFSSL_CTX* ctx;
  7030. WOLFSSL* ssl;
  7031. WOLFSSL_METHOD method = // Some wolfSSL method
  7032. ctx = wolfSSL_CTX_new(method);
  7033. ssl = wolfSSL_new(ctx);
  7034. if(wolfSSL_UseSecureRenegotiation(ssl) != SSL_SUCCESS)
  7035. {
  7036. // Error setting secure renegotiation
  7037. }
  7038. \endcode
  7039. \sa TLSX_Find
  7040. \sa TLSX_UseSecureRenegotiation
  7041. */
  7042. int wolfSSL_UseSecureRenegotiation(WOLFSSL* ssl);
  7043. /*!
  7044. \ingroup IO
  7045. \brief この関数は安全な再交渉ハンドシェイクを実行します。これは、WolfSSLがこの機能を妨げるように強制されます。
  7046. \return SSL_SUCCESS 関数がエラーなしで実行された場合に返されます。
  7047. \return BAD_FUNC_ARG wolfssl構造がnullまたはそうでなければ、許容できない引数がサブルーチンに渡された場合に返されます。
  7048. \return SECURE_RENEGOTIATION_E ハンドシェイクを再ネゴシエーションすることにエラーが発生した場合は返されます。
  7049. \return SSL_FATAL_ERROR サーバーまたはクライアント構成にエラーが発生した場合は、再ネゴシエーションが完了できなかった場合に返されます。wolfssl_negotiate()を参照してください。
  7050. _Example_
  7051. \code
  7052. WOLFSSL* ssl = wolfSSL_new(ctx);
  7053. ...
  7054. if(wolfSSL_Rehandshake(ssl) != SSL_SUCCESS){
  7055. // There was an error and the rehandshake is not successful.
  7056. }
  7057. \endcode
  7058. \sa wolfSSL_negotiate
  7059. \sa wc_InitSha512
  7060. \sa wc_InitSha384
  7061. \sa wc_InitSha256
  7062. \sa wc_InitSha
  7063. \sa wc_InitMd5
  7064. */
  7065. int wolfSSL_Rehandshake(WOLFSSL* ssl);
  7066. /*!
  7067. \ingroup IO
  7068. \brief セッションチケットを使用するようにWolfSSL構造を強制します。定数hous_session_ticketを定義し、定数NO_WOLFSSL_CLIENTをこの関数を使用するように定義しないでください。
  7069. \return SSL_SUCCESS セッションチケットを使用したセットに成功しました。
  7070. \return BAD_FUNC_ARG SSLがNULLの場合に返されます。
  7071. \return MEMORY_E セッションチケットを設定するためのメモリの割り当て中にエラーが発生しました。
  7072. _Example_
  7073. \code
  7074. wolfSSL_Init();
  7075. WOLFSSL_CTX* ctx;
  7076. WOLFSSL* ssl;
  7077. WOLFSSL_METHOD method = // Some wolfSSL method
  7078. ctx = wolfSSL_CTX_new(method);
  7079. ssl = wolfSSL_new(ctx);
  7080. if(wolfSSL_UseSessionTicket(ssl) != SSL_SUCCESS)
  7081. {
  7082. // Error setting session ticket
  7083. }
  7084. \endcode
  7085. \sa TLSX_UseSessionTicket
  7086. */
  7087. int wolfSSL_UseSessionTicket(WOLFSSL* ssl);
  7088. /*!
  7089. \ingroup Setup
  7090. \brief この関数は、セッションチケットを使用するようにWolfSSLコンテキストを設定します。
  7091. \return SSL_SUCCESS 関数は正常に実行されます。
  7092. \return BAD_FUNC_ARG CTXがNULLの場合に返されます。
  7093. \return MEMORY_E 内部関数内のメモリの割り当て中にエラーが発生しました。
  7094. _Example_
  7095. \code
  7096. wolfSSL_Init();
  7097. WOLFSSL_CTX* ctx;
  7098. WOLFSSL_METHOD method = // Some wolfSSL method ;
  7099. ctx = wolfSSL_CTX_new(method);
  7100. if(wolfSSL_CTX_UseSessionTicket(ctx) != SSL_SUCCESS)
  7101. {
  7102. // Error setting session ticket
  7103. }
  7104. \endcode
  7105. \sa TLSX_UseSessionTicket
  7106. */
  7107. int wolfSSL_CTX_UseSessionTicket(WOLFSSL_CTX* ctx);
  7108. /*!
  7109. \ingroup IO
  7110. \brief この機能は、セッション構造のチケットメンバーをバッファにコピーします。
  7111. \return SSL_SUCCESS 関数がエラーなしで実行された場合に返されます。
  7112. \return BAD_FUNC_ARG 引数の1つがNULLの場合、またはbufsz引数が0の場合に返されます。
  7113. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  7114. \param buf メモリバッファを表すバイトポインタ。
  7115. _Example_
  7116. \code
  7117. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
  7118. WOLFSSL* ssl = wolfSSL_new(ctx);
  7119. byte* buf;
  7120. word32 bufSz; // Initialize with buf size
  7121. if(wolfSSL_get_SessionTicket(ssl, buf, bufSz) <= 0){
  7122. // Nothing was written to the buffer
  7123. } else {
  7124. // the buffer holds the content from ssl->session->ticket
  7125. }
  7126. \endcode
  7127. \sa wolfSSL_UseSessionTicket
  7128. \sa wolfSSL_set_SessionTicket
  7129. */
  7130. int wolfSSL_get_SessionTicket(WOLFSSL* ssl, unsigned char* buf, word32* bufSz);
  7131. /*!
  7132. \ingroup IO
  7133. \brief この関数は、WolfSSL構造体内のwolfssl_session構造体のチケットメンバーを設定します。関数に渡されたバッファはメモリにコピーされます。
  7134. \return SSL_SUCCESS 機能の実行に成功したことに戻ります。関数はエラーなしで返されました。
  7135. \return BAD_FUNC_ARG WolfSSL構造がNULLの場合に返されます。BUF引数がNULLの場合は、これはスローされますが、bufsz引数はゼロではありません。
  7136. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  7137. \param buf セッション構造のチケットメンバーにロードされるバイトポインタ。
  7138. _Example_
  7139. \code
  7140. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
  7141. WOLFSSL* ssl = wolfSSL_new(ctx);
  7142. byte* buffer; // File to load
  7143. word32 bufSz;
  7144. ...
  7145. if(wolfSSL_KeepArrays(ssl, buffer, bufSz) != SSL_SUCCESS){
  7146. // There was an error loading the buffer to memory.
  7147. }
  7148. \endcode
  7149. \sa wolfSSL_set_SessionTicket_cb
  7150. */
  7151. int wolfSSL_set_SessionTicket(WOLFSSL* ssl, const unsigned char* buf,
  7152. word32 bufSz);
  7153. /*!
  7154. \brief CallbackSessionTicketは、int(* callbacksessionTicket)(wolfssl *、const unsigned char *、int、void *)の関数ポインタです。
  7155. \return SSL_SUCCESS 関数がエラーなしで実行された場合に返されます。
  7156. \return BAD_FUNC_ARG WolfSSL構造がNULLの場合に返されます。
  7157. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  7158. \param cb Type CallbackSessionTicketへの関数ポインタ。
  7159. _Example_
  7160. \code
  7161. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
  7162. WOLFSSL* ssl = wolfSSL_new(ctx);
  7163. int sessionTicketCB(WOLFSSL* ssl, const unsigned char* ticket, int ticketSz,
  7164. void* ctx){ … }
  7165. wolfSSL_set_SessionTicket_cb(ssl, sessionTicketCB, (void*)”initial session”);
  7166. \endcode
  7167. \sa wolfSSL_set_SessionTicket
  7168. \sa CallbackSessionTicket
  7169. \sa sessionTicketCB
  7170. */
  7171. int wolfSSL_set_SessionTicket_cb(WOLFSSL* ssl,
  7172. CallbackSessionTicket cb, void* ctx);
  7173. /*!
  7174. \brief RFC 5077で指定されているセッションチケットをサポートするためのサーバーが。
  7175. \return SSL_SUCCESS セッションを正常に設定すると返されます。
  7176. \return BAD_FUNC_ARG 失敗した場合に返されます。これは、無効な引数を関数に渡すことによって発生します。
  7177. \param ctx wolfssl_ctx_new()で作成されたwolfssl_ctxオブジェクトへのポインタ。
  7178. \param cb セッションチケットを暗号化/復号化するためのユーザーコールバック関数
  7179. \param ssl(Callback) WOLFSSL_NEW()で作成されたWolfSSLオブジェクトへのポインタ
  7180. \param key_name(Callback) このチケットコンテキストの一意のキー名はランダムに生成されるべきです
  7181. \param iv(Callback) ユニークなIVこのチケットの場合、最大128ビット、ランダムに生成されるべきです
  7182. \param mac(Callback) このチケットの最大256ビットMAC
  7183. \param enc(Callback) この暗号化パラメータがtrueの場合、ユーザーはキーコード、IV、Macを記入し、チケットを長さのインレルの範囲内に暗号化し、結果として生じる出力長を* outreenに設定する必要があります。 wolfssl_ticket_ret_okを返す暗号化が成功したことをWolfSSLに指示します。この暗号化パラメータがfalseの場合、key_name、iv、およびmacを使用して、リングインレーンの範囲内のチケットの復号化を実行する必要があります。結果の復号長は* outreenに設定する必要があります。 wolfssl_ticket_ret_okを返すと、復号化されたチケットの使用を続行するようにWolfSSLに指示します。 wolfssl_ticket_ret_createを返すと、復号化されたチケットを使用するだけでなく、クライアントに送信するための新しいものを生成するように指示し、最近ロールされている場合に役立つ、フルハンドシェイクを強制したくない。 wolfssl_ticket_ret_rejectを返すと、WolfSSLにこのチケットを拒否し、フルハンドシェイクを実行し、通常のセッション再開のための新しい標準セッションIDを作成します。 wolfssl_ticket_ret_fatalを返すと、致命的なエラーで接続の試みを終了するようにWolfSSLに指示します。
  7184. \param ticket(Callback) 暗号化チケットの入出力バッファ。ENCパラメータを参照してください
  7185. \param inLen(Callback) チケットパラメータの入力長
  7186. \param outLen(Callback) チケットパラメータの結果の出力長。コールバックoutlenを入力すると、チケットバッファで使用可能な最大サイズが表示されます。
  7187. _Example_
  7188. \code
  7189. See wolfssl/test.h myTicketEncCb() used by the example
  7190. server and example echoserver.
  7191. \endcode
  7192. \sa wolfSSL_CTX_set_TicketHint
  7193. \sa wolfSSL_CTX_set_TicketEncCtx
  7194. */
  7195. int wolfSSL_CTX_set_TicketEncCb(WOLFSSL_CTX* ctx,
  7196. SessionTicketEncCb);
  7197. /*!
  7198. \brief サーバーサイドの使用のために。
  7199. \return SSL_SUCCESS セッションを正常に設定すると返されます。
  7200. \return BAD_FUNC_ARG 失敗した場合に返されます。これは、無効な引数を関数に渡すことによって発生します。
  7201. \param ctx wolfssl_ctx_new()で作成されたwolfssl_ctxオブジェクトへのポインタ。
  7202. _Example_
  7203. \code
  7204. none
  7205. \endcode
  7206. \sa wolfSSL_CTX_set_TicketEncCb
  7207. */
  7208. int wolfSSL_CTX_set_TicketHint(WOLFSSL_CTX* ctx, int);
  7209. /*!
  7210. \brief 折り返し電話。サーバーサイドの使用のために。
  7211. \return SSL_SUCCESS セッションを正常に設定すると返されます。
  7212. \return BAD_FUNC_ARG 失敗した場合に返されます。これは、無効な引数を関数に渡すことによって発生します。
  7213. \param ctx wolfssl_ctx_new()で作成されたwolfssl_ctxオブジェクトへのポインタ。
  7214. _Example_
  7215. \code
  7216. none
  7217. \endcode
  7218. \sa wolfSSL_CTX_set_TicketEncCb
  7219. */
  7220. int wolfSSL_CTX_set_TicketEncCtx(WOLFSSL_CTX* ctx, void*);
  7221. /*!
  7222. \brief 折り返し電話。サーバーサイドの使用のために。
  7223. \return userCtx セッションを正常に取得すると返されます。
  7224. \return NULL 失敗した場合に返されます。これは、無効な引数を関数に渡すことによって、またはユーザーコンテキストが設定されていないときに発生します。
  7225. _Example_
  7226. \code
  7227. none
  7228. \endcode
  7229. \sa wolfSSL_CTX_set_TicketEncCtx
  7230. */
  7231. void* wolfSSL_CTX_get_TicketEncCtx(WOLFSSL_CTX* ctx);
  7232. /*!
  7233. \brief この機能には、WolfSSL構造のHSDonectxメンバーが設定されています。
  7234. \return SSL_SUCCESS 関数がエラーなしで実行された場合に返されます。WolfSSL構造体のHSDONECBとHSDonectxメンバーが設定されています。
  7235. \return BAD_FUNC_ARG wolfssl構造体がNULLの場合に返されます。
  7236. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  7237. \param cb int(* HandshakedOneCB)(wolfssl *、void *)の署名を持つタイプHandshakedOneCBの関数ポインタ。
  7238. _Example_
  7239. \code
  7240. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
  7241. WOLFSSL* ssl = wolfSSL_new(ctx);
  7242. int myHsDoneCb(WOLFSSL* ssl, void* user_ctx){
  7243. // callback function
  7244. }
  7245. wolfSSL_SetHsDoneCb(ssl, myHsDoneCb, NULL);
  7246. \endcode
  7247. \sa HandShakeDoneCb
  7248. */
  7249. int wolfSSL_SetHsDoneCb(WOLFSSL* ssl, HandShakeDoneCb cb, void* user_ctx);
  7250. /*!
  7251. \ingroup IO
  7252. \brief この関数はセッションから統計を印刷します。
  7253. \return SSL_SUCCESS 関数とサブルーチンがエラーなしで戻った場合に返されます。セッション統計は正常に取得され印刷されました。
  7254. \return BAD_FUNC_ARG サブルーチンwolfssl_get_session_stats()が許容できない引数に渡された場合に返されます。
  7255. \return BAD_MUTEX_E サブルーチンにミューテックスエラーがあった場合に返されます。
  7256. _Example_
  7257. \code
  7258. // You will need to have a session object to retrieve stats from.
  7259. if(wolfSSL_PrintSessionStats(void) != SSL_SUCCESS ){
  7260. // Did not print session stats
  7261. }
  7262. \endcode
  7263. \sa wolfSSL_get_session_stats
  7264. */
  7265. int wolfSSL_PrintSessionStats(void);
  7266. /*!
  7267. \ingroup IO
  7268. \brief この関数はセッションの統計を取得します。
  7269. \return SSL_SUCCESS 関数とサブルーチンがエラーなしで戻った場合に返されます。セッション統計は正常に取得され印刷されました。
  7270. \return BAD_FUNC_ARG サブルーチンwolfssl_get_session_stats()が許容できない引数に渡された場合に返されます。
  7271. \return BAD_MUTEX_E サブルーチンにミューテックスエラーがあった場合に返されます。
  7272. \param active 現在のセッションの合計を表すWord32ポインタ。
  7273. \param total 総セッションを表すWord32ポインタ。
  7274. \param peak ピークセッションを表すWord32ポインタ。
  7275. _Example_
  7276. \code
  7277. int wolfSSL_PrintSessionStats(void){
  7278. ret = wolfSSL_get_session_stats(&totalSessionsNow,
  7279. &totalSessionsSeen, &peak, &maxSessions);
  7280. return ret;
  7281. \endcode
  7282. \sa wolfSSL_PrintSessionStats
  7283. */
  7284. int wolfSSL_get_session_stats(unsigned int* active,
  7285. unsigned int* total,
  7286. unsigned int* peak,
  7287. unsigned int* maxSessions);
  7288. /*!
  7289. \ingroup TLS
  7290. \brief この関数はCRとSRの値をコピーしてからWC_PRF(疑似ランダム関数)に渡し、その値を返します。
  7291. \return 0 成功した
  7292. \return BUFFER_E バッファのサイズにエラーが発生した場合は返されます。
  7293. \return MEMORY_E サブルーチンが動的メモリを割り当てることができなかった場合に返されます。
  7294. \param ms マスターシークレットはアレイ構造に保持されています。
  7295. \param msLen マスターシークレットの長さ。
  7296. \param pms マスター前の秘密はアレイ構造に保持されています。
  7297. \param pmsLen マスタープレマスターシークレットの長さ。
  7298. \param cr クライアントのランダム
  7299. \param sr サーバーのランダムです。
  7300. \param tls1_2 バージョンが少なくともTLSバージョン1.2であることを意味します。
  7301. _Example_
  7302. \code
  7303. WOLFSSL* ssl;
  7304. called in MakeTlsMasterSecret and retrieves the necessary
  7305. information as follows:
  7306. int MakeTlsMasterSecret(WOLFSSL* ssl){
  7307. int ret;
  7308. ret = wolfSSL_makeTlsMasterSecret(ssl->arrays->masterSecret, SECRET_LEN,
  7309. ssl->arrays->preMasterSecret, ssl->arrays->preMasterSz,
  7310. ssl->arrays->clientRandom, ssl->arrays->serverRandom,
  7311. IsAtLeastTLSv1_2(ssl), ssl->specs.mac_algorithm);
  7312. return ret;
  7313. }
  7314. \endcode
  7315. \sa wc_PRF
  7316. \sa MakeTlsMasterSecret
  7317. */
  7318. int wolfSSL_MakeTlsMasterSecret(unsigned char* ms, word32 msLen,
  7319. const unsigned char* pms, word32 pmsLen,
  7320. const unsigned char* cr, const unsigned char* sr,
  7321. int tls1_2, int hash_type);
  7322. /*!
  7323. \ingroup CertsKeys
  7324. \brief TLSキーを導き出すための外部のラッパー。
  7325. \return 0 成功に戻りました。
  7326. \return BUFFER_E LABLENとSEADLENの合計(合計サイズを計算)が最大サイズを超えると返されます。
  7327. \return MEMORY_E メモリの割り当てが失敗した場合に返されます。
  7328. \param key_data DeriveTlSkeysに割り当てられ、最終ハッシュを保持するためにWC_PRFに渡されたバイトポインタ。
  7329. \param keyLen WOLFSSL構造体のスペックメンバーからのDerivetlskeysで派生したWord32タイプ。
  7330. \param ms WolfSSL構造内でアレイ構造に保持されているマスターシークレットを保持する定数ポインタ型。
  7331. \param msLen 列挙された定義で、マスターシークレットの長さを保持するWord32タイプ。
  7332. \param sr WOLFSSL構造内の配列構造のServerRandomメンバーへの定数バイトポインタ。
  7333. \param cr WolfSSL構造内の配列構造のClientRandomメンバーへの定数バイトポインタ。
  7334. \param tls1_2 ISATLEASTLSV1_2()から返された整数型。
  7335. _Example_
  7336. \code
  7337. int DeriveTlsKeys(WOLFSSL* ssl){
  7338. int ret;
  7339. ret = wolfSSL_DeriveTlsKeys(key_data, length, ssl->arrays->masterSecret,
  7340. SECRET_LEN, ssl->arrays->clientRandom,
  7341. IsAtLeastTLSv1_2(ssl), ssl->specs.mac_algorithm);
  7342. }
  7343. \endcode
  7344. \sa wc_PRF
  7345. \sa DeriveTlsKeys
  7346. \sa IsAtLeastTLSv1_2
  7347. */
  7348. int wolfSSL_DeriveTlsKeys(unsigned char* key_data, word32 keyLen,
  7349. const unsigned char* ms, word32 msLen,
  7350. const unsigned char* sr, const unsigned char* cr,
  7351. int tls1_2, int hash_type);
  7352. /*!
  7353. \brief ハンドシェイクコールバックが設定されます。これは、デバッガが利用できず、スニッフィングが実用的ではない場合に、サポートをデバッグするための組み込みシステムで役立ちます。ハンドシェイクエラーが発生したか否かが呼び出されます。SSLパケットの最大数が既知であるため、動的メモリは使用されません。パケット名をPacketNames []でアクセスできます。接続拡張機能は、タイムアウト値とともにタイムアウトコールバックを設定することもできます。これは、ユーザーがTCPスタックをタイムアウトするのを待ったくない場合に便利です。この拡張子は、コールバックのどちらか、またはどちらのコールバックも呼び出されません。
  7354. \return SSL_SUCCESS 成功すると。
  7355. \return GETTIME_ERROR gettimeofday()がエラーを検出した場合、返されます。
  7356. \return SETITIMER_ERROR setItimer()がエラーを検出した場合、返されます。
  7357. \return SIGACT_ERROR sigAction()がエラーを検出した場合、返されます。
  7358. \return SSL_FATAL_ERROR 基になるssl_connect()呼び出しがエラーを検出した場合に返されます。
  7359. _Example_
  7360. \code
  7361. none
  7362. \endcode
  7363. \sa wolfSSL_accept_ex
  7364. */
  7365. int wolfSSL_connect_ex(WOLFSSL* ssl, HandShakeCallBack hsCb,
  7366. TimeoutCallBack toCb, WOLFSSL_TIMEVAL timeout);
  7367. /*!
  7368. \brief 設定する。これは、デバッガが利用できず、スニッフィングが実用的ではない場合に、サポートをデバッグするための組み込みシステムで役立ちます。ハンドシェイクエラーが発生したか否かが呼び出されます。SSLパケットの最大数が既知であるため、動的メモリは使用されません。パケット名をPacketNames []でアクセスできます。接続拡張機能は、タイムアウト値とともにタイムアウトコールバックを設定することもできます。これは、ユーザーがTCPスタックをタイムアウトするのを待ったくない場合に便利です。この拡張子は、コールバックのどちらか、またはどちらのコールバックも呼び出されません。
  7369. \return SSL_SUCCESS 成功すると。
  7370. \return GETTIME_ERROR gettimeofday()がエラーを検出した場合、返されます。
  7371. \return SETITIMER_ERROR setItimer()がエラーを検出した場合、返されます。
  7372. \return SIGACT_ERROR sigAction()がエラーを検出した場合、返されます。
  7373. \return SSL_FATAL_ERROR 基礎となるssl_accept()呼び出しがエラーを検出した場合に返されます。
  7374. _Example_
  7375. \code
  7376. none
  7377. \endcode
  7378. \sa wolfSSL_connect_ex
  7379. */
  7380. int wolfSSL_accept_ex(WOLFSSL* ssl, HandShakeCallBacki hsCb,
  7381. TimeoutCallBack toCb, WOLFSSL_TIMEVAL timeout);
  7382. /*!
  7383. \ingroup IO
  7384. \brief これはBIOの内部ファイルポインタを設定するために使用されます。
  7385. \return SSL_SUCCESS ファイルポインタを正常に設定します。
  7386. \return SSL_FAILURE エラーケースに遭遇した場合
  7387. \param bio ペアを設定するためのwolfssl_bio構造。
  7388. \param fp バイオで設定するファイルポインタ。
  7389. _Example_
  7390. \code
  7391. WOLFSSL_BIO* bio;
  7392. XFILE fp;
  7393. int ret;
  7394. bio = wolfSSL_BIO_new(wolfSSL_BIO_s_file());
  7395. ret = wolfSSL_BIO_set_fp(bio, fp, BIO_CLOSE);
  7396. // check ret value
  7397. \endcode
  7398. \sa wolfSSL_BIO_new
  7399. \sa wolfSSL_BIO_s_mem
  7400. \sa wolfSSL_BIO_get_fp
  7401. \sa wolfSSL_BIO_free
  7402. */
  7403. long wolfSSL_BIO_set_fp(WOLFSSL_BIO *bio, XFILE fp, int c);
  7404. /*!
  7405. \ingroup IO
  7406. \brief これは、BIOの内部ファイルポインタを取得するために使用されます。
  7407. \return SSL_SUCCESS ファイルポインタを正常に取得します。
  7408. \return SSL_FAILURE エラーケースに遭遇した場合
  7409. \param bio ペアを設定するためのwolfssl_bio構造。
  7410. _Example_
  7411. \code
  7412. WOLFSSL_BIO* bio;
  7413. XFILE fp;
  7414. int ret;
  7415. bio = wolfSSL_BIO_new(wolfSSL_BIO_s_file());
  7416. ret = wolfSSL_BIO_get_fp(bio, &fp);
  7417. // check ret value
  7418. \endcode
  7419. \sa wolfSSL_BIO_new
  7420. \sa wolfSSL_BIO_s_mem
  7421. \sa wolfSSL_BIO_set_fp
  7422. \sa wolfSSL_BIO_free
  7423. */
  7424. long wolfSSL_BIO_get_fp(WOLFSSL_BIO *bio, XFILE* fp);
  7425. /*!
  7426. \ingroup Setup
  7427. \brief この関数は、秘密鍵が使用されている証明書との一致であることを確認します。
  7428. \return SSL_SUCCESS うまく一致します。
  7429. \return SSL_FAILURE エラーケースに遭遇した場合
  7430. \return <0 ssl_failure以外のすべてのエラーケースは負の値です。
  7431. _Example_
  7432. \code
  7433. WOLFSSL* ssl;
  7434. int ret;
  7435. // create and set up ssl
  7436. ret = wolfSSL_check_private_key(ssl);
  7437. // check ret value
  7438. \endcode
  7439. \sa wolfSSL_new
  7440. \sa wolfSSL_free
  7441. */
  7442. int wolfSSL_check_private_key(const WOLFSSL* ssl);
  7443. /*!
  7444. \ingroup CertsKeys
  7445. \brief この機能は、渡されたNID値に一致する拡張索引を探して返します。
  7446. \return >= 0拡張インデックスが成功した場合は返されます。
  7447. \return -1 拡張が見つからないかエラーが発生した場合
  7448. \param x509 拡張のために解析する証明書。
  7449. \param nid 見つかる拡張OID。
  7450. _Example_
  7451. \code
  7452. const WOLFSSL_X509* x509;
  7453. int lastPos = -1;
  7454. int idx;
  7455. idx = wolfSSL_X509_get_ext_by_NID(x509, NID_basic_constraints, lastPos);
  7456. \endcode
  7457. */
  7458. int wolfSSL_X509_get_ext_by_NID(const WOLFSSL_X509* x509,
  7459. int nid, int lastPos);
  7460. /*!
  7461. \ingroup CertsKeys
  7462. \brief この関数は、渡されたNID値に合った拡張子を探して返します。
  7463. \return pointer STACK_OF(wolfssl_asn1_object)ポインタが成功した場合は返されます。
  7464. \return NULL 拡張が見つからないかエラーが発生した場合
  7465. \param x509 拡張のために解析する証明書。
  7466. \param nid 見つかる拡張OID。
  7467. \param c not nullが複数の拡張子に-2に設定されていない場合は-1が見つかりませんでした。
  7468. _Example_
  7469. \code
  7470. const WOLFSSL_X509* x509;
  7471. int c;
  7472. int idx = 0;
  7473. STACK_OF(WOLFSSL_ASN1_OBJECT)* sk;
  7474. sk = wolfSSL_X509_get_ext_d2i(x509, NID_basic_constraints, &c, &idx);
  7475. //check sk for NULL and then use it. sk needs freed after done.
  7476. \endcode
  7477. \sa wolfSSL_sk_ASN1_OBJECT_free
  7478. */
  7479. void* wolfSSL_X509_get_ext_d2i(const WOLFSSL_X509* x509,
  7480. int nid, int* c, int* idx);
  7481. /*!
  7482. \ingroup CertsKeys
  7483. \brief この関数はDER証明書のハッシュを返します。
  7484. \return SSL_SUCCESS ハッシュの作成に成功しました。
  7485. \return SSL_FAILURE 不良入力または失敗したハッシュに戻りました。
  7486. \param x509 ハッシュを得るための証明書。
  7487. \param digest 使用するハッシュアルゴリズム
  7488. \param buf ハッシュを保持するためのバッファ。
  7489. _Example_
  7490. \code
  7491. WOLFSSL_X509* x509;
  7492. unsigned char buffer[64];
  7493. unsigned int bufferSz;
  7494. int ret;
  7495. ret = wolfSSL_X509_digest(x509, wolfSSL_EVP_sha256(), buffer, &bufferSz);
  7496. //check ret value
  7497. \endcode
  7498. \sa none
  7499. */
  7500. int wolfSSL_X509_digest(const WOLFSSL_X509* x509,
  7501. const WOLFSSL_EVP_MD* digest, unsigned char* buf, unsigned int* len);
  7502. /*!
  7503. \ingroup Setup
  7504. \brief ハンドシェイク中に使用するために、WolfSSL構造の証明書を設定するために使用されます。
  7505. \return SSL_SUCCESS 設定の成功した引数について。
  7506. \return SSL_FAILURE NULL引数が渡された場合。
  7507. \param ssl 証明書を設定するためのWolfSSL構造。
  7508. _Example_
  7509. \code WOLFSSL* ssl;
  7510. WOLFSSL_X509* x509
  7511. int ret;
  7512. // create ssl object and x509
  7513. ret = wolfSSL_use_certificate(ssl, x509);
  7514. // check ret value
  7515. \endcode
  7516. \sa wolfSSL_new
  7517. \sa wolfSSL_free
  7518. */
  7519. int wolfSSL_use_certificate(WOLFSSL* ssl, WOLFSSL_X509* x509);
  7520. /*!
  7521. \ingroup Setup
  7522. \brief これは、handshakeの間に使用するためにWolfSSL構造の証明書を設定するために使用されます。DERフォーマットバッファが予想されます。
  7523. \return SSL_SUCCESS 設定の成功した引数について。
  7524. \return SSL_FAILURE NULL引数が渡された場合。
  7525. \param ssl 証明書を設定するためのWolfSSL構造。
  7526. \param der 使用する証明書。
  7527. _Example_
  7528. \code
  7529. WOLFSSL* ssl;
  7530. unsigned char* der;
  7531. int derSz;
  7532. int ret;
  7533. // create ssl object and set DER variables
  7534. ret = wolfSSL_use_certificate_ASN1(ssl, der, derSz);
  7535. // check ret value
  7536. \endcode
  7537. \sa wolfSSL_new
  7538. \sa wolfSSL_free
  7539. */
  7540. int wolfSSL_use_certificate_ASN1(WOLFSSL* ssl, unsigned char* der,
  7541. int derSz);
  7542. /*!
  7543. \ingroup CertsKeys
  7544. \brief これはWolfSSL構造の秘密鍵を設定するために使用されます。
  7545. \return SSL_SUCCESS 設定の成功した引数について。
  7546. \return SSL_FAILURE NULL SSLが渡された場合。すべてのエラーケースは負の値になります。
  7547. \param ssl 引数を設定するためのWolfSSL構造。
  7548. _Example_
  7549. \code
  7550. WOLFSSL* ssl;
  7551. WOLFSSL_EVP_PKEY* pkey;
  7552. int ret;
  7553. // create ssl object and set up private key
  7554. ret = wolfSSL_use_PrivateKey(ssl, pkey);
  7555. // check ret value
  7556. \endcode
  7557. \sa wolfSSL_new
  7558. \sa wolfSSL_free
  7559. */
  7560. int wolfSSL_use_PrivateKey(WOLFSSL* ssl, WOLFSSL_EVP_PKEY* pkey);
  7561. /*!
  7562. \ingroup CertsKeys
  7563. \brief これはWolfSSL構造の秘密鍵を設定するために使用されます。DERフォーマットのキーバッファが予想されます。
  7564. \return SSL_SUCCESS 秘密鍵の構文解析と設定に成功した場合。
  7565. \return SSL_FAILURE NULL SSLが渡された場合。すべてのエラーケースは負の値になります。
  7566. \param pri 秘密鍵の種類。
  7567. \param ssl 引数を設定するためのWolfSSL構造。
  7568. \param der バッファー保持DERキー。
  7569. _Example_
  7570. \code
  7571. WOLFSSL* ssl;
  7572. unsigned char* pkey;
  7573. long pkeySz;
  7574. int ret;
  7575. // create ssl object and set up private key
  7576. ret = wolfSSL_use_PrivateKey_ASN1(1, ssl, pkey, pkeySz);
  7577. // check ret value
  7578. \endcode
  7579. \sa wolfSSL_new
  7580. \sa wolfSSL_free
  7581. \sa wolfSSL_use_PrivateKey
  7582. */
  7583. int wolfSSL_use_PrivateKey_ASN1(int pri, WOLFSSL* ssl,
  7584. unsigned char* der, long derSz);
  7585. /*!
  7586. \ingroup CertsKeys
  7587. \brief これはWolfSSL構造の秘密鍵を設定するために使用されます。DERフォーマットのRSAキーバッファが予想されます。
  7588. \return SSL_SUCCESS 秘密鍵の構文解析と設定に成功した場合。
  7589. \return SSL_FAILURE NULL SSLが渡された場合。すべてのエラーケースは負の値になります。
  7590. \param ssl 引数を設定するためのWolfSSL構造。
  7591. \param der バッファー保持DERキー。
  7592. _Example_
  7593. \code
  7594. WOLFSSL* ssl;
  7595. unsigned char* pkey;
  7596. long pkeySz;
  7597. int ret;
  7598. // create ssl object and set up RSA private key
  7599. ret = wolfSSL_use_RSAPrivateKey_ASN1(ssl, pkey, pkeySz);
  7600. // check ret value
  7601. \endcode
  7602. \sa wolfSSL_new
  7603. \sa wolfSSL_free
  7604. \sa wolfSSL_use_PrivateKey
  7605. */
  7606. int wolfSSL_use_RSAPrivateKey_ASN1(WOLFSSL* ssl, unsigned char* der,
  7607. long derSz);
  7608. /*!
  7609. \ingroup CertsKeys
  7610. \brief この関数は、DSAのパラメータを新しく作成されたWOLFSSL_DH構造体に重複しています。
  7611. \return WOLFSSL_DH 重複した場合はWolfSSL_DH構造体を返す場合
  7612. \return NULL 失敗すると
  7613. _Example_
  7614. \code
  7615. WOLFSSL_DH* dh;
  7616. WOLFSSL_DSA* dsa;
  7617. // set up dsa
  7618. dh = wolfSSL_DSA_dup_DH(dsa);
  7619. // check dh is not null
  7620. \endcode
  7621. \sa none
  7622. */
  7623. WOLFSSL_DH *wolfSSL_DSA_dup_DH(const WOLFSSL_DSA *r);
  7624. /*!
  7625. \ingroup Setup
  7626. \brief これはハンドシェイクを完了した後にマスターキーを取得するために使用されます。
  7627. \return >0 データの取得に成功した場合、0より大きい値を返します。
  7628. \return 0 ランダムなデータバッファまたはエラー状態が返されない場合は0
  7629. \return max 渡されたOUTSZが0の場合、必要な最大バッファサイズが返されます。
  7630. \param ses マスターシークレットバッファを取得するためのWolfSSL_SESSION構造。
  7631. \param out データを保持するためのバッファ。
  7632. _Example_
  7633. \code
  7634. WOLFSSL_SESSION ssl;
  7635. unsigned char* buffer;
  7636. size_t bufferSz;
  7637. size_t ret;
  7638. // complete handshake and get session structure
  7639. bufferSz = wolfSSL_SESSION_get_master_secret(ses, NULL, 0);
  7640. buffer = malloc(bufferSz);
  7641. ret = wolfSSL_SESSION_get_master_secret(ses, buffer, bufferSz);
  7642. // check ret value
  7643. \endcode
  7644. \sa wolfSSL_new
  7645. \sa wolfSSL_free
  7646. */
  7647. int wolfSSL_SESSION_get_master_key(const WOLFSSL_SESSION* ses,
  7648. unsigned char* out, int outSz);
  7649. /*!
  7650. \ingroup Setup
  7651. \brief これはマスター秘密鍵の長さを取得するために使用されます。
  7652. \return size マスターシークレットキーサイズを返します。
  7653. _Example_
  7654. \code
  7655. WOLFSSL_SESSION ssl;
  7656. unsigned char* buffer;
  7657. size_t bufferSz;
  7658. size_t ret;
  7659. // complete handshake and get session structure
  7660. bufferSz = wolfSSL_SESSION_get_master_secret_length(ses);
  7661. buffer = malloc(bufferSz);
  7662. // check ret value
  7663. \endcode
  7664. \sa wolfSSL_new
  7665. \sa wolfSSL_free
  7666. */
  7667. int wolfSSL_SESSION_get_master_key_length(const WOLFSSL_SESSION* ses);
  7668. /*!
  7669. \ingroup Setup
  7670. \brief これは、CTXのWOLFSSL_X509_STORE構造の設定機能です。
  7671. \return none 返品不可。
  7672. \param ctx Cert Storeポインタを設定するためのWolfSSL_CTX構造体へのポインタ。
  7673. _Example_
  7674. \code
  7675. WOLFSSL_CTX ctx;
  7676. WOLFSSL_X509_STORE* st;
  7677. // setup ctx and st
  7678. st = wolfSSL_CTX_set_cert_store(ctx, st);
  7679. //use st
  7680. \endcode
  7681. \sa wolfSSL_CTX_new
  7682. \sa wolfSSL_CTX_free
  7683. */
  7684. void wolfSSL_CTX_set_cert_store(WOLFSSL_CTX* ctx,
  7685. WOLFSSL_X509_STORE* str);
  7686. /*!
  7687. \ingroup CertsKeys
  7688. \brief この関数はBIOからDERバッファを取得し、それをWolfSSL_X509構造に変換します。
  7689. \return pointer 成功したwolfssl_x509構造ポインタを返します。
  7690. \return Null 失敗時にNULLを返します
  7691. \param bio DER証明書バッファを持つwolfssl_bio構造体へのポインタ。
  7692. _Example_
  7693. \code
  7694. WOLFSSL_BIO* bio;
  7695. WOLFSSL_X509* x509;
  7696. // load DER into bio
  7697. x509 = wolfSSL_d2i_X509_bio(bio, NULL);
  7698. Or
  7699. wolfSSL_d2i_X509_bio(bio, &x509);
  7700. // use x509 returned (check for NULL)
  7701. \endcode
  7702. \sa none
  7703. */
  7704. WOLFSSL_X509* wolfSSL_d2i_X509_bio(WOLFSSL_BIO* bio, WOLFSSL_X509** x509);
  7705. /*!
  7706. \ingroup Setup
  7707. \brief これは、CTXのWOLFSSL_X509_STORE構造のゲッター関数です。
  7708. \return WOLFSSL_X509_STORE* ポインタを正常に入手します。
  7709. \return NULL NULL引数が渡された場合に返されます。
  7710. _Example_
  7711. \code
  7712. WOLFSSL_CTX ctx;
  7713. WOLFSSL_X509_STORE* st;
  7714. // setup ctx
  7715. st = wolfSSL_CTX_get_cert_store(ctx);
  7716. //use st
  7717. \endcode
  7718. \sa wolfSSL_CTX_new
  7719. \sa wolfSSL_CTX_free
  7720. \sa wolfSSL_CTX_set_cert_store
  7721. */
  7722. WOLFSSL_X509_STORE* wolfSSL_CTX_get_cert_store(WOLFSSL_CTX* ctx);
  7723. /*!
  7724. \ingroup IO
  7725. \brief 保留中のバイト数を読み取る数を取得します。BIOタイプがBIO_BIOの場合、ペアから読み取る番号です。BIOにSSLオブジェクトが含まれている場合は、SSLオブジェクトからのデータを保留中です(WolfSSL_Pending(SSL))。bio_memoryタイプがある場合は、メモリバッファのサイズを返します。
  7726. \return >=0 保留中のバイト数。
  7727. _Example_
  7728. \code
  7729. WOLFSSL_BIO* bio;
  7730. int pending;
  7731. bio = wolfSSL_BIO_new();
  7732. pending = wolfSSL_BIO_ctrl_pending(bio);
  7733. \endcode
  7734. \sa wolfSSL_BIO_make_bio_pair
  7735. \sa wolfSSL_BIO_new
  7736. */
  7737. size_t wolfSSL_BIO_ctrl_pending(WOLFSSL_BIO *b);
  7738. /*!
  7739. \ingroup Setup
  7740. \brief これは、ハンドシェイク中にサーバーによって送信されたランダムなデータを取得するために使用されます。
  7741. \return >0 データの取得に成功した場合、0より大きい値を返します。
  7742. \return 0 ランダムなデータバッファまたはエラー状態が返されない場合は0
  7743. \return max 渡されたOUTSZが0の場合、必要な最大バッファサイズが返されます。
  7744. \param ssl クライアントのランダムデータバッファを取得するためのWolfSSL構造。
  7745. \param out ランダムデータを保持するためのバッファ。
  7746. _Example_
  7747. \code
  7748. WOLFSSL ssl;
  7749. unsigned char* buffer;
  7750. size_t bufferSz;
  7751. size_t ret;
  7752. bufferSz = wolfSSL_get_server_random(ssl, NULL, 0);
  7753. buffer = malloc(bufferSz);
  7754. ret = wolfSSL_get_server_random(ssl, buffer, bufferSz);
  7755. // check ret value
  7756. \endcode
  7757. \sa wolfSSL_new
  7758. \sa wolfSSL_free
  7759. */
  7760. size_t wolfSSL_get_server_random(const WOLFSSL *ssl,
  7761. unsigned char *out, size_t outlen);
  7762. /*!
  7763. \ingroup Setup
  7764. \brief これは、ハンドシェイク中にクライアントによって送信されたランダムなデータを取得するために使用されます。
  7765. \return >0 データの取得に成功した場合、0より大きい値を返します。
  7766. \return 0 ランダムなデータバッファまたはエラー状態が返されない場合は0
  7767. \return max 渡されたOUTSZが0の場合、必要な最大バッファサイズが返されます。
  7768. \param ssl クライアントのランダムデータバッファを取得するためのWolfSSL構造。
  7769. \param out ランダムデータを保持するためのバッファ。
  7770. _Example_
  7771. \code
  7772. WOLFSSL ssl;
  7773. unsigned char* buffer;
  7774. size_t bufferSz;
  7775. size_t ret;
  7776. bufferSz = wolfSSL_get_client_random(ssl, NULL, 0);
  7777. buffer = malloc(bufferSz);
  7778. ret = wolfSSL_get_client_random(ssl, buffer, bufferSz);
  7779. // check ret value
  7780. \endcode
  7781. \sa wolfSSL_new
  7782. \sa wolfSSL_free
  7783. */
  7784. size_t wolfSSL_get_client_random(const WOLFSSL* ssl,
  7785. unsigned char* out, size_t outSz);
  7786. /*!
  7787. \ingroup Setup
  7788. \brief これはCTXで設定されたパスワードコールバックのゲッター関数です。
  7789. \return func 成功すると、コールバック関数を返します。
  7790. \return NULL CTXがNULLの場合、NULLが返されます。
  7791. _Example_
  7792. \code
  7793. WOLFSSL_CTX* ctx;
  7794. wc_pem_password_cb cb;
  7795. // setup ctx
  7796. cb = wolfSSL_CTX_get_default_passwd_cb(ctx);
  7797. //use cb
  7798. \endcode
  7799. \sa wolfSSL_CTX_new
  7800. \sa wolfSSL_CTX_free
  7801. */
  7802. wc_pem_password_cb* wolfSSL_CTX_get_default_passwd_cb(WOLFSSL_CTX*
  7803. ctx);
  7804. /*!
  7805. \ingroup Setup
  7806. \brief これは、CTXで設定されているパスワードコールバックユーザーデータの取得機能です。
  7807. \return pointer 成功すると、ユーザーデータポインタを返します。
  7808. \return NULL CTXがNULLの場合、NULLが返されます。
  7809. _Example_
  7810. \code
  7811. WOLFSSL_CTX* ctx;
  7812. void* data;
  7813. // setup ctx
  7814. data = wolfSSL_CTX_get_default_passwd_cb(ctx);
  7815. //use data
  7816. \endcode
  7817. \sa wolfSSL_CTX_new
  7818. \sa wolfSSL_CTX_free
  7819. */
  7820. void *wolfSSL_CTX_get_default_passwd_cb_userdata(WOLFSSL_CTX *ctx);
  7821. /*!
  7822. \ingroup CertsKeys
  7823. \brief この関数はwolfssl_pem_read_bio_x509と同じように動作します。AUXは、信頼できる/拒否されたユースケースや人間の読みやすさのためのフレンドリーな名前などの追加情報を含むことを意味します。
  7824. \return WOLFSSL_X509 PEMバッファの解析に成功した場合、wolfssl_x509構造が返されます。
  7825. \return Null PEMバッファの解析に失敗した場合。
  7826. \param bp wolfssl_bio構造体からPEMバッファを取得します。
  7827. \param x wolfssl_x509を機能副作用で設定する場合
  7828. \param cb パスワードコールバック
  7829. _Example_
  7830. \code
  7831. WOLFSSL_BIO* bio;
  7832. WOLFSSL_X509* x509;
  7833. // setup bio
  7834. X509 = wolfSSL_PEM_read_bio_X509_AUX(bio, NULL, NULL, NULL);
  7835. //check x509 is not null and then use it
  7836. \endcode
  7837. \sa wolfSSL_PEM_read_bio_X509
  7838. */
  7839. WOLFSSL_X509 *wolfSSL_PEM_read_bio_X509_AUX
  7840. (WOLFSSL_BIO *bp, WOLFSSL_X509 **x, wc_pem_password_cb *cb, void *u);
  7841. /*!
  7842. \ingroup CertsKeys
  7843. \brief wolfssl_ctx構造体のDHメンバーをdiffie-hellmanパラメータで初期化します。
  7844. \return SSL_SUCCESS 関数が正常に実行された場合に返されます。
  7845. \return BAD_FUNC_ARG CTXまたはDH構造体がNULLの場合に返されます。
  7846. \return SSL_FATAL_ERROR 構造値を設定するエラーが発生した場合は返されます。
  7847. \return MEMORY_E メモリを割り当てることができなかった場合は返されます。
  7848. \param ctx wolfssl_ctx_new()を使用して作成されたwolfssl_ctx構造へのポインタ。
  7849. _Example_
  7850. \code
  7851. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
  7852. WOLFSSL_DH* dh;
  7853. return wolfSSL_CTX_set_tmp_dh(ctx, dh);
  7854. \endcode
  7855. \sa wolfSSL_BN_bn2bin
  7856. */
  7857. long wolfSSL_CTX_set_tmp_dh(WOLFSSL_CTX* ctx, WOLFSSL_DH* dh);
  7858. /*!
  7859. \ingroup CertsKeys
  7860. \brief この関数は、BIOのPEMバッファからDSAパラメータを取得します。
  7861. \return WOLFSSL_DSA PEMバッファの解析に成功した場合、WolfSSL_DSA構造が作成され、返されます。
  7862. \return Null PEMバッファの解析に失敗した場合。
  7863. \param bio PEMメモリポインタを取得するためのwolfssl_bio構造体へのポインタ。
  7864. \param x 新しいWolfSSL_DSA構造に設定するポインタ。
  7865. \param cb パスワードコールバック関数
  7866. _Example_
  7867. \code
  7868. WOLFSSL_BIO* bio;
  7869. WOLFSSL_DSA* dsa;
  7870. // setup bio
  7871. dsa = wolfSSL_PEM_read_bio_DSAparams(bio, NULL, NULL, NULL);
  7872. // check dsa is not NULL and then use dsa
  7873. \endcode
  7874. \sa none
  7875. */
  7876. WOLFSSL_DSA *wolfSSL_PEM_read_bio_DSAparams(WOLFSSL_BIO *bp,
  7877. WOLFSSL_DSA **x, wc_pem_password_cb *cb, void *u);
  7878. /*!
  7879. \ingroup Debug
  7880. \brief この関数は、wolfssl_Errorに遭遇した最後のエラーの絶対値を返します。
  7881. \return error 最後のエラーの絶対値を返します。
  7882. _Example_
  7883. \code
  7884. unsigned long err;
  7885. ...
  7886. err = wolfSSL_ERR_peek_last_error();
  7887. // inspect err value
  7888. \endcode
  7889. \sa wolfSSL_ERR_print_errors_fp
  7890. */
  7891. unsigned long wolfSSL_ERR_peek_last_error(void);
  7892. /*!
  7893. \ingroup CertsKeys
  7894. \brief この関数はピアの証明書チェーンを取得します。
  7895. \return pointer ピアの証明書スタックへのポインタを返します。
  7896. \return NULL ピア証明書がない場合は返されます。
  7897. _Example_
  7898. \code
  7899. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
  7900. WOLFSSL* ssl = wolfSSL_new(ctx);
  7901. ...
  7902. wolfSSL_connect(ssl);
  7903. STACK_OF(WOLFSSL_X509)* chain = wolfSSL_get_peer_cert_chain(ssl);
  7904. ifchain){
  7905. // You have a pointer to the peer certificate chain
  7906. }
  7907. \endcode
  7908. \sa wolfSSL_X509_get_issuer_name
  7909. \sa wolfSSL_X509_get_subject_name
  7910. \sa wolfSSL_X509_get_isCA
  7911. */
  7912. WOLF_STACK_OF(WOLFSSL_X509)* wolfSSL_get_peer_cert_chain(const WOLFSSL*);
  7913. /*!
  7914. \ingroup Setup
  7915. \brief この関数は、wolfssl_ctxオブジェクトのオプションビットをリセットします。
  7916. \return option 新しいオプションビット
  7917. _Example_
  7918. \code
  7919. WOLFSSL_CTX* ctx = 0;
  7920. ...
  7921. wolfSSL_CTX_clear_options(ctx, SSL_OP_NO_TLSv1);
  7922. \endcode
  7923. \sa wolfSSL_CTX_new
  7924. \sa wolfSSL_new
  7925. \sa wolfSSL_free
  7926. */
  7927. long wolfSSL_CTX_clear_options(WOLFSSL_CTX* ctx, long opt);
  7928. /*!
  7929. \ingroup IO
  7930. \brief この関数は、WolfSSL構造のjobjectrefメンバーを設定します。
  7931. \return SSL_SUCCESS jobjectrefがobjptrに正しく設定されている場合に返されます。
  7932. \return SSL_FAILURE 関数が正しく実行されず、jobjectrefが設定されていない場合に返されます。
  7933. \param ssl wolfssl_new()を使用して作成されたWolfSSL構造へのポインタ。
  7934. _Example_
  7935. \code
  7936. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
  7937. WOLFSSL* ssl = WOLFSSL_new();
  7938. void* objPtr = &obj;
  7939. ...
  7940. if(wolfSSL_set_jobject(ssl, objPtr)){
  7941. // The success case
  7942. }
  7943. \endcode
  7944. \sa wolfSSL_get_jobject
  7945. */
  7946. int wolfSSL_set_jobject(WOLFSSL* ssl, void* objPtr);
  7947. /*!
  7948. \ingroup IO
  7949. \brief この関数は、wolfssl構造のjobjectrefメンバーを返します。
  7950. \return value wolfssl構造体がnullでない場合、関数はjobjectref値を返します。
  7951. \return NULL wolfssl構造体がNULLの場合に返されます。
  7952. _Example_
  7953. \code
  7954. WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
  7955. WOLFSSL* ssl = wolfSSL(ctx);
  7956. ...
  7957. void* jobject = wolfSSL_get_jobject(ssl);
  7958. if(jobject != NULL){
  7959. // Success case
  7960. }
  7961. \endcode
  7962. \sa wolfSSL_set_jobject
  7963. */
  7964. void* wolfSSL_get_jobject(WOLFSSL* ssl);
  7965. /*!
  7966. \ingroup Setup
  7967. \brief この関数はSSL内のコールバックを設定します。コールバックはハンドシェイクメッセージを観察することです。CBのNULL値はコールバックをリセットします。
  7968. \return SSL_SUCCESS 成功しています。
  7969. \return SSL_FAILURE NULL SSLが渡された場合。
  7970. _Example_
  7971. \code
  7972. static cb(int write_p, int version, int content_type,
  7973. const void *buf, size_t len, WOLFSSL *ssl, void *arg)
  7974. WOLFSSL* ssl;
  7975. ret = wolfSSL_set_msg_callback(ssl, cb);
  7976. // check ret
  7977. \endcode
  7978. \sa wolfSSL_set_msg_callback_arg
  7979. */
  7980. int wolfSSL_set_msg_callback(WOLFSSL *ssl, SSL_Msg_Cb cb);
  7981. /*!
  7982. \ingroup Setup
  7983. \brief この関数は、SSL内の関連コールバックコンテキスト値を設定します。値はコールバック引数に渡されます。
  7984. \return none 返品不可。
  7985. _Example_
  7986. \code
  7987. static cb(int write_p, int version, int content_type,
  7988. const void *buf, size_t len, WOLFSSL *ssl, void *arg)
  7989. WOLFSSL* ssl;
  7990. ret = wolfSSL_set_msg_callback(ssl, cb);
  7991. // check ret
  7992. wolfSSL_set_msg_callback(ssl, arg);
  7993. \endcode
  7994. \sa wolfSSL_set_msg_callback
  7995. */
  7996. int wolfSSL_set_msg_callback_arg(WOLFSSL *ssl, void* arg);
  7997. /*!
  7998. \ingroup CertsKeys
  7999. \brief この関数は、存在する場合は、ピア証明書からaltnameを返します。
  8000. \return NULL 次のAltNameがない場合。
  8001. \return cert->altNamesNext->name wolfssl_x509から、AltNameリストからの文字列値である構造が存在する場合に返されます。
  8002. _Example_
  8003. \code
  8004. WOLFSSL_X509 x509 = (WOLFSSL_X509*)XMALLOC(sizeof(WOLFSSL_X509), NULL,
  8005. DYNAMIC_TYPE_X509);
  8006. int x509NextAltName = wolfSSL_X509_get_next_altname(x509);
  8007. if(x509NextAltName == NULL){
  8008. //There isn’t another alt name
  8009. }
  8010. \endcode
  8011. \sa wolfSSL_X509_get_issuer_name
  8012. \sa wolfSSL_X509_get_subject_name
  8013. */
  8014. char* wolfSSL_X509_get_next_altname(WOLFSSL_X509*);
  8015. /*!
  8016. \ingroup CertsKeys
  8017. \brief 関数は、x509がnullのかどうかを確認し、そうでない場合は、x509構造体のNotBeforeメンバーを返します。
  8018. \return pointer X509構造体のNotBeforeメンバーにASN1_TIMEを使用して構造体に。
  8019. \return NULL x509構造がnullの場合、関数はnullを返します。
  8020. _Example_
  8021. \code
  8022. WOLFSSL_X509* x509 = (WOLFSSL_X509)XMALLOC(sizeof(WOLFSSL_X509), NULL,
  8023. DYNAMIC_TYPE_X509) ;
  8024. const WOLFSSL_ASN1_TIME* notAfter = wolfSSL_X509_get_notBefore(x509);
  8025. if(notAfter == NULL){
  8026. //The x509 object was NULL
  8027. }
  8028. \endcode
  8029. \sa wolfSSL_X509_get_notAfter
  8030. */
  8031. WOLFSSL_ASN1_TIME* wolfSSL_X509_get_notBefore(WOLFSSL_X509*);
  8032. /*!
  8033. \ingroup IO
  8034. \brief この関数はクライアント側で呼び出され、サーバーとのSSL / TLSハンドシェイクを開始します。この関数が呼び出されると、基礎となる通信チャネルはすでに設定されています。 wolfssl_connect()は、ブロックと非ブロックI / Oの両方で動作します。基礎となるI / Oがノンブロッキングされていない場合、wolfssl_connect()は、基になるI / Oがwolfssl_connectのニーズを満たすことができなかったときに戻ります。この場合、wolfssl_get_error()への呼び出しはSSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEのいずれかを生成します。通話プロセスは、基礎となるI / OがREADYおよびWOLFSSLが停止したときにwolfssl_connect()への呼び出しを繰り返す必要があります。ノンブロッキングソケットを使用する場合は、何も実行する必要がありますが、select()を使用して必要な条件を確認できます。基礎となる入出力がブロックされている場合、wolfssl_connect()はハンドシェイクが終了したら、またはエラーが発生したらのみ戻る。 WolfSSLはOpenSSLよりも証明書検証に異なるアプローチを取ります。クライアントのデフォルトポリシーはサーバーを確認することです。これは、CASを読み込まない場合、サーバーを確認することができ、確認できません(-155)。 SSL_CONNECTを持つことのOpenSSLの動作が成功した場合は、サーバーを検証してセキュリティを抑えることができます.SSL_CTX_SET_VERIFY(CTX、SSL_VERIFY_NONE、0)。 ssl_new()を呼び出す前に。お勧めできませんが。
  8035. \return SSL_SUCCESS 成功した場合
  8036. \return SSL_FATAL_ERROR エラーが発生した場合は返されます。より詳細なエラーコードを取得するには、wolfssl_get_error()を呼び出します。
  8037. _Example_
  8038. \code
  8039. int ret = 0;
  8040. int err = 0;
  8041. WOLFSSL* ssl;
  8042. char buffer[80];
  8043. ...
  8044. ret = wolfSSL_connect(ssl);
  8045. if (ret != SSL_SUCCESS) {
  8046. err = wolfSSL_get_error(ssl, ret);
  8047. printf(“error = %d, %s\n”, err, wolfSSL_ERR_error_string(err, buffer));
  8048. }
  8049. \endcode
  8050. \sa wolfSSL_get_error
  8051. \sa wolfSSL_accept
  8052. */
  8053. int wolfSSL_connect(WOLFSSL* ssl);
  8054. /*!
  8055. \ingroup Setup
  8056. \brief この関数はサーバー側で呼び出されて、HellORetryRequestメッセージにCookieを含める必要があることを示します。Cookieは現在のトランスクリプトのハッシュを保持しているので、別のサーバープロセスは応答でClientHelloを処理できます。秘密はCookieデータの整合性チェックをGenertingするときに使用されます。
  8057. \param [in,out] SSL wolfssl_new()を使用して作成されたwolfssl構造へのポインタ。
  8058. \param [in] 秘密を保持しているバッファへのポインタを秘密にします。渡すNULLは、新しいランダムシークレットを生成することを示します。
  8059. \param [in] シークスのサイズをバイト単位でサイズ。0を渡すと、デフォルトのサイズを使用することを示します.WC_SHA256_DIGEST_SIZE(またはSHA-256が使用できない場合はWC_SHA_DIGEST_SIZE)。
  8060. \return BAD_FUNC_ARG SSLがNULLの場合、またはTLS v1.3を使用していない場合。
  8061. \return SIDE_ERROR クライアントで呼び出された場合。
  8062. \return WOLFSSL_SUCCESS 成功した場合
  8063. \return MEMORY_ERROR 秘密を保存するために動的メモリを割り当てる場合に失敗しました。
  8064. _Example_
  8065. \code
  8066. int ret;
  8067. WOLFSSL* ssl;
  8068. char secret[32];
  8069. ...
  8070. ret = wolfSSL__send_hrr_cookie(ssl, secret, sizeof(secret));
  8071. if (ret != WOLFSSL_SUCCESS) {
  8072. // failed to set use of Cookie and secret
  8073. }
  8074. \endcode
  8075. \sa wolfSSL_new
  8076. */
  8077. int wolfSSL_send_hrr_cookie(WOLFSSL* ssl,
  8078. const unsigned char* secret, unsigned int secretSz);
  8079. /*!
  8080. \ingroup Setup
  8081. \brief ハンドシェイクが完了すると、この関数はサーバー上で再開セッションチケットの送信を停止するように呼び出されます。
  8082. \param [in,out] ctx wolfssl_ctx_new()で作成されたwolfssl_ctx構造へのポインタ。
  8083. \return BAD_FUNC_ARG CTXがNULLの場合、またはTLS v1.3を使用していない場合。
  8084. \return SIDE_ERROR クライアントで呼び出された場合。
  8085. _Example_
  8086. \code
  8087. int ret;
  8088. WOLFSSL_CTX* ctx;
  8089. ...
  8090. ret = wolfSSL_CTX_no_ticket_TLSv13(ctx);
  8091. if (ret != 0) {
  8092. // failed to set no ticket
  8093. }
  8094. \endcode
  8095. \sa wolfSSL_no_ticket_TLSv13
  8096. */
  8097. int wolfSSL_CTX_no_ticket_TLSv13(WOLFSSL_CTX* ctx);
  8098. /*!
  8099. \ingroup Setup
  8100. \brief ハンドシェイクが完了すると、この関数はサーバー上で再開セッションチケットの送信を停止するように呼び出されます。
  8101. \param [in,out] SSL wolfssl_new()を使用して作成されたwolfssl構造へのポインタ。
  8102. \return BAD_FUNC_ARG SSLがNULLの場合、またはTLS v1.3を使用していない場合。
  8103. \return SIDE_ERROR クライアントで呼び出された場合。
  8104. _Example_
  8105. \code
  8106. int ret;
  8107. WOLFSSL* ssl;
  8108. ...
  8109. ret = wolfSSL_no_ticket_TLSv13(ssl);
  8110. if (ret != 0) {
  8111. // failed to set no ticket
  8112. }
  8113. \endcode
  8114. \sa wolfSSL_CTX_no_ticket_TLSv13
  8115. */
  8116. int wolfSSL_no_ticket_TLSv13(WOLFSSL* ssl);
  8117. /*!
  8118. \ingroup Setup
  8119. \brief この関数は、Authenticationにプリシェアキーを使用している場合、DIFFIE-HELLMAN(DH)スタイルのキー交換を許可するTLS V1.3 WolfSSLコンテキストで呼び出されます。
  8120. \param [in,out] ctx wolfssl_ctx_new()で作成されたwolfssl_ctx構造へのポインタ。
  8121. \return BAD_FUNC_ARG CTXがNULLの場合、またはTLS v1.3を使用していない場合。
  8122. _Example_
  8123. \code
  8124. int ret;
  8125. WOLFSSL_CTX* ctx;
  8126. ...
  8127. ret = wolfSSL_CTX_no_dhe_psk(ctx);
  8128. if (ret != 0) {
  8129. // failed to set no DHE for PSK handshakes
  8130. }
  8131. \endcode
  8132. \sa wolfSSL_no_dhe_psk
  8133. */
  8134. int wolfSSL_CTX_no_dhe_psk(WOLFSSL_CTX* ctx);
  8135. /*!
  8136. \ingroup Setup
  8137. \brief この関数は、Authenticationのためにプリシェアキーを使用しているときにDiffie-Hellman(DH)スタイルのキー交換を許可するTLS V1.3クライアントまたはサーバーのWolfSSLで呼び出されます。
  8138. \param [in,out] SSL wolfssl_new()を使用して作成されたwolfssl構造へのポインタ。
  8139. \return BAD_FUNC_ARG SSLがNULLの場合、またはTLS v1.3を使用していない場合。
  8140. _Example_
  8141. \code
  8142. int ret;
  8143. WOLFSSL* ssl;
  8144. ...
  8145. ret = wolfSSL_no_dhe_psk(ssl);
  8146. if (ret != 0) {
  8147. // failed to set no DHE for PSK handshakes
  8148. }
  8149. \endcode
  8150. \sa wolfSSL_CTX_no_dhe_psk
  8151. */
  8152. int wolfSSL_no_dhe_psk(WOLFSSL* ssl);
  8153. /*!
  8154. \ingroup IO
  8155. \brief この関数は、TLS v1.3クライアントまたはサーバーのwolfsslで呼び出されて、キーのロールオーバーを強制します。KeyUpdateメッセージがピアに送信され、新しいキーが暗号化のために計算されます。ピアはKeyUpdateメッセージを送り、新しい復号化キーWILを計算します。この機能は、ハンドシェイクが完了した後にのみ呼び出すことができます。
  8156. \param [in,out] SSL wolfssl_new()を使用して作成されたwolfssl構造へのポインタ。
  8157. \return BAD_FUNC_ARG SSLがNULLの場合、またはTLS v1.3を使用していない場合。
  8158. \return WANT_WRITE 書き込みが準備ができていない場合
  8159. _Example_
  8160. \code
  8161. int ret;
  8162. WOLFSSL* ssl;
  8163. ...
  8164. ret = wolfSSL_update_keys(ssl);
  8165. if (ret == WANT_WRITE) {
  8166. // need to call again when I/O ready
  8167. }
  8168. else if (ret != WOLFSSL_SUCCESS) {
  8169. // failed to send key update
  8170. }
  8171. \endcode
  8172. \sa wolfSSL_write
  8173. */
  8174. int wolfSSL_update_keys(WOLFSSL* ssl);
  8175. /*!
  8176. \ingroup IO
  8177. \brief この関数は、TLS v1.3クライアントまたはサーバーのwolfsslで呼び出され、キーのロールオーバーが進行中かどうかを判断します。wolfssl_update_keys()が呼び出されると、KeyUpdateメッセージが送信され、暗号化キーが更新されます。復号化キーは、応答が受信されたときに更新されます。
  8178. \param [in] SSL wolfssl_new()を使用して作成されたwolfssl構造へのポインタ。
  8179. \param [out] キー更新応答が必要ない場合は必須0。1キー更新応答が必要ない場合。
  8180. \return 0 成功した。
  8181. _Example_
  8182. \code
  8183. int ret;
  8184. WOLFSSL* ssl;
  8185. int required;
  8186. ...
  8187. ret = wolfSSL_key_update_response(ssl, &required);
  8188. if (ret != 0) {
  8189. // bad parameters
  8190. }
  8191. if (required) {
  8192. // encrypt Key updated, awaiting response to change decrypt key
  8193. }
  8194. \endcode
  8195. \sa wolfSSL_update_keys
  8196. */
  8197. int wolfSSL_key_update_response(WOLFSSL* ssl, int* required);
  8198. /*!
  8199. \ingroup Setup
  8200. \brief この関数は、TLS v1.3クライアントのWolfSSLコンテキストで呼び出され、クライアントはサーバーからの要求に応じてPost Handshakeを送信できるようにします。これは、クライアント認証などを必要としないページを持つWebサーバーに接続するときに役立ちます。
  8201. \param [in,out] ctx wolfssl_ctx_new()で作成されたwolfssl_ctx構造へのポインタ。
  8202. \return BAD_FUNC_ARG CTXがNULLの場合、またはTLS v1.3を使用していない場合。
  8203. \return SIDE_ERROR サーバーで呼び出された場合。
  8204. _Example_
  8205. \code
  8206. int ret;
  8207. WOLFSSL_CTX* ctx;
  8208. ...
  8209. ret = wolfSSL_allow_post_handshake_auth(ctx);
  8210. if (ret != 0) {
  8211. // failed to allow post handshake authentication
  8212. }
  8213. \endcode
  8214. \sa wolfSSL_allow_post_handshake_auth
  8215. \sa wolfSSL_request_certificate
  8216. */
  8217. int wolfSSL_CTX_allow_post_handshake_auth(WOLFSSL_CTX* ctx);
  8218. /*!
  8219. \ingroup Setup
  8220. \brief この関数は、TLS V1.3クライアントWolfSSLで呼び出され、クライアントはサーバーからの要求に応じてハンドシェイクを送ります。handshakeクライアント認証拡張機能はClientHelloで送信されます。これは、クライアント認証などを必要としないページを持つWebサーバーに接続するときに役立ちます。
  8221. \param [in,out] SSL wolfssl_new()を使用して作成されたwolfssl構造へのポインタ。
  8222. \return BAD_FUNC_ARG SSLがNULLの場合、またはTLS v1.3を使用していない場合。
  8223. \return SIDE_ERROR サーバーで呼び出された場合。
  8224. _Example_
  8225. \code
  8226. int ret;
  8227. WOLFSSL* ssl;
  8228. ...
  8229. ret = wolfSSL_allow_post_handshake_auth(ssl);
  8230. if (ret != 0) {
  8231. // failed to allow post handshake authentication
  8232. }
  8233. \endcode
  8234. \sa wolfSSL_CTX_allow_post_handshake_auth
  8235. \sa wolfSSL_request_certificate
  8236. */
  8237. int wolfSSL_allow_post_handshake_auth(WOLFSSL* ssl);
  8238. /*!
  8239. \ingroup IO
  8240. \brief この関数は、TLS v1.3クライアントからクライアント証明書を要求します。これは、Webサーバーがクライアント認証やその他のものを必要とするページにサービスを提供している場合に役立ちます。接続で最大256の要求を送信できます。
  8241. \param [in,out] SSL wolfssl_new()を使用して作成されたwolfssl構造へのポインタ。
  8242. \return BAD_FUNC_ARG SSLがNULLの場合、またはTLS v1.3を使用していない場合。
  8243. \return WANT_WRITE 書き込みが準備ができていない場合
  8244. \return SIDE_ERROR クライアントで呼び出された場合。
  8245. \return NOT_READY_ERROR ハンドシェイクが終了していないときに呼び出された場合。
  8246. \return POST_HAND_AUTH_ERROR 送付後認証が許可されていない場合。
  8247. \return MEMORY_E 動的メモリ割り当てが失敗した場合
  8248. _Example_
  8249. \code
  8250. int ret;
  8251. WOLFSSL* ssl;
  8252. ...
  8253. ret = wolfSSL_request_certificate(ssl);
  8254. if (ret == WANT_WRITE) {
  8255. // need to call again when I/O ready
  8256. }
  8257. else if (ret != WOLFSSL_SUCCESS) {
  8258. // failed to request a client certificate
  8259. }
  8260. \endcode
  8261. \sa wolfSSL_allow_post_handshake_auth
  8262. \sa wolfSSL_write
  8263. */
  8264. int wolfSSL_request_certificate(WOLFSSL* ssl);
  8265. /*!
  8266. \ingroup Setup
  8267. \brief この関数は楕円曲線グループのリストを設定して、WolfSSLコンテキストを希望の順に設定します。リストはヌル終了したテキスト文字列、およびコロン区切りリストです。この関数を呼び出して、TLS v1.3接続で使用する鍵交換楕円曲線パラメータを設定します。
  8268. \param [in,out] ctx wolfssl_ctx_new()で作成されたwolfssl_ctx構造へのポインタ。
  8269. \param [in] 楕円曲線グループのコロン区切りリストである文字列をリストします。
  8270. \return WOLFSSL_FAILURE ポインタパラメータがNULLの場合、wolfssl_max_group_countグループが多い場合は、グループ名が認識されないか、TLS v1.3を使用していません。
  8271. _Example_
  8272. \code
  8273. int ret;
  8274. WOLFSSL_CTX* ctx;
  8275. const char* list = "P-384:P-256";
  8276. ...
  8277. ret = wolfSSL_CTX_set1_groups_list(ctx, list);
  8278. if (ret != WOLFSSL_SUCCESS) {
  8279. // failed to set group list
  8280. }
  8281. \endcode
  8282. \sa wolfSSL_set1_groups_list
  8283. \sa wolfSSL_CTX_set_groups
  8284. \sa wolfSSL_set_groups
  8285. \sa wolfSSL_UseKeyShare
  8286. \sa wolfSSL_preferred_group
  8287. */
  8288. int wolfSSL_CTX_set1_groups_list(WOLFSSL_CTX *ctx, char *list);
  8289. /*!
  8290. \ingroup Setup
  8291. \brief この関数は楕円曲線グループのリストを設定して、WolfSSLを希望の順に設定します。リストはヌル終了したテキスト文字列、およびコロン区切りリストです。この関数を呼び出して、TLS v1.3接続で使用する鍵交換楕円曲線パラメータを設定します。
  8292. \param [in,out] SSL wolfssl_new()を使用して作成されたwolfssl構造へのポインタ。
  8293. \param [in] 鍵交換グループのコロン区切りリストである文字列をリストします。
  8294. \return WOLFSSL_FAILURE ポインタパラメータがNULLの場合、wolfssl_max_group_countグループが多い場合は、グループ名が認識されないか、TLS v1.3を使用していません。
  8295. _Example_
  8296. \code
  8297. int ret;
  8298. WOLFSSL* ssl;
  8299. const char* list = "P-384:P-256";
  8300. ...
  8301. ret = wolfSSL_CTX_set1_groups_list(ssl, list);
  8302. if (ret != WOLFSSL_SUCCESS) {
  8303. // failed to set group list
  8304. }
  8305. \endcode
  8306. \sa wolfSSL_CTX_set1_groups_list
  8307. \sa wolfSSL_CTX_set_groups
  8308. \sa wolfSSL_set_groups
  8309. \sa wolfSSL_UseKeyShare
  8310. \sa wolfSSL_preferred_group
  8311. */
  8312. int wolfSSL_set1_groups_list(WOLFSSL *ssl, char *list);
  8313. /*!
  8314. \ingroup TLS
  8315. \brief この関数は、クライアントがTLS v1.3ハンドシェイクで使用することを好むキー交換グループを返します。この情報を完了した後にこの機能を呼び出して、サーバーがどのグループが予想されるようにこの情報が将来の接続で使用できるようになるかを決定するために、この情報が将来の接続で鍵交換のための鍵ペアを事前生成することができます。
  8316. \param [in,out] SSL wolfssl_new()を使用して作成されたwolfssl構造へのポインタ。
  8317. \return BAD_FUNC_ARG SSLがNULLの場合、またはTLS v1.3を使用していない場合。
  8318. \return SIDE_ERROR サーバーで呼び出された場合。
  8319. \return NOT_READY_ERROR ハンドシェイクが完了する前に呼び出された場合。
  8320. _Example_
  8321. \code
  8322. int ret;
  8323. int group;
  8324. WOLFSSL* ssl;
  8325. ...
  8326. ret = wolfSSL_CTX_set1_groups_list(ssl)
  8327. if (ret < 0) {
  8328. // failed to get group
  8329. }
  8330. group = ret;
  8331. \endcode
  8332. \sa wolfSSL_UseKeyShare
  8333. \sa wolfSSL_CTX_set_groups
  8334. \sa wolfSSL_set_groups
  8335. \sa wolfSSL_CTX_set1_groups_list
  8336. \sa wolfSSL_set1_groups_list
  8337. */
  8338. int wolfSSL_preferred_group(WOLFSSL* ssl);
  8339. /*!
  8340. \ingroup Setup
  8341. \brief この関数は楕円曲線グループのリストを設定して、WolfSSLコンテキストを希望の順に設定します。リストは、Countで指定された識別子の数を持つグループ識別子の配列です。この関数を呼び出して、TLS v1.3接続で使用する鍵交換楕円曲線パラメータを設定します。
  8342. \param [in,out] ctx wolfssl_ctx_new()で作成されたwolfssl_ctx構造へのポインタ。
  8343. \param [in] 識別子によって鍵交換グループのリストをグループ化します。
  8344. \param [in] グループ内の鍵交換グループの数を数えます。
  8345. \return BAD_FUNC_ARG ポインタパラメータがNULLの場合、グループ数はwolfssl_max_group_countを超えているか、TLS v1.3を使用していません。
  8346. _Example_
  8347. \code
  8348. int ret;
  8349. WOLFSSL_CTX* ctx;
  8350. int* groups = { WOLFSSL_ECC_X25519, WOLFSSL_ECC_SECP256R1 };
  8351. int count = 2;
  8352. ...
  8353. ret = wolfSSL_CTX_set1_groups_list(ctx, groups, count);
  8354. if (ret != WOLFSSL_SUCCESS) {
  8355. // failed to set group list
  8356. }
  8357. \endcode
  8358. \sa wolfSSL_set_groups
  8359. \sa wolfSSL_UseKeyShare
  8360. \sa wolfSSL_CTX_set_groups
  8361. \sa wolfSSL_set_groups
  8362. \sa wolfSSL_CTX_set1_groups_list
  8363. \sa wolfSSL_set1_groups_list
  8364. \sa wolfSSL_preferred_group
  8365. */
  8366. int wolfSSL_CTX_set_groups(WOLFSSL_CTX* ctx, int* groups,
  8367. int count);
  8368. /*!
  8369. \ingroup Setup
  8370. \brief この関数は、wolfsslを許すために楕円曲線グループのリストを設定します。リストは、Countで指定された識別子の数を持つグループ識別子の配列です。この関数を呼び出して、TLS v1.3接続で使用する鍵交換楕円曲線パラメータを設定します。
  8371. \param [in,out] SSL wolfssl_new()を使用して作成されたwolfssl構造へのポインタ。
  8372. \param [in] 識別子によって鍵交換グループのリストをグループ化します。
  8373. \param [in] グループ内の鍵交換グループの数を数えます。
  8374. \return BAD_FUNC_ARG ポインタパラメータがNULLの場合、グループ数がWolfSSL_MAX_GROUP_COUNTを超えている場合、任意の識別子は認識されないか、TLS v1.3を使用していません。
  8375. _Example_
  8376. \code
  8377. int ret;
  8378. WOLFSSL* ssl;
  8379. int* groups = { WOLFSSL_ECC_X25519, WOLFSSL_ECC_SECP256R1 };
  8380. int count = 2;
  8381. ...
  8382. ret = wolfSSL_set_groups(ssl, groups, count);
  8383. if (ret != WOLFSSL_SUCCESS) {
  8384. // failed to set group list
  8385. }
  8386. \endcode
  8387. \sa wolfSSL_CTX_set_groups
  8388. \sa wolfSSL_UseKeyShare
  8389. \sa wolfSSL_CTX_set_groups
  8390. \sa wolfSSL_set_groups
  8391. \sa wolfSSL_CTX_set1_groups_list
  8392. \sa wolfSSL_set1_groups_list
  8393. \sa wolfSSL_preferred_group
  8394. */
  8395. int wolfSSL_set_groups(WOLFSSL* ssl, int* groups, int count);
  8396. /*!
  8397. \ingroup IO
  8398. \brief この関数はクライアント側で呼び出され、サーバーとのTLS v1.3ハンドシェイクを開始します。この関数が呼び出されると、基礎となる通信チャネルはすでに設定されています。 wolfssl_connect()は、ブロックと非ブロックI / Oの両方で動作します。基礎となるI / Oがノンブロッキングされていない場合、wolfssl_connect()は、基になるI / Oがwolfssl_connectのニーズを満たすことができなかったときに戻ります。この場合、wolfssl_get_error()への呼び出しはSSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEのいずれかを生成します。通話プロセスは、基礎となるI / OがREADYおよびWOLFSSLが停止したときにwolfssl_connect()への呼び出しを繰り返す必要があります。ノンブロッキングソケットを使用する場合は、何も実行する必要がありますが、select()を使用して必要な条件を確認できます。基礎となる入出力がブロックされている場合、wolfssl_connect()はハンドシェイクが終了したら、またはエラーが発生したらのみ戻る。 WolfSSLはOpenSSLよりも証明書検証に異なるアプローチを取ります。クライアントのデフォルトポリシーはサーバーを確認することです。これは、CASを読み込まない場合、サーバーを確認することができ、確認できません(-155)。 SSL_CONNECTを持つことのOpenSSLの動作が成功した場合は、サーバーを検証してセキュリティを抑えることができます.SSL_CTX_SET_VERIFY(CTX、SSL_VERIFY_NONE、0)。 ssl_new()を呼び出す前に。お勧めできませんが。
  8399. \return SSL_SUCCESS 成功すると。
  8400. \return SSL_FATAL_ERROR エラーが発生した場合は返されます。より詳細なエラーコードを取得するには、wolfssl_get_error()を呼び出します。
  8401. _Example_
  8402. \code
  8403. int ret = 0;
  8404. int err = 0;
  8405. WOLFSSL* ssl;
  8406. char buffer[80];
  8407. ...
  8408. ret = wolfSSL_connect_TLSv13(ssl);
  8409. if (ret != SSL_SUCCESS) {
  8410. err = wolfSSL_get_error(ssl, ret);
  8411. printf(“error = %d, %s\n”, err, wolfSSL_ERR_error_string(err, buffer));
  8412. }
  8413. \endcode
  8414. \sa wolfSSL_get_error
  8415. \sa wolfSSL_connect
  8416. \sa wolfSSL_accept_TLSv13
  8417. \sa wolfSSL_accept
  8418. */
  8419. int wolfSSL_connect_TLSv13(WOLFSSL*);
  8420. /*!
  8421. \ingroup IO
  8422. \brief この関数はサーバー側で呼び出され、SSL / TLSクライアントがSSL / TLSハンドシェイクを開始するのを待ちます。この関数が呼び出されると、基礎となる通信チャネルはすでに設定されています。 wolfssl_accept()は、ブロックと非ブロッキングI / Oの両方で動作します。基礎となる入出力がノンブロッキングである場合、wolfssl_accept()は、基礎となるI / Oがwolfssl_acceptのニーズを満たすことができなかったときに戻ります。この場合、wolfssl_get_error()への呼び出しはSSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEのいずれかを生成します。通話プロセスは、読み取り可能なデータが使用可能であり、wolfsslが停止した場所を拾うときに、wolfssl_acceptの呼び出しを繰り返す必要があります。ノンブロッキングソケットを使用する場合は、何も実行する必要がありますが、select()を使用して必要な条件を確認できます。基礎となるI / Oがブロックされている場合、wolfssl_accept()はハンドシェイクが終了したら、またはエラーが発生したら戻ります。古いバージョンのClientHelloメッセージがサポートされていますが、TLS v1.3接続を期待するときにこの関数を呼び出します。
  8423. \return SSL_SUCCESS 成功すると。
  8424. \return SSL_FATAL_ERROR エラーが発生した場合は返されます。より詳細なエラーコードを取得するには、wolfssl_get_error()を呼び出します。
  8425. _Example_
  8426. \code
  8427. int ret = 0;
  8428. int err = 0;
  8429. WOLFSSL* ssl;
  8430. char buffer[80];
  8431. ...
  8432. ret = wolfSSL_accept_TLSv13(ssl);
  8433. if (ret != SSL_SUCCESS) {
  8434. err = wolfSSL_get_error(ssl, ret);
  8435. printf(“error = %d, %s\n”, err, wolfSSL_ERR_error_string(err, buffer));
  8436. }
  8437. \endcode
  8438. \sa wolfSSL_get_error
  8439. \sa wolfSSL_connect_TLSv13
  8440. \sa wolfSSL_connect
  8441. \sa wolfSSL_accept_TLSv13
  8442. \sa wolfSSL_accept
  8443. */
  8444. wolfSSL_accept_TLSv13(WOLFSSL* ssl);
  8445. /*!
  8446. \ingroup Setup
  8447. \brief この関数は、WolfSSLコンテキストを使用してTLS V1.3サーバーによって受け入れられる早期データの最大量を設定します。この関数を呼び出して、再生攻撃を軽減するためのプロセスへの早期データの量を制限します。初期のデータは、セッションチケットが送信されたこと、したがってセッションチケットが再開されるたびに同じ接続のキーから派生したキーによって保護されます。値は再開のためにセッションチケットに含まれています。ゼロの値は、セッションチケットを使用してクライアントによって早期データを送信することを示します。早期データバイト数をアプリケーションで実際には可能な限り低く保つことをお勧めします。
  8448. \param [in,out] ctx wolfssl_ctx_new()で作成されたwolfssl_ctx構造へのポインタ。
  8449. \param [in] SZバイト単位で受け入れる早期データの量。
  8450. \return BAD_FUNC_ARG CTXがNULLの場合、またはTLS v1.3を使用していない場合。
  8451. \return SIDE_ERROR クライアントで呼び出された場合。
  8452. _Example_
  8453. \code
  8454. int ret;
  8455. WOLFSSL_CTX* ctx;
  8456. ...
  8457. ret = wolfSSL_CTX_set_max_early_data(ctx, 128);
  8458. if (ret != WOLFSSL_SUCCESS) {
  8459. // failed to set group list
  8460. }
  8461. \endcode
  8462. \sa wolfSSL_set_max_early_data
  8463. \sa wolfSSL_write_early_data
  8464. \sa wolfSSL_read_early_data
  8465. */
  8466. int wolfSSL_CTX_set_max_early_data(WOLFSSL_CTX* ctx,
  8467. unsigned int sz);
  8468. /*!
  8469. \ingroup Setup
  8470. \brief この関数は、WolfSSLコンテキストを使用してTLS V1.3サーバーによって受け入れられる早期データの最大量を設定します。この関数を呼び出して、再生攻撃を軽減するためのプロセスへの早期データの量を制限します。初期のデータは、セッションチケットが送信されたこと、したがってセッションチケットが再開されるたびに同じ接続のキーから派生したキーによって保護されます。値は再開のためにセッションチケットに含まれています。ゼロの値は、セッションチケットを使用してクライアントによって早期データを送信することを示します。早期データバイト数をアプリケーションで実際には可能な限り低く保つことをお勧めします。
  8471. \param [in,out] SSL wolfssl_new()を使用して作成されたwolfssl構造へのポインタ。
  8472. \param [in] SZクライアントからバイト単位で受け入れる早期データの量。
  8473. \return BAD_FUNC_ARG SSLがNULLの場合、またはTLS v1.3を使用していない場合。
  8474. \return SIDE_ERROR クライアントで呼び出された場合。
  8475. _Example_
  8476. \code
  8477. int ret;
  8478. WOLFSSL* ssl;
  8479. ...
  8480. ret = wolfSSL_set_max_early_data(ssl, 128);
  8481. if (ret != WOLFSSL_SUCCESS) {
  8482. // failed to set group list
  8483. }
  8484. \endcode
  8485. \sa wolfSSL_CTX_set_max_early_data
  8486. \sa wolfSSL_write_early_data
  8487. \sa wolfSSL_read_early_data
  8488. */
  8489. int wolfSSL_set_max_early_data(WOLFSSL* ssl, unsigned int sz);
  8490. /*!
  8491. \ingroup IO
  8492. \brief この関数は、再開時にサーバーに早期データを書き込みます。wolfssl_connect()またはwolfssl_connect_tlsv13()の代わりにこの関数を呼び出して、サーバーに接続してハンドシェイクにデータを送ります。この機能はクライアントでのみ使用されます。
  8493. \param [in,out] SSL wolfssl_new()を使用して作成されたwolfssl構造へのポインタ。
  8494. \param [in] データ早期データを保持してサーバーに書き込むバッファ。
  8495. \param [in] SZバイト単位で書き込む早期データの量。
  8496. \param [out] OUTSZバイト単位で書かれた早期データの量。
  8497. \return BAD_FUNC_ARG ポインタパラメータがNULLの場合、SZは0未満またはTLSV1.3を使用しない。
  8498. \return SIDE_ERROR サーバーで呼び出された場合。
  8499. \return WOLFSSL_FATAL_ERROR 接続が行われていない場合。
  8500. _Example_
  8501. \code
  8502. int ret = 0;
  8503. int err = 0;
  8504. WOLFSSL* ssl;
  8505. byte earlyData[] = { early data };
  8506. int outSz;
  8507. char buffer[80];
  8508. ...
  8509. ret = wolfSSL_write_early_data(ssl, earlyData, sizeof(earlyData), &outSz);
  8510. if (ret != WOLFSSL_SUCCESS) {
  8511. err = wolfSSL_get_error(ssl, ret);
  8512. printf(“error = %d, %s\n”, err, wolfSSL_ERR_error_string(err, buffer));
  8513. goto err_label;
  8514. }
  8515. if (outSz < sizeof(earlyData)) {
  8516. // not all early data was sent
  8517. }
  8518. ret = wolfSSL_connect_TLSv13(ssl);
  8519. if (ret != SSL_SUCCESS) {
  8520. err = wolfSSL_get_error(ssl, ret);
  8521. printf(“error = %d, %s\n”, err, wolfSSL_ERR_error_string(err, buffer));
  8522. }
  8523. \endcode
  8524. \sa wolfSSL_read_early_data
  8525. \sa wolfSSL_connect
  8526. \sa wolfSSL_connect_TLSv13
  8527. */
  8528. int wolfSSL_write_early_data(OLFSSL* ssl, const void* data,
  8529. int sz, int* outSz);
  8530. /*!
  8531. \ingroup IO
  8532. \brief この関数は、再開時にクライアントからの早期データを読み取ります。wolfssl_accept()またはwolfssl_accept_tlsv13()の代わりにこの関数を呼び出して、クライアントを受け入れ、ハンドシェイク内の早期データを読み取ります。ハンドシェイクよりも早期データがない場合は、通常として処理されます。この機能はサーバーでのみ使用されます。
  8533. \param [in,out] SSL wolfssl_new()を使用して作成されたwolfssl構造へのポインタ。
  8534. \param [out] データはクライアントから読み込まれた早期データを保持するためのバッファ。
  8535. \param [in] バッファのSZサイズバイト数。
  8536. \param [out] OUTSZ初期データのバイト数。
  8537. \return BAD_FUNC_ARG ポインタパラメータがNULLの場合、SZは0未満またはTLSV1.3を使用しない。
  8538. \return SIDE_ERROR クライアントで呼び出された場合。
  8539. \return WOLFSSL_FATAL_ERROR 接続を受け入れると失敗した場合
  8540. _Example_
  8541. \code
  8542. int ret = 0;
  8543. int err = 0;
  8544. WOLFSSL* ssl;
  8545. byte earlyData[128];
  8546. int outSz;
  8547. char buffer[80];
  8548. ...
  8549. ret = wolfSSL_read_early_data(ssl, earlyData, sizeof(earlyData), &outSz);
  8550. if (ret != SSL_SUCCESS) {
  8551. err = wolfSSL_get_error(ssl, ret);
  8552. printf(“error = %d, %s\n”, err, wolfSSL_ERR_error_string(err, buffer));
  8553. }
  8554. if (outSz > 0) {
  8555. // early data available
  8556. }
  8557. ret = wolfSSL_accept_TLSv13(ssl);
  8558. if (ret != SSL_SUCCESS) {
  8559. err = wolfSSL_get_error(ssl, ret);
  8560. printf(“error = %d, %s\n”, err, wolfSSL_ERR_error_string(err, buffer));
  8561. }
  8562. \endcode
  8563. \sa wolfSSL_write_early_data
  8564. \sa wolfSSL_accept
  8565. \sa wolfSSL_accept_TLSv13
  8566. */
  8567. int wolfSSL_read_early_data(WOLFSSL* ssl, void* data, int sz,
  8568. int* outSz);
  8569. /*!
  8570. \ingroup Setup
  8571. \brief この関数は、TLS v1.3接続のプレシェアキー(PSK)クライアント側コールバックを設定します。コールバックはPSKアイデンティティを見つけ、そのキーと、ハンドシェイクに使用する暗号の名前を返します。この関数は、wolfssl_ctx構造体のclient_psk_tls13_cbメンバーを設定します。
  8572. \param [in,out] ctx wolfssl_ctx_new()で作成されたwolfssl_ctx構造へのポインタ。
  8573. _Example_
  8574. \code
  8575. WOLFSSL_CTX* ctx;
  8576. ...
  8577. wolfSSL_CTX_set_psk_client_tls13_callback(ctx, my_psk_client_tls13_cb);
  8578. \endcode
  8579. \sa wolfSSL_set_psk_client_tls13_callback
  8580. \sa wolfSSL_CTX_set_psk_server_tls13_callback
  8581. \sa wolfSSL_set_psk_server_tls13_callback
  8582. */
  8583. void wolfSSL_CTX_set_psk_client_tls13_callback(WOLFSSL_CTX* ctx,
  8584. wc_psk_client_tls13_callback cb);
  8585. /*!
  8586. \ingroup Setup
  8587. \brief この関数は、TLS v1.3接続のプレシェアキー(PSK)クライアント側コールバックを設定します。コールバックはPSKアイデンティティを見つけ、そのキーと、ハンドシェイクに使用する暗号の名前を返します。この関数は、wolfssl構造体のOptionsフィールドのclient_psk_tls13_cbメンバーを設定します。
  8588. \param [in,out] SSL wolfssl_new()を使用して作成されたwolfssl構造へのポインタ。
  8589. _Example_
  8590. \code
  8591. WOLFSSL* ssl;
  8592. ...
  8593. wolfSSL_set_psk_client_tls13_callback(ssl, my_psk_client_tls13_cb);
  8594. \endcode
  8595. \sa wolfSSL_CTX_set_psk_client_tls13_callback
  8596. \sa wolfSSL_CTX_set_psk_server_tls13_callback
  8597. \sa wolfSSL_set_psk_server_tls13_callback
  8598. */
  8599. void wolfSSL_set_psk_client_tls13_callback(WOLFSSL* ssl,
  8600. wc_psk_client_tls13_callback cb);
  8601. /*!
  8602. \ingroup Setup
  8603. \brief この関数は、TLS v1.3接続用の事前共有キー(PSK)サーバ側コールバックを設定します。コールバックはPSKアイデンティティを見つけ、そのキーと、ハンドシェイクに使用する暗号の名前を返します。この関数は、wolfssl_ctx構造体のserver_psk_tls13_cbメンバーを設定します。
  8604. \param [in,out] ctx wolfssl_ctx_new()で作成されたwolfssl_ctx構造へのポインタ。
  8605. _Example_
  8606. \code
  8607. WOLFSSL_CTX* ctx;
  8608. ...
  8609. wolfSSL_CTX_set_psk_server_tls13_callback(ctx, my_psk_client_tls13_cb);
  8610. \endcode
  8611. \sa wolfSSL_CTX_set_psk_client_tls13_callback
  8612. \sa wolfSSL_set_psk_client_tls13_callback
  8613. \sa wolfSSL_set_psk_server_tls13_callback
  8614. */
  8615. void wolfSSL_CTX_set_psk_server_tls13_callback(WOLFSSL_CTX* ctx,
  8616. wc_psk_server_tls13_callback cb);
  8617. /*!
  8618. \ingroup Setup
  8619. \brief この関数は、TLS v1.3接続用の事前共有キー(PSK)サーバ側コールバックを設定します。コールバックはPSKアイデンティティを見つけ、そのキーと、ハンドシェイクに使用する暗号の名前を返します。この関数は、wolfssl構造体のオプションフィールドのserver_psk_tls13_cbメンバーを設定します。
  8620. \param [in,out] SSL wolfssl_new()を使用して作成されたwolfssl構造へのポインタ。
  8621. _Example_
  8622. \code
  8623. WOLFSSL* ssl;
  8624. ...
  8625. wolfSSL_set_psk_server_tls13_callback(ssl, my_psk_server_tls13_cb);
  8626. \endcode
  8627. \sa wolfSSL_CTX_set_psk_client_tls13_callback
  8628. \sa wolfSSL_set_psk_client_tls13_callback
  8629. \sa wolfSSL_CTX_set_psk_server_tls13_callback
  8630. */
  8631. void wolfSSL_set_psk_server_tls13_callback(WOLFSSL* ssl,
  8632. wc_psk_server_tls13_callback cb);
  8633. /*!
  8634. \ingroup Setup
  8635. \brief この関数は、キーペアの生成を含むグループからキーシェアエントリを作成します。Keyshareエクステンションには、鍵交換のための生成されたすべての公開鍵が含まれています。この関数が呼び出されると、指定されたグループのみが含まれます。優先グループがサーバーに対して以前に確立されているときにこの関数を呼び出します。
  8636. \param [in,out] SSL wolfssl_new()を使用して作成されたwolfssl構造へのポインタ。
  8637. \param [in] キー交換グループ識別子をグループ化します。
  8638. \return BAD_FUNC_ARG SSLがNULLの場合
  8639. \return MEMORY_E 動的メモリ割り当てが失敗すると失敗すると。
  8640. _Example_
  8641. \code
  8642. int ret;
  8643. WOLFSSL* ssl;
  8644. ...
  8645. ret = wolfSSL_UseKeyShare(ssl, WOLFSSL_ECC_X25519);
  8646. if (ret != WOLFSSL_SUCCESS) {
  8647. // failed to set key share
  8648. }
  8649. \endcode
  8650. \sa wolfSSL_preferred_group
  8651. \sa wolfSSL_CTX_set1_groups_list
  8652. \sa wolfSSL_set1_groups_list
  8653. \sa wolfSSL_CTX_set_groups
  8654. \sa wolfSSL_set_groups
  8655. \sa wolfSSL_NoKeyShares
  8656. */
  8657. int wolfSSL_UseKeyShare(WOLFSSL* ssl, word16 group);
  8658. /*!
  8659. \ingroup Setup
  8660. \brief この関数は、ClientHelloで鍵共有が送信されないように呼び出されます。これにより、ハンドシェイクに鍵交換が必要な場合は、サーバーがHelloretryRequestで応答するように強制します。予想される鍵交換グループが知られておらず、キーの生成を不必要に回避するときにこの機能を呼び出します。鍵交換が必要なときにハンドシェイクを完了するために追加の往復が必要になることに注意してください。
  8661. \param [in,out] SSL wolfssl_new()を使用して作成されたwolfssl構造へのポインタ。
  8662. \return BAD_FUNC_ARG SSLがNULLの場合
  8663. \return SIDE_ERROR サーバーで呼び出された場合。
  8664. _Example_
  8665. \code
  8666. int ret;
  8667. WOLFSSL* ssl;
  8668. ...
  8669. ret = wolfSSL_NoKeyShares(ssl);
  8670. if (ret != WOLFSSL_SUCCESS) {
  8671. // failed to set no key shares
  8672. }
  8673. \endcode
  8674. \sa wolfSSL_UseKeyShare
  8675. */
  8676. int wolfSSL_NoKeyShares(WOLFSSL* ssl);
  8677. /*!
  8678. \ingroup Setup
  8679. \brief この関数は、アプリケーションがサーバーであることを示すために使用され、TLS 1.3プロトコルのみをサポートします。この関数は、wolfssl_ctx_new()を使用してSSL / TLSコンテキストを作成するときに使用される新しいWolfssl_method構造体のメモリを割り当てて初期化します。
  8680. \param [in] ヒープ静的メモリ割り当て中に静的メモリ割り当て器が使用するバッファへのポインタを使用します。
  8681. \return If 成功すると、呼び出しは新しく作成されたwolfssl_method構造体へのポインタを返します。
  8682. _Example_
  8683. \code
  8684. #include <wolfssl/ssl.h>
  8685. WOLFSSL_METHOD* method;
  8686. WOLFSSL_CTX* ctx;
  8687. method = wolfTLSv1_3_server_method_ex(NULL);
  8688. if (method == NULL) {
  8689. // unable to get method
  8690. }
  8691. ctx = wolfSSL_CTX_new(method);
  8692. ...
  8693. \endcode
  8694. \sa wolfSSLv3_server_method
  8695. \sa wolfTLSv1_server_method
  8696. \sa wolfTLSv1_1_server_method
  8697. \sa wolfTLSv1_2_server_method
  8698. \sa wolfTLSv1_3_server_method
  8699. \sa wolfDTLSv1_server_method
  8700. \sa wolfSSLv23_server_method
  8701. \sa wolfSSL_CTX_new
  8702. */
  8703. WOLFSSL_METHOD *wolfTLSv1_3_server_method_ex(void* heap);
  8704. /*!
  8705. \ingroup Setup
  8706. \brief この関数は、アプリケーションがクライアントであることを示すために使用され、TLS 1.3プロトコルのみをサポートします。この関数は、wolfssl_ctx_new()を使用してSSL / TLSコンテキストを作成するときに使用される新しいWolfssl_method構造体のメモリを割り当てて初期化します。
  8707. \param [in] ヒープ静的メモリ割り当て中に静的メモリ割り当て器が使用するバッファへのポインタを使用します。
  8708. \return If 成功すると、呼び出しは新しく作成されたwolfssl_method構造体へのポインタを返します。
  8709. _Example_
  8710. \code
  8711. #include <wolfssl/ssl.h>
  8712. WOLFSSL_METHOD* method;
  8713. WOLFSSL_CTX* ctx;
  8714. method = wolfTLSv1_3_client_method_ex(NULL);
  8715. if (method == NULL) {
  8716. // unable to get method
  8717. }
  8718. ctx = wolfSSL_CTX_new(method);
  8719. ...
  8720. \endcode
  8721. \sa wolfSSLv3_client_method
  8722. \sa wolfTLSv1_client_method
  8723. \sa wolfTLSv1_1_client_method
  8724. \sa wolfTLSv1_2_client_method
  8725. \sa wolfTLSv1_3_client_method
  8726. \sa wolfDTLSv1_client_method
  8727. \sa wolfSSLv23_client_method
  8728. \sa wolfSSL_CTX_new
  8729. */
  8730. WOLFSSL_METHOD *wolfTLSv1_3_client_method_ex(void* heap);
  8731. /*!
  8732. \ingroup Setup
  8733. \brief この関数は、アプリケーションがサーバーであることを示すために使用され、TLS 1.3プロトコルのみをサポートします。この関数は、wolfssl_ctx_new()を使用してSSL / TLSコンテキストを作成するときに使用される新しいWolfssl_method構造体のメモリを割り当てて初期化します。
  8734. \return If 成功すると、呼び出しは新しく作成されたwolfssl_method構造体へのポインタを返します。
  8735. _Example_
  8736. \code
  8737. #include <wolfssl/ssl.h>
  8738. WOLFSSL_METHOD* method;
  8739. WOLFSSL_CTX* ctx;
  8740. method = wolfTLSv1_3_server_method();
  8741. if (method == NULL) {
  8742. // unable to get method
  8743. }
  8744. ctx = wolfSSL_CTX_new(method);
  8745. ...
  8746. \endcode
  8747. \sa wolfSSLv3_server_method
  8748. \sa wolfTLSv1_server_method
  8749. \sa wolfTLSv1_1_server_method
  8750. \sa wolfTLSv1_2_server_method
  8751. \sa wolfTLSv1_3_server_method_ex
  8752. \sa wolfDTLSv1_server_method
  8753. \sa wolfSSLv23_server_method
  8754. \sa wolfSSL_CTX_new
  8755. */
  8756. WOLFSSL_METHOD *wolfTLSv1_3_server_method(void);
  8757. /*!
  8758. \ingroup Setup
  8759. \brief この関数は、アプリケーションがクライアントであることを示すために使用され、TLS 1.3プロトコルのみをサポートします。この関数は、wolfssl_ctx_new()を使用してSSL / TLSコンテキストを作成するときに使用される新しいWolfssl_method構造体のメモリを割り当てて初期化します。
  8760. \return If 成功すると、呼び出しは新しく作成されたwolfssl_method構造体へのポインタを返します。
  8761. _Example_
  8762. \code
  8763. #include <wolfssl/ssl.h>
  8764. WOLFSSL_METHOD* method;
  8765. WOLFSSL_CTX* ctx;
  8766. method = wolfTLSv1_3_client_method();
  8767. if (method == NULL) {
  8768. // unable to get method
  8769. }
  8770. ctx = wolfSSL_CTX_new(method);
  8771. ...
  8772. \endcode
  8773. \sa wolfSSLv3_client_method
  8774. \sa wolfTLSv1_client_method
  8775. \sa wolfTLSv1_1_client_method
  8776. \sa wolfTLSv1_2_client_method
  8777. \sa wolfTLSv1_3_client_method_ex
  8778. \sa wolfDTLSv1_client_method
  8779. \sa wolfSSLv23_client_method
  8780. \sa wolfSSL_CTX_new
  8781. */
  8782. WOLFSSL_METHOD *wolfTLSv1_3_client_method(void);
  8783. /*!
  8784. \ingroup Setup
  8785. \brief この関数は、まだどちらの側(サーバ/クライアント)を決定していないことを除いて、Wolftlsv1_3_client_methodと同様のwolfssl_methodを返します。
  8786. \param [in] ヒープ静的メモリ割り当て中に静的メモリ割り当て器が使用するバッファへのポインタを使用します。
  8787. \return WOLFSSL_METHOD 成功した作成では、wolfssl_methodポインタを返します
  8788. _Example_
  8789. \code
  8790. WOLFSSL* ctx;
  8791. ctx = wolfSSL_CTX_new(wolfTLSv1_3_method_ex(NULL));
  8792. // check ret value
  8793. \endcode
  8794. \sa wolfSSL_new
  8795. \sa wolfSSL_free
  8796. */
  8797. WOLFSSL_METHOD *wolfTLSv1_3_method_ex(void* heap);
  8798. /*!
  8799. \ingroup Setup
  8800. \brief この関数は、まだどちらの側(サーバ/クライアント)を決定していないことを除いて、Wolftlsv1_3_client_methodと同様のwolfssl_methodを返します。
  8801. \return WOLFSSL_METHOD 成功した作成では、wolfssl_methodポインタを返します
  8802. _Example_
  8803. \code
  8804. WOLFSSL* ctx;
  8805. ctx = wolfSSL_CTX_new(wolfTLSv1_3_method());
  8806. // check ret value
  8807. \endcode
  8808. \sa wolfSSL_new
  8809. \sa wolfSSL_free
  8810. */
  8811. WOLFSSL_METHOD *wolfTLSv1_3_method(void);
  8812. /*!
  8813. \ingroup Setup
  8814. \brief この関数はクライアント側で呼び出される場合には、サーバー側にCertificateメッセージで送信できる証明書タイプを設定します。
  8815. サーバー側で呼び出される場合には、受入れ可能なクライアント証明書タイプを設定します。
  8816. Raw Public Key 証明書を送受信したい場合にはこの関数を使って証明書タイプを設定しなければなりません。
  8817. 設定する証明書タイプは優先度順に格納したバイト配列として渡します。
  8818. 設定するバッファアドレスにNULLを渡すか、あるいはバッファサイズに0を渡すと規定値にもどすことができます。
  8819. 規定値はX509証明書(WOLFSSL_CERT_TYPE_X509)のみを扱う設定となっています。
  8820. \return WOLFSSL_SUCCESS 成功
  8821. \return BAD_FUNC_ARG ctxとしてNULLを渡した、あるいは不正な証明書タイプを指定した、
  8822. あるいはMAX_CLIENT_CERT_TYPE_CNT以上のバッファサイズを指定した、あるいは指定の証明書タイプに重複がある
  8823. \param ctx wolfssl_ctxコンテキストポインタ
  8824. \param ctype 証明書タイプを格納したバッファへのポインタ
  8825. \param len 証明書タイプを格納したバッファのサイズ(バイト数)
  8826. _Example_
  8827. \code
  8828. int ret;
  8829. WOLFSSL_CTX* ctx;
  8830. char ctype[] = {WOLFSSL_CERT_TYPE_RPK, WOLFSSL_CERT_TYPE_X509};
  8831. int len = sizeof(ctype)/sizeof(byte);
  8832.  ...
  8833. ret = wolfSSL_CTX_set_client_cert_type(ctx, ctype, len);
  8834. \endcode
  8835. \sa wolfSSL_set_client_cert_type
  8836. \sa wolfSSL_CTX_set_server_cert_type
  8837. \sa wolfSSL_set_server_cert_type
  8838. \sa wolfSSL_get_negotiated_client_cert_type
  8839. \sa wolfSSL_get_negotiated_server_cert_type
  8840. */
  8841. int wolfSSL_CTX_set_client_cert_type(WOLFSSL_CTX* ctx, const char* buf, int len);
  8842. /*!
  8843. \ingroup Setup
  8844. \brief この関数はサーバー側で呼び出される場合には、クライアント側にCertificateメッセージで送信できる証明書タイプを設定します。
  8845. クライアント側で呼び出される場合には、受入れ可能なサーバー証明書タイプを設定します。
  8846. Raw Public Key 証明書を送受信したい場合にはこの関数を使って証明書タイプを設定しなければなりません。
  8847. 設定する証明書タイプは優先度順に格納したバイト配列として渡します。
  8848. 設定するバッファアドレスにNULLを渡すか、あるいはバッファサイズに0を渡すと規定値にもどすことができます。
  8849. 規定値はX509証明書(WOLFSSL_CERT_TYPE_X509)のみを扱う設定となっています。
  8850. \return WOLFSSL_SUCCESS 成功
  8851. \return BAD_FUNC_ARG ctxとしてNULLを渡した、あるいは不正な証明書タイプを指定した、
  8852. あるいはMAX_SERVER_CERT_TYPE_CNT以上のバッファサイズを指定した、あるいは指定の証明書タイプに重複がある
  8853. \param ctx wolfssl_ctxコンテキストポインタ
  8854. \param ctype 証明書タイプを格納したバッファへのポインタ
  8855. \param len 証明書タイプを格納したバッファのサイズ(バイト数)
  8856. _Example_
  8857. \code
  8858. int ret;
  8859. WOLFSSL_CTX* ctx;
  8860. char ctype[] = {WOLFSSL_CERT_TYPE_RPK, WOLFSSL_CERT_TYPE_X509};
  8861. int len = sizeof(ctype)/sizeof(byte);
  8862.  ...
  8863. ret = wolfSSL_CTX_set_server_cert_type(ctx, ctype, len);
  8864. \endcode
  8865. \sa wolfSSL_set_client_cert_type
  8866. \sa wolfSSL_CTX_set_client_cert_type
  8867. \sa wolfSSL_set_server_cert_type
  8868. \sa wolfSSL_get_negotiated_client_cert_type
  8869. \sa wolfSSL_get_negotiated_server_cert_type
  8870. */
  8871. int wolfSSL_CTX_set_server_cert_type(WOLFSSL_CTX* ctx, const char* buf, int len);
  8872. /*!
  8873. \ingroup Setup
  8874. \brief この関数はクライアント側で呼び出される場合には、サーバー側にCertificateメッセージで送信できる証明書タイプを設定します。
  8875. サーバー側で呼び出される場合には、受入れ可能なクライアント証明書タイプを設定します。
  8876. Raw Public Key 証明書を送受信したい場合にはこの関数を使って証明書タイプを設定しなければなりません。
  8877. 設定する証明書タイプは優先度順に格納したバイト配列として渡します。
  8878. 設定するバッファアドレスにNULLを渡すか、あるいはバッファサイズに0を渡すと規定値にもどすことができます。
  8879. 規定値はX509証明書(WOLFSSL_CERT_TYPE_X509)のみを扱う設定となっています。
  8880. \return WOLFSSL_SUCCESS 成功
  8881. \return BAD_FUNC_ARG sslとしてNULLを渡した、あるいは不正な証明書タイプを指定した、
  8882. あるいはMAX_CLIENT_CERT_TYPE_CNT以上のバッファサイズを指定した、あるいは指定の証明書タイプに重複がある
  8883. \param ssl WOLFSSL構造体へのポインタ
  8884. \param ctype 証明書タイプを格納したバッファへのポインタ
  8885. \param len 証明書タイプを格納したバッファのサイズ(バイト数)
  8886. _Example_
  8887. \code
  8888. int ret;
  8889. WOLFSSL* ssl;
  8890. char ctype[] = {WOLFSSL_CERT_TYPE_RPK, WOLFSSL_CERT_TYPE_X509};
  8891. int len = sizeof(ctype)/sizeof(byte);
  8892.  ...
  8893. ret = wolfSSL_set_client_cert_type(ssl, ctype, len);
  8894. \endcode
  8895. \sa wolfSSL_CTX_set_client_cert_type
  8896. \sa wolfSSL_CTX_set_server_cert_type
  8897. \sa wolfSSL_set_server_cert_type
  8898. \sa wolfSSL_get_negotiated_client_cert_type
  8899. \sa wolfSSL_get_negotiated_server_cert_type
  8900. */
  8901. int wolfSSL_set_client_cert_type(WOLFSSL* ssl, const char* buf, int len);
  8902. /*!
  8903. \ingroup Setup
  8904. \brief この関数はサーバー側で呼び出される場合には、クライアント側にCertificateメッセージで送信できる証明書タイプを設定します。
  8905. クライアント側で呼び出される場合には、受入れ可能なサーバー証明書タイプを設定します。
  8906. Raw Public Key 証明書を送受信したい場合にはこの関数を使って証明書タイプを設定しなければなりません。
  8907. 設定する証明書タイプは優先度順に格納したバイト配列として渡します。
  8908. 設定するバッファアドレスにNULLを渡すか、あるいはバッファサイズに0を渡すと規定値にもどすことができます。
  8909. 規定値はX509証明書(WOLFSSL_CERT_TYPE_X509)のみを扱う設定となっています。
  8910. \return WOLFSSL_SUCCESS 成功
  8911. \return BAD_FUNC_ARG ctxとしてNULLを渡した、あるいは不正な証明書タイプを指定した、
  8912. あるいはMAX_SERVER_CERT_TYPE_CNT以上のバッファサイズを指定した、あるいは指定の証明書タイプに重複がある
  8913. \param ssl WOLFSSL構造体へのポインタ
  8914. \param ctype 証明書タイプを格納したバッファへのポインタ
  8915. \param len 証明書タイプを格納したバッファのサイズ(バイト数)
  8916. _Example_
  8917. \code
  8918. int ret;
  8919. WOLFSSL* ssl;
  8920. char ctype[] = {WOLFSSL_CERT_TYPE_RPK, WOLFSSL_CERT_TYPE_X509};
  8921. int len = sizeof(ctype)/sizeof(byte);
  8922.  ...
  8923. ret = wolfSSL_set_server_cert_type(ssl, ctype, len);
  8924. \endcode
  8925. \sa wolfSSL_set_client_cert_type
  8926. \sa wolfSSL_CTX_set_server_cert_type
  8927. \sa wolfSSL_set_server_cert_type
  8928. \sa wolfSSL_get_negotiated_client_cert_type
  8929. \sa wolfSSL_get_negotiated_server_cert_type
  8930. */
  8931. int wolfSSL_set_server_cert_type(WOLFSSL* ssl, const char* buf, int len);
  8932. /*!
  8933. \ingroup SSL
  8934. \brief この関数はハンドシェーク終了後に呼び出し、相手とのネゴシエーションの結果得られたクライアント証明書のタイプを返します。
  8935. ネゴシエーションが発生しない場合には戻り値としてWOLFSSL_SUCCESSが返されますが、
  8936. 証明書タイプとしてはWOLFSSL_CERT_TYPE_UNKNOWNが返されます。
  8937. \return WOLFSSL_SUCCESS 成功時にかえります。tpに返された証明書タイプはWOLFSSL_CERT_TYPE_X509,
  8938. WOLFSSL_CERT_TYPE_RPK あるいはWOLFSSL_CERT_TYPE_UNKNOWNのいずれかとなります。
  8939. \return BAD_FUNC_ARG sslとしてNULLを渡した、あるいはtpとしてNULLを渡した
  8940. \param ssl WOLFSSL構造体へのポインタ
  8941. \param tp 証明書タイプが返されるバッファへのポインタ
  8942. _Example_
  8943. \code
  8944. int ret;
  8945. WOLFSSL* ssl;
  8946. int tp;
  8947.  ...
  8948. ret = wolfSSL_get_negotiated_client_cert_type(ssl, &tp);
  8949. \endcode
  8950. \sa wolfSSL_set_client_cert_type
  8951. \sa wolfSSL_CTX_set_client_cert_type
  8952. \sa wolfSSL_set_server_cert_type
  8953. \sa wolfSSL_CTX_set_server_cert_type
  8954. \sa wolfSSL_get_negotiated_server_cert_type
  8955. */
  8956. int wolfSSL_get_negotiated_client_cert_type(WOLFSSL* ssl, int* tp);
  8957. /*!
  8958. \ingroup SSL
  8959. \brief この関数はハンドシェーク終了後に呼び出し、相手とのネゴシエーションの結果得られたサーバー証明書のタイプを返します。
  8960. ネゴシエーションが発生しない場合には戻り値としてWOLFSSL_SUCCESSが返されますが、証明書タイプとしてはWOLFSSL_CERT_TYPE_UNKNOWNが返されます。
  8961. \return WOLFSSL_SUCCESS 成功時にかえります。tpに返された証明書タイプはWOLFSSL_CERT_TYPE_X509,
  8962. WOLFSSL_CERT_TYPE_RPK あるいはWOLFSSL_CERT_TYPE_UNKNOWNのいずれかとなります。
  8963. \return BAD_FUNC_ARG sslとしてNULLを渡した、あるいはtpとしてNULLを渡した
  8964. \param ssl WOLFSSL構造体へのポインタ
  8965. \param tp 証明書タイプが返されるバッファへのポインタ
  8966. _Example_
  8967. \code
  8968. int ret;
  8969. WOLFSSL* ssl;
  8970. int tp;
  8971.  ...
  8972. ret = wolfSSL_get_negotiated_server_cert_type(ssl, &tp);
  8973. \endcode
  8974. \sa wolfSSL_set_client_cert_type
  8975. \sa wolfSSL_CTX_set_client_cert_type
  8976. \sa wolfSSL_set_server_cert_type
  8977. \sa wolfSSL_CTX_set_server_cert_type
  8978. \sa wolfSSL_get_negotiated_client_cert_type
  8979. */
  8980. int wolfSSL_get_negotiated_server_cert_type(WOLFSSL* ssl, int* tp);
  8981. /*!
  8982. \ingroup SSL
  8983. \brief この関数はテストのための固定/静的なエフェラルキーを設定します。
  8984. \return 0 キーが正常にロードされました
  8985. \param ctx wolfssl_ctxコンテキストポインタ
  8986. \param keyAlgo WC_PK_TYPE_DHおよびWC_PK_TYPE_ECDHのようなenum wc_pktype
  8987. \param key キーファイルパス(Keysz == 0)または実際のキーバッファ(PEMまたはASN.1)
  8988. \param keySz キーサイズ(「キー」argはファイルパスの場合は0になります)
  8989. \sa wolfSSL_CTX_get_ephemeral_key
  8990. */
  8991. int wolfSSL_CTX_set_ephemeral_key(WOLFSSL_CTX* ctx, int keyAlgo, const char* key, unsigned int keySz, int format);
  8992. /*!
  8993. \ingroup SSL
  8994. \brief この関数はテストのための固定/静的なエフェラルキーを設定します。
  8995. \return 0 キーが正常にロードされました
  8996. \param ssl wolfsslオブジェクトポインタ
  8997. \param keyAlgo WC_PK_TYPE_DHおよびWC_PK_TYPE_ECDHのようなenum wc_pktype
  8998. \param key キーファイルパス(Keysz == 0)または実際のキーバッファ(PEMまたはASN.1)
  8999. \param keySz キーサイズ(「キー」argはファイルパスの場合は0になります)
  9000. \sa wolfSSL_get_ephemeral_key
  9001. */
  9002. int wolfSSL_set_ephemeral_key(WOLFSSL* ssl, int keyAlgo, const char* key, unsigned int keySz, int format);
  9003. /*!
  9004. \ingroup SSL
  9005. \brief この関数はasn.1 / derとしてロードされたキーへのポインタを返します
  9006. \return 0 キーが正常に戻りました
  9007. \param ctx wolfssl_ctxコンテキストポインタ
  9008. \param keyAlgo WC_PK_TYPE_DHおよびWC_PK_TYPE_ECDHのようなenum wc_pktype
  9009. \param key キーバッファポインタ
  9010. \sa wolfSSL_CTX_set_ephemeral_key
  9011. */
  9012. int wolfSSL_CTX_get_ephemeral_key(WOLFSSL_CTX* ctx, int keyAlgo,
  9013. const unsigned char** key, unsigned int* keySz);
  9014. /*!
  9015. \ingroup SSL
  9016. \brief この関数はasn.1 / derとしてロードされたキーへのポインタを返します
  9017. \return 0 キーが正常に戻りました
  9018. \param ssl wolfsslオブジェクトポインタ
  9019. \param keyAlgo WC_PK_TYPE_DHおよびWC_PK_TYPE_ECDHのようなenum wc_pktype
  9020. \param key キーバッファポインタ
  9021. \sa wolfSSL_set_ephemeral_key
  9022. */
  9023. int wolfSSL_get_ephemeral_key(WOLFSSL* ssl, int keyAlgo,
  9024. const unsigned char** key, unsigned int* keySz);
  9025. /*!
  9026. \ingroup SSL
  9027. \brief 選択したメッセージダイジェスト、パディング、およびRSAキーを使用してメッセージに署名する
  9028. \return WOLFSSL_SUCCESS Errorの成功とwolfssl_failureについて
  9029. \param type ハッシュNID
  9030. \param m 署名するメッセージ。これは署名するメッセージのダイジェストになる可能性が高い
  9031. \param mLen 署名するメッセージの長さ
  9032. \param sigRet 出力バッファ
  9033. \param sigLen オン入力:出力時のSigretバッファの長さ:Sigretに書き込まれたデータの長さ
  9034. \param rsa RSAキー入力に署名するために使用されます
  9035. \param flag 1:シグニチャ0:未パワード署名を比較する値を出力します。注:RSA_PKCS1_PSS_PADDINGの場合は、wc_rsapss_checkpadding_ex関数を使用して* VERIFY *関数の出力を確認する必要があります。
  9036. */
  9037. int wolfSSL_RSA_sign_generic_padding(int type, const unsigned char* m,
  9038. unsigned int mLen, unsigned char* sigRet,
  9039. unsigned int* sigLen, WOLFSSL_RSA* rsa,
  9040. int flag, int padding);